Commit 21085428 authored by 张冬's avatar 张冬

修改问题

parent 3eea3676
...@@ -111,4 +111,12 @@ export function commoditylist(projectId) { ...@@ -111,4 +111,12 @@ export function commoditylist(projectId) {
url:`bidder-apply/commodity/list/${projectId}`, url:`bidder-apply/commodity/list/${projectId}`,
method: 'get' method: 'get'
}) })
} }
\ No newline at end of file
// 获取招标文件截止时间
export function inqueryinfo(projectId) {
return request({
url:`tender-project/inquery/info/${projectId}`,
method: 'get'
})
}
import request from '@/utils/request' import request from '@/utils/request'
// 采购商 // 采购商
// 2.1.1 // 2.1.1
// 创建招标项目 // 创建招标项目
...@@ -21,6 +23,13 @@ export function createEnquiry(data) { ...@@ -21,6 +23,13 @@ export function createEnquiry(data) {
data: data data: data
}) })
} }
// 查看询价公告(通过项目id)
export function enquiryProjectId(projectId) {
return request({
url: `/notice/enquiry?projectId=${projectId}`,
method: 'get'
})
}
// 发送招标公告 // 发送招标公告
export function bidMessage(data) { export function bidMessage(data) {
...@@ -30,7 +39,7 @@ export function bidMessage(data) { ...@@ -30,7 +39,7 @@ export function bidMessage(data) {
data: data data: data
}) })
} }
// 查看招标公告(通过项目id)
// 发送邀请公告 // 发送邀请公告
export function inviteMessage(data) { export function inviteMessage(data) {
return request({ return request({
......
import request from '@/utils/request'
export function home() {
return request({
url: "tender-project/index",
method: 'get',
})
}
\ No newline at end of file
...@@ -501,8 +501,8 @@ ...@@ -501,8 +501,8 @@
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 +"/"+token )
this.websocket = new WebSocket('ws://192.168.200.201:8082/webSocket/' + projectId +"/"+token ) // this.websocket = new WebSocket('ws://192.168.200.201:8082/webSocket/' + projectId +"/"+token )
// 连接成功时 // 连接成功时
this.websocket.onopen = () => {} this.websocket.onopen = () => {}
this.websocket.onmessage = event => { this.websocket.onmessage = event => {
......
...@@ -39,8 +39,8 @@ ...@@ -39,8 +39,8 @@
</el-form-item> </el-form-item>
</div> </div>
<div> <div>
<el-form-item label="项目经理:" prop="manager"> <el-form-item label="项目经理:" prop="projectManager">
<el-select v-model="ruleForm.manager" placeholder="请选择"> <el-select v-model="ruleForm.projectManager" placeholder="请选择">
<el-option v-for="item in managers" :key="item.id" :label="item.userName" :value="item.id"> <el-option v-for="item in managers" :key="item.id" :label="item.userName" :value="item.id">
</el-option> </el-option>
</el-select> </el-select>
...@@ -354,7 +354,7 @@ export default { ...@@ -354,7 +354,7 @@ export default {
}], }],
phone: [{ phone: [{
required: true, required: true,
validator: checkPhone, validator: checkPhone,
trigger: 'blur' trigger: 'blur'
}], }],
money: [{ money: [{
...@@ -402,7 +402,7 @@ validator: checkPhone, ...@@ -402,7 +402,7 @@ validator: checkPhone,
validator: isMin, validator: isMin,
trigger: 'blur' trigger: 'blur'
}], }],
manager: [{ projectManager: [{
required: true, required: true,
message: '请选择', message: '请选择',
trigger: 'change' trigger: 'change'
...@@ -433,7 +433,7 @@ validator: checkPhone, ...@@ -433,7 +433,7 @@ validator: checkPhone,
phone: '' phone: ''
}, },
ruleForm: { ruleForm: {
manager:"", projectManager:"",
projectName: '', projectName: '',
projectCode: '', projectCode: '',
classify: '', classify: '',
......
...@@ -56,7 +56,7 @@ export default { ...@@ -56,7 +56,7 @@ export default {
}, },
data() { data() {
return { return {
activeIdx: 0, activeIdx: 2,
allForm: {} allForm: {}
} }
}, },
......
<template> <template>
<div> <div>
<div class="describe">招标时间设置</div> <div class="describe">招标时间设置</div>
<div class="form"> <div class="form">
<!-- <dataForm :search-form="searchForm" :search-data="searchData" :is-handle="false" label-width="250px"></dataForm> --> <!-- <dataForm :search-form="searchForm" :search-data="searchData" :is-handle="false" label-width="250px"></dataForm> -->
<el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="250px" class="demo-ruleForm"> <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="250px" class="demo-ruleForm">
<el-form-item label="招标公告正式发布时:" prop="releaseTime"> <el-form-item label="招标公告正式发布时间:" prop="releaseTime">
<el-date-picker v-model="ruleForm.releaseTime" type="datetime" placeholder="选择日期时间" @change="releaseTime"> <el-date-picker v-model="ruleForm.releaseTime" type="datetime" placeholder="选择日期时间" @change="releaseTime">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="标书获取开始时间:" prop="startTime"> <el-form-item label="标书获取开始时间:" prop="startTime">
<el-date-picker v-model="ruleForm.startTime" type="datetime" placeholder="选择日期时间" @change="startTime"> <el-date-picker v-model="ruleForm.startTime" type="datetime" placeholder="选择日期时间" @change="startTime">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="标书获取结束时间:" prop="endTime"> <el-form-item label="标书获取结束时间:" prop="endTime">
<el-date-picker v-model="ruleForm.endTime" type="datetime" placeholder="选择日期时间" @change="endTime"> <el-date-picker v-model="ruleForm.endTime" type="datetime" placeholder="选择日期时间" @change="endTime">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="投标人澄清答疑截止时间:" prop="answerQuestionEndTime"> <el-form-item label="投标人澄清答疑截止时间:" prop="answerQuestionEndTime">
<el-date-picker v-model="ruleForm.answerQuestionEndTime" type="datetime" placeholder="选择日期时间" @change="answerQuestionEndTime"> <el-date-picker v-model="ruleForm.answerQuestionEndTime" type="datetime" placeholder="选择日期时间" @change="answerQuestionEndTime">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="投标文件递交截止时间及开标时间:" prop="openBidStartTime"> <el-form-item label="投标文件递交截止时间及开标时间:" prop="openBidStartTime">
<el-date-picker v-model="ruleForm.openBidStartTime" type="datetime" placeholder="选择日期时间" @change="openBidStartTime"> <el-date-picker v-model="ruleForm.openBidStartTime" type="datetime" placeholder="选择日期时间" @change="openBidStartTime">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<div class="button"> <div class="button">
<el-button @click="upper">上一步</el-button> <el-button @click="upper">上一步</el-button>
<el-button type="primary" @click="next">下一步</el-button> <el-button type="primary" @click="next">下一步</el-button>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import dataForm from '@components/dataForm.vue' import dataForm from '@components/dataForm.vue'
export default { export default {
name: 'bidingList', name: 'bidingList',
components: { components: {
dataForm dataForm
}, },
data() { data() {
return { let checkTime = (rule, value, callback) => {
ruleForm: { let nowTime= new Date().getTime() if (nowTime<value) { callback(); } else { return callback(new Error('请选择大于当前的时间')); } };
releaseTime: '', let checkTime1 = (rule, value, callback) => {
startTime: '', if(!this.ruleForm.releaseTime){
endTime: '', return callback(new Error('请先选择招标公告正式发布时间'));
answerQuestionEndTime: '', }else{
openBidStartTime: '' if(value>this.ruleForm.releaseTime){
}, callback();
rules: { }else{
releaseTime: [{ return callback(new Error('请选择大于招标公告正式发布时间'));
type: 'date', }
required: true, }
message: '请选择时间', };
trigger: 'blur' let checkTime2 = (rule, value, callback) => {
}], if(!this.ruleForm.startTime){
startTime: [{ return callback(new Error('请先选择标书获取开始时间'));
type: 'date', }else{
required: true, if(value>this.ruleForm.startTime){
message: '请选择时间', callback();
trigger: 'blur' }else{
}], return callback(new Error('请选择大于标书获取开始时间'));
endTime: [{ }
type: 'date', }
required: true, };
message: '请选择时间', let checkTime3 = (rule, value, callback) => {
trigger: 'blur' if(!this.ruleForm.endTime){
}], return callback(new Error('请先选择标书获取结束时间'));
answerQuestionEndTime: [{ }else{
type: 'date', if(value>this.ruleForm.endTime){
required: true, callback();
message: '请选择时间', }else{
trigger: 'blur' return callback(new Error('请选择大于标书获取结束时间'));
}], }
openBidStartTime: [{ }
type: 'date', };
required: true, let checkTime4 = (rule, value, callback) => {
message: '请选择时间', if(!this.ruleForm.answerQuestionEndTime){
trigger: 'blur' return callback(new Error('请先选择投标人澄清答疑截止时间'));
}] }else{
} if(value>this.ruleForm.answerQuestionEndTime){
} callback();
}, }else{
return callback(new Error('请选择投标人澄清答疑截止时间'));
methods: { }
releaseTime(val) { }
this.ruleForm.releaseTime = new Date(val).getTime() };
}, return {
startTime(val) { ruleForm: {
this.ruleForm.startTime = new Date(val).getTime() releaseTime: '',
}, startTime: '',
endTime(val) { endTime: '',
this.ruleForm.endTime = new Date(val).getTime() answerQuestionEndTime: '',
}, openBidStartTime: ''
answerQuestionEndTime(val) { },
this.ruleForm.answerQuestionEndTime = new Date(val).getTime() rules: {
}, releaseTime: [{
openBidStartTime(val) { type: 'date',
this.ruleForm.openBidStartTime = new Date(val).getTime() required: true,
}, message: '请选择时间',
async next() { trigger: 'blur'
const valid = await this.$refs['ruleForm'].validate(); },
if(valid){ {
this.$emit('getruleForm', this.ruleForm) validator:checkTime,
this.$parent.next() }],
} startTime: [{
}, type: 'date',
upper() { required: true,
this.$parent.upper() message: '请选择时间',
} trigger: 'blur'
} },
} {
</script> validator:checkTime1,
}],
<style scoped> endTime: [{
.form { type: 'date',
width: 50%; required: true,
margin: 0 auto; message: '请选择时间',
box-sizing: border-box; trigger: 'blur'
padding-bottom: 30px; },
} {
validator:checkTime2,
.button { }],
display: flex; answerQuestionEndTime: [{
justify-content: flex-end; type: 'date',
padding-bottom: 20px; required: true,
margin-right: 20px; message: '请选择时间',
} trigger: 'blur'
},
{
validator:checkTime3,
}],
openBidStartTime: [{
type: 'date',
required: true,
message: '请选择时间',
trigger: 'blur'
},
{
validator:checkTime4,
}]
}
}
},
methods: {
releaseTime(val) {
this.ruleForm.releaseTime = new Date(val).getTime()
},
startTime(val) {
this.ruleForm.startTime = new Date(val).getTime()
},
endTime(val) {
this.ruleForm.endTime = new Date(val).getTime()
},
answerQuestionEndTime(val) {
this.ruleForm.answerQuestionEndTime = new Date(val).getTime()
},
openBidStartTime(val) {
this.ruleForm.openBidStartTime = new Date(val).getTime()
},
async next() {
const valid = await this.$refs['ruleForm'].validate();
if(valid){
this.$emit('getruleForm', this.ruleForm)
this.$parent.next()
}
},
upper() {
this.$parent.upper()
}
}
}
</script>
<style scoped>
.form {
width: 50%;
margin: 0 auto;
box-sizing: border-box;
padding-bottom: 30px;
}
.button {
display: flex;
justify-content: flex-end;
padding-bottom: 20px;
margin-right: 20px;
}
</style> </style>
......
<template> <template>
<div > <div>
<div class="content-head"> <div class="content-head">
<breadCrumb :breads = "breads"></breadCrumb> <breadCrumb :breads="breads"></breadCrumb>
<h3>查看询价公告</h3> <h3>查看询价公告</h3>
<h5>查看询价公告</h5> <h5>查看询价公告</h5>
</div> </div>
<div class="home"> <div class="home">
<h1>苍南县公安局关于督查视频服务器5台在线询价公告</h1> <h1>{{projectName}}在线询价公告</h1>
<div class="flex-center"> <div class="flex-center">
<h6 style="margin-right:60px;margin-top:30px">询价所在地:苍南县</h6> <h6 style="margin-right:60px;margin-top:30px">询价所在地:苍南县</h6>
<h6 style="margin-buttom:60px;margin-top:30px">日期:2020-08-03</h6> <h6 style="margin-buttom:60px;margin-top:30px">日期:{{detail.createTime.substring(0,10)}}</h6>
</div> </div>
<div class="form"> <div class="form">
<h3 style="margin-buttom:30px">基本信息</h3> <h3 style="margin-buttom:30px">基本信息</h3>
<table border="0" width="100%" height="120px"> <table border="0" width="100%" height="120px">
<tr> <tr>
<td>询价单编号</td> <td>询价单编号</td>
<td>32020080349638311</td> <td>{{detail.inquiryCode}}</td>
<td>采购记录</td> <td>采购目录</td>
<td>服务器*</td> <td>{{detail.purchaseCategory}}</td>
<td>项目优先级</td> <td>项目优先级</td>
<td>非紧急</td> <td>{{detail.priority==0?"普通":"紧急"}}</td>
</tr> </tr>
<tr> <tr>
<td>报价开始时间</td> <td>报价开始时间</td>
<td>2020-08-03 10:28:39</td> <td>{{detail.startTime}}</td>
<td>报价截止时间</td> <td>报价截止时间</td>
<td>2020-08-06 15:00:00</td> <td>{{detail.endTime}}</td>
<td>采购单位</td> <td>采购单位</td>
<td>苍南县公安局</td> <td>{{detail.purchaseAgent}}</td>
</tr> </tr>
<tr> <tr>
<td>采购单位联系人</td> <td>采购单位联系人</td>
<td>王荔荣</td> <td>{{detail.contact}}</td>
<td>联系方式</td> <td>联系方式</td>
<td>13706628929</td> <td>1{{detail.contactPhone}}</td>
<td>传真号码</td> <td>传真号码</td>
<td>0577-68710076</td> <td>{{detail.facsimile}}</td>
</tr> </tr>
</table> </table>
<div class="appendix "> <div class="appendix ">
<div>预算金额(元)</div> <div>预算金额(元)</div>
<div>435000.00</div> <div>{{detail.budget}}</div>
</div> </div>
<div class="appendix "> <div class="appendix ">
<div>成交规则及确认方式</div> <div>成交规则及确认方式</div>
<div>自动成交</div> <div>自动成交</div>
</div> </div>
<h3 >供应商要求 </h3> <h3>供应商要求 </h3>
<div class="appendix "> <div class="appendix ">
<div>供应商规模要求</div> <div>供应商规模要求</div>
<div>阿里巴巴</div> <div>{{detail.supplierScale}}</div>
</div> </div>
<div class="appendix "> <div class="appendix ">
<div>供应商资格要求</div> <div>供应商资格要求</div>
<div>自动成交</div> <div>{{detail.supplierQualification}}</div>
</div> </div>
<div class="appendix "> <div class="appendix ">
<div>供应商区域范围要求</div> <div>供应商区域范围要求</div>
<div>浙江省</div> <div>{{detail.supplierRegion}}</div>
</div> </div>
<h3>询价商品清单</h3> <h3>询价商品清单</h3>
<dataTable :table-data="tabledata" :columns = "columns"></dataTable> <dataTable :table-data="detail.commodityVOList" :columns="columns"></dataTable>
<div class="appendix list pos"> <div class="appendix list pos">
<div >附件</div> <div>附件</div>
<div>IMG_0208.jpg</div><!-- 此处放文件 --> <ul v-if="detail.accessoryVOList">
</div> <li v-for="(item,index) in detail.accessoryVOList" :key="index">
<h3>商务要求</h3> <div @click="down(item.accessoryUrl)">{{item.fileName}}</div>
<div class="appendix bus-require pos"> </li>
<div class="flex-center"> </ul>
<p>商务要求</p> <div v-else>无附件</div>
</div> </div>
<div>1、 本次招标内容为开平碉楼与村落保护规划服务(具体详见技术要求)。投标人不得将本项目中的内容拆散来投标。 2、 投标人资格要求: (1)投标人应当是具有文物保护工程勘探设计甲级资质的法人,其中其业务范围必须包含文物保护规划编制; (2)投标人应当具有世界文化遗产保护规划设计的工作经验。 3、 投标人应当在投标文件中详细列出并提供相关证明文件证明本项目的管理负责人和技术负责人的学历、职称、从事相关工作的时间,承担过类似项目名称、责任内容、完成日期以及其它业绩证明材料。 4、 投标人应当具有完整的质量保证体系。 5、 投标人应当在投标文件中提供具有文物保护工程勘探设计资格证明等文件。</div> <h3>商务要求</h3>
</div> <div class="appendix bus-require pos">
<div class="flex-center">
<div class="button"> <p>商务要求</p>
<el-button type="primary" @click="back">返回</el-button> </div>
</div> <div v-html="detail.commercialRequirements"></div>
</div> </div>
</div>
<div class="button">
</div> <el-button type="primary" @click="back">返回</el-button>
</div>
<h3>参与报价供应商情况</h3>
<dataTable :table-data="Bidderlist" :columns="offerBiddercolumns" :is-index="true">
<el-table-column slot="operate" label="操作" align="center" fixed="right" width="200">
<template slot-scope="scope">
<el-button type="text" size="small" @click="see(scope.row)">查看中标公告</el-button>
</template>
</el-table-column>
</dataTable>
</div>
</div>
</div>
</template> </template>
<script> <script>
import dataTable from '@components/nopageTable.vue' import {
import breadCrumb from '@components/dataBreadcrumb.vue' offerBidderlist,
export default { } from '@api/supply/bid'
components: { import {
dataTable, getTime1
breadCrumb } from '@utils/time'
}, import {
data() { enquiryProjectId
return { } from '@api/purchaser/bid'
dialogFormVisible: false, import dataTable from '@components/nopageTable.vue'
breads: ['投标管理 ', '在线报名', '询价公告'], import breadCrumb from '@components/dataBreadcrumb.vue'
tabledata: [{ export default {
name: '大白菜', components: {
acount: '100', dataTable,
unit: '斤', breadCrumb
brand: '天然', },
size: '周杰伦', data() {
price: '100', return {
remarks: '无', projectName:"",
quote: '100.00' Bidderlist: [],
}, detail: "",
{ dialogFormVisible: false,
name: '大白菜', breads: ['投标管理 ', '在线报名', '询价公告'],
acount: '100', columns: [
unit: '斤',
brand: '天然', {
size: '周杰伦', label: '标的名称',
price: '100', prop: 'bidName'
remarks: '无', },
quote: '100.00' {
}, { label: '数量',
name: '大白菜', prop: 'quantity'
acount: '100', },
unit: '斤', {
brand: '天然', label: '计量单位',
size: '周杰伦', prop: 'unit'
price: '100', },
remarks: '无', {
quote: '100.00' label: '品牌',
}, { prop: 'brand'
name: '大白菜', },
acount: '100', {
unit: '斤', label: '规格型号',
brand: '天然', prop: 'specification'
size: '周杰伦', },
price: '100', {
remarks: '无', label: '标杆价(元)',
quote: '100.00' prop: 'price'
}, { },
name: '大白菜', {
acount: '100', label: '备注',
unit: '斤', prop: 'remark'
brand: '天然', },
size: '周杰伦', ],
price: '100', offerBiddercolumns: [{
remarks: '无', label: '供应商名称',
quote: '100.00' prop: 'companyName'
}], },
columns: [{ {
label: '标的名称', label: '报价时间',
prop: 'name' prop: 'updateTime'
}, },
{ {
label: '数量', label: '报价',
prop: 'acount' prop: 'price',
}, { sortable: true
label: '计量单位', },
prop: 'unit' {
}, { slot: 'operate'
label: '品牌', }
prop: 'brand' ]
}, { }
label: '规格型号', },
prop: 'size' methods: {
}, { time(data) {
label: '标杆价', getTime1(data)
prop: 'price' },
}, { back() {
label: '备注', this.$router.go(-1)
prop: 'remarks' },
}, { // 获取详情
label: '我的报价(元)', async getenquiryProjectId() {
prop: 'quote' let projectId = localStorage.getItem("projectId")
}] const {
} data,
}, code
methods: { } = await enquiryProjectId(projectId)
Prev() {
this.$router.push('/supply/Join_items/work_place/all_content') data.endTime=getTime1(data.endTime)
} data.startTime=getTime1(data.startTime)
} this.detail = data
} },
// 参与报价的供应商的情况
async getofferBidderlist() {
let projectId = localStorage.getItem("projectId")
const {
data
} = await offerBidderlist(projectId)
this.Bidderlist = data
},
see() {
}
},
created() {
this.projectName=localStorage.getItem("projectName")
this.getenquiryProjectId()
this.getofferBidderlist()
}
}
</script> </script>
<style scoped> <style scoped>
.Tips{ .Tips {
color:#409EFF color: #409EFF
} }
.notice>h4{
.notice>h4 {
font-size: 16px; font-size: 16px;
font-weight: bold; font-weight: bold;
margin-right: 30px; margin-right: 30px;
} }
.notice{
margin:20px 0; .notice {
margin: 20px 0;
border-bottom: 1px solid #ccc; border-bottom: 1px solid #ccc;
} }
h2{
/* margin-top:; */ h2 {
margin-bottom:10px; /* margin-top:; */
} margin-bottom: 10px;
h6{ }
margin-bottom:10px;
h6 {
} margin-bottom: 10px;
.home{
padding:30px; }
background: #fff;
box-sizing: border-box; .home {
/* margin-left:20px; */ padding: 30px;
} background: #fff;
h1{ box-sizing: border-box;
display: flex; /* margin-left:20px; */
justify-content: center; }
}
.form{ h1 {
padding:20px; display: flex;
box-sizing: border-box; justify-content: center;
} }
.form h3{
margin-top:20px; .form {
margin-bottom:20px; padding: 20px;
font-weight: bold; box-sizing: border-box;
} }
/* table>tr{
.form h3 {
margin-top: 20px;
margin-bottom: 20px;
font-weight: bold;
}
/* table>tr{
text-align: center; text-align: center;
} */ } */
table{ table {
border-collapse: collapse; border-collapse: collapse;
} }
table>tr>td{
font-size: 16px; table>tr>td {
border: 1px solid #ccc; font-size: 16px;
padding-left: 10px; border: 1px solid #ccc;
} padding-left: 10px;
table>tr>td:nth-child(odd){ }
background: #F0F0F0
} table>tr>td:nth-child(odd) {
.right-s{ background: #F0F0F0;
padding-right:200px; width: 160px;
} }
.appendix{
display: flex; .right-s {
border: 1px solid #ccc; padding-right: 200px;
} }
.appendix>div:first-child{
width:159px; .appendix {
display: flex;
border-right: 1px solid #ccc; border: 1px solid #ccc;
box-sizing: border-box; }
padding-left: 10px;
} .appendix>div:first-child {
.appendix>div:last-child{ width: 172px;
padding-left: 10px;
} border-right: 1px solid #ccc;
.appendix>div:nth-child(odd){ box-sizing: border-box;
background: #F0F0F0 padding-left: 10px;
} }
.appendix>div{
font-size:16px; .appendix>div:last-child {
line-height: 40px; padding-left: 10px;
}
}
.list>:first-child{ .appendix>div:nth-child(odd) {
height:120px; background: #F0F0F0
line-height: 120px; }
}
.list{ .appendix>div {
margin-top: 20px; font-size: 16px;
} line-height: 40px;
.bus-require>div:first-child{
width:400px; }
}
.bus-require>div:last-child{ .list>:first-child {
font-size: 10px; height: 120px;
} line-height: 120px;
.pos>div:first-child{ }
display: flex;
justify-content: center; .list {
} margin-top: 20px;
}
.last-pos{
margin-left:40px; .bus-require>div:first-child {
margin-top:20px; width: 400px;
} }
.last-pos>div:first-child{
width:65px; .bus-require>div:last-child {
} font-size: 10px;
input{ }
width:100%;
height:70px; .pos>div:first-child {
} display: flex;
.button{ justify-content: center;
width:100px; }
margin:50px auto
} .last-pos {
.home>h1{ margin-left: 40px;
font-weight: bold; margin-top: 20px;
} }
.last-pos>div:first-child {
width: 65px;
}
input {
width: 100%;
height: 70px;
}
.button {
width: 100px;
margin: 50px auto
}
.home>h1 {
font-weight: bold;
}
</style> </style>
...@@ -21,27 +21,27 @@ ...@@ -21,27 +21,27 @@
<el-form-item label="询价所在地" prop="address"> <el-form-item label="询价所在地" prop="address">
<citySelect @sendprovinceId="getprovinceId" @sendcityId="getcityId" @senddistrictId="getdistrictId"></citySelect> <citySelect @sendprovinceId="getprovinceId" @sendcityId="getcityId" @senddistrictId="getdistrictId"></citySelect>
</el-form-item> </el-form-item>
<el-form-item label="项目优先级" prop="priority">
<el-radio-group v-model="ruleForm.priority" class="flex">
<el-radio :label="0">普通</el-radio>
<el-radio :label="1">紧急</el-radio>
</el-radio-group>
</el-form-item>
<div class="flex-between" style="width:60%"> <div class="flex-between" style="width:60%">
<el-form-item label="询价单编号" prop="inquiryCode"> <el-form-item label="询价单编号" prop="inquiryCode">
<el-input v-model.trim="ruleForm.inquiryCode" placeholder="请输入" maxlength="30" style="width: 250px;"></el-input> <el-input v-model.trim="ruleForm.inquiryCode" placeholder="请输入" maxlength="30" style="width: 250px;"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="采购目录" prop="catalog"> <el-form-item label="采购目录" prop="purchaseCategory">
<el-input v-model.trim="ruleForm.catalog" placeholder="请输入" maxlength="30" style="width: 250px;"></el-input> <el-input v-model.trim="ruleForm.purchaseCategory" placeholder="请输入" maxlength="30" style="width: 250px;"></el-input>
</el-form-item>
<el-form-item label="项目优先级" prop="priority">
<el-radio-group v-model="ruleForm.priority">
<el-radio :label="0">普通</el-radio>
<el-radio :label="1">紧急</el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
</div> </div>
<div class="flex-between" style="width:60%"> <div class="flex-between" style="width:60%">
<el-form-item label="报价开始时间" prop="stateTime"> <el-form-item label="报价开始时间" prop="startTime">
<el-date-picker v-model="ruleForm.stateTime" type="datetime" placeholder="选择日期时间" disabled> <el-date-picker v-model="ruleForm.startTime" type="datetime" placeholder="选择日期时间" disabled style="width: 250px;">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="报价结束时间" prop="endTime"> <el-form-item label="报价结束时间" prop="endTime">
<el-date-picker v-model="ruleForm.endTime" type="datetime" placeholder="选择日期时间" disabled> <el-date-picker v-model="ruleForm.endTime" type="datetime" placeholder="选择日期时间" disabled style="width: 250px;">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="采购单位" prop="purchaseAgent"> <el-form-item label="采购单位" prop="purchaseAgent">
...@@ -128,7 +128,7 @@ import { ...@@ -128,7 +128,7 @@ import {
getTime getTime
} from '@utils/time' } from '@utils/time'
import { import {
commoditylist commoditylist,inqueryinfo
} from '@api/common/list' } from '@api/common/list'
export default { export default {
...@@ -194,7 +194,7 @@ export default { ...@@ -194,7 +194,7 @@ export default {
districtId: '', districtId: '',
inquiryCode: '', inquiryCode: '',
priority: '', priority: '',
stateTime: '', startTime: '',
endTime: '', endTime: '',
purchaseAgent: '1', purchaseAgent: '1',
contact: '1', contact: '1',
...@@ -204,7 +204,9 @@ export default { ...@@ -204,7 +204,9 @@ export default {
supplierScale: '', supplierScale: '',
supplierQualification: '', supplierQualification: '',
supplierRegion: '', supplierRegion: '',
commercialRequirements: '' commercialRequirements: '',
accessoryPOList:[],
purchaseCategory:""
}, },
rules: { rules: {
...@@ -233,7 +235,7 @@ export default { ...@@ -233,7 +235,7 @@ export default {
message: '请输入请输入', message: '请输入请输入',
trigger: 'blur' trigger: 'blur'
}], }],
stateTime: [{ startTime: [{
required: true, required: true,
message: '请输入', message: '请输入',
trigger: 'change' trigger: 'change'
...@@ -278,25 +280,28 @@ export default { ...@@ -278,25 +280,28 @@ export default {
}, },
created() { created() {
let userInfo=JSON.parse(localStorage.getItem("userInfo")) let userInfo=JSON.parse(localStorage.getItem("userInfo"))
console.log(userInfo)
this.ruleForm.purchaseAgent=userInfo.companyName this.ruleForm.purchaseAgent=userInfo.companyName
this.ruleForm.contact=userInfo.name this.ruleForm.contact=userInfo.name
this.ruleForm.contactPhone=userInfo.phone this.ruleForm.contactPhone=userInfo.phone
let data=getTime(); let data=getTime();
console.log(data); this.ruleForm.startTime=data;
this.ruleForm.stateTime=data;
this.ruleForm.endTime=data;
this.ruleForm.endTime=data;
this.projectCode=localStorage.getItem("projectCode") this.projectCode=localStorage.getItem("projectCode")
this.projectName=localStorage.getItem("projectName") this.projectName=localStorage.getItem("projectName")
this.getcommoditylist() this.getcommoditylist()
this.getinqueryinfo()
}, },
methods: { methods: {
// 获取上传文件 // 获取上传文件
getfile(val) { getfile(val) {
this.ruleForm.requirementUrl = val
}, },
getfile(val) {
for (let item of val) {
item.accessoryUrl = item.fileUrl
}
this.ruleForm.accessoryPOList = val
},
// 获取市ID // 获取市ID
getprovinceId(val) { getprovinceId(val) {
this.ruleForm.provinceId = val this.ruleForm.provinceId = val
...@@ -322,8 +327,8 @@ export default { ...@@ -322,8 +327,8 @@ export default {
ruleForm.projectId=localStorage.getItem("projectId") ruleForm.projectId=localStorage.getItem("projectId")
const { const {
code, code,
data msg
} = await createEnquiry(this.ruleForm) } = await createEnquiry(ruleForm)
if (code == 200) { if (code == 200) {
this.$message({ this.$message({
message: msg, message: msg,
...@@ -333,9 +338,9 @@ export default { ...@@ -333,9 +338,9 @@ export default {
setTimeout(()=>{ setTimeout(()=>{
this.$router.go(-1) this.$router.go(-1)
},1500) },1500)
} }else if(code == 500){
} else { this.$message.error(msg)
}
} }
} catch (err) { } catch (err) {
console.log(err) console.log(err)
...@@ -349,7 +354,16 @@ export default { ...@@ -349,7 +354,16 @@ export default {
code code
} = await commoditylist(projectId) } = await commoditylist(projectId)
this.tableData=data this.tableData=data
} },
// 获取招标截止时间
async getinqueryinfo() {
let projectId=localStorage.getItem("projectId")
const {
data,
code
} = await inqueryinfo(projectId)
this.ruleForm.endTime=data.endTime;
},
} }
} }
......
...@@ -108,7 +108,9 @@ export default { ...@@ -108,7 +108,9 @@ export default {
setTimeout(()=>{ setTimeout(()=>{
this.$router.go(-1) this.$router.go(-1)
},1500) },1500)
} }else if(code == 500){
this.$message.error(msg)
}
} }
} catch (err) { } catch (err) {
console.log(err) console.log(err)
......
...@@ -3,11 +3,31 @@ ...@@ -3,11 +3,31 @@
<div class="user"> <div class="user">
<div>你好 ,MaikoXie , 欢迎开始一天的工作!</div> <div>你好 ,MaikoXie , 欢迎开始一天的工作!</div>
<ul class="user-list flex-between"> <ul class="user-list flex-between">
<li v-for="item in imglist" :key="item.id"> <li class="flex-colunm ">
<img :src="item.img" alt=""> <img src="@static/images/user.png" alt="">
<div>{{ item.user }}</div> <div>全部项目</div>
<div>{{ item.number }}</div> <div>{{detail.projectCount}}</div>
</li> </li>
<li class="flex-colunm ">
<img src="@static/images/user.png" alt="">
<div>我的供应商</div>
<div>{{detail.bidderCount}}</div>
</li>
<li class="flex-colunm ">
<img src="@static/images/user.png" alt="">
<div>已定标项目</div>
<div>{{detail.calibrated}}</div>
</li>
<li class="flex-colunm ">
<img src="@static/images/user.png" alt="">
<div>已流标项目</div>
<div>{{detail.bidFailed}}</div>
</li>
<li class="flex-colunm ">
<img src="@static/images/user.png" alt="">
<div>已终止项目</div>
<div>{{detail.end}}</div>
</li>
</ul> </ul>
<h1>项目信息</h1> <h1>项目信息</h1>
<dataTable :table-data="tableData" :columns="columns" :is-pageobj="false" > <dataTable :table-data="tableData" :columns="columns" :is-pageobj="false" >
...@@ -19,18 +39,38 @@ ...@@ -19,18 +39,38 @@
</dataTable> </dataTable>
<h1>待办事项</h1> <h1>待办事项</h1>
<ul class="flex-between project-list"> <ul class="flex-between project-list">
<li v-for="item in projectlist" :key="item.id"> <li class="flex-colunm">
<img :src="item.img" alt=""> <img src="@static/images/item.png" alt="">
<div>{{ item. project }}</div> <div>待修改项目</div>
<div>{{ item.number }}</div> <div>{{ detail.projectCount }}</div>
</li> </li>
<li class="flex-colunm">
<img src="@static/images/item.png" alt="">
<div>待修改询价公告</div>
<div>{{ detail.inquiryNoticeNeedModify }}</div>
</li>
<li class="flex-colunm">
<img src="@static/images/item.png" alt="">
<div>待修改招标公告</div>
<div>{{ detail.biddingNoticeNeedModify }}</div>
</li>
<li class="flex-colunm">
<img src="@static/images/item.png" alt="">
<div>待签署应收账款买断合同</div>
<div>{{ detail.payment }}</div>
</li>
<li class="flex-colunm">
<img src="@static/images/item.png" alt="">
<div>待确认供应商凭证</div>
<div>{{ detail.credentials }}</div>
</li>
</ul> </ul>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import {home} from '@api/purchaser/home'
import {getSearchString} from '@utils/common' import {getSearchString} from '@utils/common'
import dataTable from '@components/nopageTable.vue' import dataTable from '@components/nopageTable.vue'
export default { export default {
...@@ -39,6 +79,7 @@ export default { ...@@ -39,6 +79,7 @@ export default {
}, },
data() { data() {
return { return {
detail:"",
tableData: [{ tableData: [{
state: '审核通过待发布的项目', state: '审核通过待发布的项目',
number: '10', number: '10',
...@@ -99,48 +140,31 @@ export default { ...@@ -99,48 +140,31 @@ export default {
number: '100' number: '100'
} }
], ],
imglist: [{
id: 0,
img: require('@static/images/user.png'),
user: '供应商',
number: '100'
},
{
id: 1,
img: require('@static/images/user.png'),
user: '采购商',
number: '100'
},
{
id: 2,
img: require('@static/images/user.png'),
user: '全部项目',
number: '100'
},
{
id: 3,
img: require('@static/images/user.png'),
user: '正在进行的项目',
number: '100'
},
{
id: 4,
img: require('@static/images/user.png'),
user: '参与投标总次数',
number: '100'
}
]
} }
}, },
created(){ created(){
let token=getSearchString("token"); let token=getSearchString("token");
console.log(token)
localStorage.setItem("token",token) localStorage.setItem("token",token)
this.gethome()
}, },
methods: { methods: {
handleSee(row) { handleSee(row) {
this.$router.push(row.url) this.$router.push(row.url)
}, },
async gethome() {
const {
data,
code
} = await home()
this.detail=data
this.tableData[0].number=data.prePublic
this.tableData[1].number=data.sellingBidding
this.tableData[2].number=data.bidding
this.tableData[3].number=data.open
this.tableData[4].number=data.bidOpening
this.tableData[5].number=data.bidOevaluating
}
} }
} }
</script> </script>
......
...@@ -218,8 +218,8 @@ ...@@ -218,8 +218,8 @@
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 +"/"+token )
this.websocket = new WebSocket('ws://192.168.200.201:8082/webSocket/' + projectId +"/"+token ) // this.websocket = new WebSocket('ws://192.168.200.201:8082/webSocket/' + projectId +"/"+token )
// 连接成功时 // 连接成功时
this.websocket.onopen = () => {} this.websocket.onopen = () => {}
this.websocket.onmessage = event => { this.websocket.onmessage = event => {
......
...@@ -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 // 请求超时时间
}) })
...@@ -42,8 +42,8 @@ service.interceptors.response.use( ...@@ -42,8 +42,8 @@ service.interceptors.response.use(
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);
} }
} }
......
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