Commit 21085428 authored by 张冬's avatar 张冬

修改问题

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