Commit f35e9be1 authored by 张冬's avatar 张冬

询价公告和招标公告编辑和发布合

parent ea22c7eb
...@@ -564,6 +564,14 @@ export function createcadidate(data) { ...@@ -564,6 +564,14 @@ export function createcadidate(data) {
data:data data:data
}) })
} }
//中标候选人公示编辑
export function editcadidate(data) {
return request({
url: "tender-notice/edit-cadidate",
method: 'post',
data:data
})
}
//中标公告提交 //中标公告提交
export function createwin(data) { export function createwin(data) {
......
...@@ -288,9 +288,9 @@ export function noticeWin(projectId) { ...@@ -288,9 +288,9 @@ export function noticeWin(projectId) {
}) })
} }
// 中标候选人公示查看 // 中标候选人公示查看
export function publicitydetail(projectId) { export function cadidate(projectId) {
return request({ return request({
url: `bidder-decide/publicity/Detail/${projectId}`, url: `notice/cadidate?projectId=${projectId}`,
method: 'get', method: 'get',
}) })
} }
......
...@@ -181,17 +181,18 @@ export default { ...@@ -181,17 +181,18 @@ export default {
this.total = total this.total = total
} }
}, },
async list(pageObj) { // async list(pageObj) {
let url = this.url // let url = this.url
const { code, data } = await getList(pageObj, url) // const { code, data } = await getList(pageObj, url)
if (code === 200) { // if (code === 200) {
for(let item of data){ // for(let item of data){
item.createTime=getTime1(item.createTime) // item.createTime=getTime1(item.createTime)
item.endTime=getTime1(item.endTime) // item.endTime=getTime1(item.endTime)
} // }
this.tableData = data // this.tableData = data
} // this.total = total
}, // }
// },
handleSizeChange(val) { handleSizeChange(val) {
let pageObj = this.pageObj let pageObj = this.pageObj
pageObj.size = val pageObj.size = val
...@@ -206,10 +207,11 @@ export default { ...@@ -206,10 +207,11 @@ export default {
}, },
// 查询 // 查询
query() { query() {
let message=this.objInput; let message=this.objInput;
Object.assign(message,this.pageObj) this.pageObj.currentPage=1
console.log(message) Object.assign(message,this.pageObj)
this.list(message) this.pageObj=message
this.getauditList()
}, },
// check选择id // check选择id
handleSelectionChange(val) { handleSelectionChange(val) {
...@@ -218,6 +220,8 @@ export default { ...@@ -218,6 +220,8 @@ export default {
// 重置 // 重置
rest(data) { rest(data) {
this.$refs[data].resetFields() this.$refs[data].resetFields()
this.pageObj.currentPage=1
this.pageObj.size=10
this.getauditList(this.pageObj); this.getauditList(this.pageObj);
}, },
handlerelease() { handlerelease() {
......
...@@ -417,35 +417,7 @@ export default { ...@@ -417,35 +417,7 @@ export default {
cancel() { cancel() {
this.$router.go(-1); this.$router.go(-1);
}, },
//提交表单
async submit() {
try {
const valid = await this.$refs['ruleForm'].validate();
const valid1 = await this.$refs['ruleForm1'].validate();
const valid2 = await this.$refs['ruleForm2'].validate();
console.log(valid);
if (valid && valid1 && valid2) {
let ruleForm = this.ruleForm;
ruleForm.projectId = localStorage.getItem('projectId');
console.log('通过');
const { code, msg } = await editEnquiry(ruleForm);
if (code == 200) {
this.$message({
message: msg,
type: 'success',
duration: 1500
});
setTimeout(() => {
this.$router.go(-1);
}, 1500);
} else {
this.$message.error(msg);
}
}
} catch (err) {
console.log(err);
}
},
// 获取列表 // 获取列表
async getcommoditylist() { async getcommoditylist() {
let projectId = localStorage.getItem('projectId'); let projectId = localStorage.getItem('projectId');
......
<template> <template>
<div> <div>
<div v-if="auditStatus == 0||auditStatus == 1"> <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="content">
<div class="content"> <priceDetail>
<priceDetail @getstate="getstate"> <slot>
<slot> <h3>参与报价供应商情况</h3>
<h3>参与报价供应商情况</h3> <dataTable :table-data="Bidderlist" :columns="offerBiddercolumns" :is-index="true">
<dataTable :table-data="Bidderlist" :columns="offerBiddercolumns" :is-index="true"> <el-table-column slot="operate" label="操作" align="center" fixed="right" width="200">
<el-table-column slot="operate" label="操作" align="center" fixed="right" width="200"> <template slot-scope="scope">
<template slot-scope="scope"> <el-button type="text" size="small" @click="see(scope.row.companyId)">查看报价明细</el-button>
<el-button type="text" size="small" @click="see(scope.row.companyId)">查看报价明细</el-button> </template>
</template> </el-table-column>
</el-table-column> </dataTable>
</dataTable> </slot>
</slot> </priceDetail>
</priceDetail> <div class="centerButton">
<div class="centerButton"> <el-button type="primary" @click="back">返回</el-button>
<el-button type="primary" @click="back">返回</el-button>
</div>
</div> </div>
<el-dialog title="报价明细" :visible.sync="dialogFormVisible">
<dataTable :table-data="tableData" :columns="columns"></dataTable>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false">取 消</el-button>
<el-button type="primary" @click="dialogFormVisible = false">确 定</el-button>
</div>
</el-dialog>
</div> </div>
<el-dialog title="报价明细" :visible.sync="dialogFormVisible">
<editInquiryAnnouncement v-if="auditStatus == 2"></editInquiryAnnouncement> <dataTable :table-data="tableData" :columns="columns"></dataTable>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false">取 消</el-button>
<el-button type="primary" @click="dialogFormVisible = false">确 定</el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
...@@ -111,10 +107,6 @@ export default { ...@@ -111,10 +107,6 @@ export default {
}; };
}, },
methods: { methods: {
getstate(val) {
this.auditStatus = val;
console.log(val)
},
back() { back() {
this.$router.go(-1); this.$router.go(-1);
}, },
......
<template> <template>
<div class="info"> <div class="info">
<div class="content"> <div class="content">
<editTenderAnnouncement v-if="auditStatus == 2"></editTenderAnnouncement> <div class="title_info">
<div v-if="auditStatus == 0||auditStatus == 1"> <dataBreadcrumb :breads="breads"></dataBreadcrumb>
<div class="title_info"> </div>
<dataBreadcrumb :breads="breads"></dataBreadcrumb> <div class="info_box">
</div> <noticeDetail @getstate="getstate"></noticeDetail>
<div class="info_box"> <el-row>
<noticeDetail @getstate="getstate"></noticeDetail> <el-button @click="back">返回</el-button>
<el-row> </el-row>
<el-button @click="back">返回</el-button>
</el-row>
</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -33,9 +30,6 @@ export default { ...@@ -33,9 +30,6 @@ export default {
}; };
}, },
methods: { methods: {
getstate(val) {
this.auditStatus = val;
},
back() { back() {
this.$router.go(-1); this.$router.go(-1);
} }
......
<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 class="content">
<div class="describe">投标邀请书</div>
<div class="form">
<el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="120px" class="demo-ruleForm">
<el-form-item label="投标邀请书标题" prop="title">
<el-input v-model.trim="ruleForm.title" maxlength="30"></el-input>
</el-form-item>
<el-form-item label="上传附件">
<singleUpload tip="支持扩展名:.rar .zip .doc .docx .pdf .jpg..." @input="getfile"></singleUpload>
</el-form-item>
<el-form-item label="投标邀请书内容" prop="content">
<!-- <el-button style="margin-bottom: 30px;">插入邀请投标单位名称</el-button> -->
<quill-editor ref="text" v-model="ruleForm.content" :options="editorOption" class="myQuillEditor" />
</el-form-item>
</el-form>
</div>
</div>
<div class="bottomButton">
<el-button @click="cancel">取消</el-button>
<el-button type="primary" @click="submit1" v-if="type == 1">编辑</el-button>
<el-button type="primary" @click="submit" v-else>提交审核</el-button>
</div>
</div> </div>
<div class="content">
<div class="describe">投标邀请书</div>
<div class="form">
<el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="120px" class="demo-ruleForm">
<el-form-item label="投标邀请书标题" prop="title">
<el-input v-model.trim="ruleForm.title" maxlength="30"></el-input>
</el-form-item>
<el-form-item label="上传附件">
<singleUpload tip="支持扩展名:.rar .zip .doc .docx .pdf .jpg..." @input="getfile"></singleUpload>
</el-form-item>
<el-form-item label="投标邀请书内容" prop="content">
<!-- <el-button style="margin-bottom: 30px;">插入邀请投标单位名称</el-button> -->
<quill-editor ref="text" v-model="ruleForm.content" :options="editorOption" class="myQuillEditor" />
</el-form-item>
</el-form>
</div>
</div>
<div class="bottomButton">
<el-button @click="cancel">取消</el-button>
<el-button type="primary" @click="submit">提交审核</el-button>
</div>
</div>
</template> </template>
<script> <script>
import { import { biddingProjectId } from '@api/common/list';
inviteMessage import { inviteMessage } from '@api/purchaser/bid';
} from '@api/purchaser/bid' import { quillEditor } from 'vue-quill-editor';
import { import 'quill/dist/quill.core.css';
quillEditor import 'quill/dist/quill.snow.css';
} from 'vue-quill-editor' import 'quill/dist/quill.bubble.css';
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
import dataBreadcrumb from '@components/dataBreadcrumb.vue' import dataBreadcrumb from '@components/dataBreadcrumb.vue';
import singleUpload from '@components/Upload/Upload.vue' import singleUpload from '@components/Upload/Upload.vue';
export default { export default {
components: { components: {
dataBreadcrumb, dataBreadcrumb,
singleUpload, singleUpload,
quillEditor quillEditor
}, },
data() { data() {
return { return {
editorOption: {}, type: '',
breads: ['招标管理', '招标项目管理', '工作台'], editorOption: {},
ruleForm: { breads: ['招标管理', '招标项目管理', '工作台'],
title: '', ruleForm: {
content: '' title: '',
}, content: '',
rules: { accessoryPOList: []
title: [{ },
required: true, rules: {
message: '请填写', title: [
trigger: 'blur' {
}], required: true,
content: [{ message: '请填写',
required: true, trigger: 'blur'
message: '请填写', }
trigger: 'blur' ],
}] content: [
} {
} required: true,
}, message: '请填写',
methods: { trigger: 'blur'
cancel() { }
this.$router.go(-1) ]
}
};
}, },
getfile(val) { created() {
console.log(val) let type = this.$route.query.type;
for (let item of val) { this.type = type;
item.accessoryUrl = item.fileUrl if (type == 1) {
} this.getbiddingProjectId();
this.accessoryPOList = val }
}, },
//提交表单 methods: {
async submit() { cancel() {
let ruleForm = this.ruleForm this.$router.go(-1);
ruleForm.projectId = '1' },
ruleForm.accessoryPOList = this.accessoryPOList getfile(val) {
try { for (let item of val) {
const valid = await this.$refs['ruleForm'].validate() item.accessoryUrl = item.fileUrl;
if (valid) { }
const { this.ruleForm.accessoryPOList = val;
code, },
msg async getbiddingProjectId() {
} = await inviteMessage(this.ruleForm) let projectId = localStorage.getItem('projectId');
if (code === 200) { const { data, code, msg } = await biddingProjectId(projectId);
this.$message({ if (code == 200) {
message: msg, for (let item of data.accessoryVOList) {
type: 'success' item.url = item.accessoryUrl;
}) item.name = item.fileName;
this.$router.go(-1) }
}else{ this.ruleForm = data;
this.$message.error(msg) }
} },
//提交表单
async submit() {
let ruleForm = this.ruleForm;
ruleForm.projectId = localStorage.getItem('projectId');
try {
const valid = await this.$refs['ruleForm'].validate();
if (valid) {
const { code, msg } = await inviteMessage(this.ruleForm);
if (code === 200) {
this.$message({
message: msg,
type: 'success'
});
this.$router.go(-1);
} else {
this.$message.error(msg);
}
}
} catch (err) {
console.log(err);
}
},
//提交表单
async submit1() {
let ruleForm = this.ruleForm;
ruleForm.projectId = localStorage.getItem('projectId');
ruleForm.accessoryPOList = this.accessoryPOList;
try {
const valid = await this.$refs['ruleForm'].validate();
if (valid) {
const { code, msg } = await editBidding(this.ruleForm);
if (code === 200) {
this.$message({
message: msg,
type: 'success',
duration: 1500
});
setTimeout(() => {
this.$router.go(-1);
}, 1500);
} else if (code == 500) {
this.$message.error(msg);
}
}
} catch (err) {
console.log(err);
}
} }
} catch (err) {
console.log(err)
}
} }
} };
}
</script> </script>
<style scoped> <style scoped>
.ql-editor { .ql-editor {
height: 400px; height: 400px;
} }
.bottomButton { .bottomButton {
margin-top: 20px; margin-top: 20px;
} }
.form { .form {
padding-bottom: 80px; padding-bottom: 80px;
} }
</style> </style>
<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="form"> <div class="form">
<div class="flex-between" style="width:100%;margin-bottom: 20px;"> <div class="flex-between" style="width: 100%; margin-bottom: 20px">
<div>项目编号:{{projectCode}}</div> <div>项目编号:{{ projectCode }}</div>
<div>项目名称:{{projectName}}</div> <div>项目名称:{{ projectName }}</div>
</div> </div>
<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="title">
<el-input v-model.trim="ruleForm.title" placeholder="请输入" style="width: 50%;" maxlength="30"></el-input> <el-input v-model.trim="ruleForm.title" placeholder="请输入" style="width: 50%" maxlength="30"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="询价所在地" prop="address"> <el-form-item label="询价所在地" prop="address">
<citySelect @sendprovinceId="getprovinceId" @sendcityId="getcityId" @senddistrictId="getdistrictId"></citySelect> <citySelect
</el-form-item> @sendprovinceId="getprovinceId"
<el-form-item label="项目优先级" prop="priority" > @sendcityId="getcityId"
<el-radio-group v-model="ruleForm.priority"> @senddistrictId="getdistrictId"
<el-radio :label="0">普通</el-radio> ></citySelect>
<el-radio :label="1">紧急</el-radio> </el-form-item>
</el-radio-group> <el-form-item label="项目优先级" prop="priority">
</el-form-item> <el-radio-group v-model="ruleForm.priority">
<div class="flex-between" style="width:60%"> <el-radio :label="0">普通</el-radio>
<el-form-item label="询价单编号" prop="inquiryCode"> <el-radio :label="1">紧急</el-radio>
<el-input v-model.trim="ruleForm.inquiryCode" onkeyup="value=value.replace(/[^\d]/g,'')" placeholder="请输入" maxlength="30" style="width: 250px;"></el-input> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="采购目录" prop="purchaseCategory"> <div class="flex-between" style="width: 60%">
<el-input v-model.trim="ruleForm.purchaseCategory" placeholder="请输入" maxlength="30" style="width: 250px;"></el-input> <el-form-item label="询价单编号" prop="inquiryCode">
</el-form-item> <el-input
v-model.trim="ruleForm.inquiryCode"
onkeyup="value=value.replace(/[^\d]/g,'')"
placeholder="请输入"
maxlength="30"
style="width: 250px"
></el-input>
</el-form-item>
<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="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
style="width: 250px"
>
</el-date-picker>
</el-form-item>
<el-form-item label="采购单位" prop="purchaseAgent">
<el-input v-model.trim="ruleForm.purchaseAgent" disabled style="width: 250px"></el-input>
</el-form-item>
</div>
<div class="flex-between" style="width: 60%">
<el-form-item label="采购单位联系人" prop="contact">
<el-input v-model.trim="ruleForm.contact" disabled style="width: 250px"></el-input>
</el-form-item>
<el-form-item label="联系方式" prop="contactPhone">
<el-input v-model.trim="ruleForm.contactPhone" disabled style="width: 250px"></el-input>
</el-form-item>
<el-form-item label="传真号码">
<el-input
v-model.trim="ruleForm.facsimile"
placeholder="请输入"
maxlength="30"
style="width: 250px"
></el-input>
</el-form-item>
</div>
<el-form-item label="预算总额(元)" prop="budget" style="width: 20%">
<el-input-number
v-model="ruleForm.budget"
:min="0"
:controls="false"
:precision="2"
placeholder="请输入"
></el-input-number>
</el-form-item>
</el-form>
</div>
</div> </div>
<div class="flex-between" style="width:60%"> <!-- 供应商要求 -->
<el-form-item label="报价开始时间" prop="startTime"> <div>
<el-date-picker v-model="ruleForm.startTime" type="datetime" placeholder="选择日期时间" disabled style="width: 250px;"> <div class="describe">基本信息</div>
</el-date-picker> <div class="form">
</el-form-item> <div class="flex-between" style="width: 100%; margin-bottom: 20px">
<el-form-item label="报价结束时间" prop="endTime"> <div>项目编号:{{ projectCode }}</div>
<el-date-picker v-model="ruleForm.endTime" type="datetime" placeholder="选择日期时间" disabled style="width: 250px;"> <div>项目名称:{{ projectName }}</div>
</el-date-picker> </div>
</el-form-item> <el-form ref="ruleForm1" :model="ruleForm" :rules="rules" label-width="150px" class="demo-ruleForm">
<el-form-item label="采购单位" prop="purchaseAgent"> <el-form-item label="供应商规格要求" prop="supplierScale">
<el-input v-model.trim="ruleForm.purchaseAgent" disabled style="width: 250px;"></el-input> <el-input v-model.trim="ruleForm.supplierScale" placeholder="请输入" maxlength="30"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="供应商资格要求" prop="supplierQualification">
<el-input v-model.trim="ruleForm.supplierQualification" placeholder="请输入" maxlength="30"></el-input>
</el-form-item>
<el-form-item label="供应商区域范围要求" prop="supplierRegion">
<el-input v-model.trim="ruleForm.supplierRegion" placeholder="请输入" maxlength="30"></el-input>
</el-form-item>
</el-form>
</div>
</div> </div>
<div class="flex-between" style="width:60%"> <!-- 询价商品清单 -->
<el-form-item label="采购单位联系人" prop="contact"> <div>
<el-input v-model.trim="ruleForm.contact" disabled style="width: 250px;"></el-input> <div class="describe">询价商品清单</div>
</el-form-item> <div class="form">
<el-form-item label="联系方式" prop="contactPhone"> <dataTable :table-data="tableData" :columns="columns" :is-pageobj="false"></dataTable>
<el-input v-model.trim="ruleForm.contactPhone" disabled style="width: 250px;"></el-input> <div class="flex" style="margin-top: 20px">
</el-form-item> <div class="adjustment">上传文件</div>
<el-form-item label="传真号码" > <singleUpload :limit="1" tip="支持扩展名:.rar .zip .doc .docx .pdf .jpg..." @input="getfile"></singleUpload>
<el-input v-model.trim="ruleForm.facsimile" placeholder="请输入" maxlength="30" style="width: 250px;"></el-input> </div>
</el-form-item> </div>
</div>
<!-- 商务要求 -->
<div>
<div class="describe">商务要求</div>
<div class="form">
<el-form ref="ruleForm2" :model="ruleForm" :rules="rules" label-width="100px" class="demo-ruleForm">
<el-form-item label="商务要求" prop="commercialRequirements">
<el-input
v-model.trim="ruleForm.commercialRequirements"
:rows="4"
style="width: 60%"
placeholder="请输入"
type="textarea"
maxlength="300"
></el-input>
</el-form-item>
</el-form>
</div>
</div>
<div class="bottomButton">
<el-button @click="cancel">取消</el-button>
<el-button type="primary" @click="submit1" v-if="type==1">编辑</el-button>
<el-button type="primary" @click="submit" v-else>提交审核</el-button>
</div> </div>
<el-form-item label="预算总额(元)" prop="budget" style="width: 20%;">
<el-input-number v-model="ruleForm.budget" :min="0" :controls="false" :precision="2" placeholder="请输入"></el-input-number>
</el-form-item>
</el-form>
</div>
</div>
<!-- 供应商要求 -->
<div>
<div class="describe">基本信息</div>
<div class="form">
<div class="flex-between" style="width:100%;margin-bottom: 20px;">
<div>项目编号:{{projectCode}}</div>
<div>项目名称:{{projectName}}</div>
</div>
<el-form ref="ruleForm1" :model="ruleForm" :rules="rules" label-width="150px" class="demo-ruleForm">
<el-form-item label="供应商规格要求" prop="supplierScale">
<el-input v-model.trim="ruleForm.supplierScale" placeholder="请输入" maxlength="30"></el-input>
</el-form-item>
<el-form-item label="供应商资格要求" prop="supplierQualification">
<el-input v-model.trim="ruleForm.supplierQualification" placeholder="请输入" maxlength="30"></el-input>
</el-form-item>
<el-form-item label="供应商区域范围要求" prop="supplierRegion">
<el-input v-model.trim="ruleForm.supplierRegion" placeholder="请输入" maxlength="30"></el-input>
</el-form-item>
</el-form>
</div>
</div>
<!-- 询价商品清单 -->
<div>
<div class="describe">询价商品清单</div>
<div class="form">
<dataTable :table-data="tableData" :columns="columns" :is-pageobj="false"></dataTable>
<div class="flex" style="margin-top: 20px;">
<div class="adjustment">上传文件</div>
<singleUpload :limit="1" tip="支持扩展名:.rar .zip .doc .docx .pdf .jpg..." @input="getfile"></singleUpload>
</div>
</div>
</div>
<!-- 商务要求 -->
<div>
<div class="describe">商务要求</div>
<div class="form">
<el-form ref="ruleForm2" :model="ruleForm" :rules="rules" label-width="100px" class="demo-ruleForm">
<el-form-item label="商务要求" prop="commercialRequirements">
<el-input v-model.trim="ruleForm.commercialRequirements" :rows="4" style="width: 60%;" placeholder="请输入" type="textarea" maxlength="300"></el-input>
</el-form-item>
</el-form>
</div> </div>
</div>
<div class="bottomButton">
<el-button @click="cancel">取消</el-button>
<el-button type="primary" @click="submit">提交审核</el-button>
</div>
</div> </div>
</div>
</template> </template>
<script> <script>
import { generateNumber} from '@/api/common/list' import { generateNumber, enquiryProjectId } from '@/api/common/list';
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 citySelect from '@components/citySelect/citySelect.vue' import citySelect from '@components/citySelect/citySelect.vue';
import singleUpload from '@components/Upload/Upload.vue' import singleUpload from '@components/Upload/Upload.vue';
import { import { createEnquiry } from '@api/purchaser/bid';
createEnquiry import { getTime } from '@utils/time';
} from '@api/purchaser/bid' import { commoditylist, inqueryinfo } from '@api/common/list';
import {
getTime
} from '@utils/time'
import {
commoditylist,inqueryinfo
} from '@api/common/list'
export default { export default {
components: { components: {
dataTable, dataTable,
dataBreadcrumb, dataBreadcrumb,
citySelect, citySelect,
singleUpload singleUpload
},
data() {
// 测试省份
let islocal = (rule, value, callback) => {
if (!this.ruleForm.provinceId) {
callback(new Error('请选择省份'))
} else if (!this.ruleForm.cityId) {
callback(new Error('请选择市'))
} else if (!this.ruleForm.districtId) {
callback(new Error('请选择区'))
} else {
callback()
}
}
let checkfacsimile = async (rule, value, callback) => {
const reg = /^(?:\d{3,4}-)?\d{7,8}(?:-\d{1,6})?$/
if (reg.test(value)) {
callback();
} else {
return callback(new Error('请输入正确的传真号'));
}
};
return {
projectName:"",
projectCode:"",
breads: ['招标管理', ' 招标项目管理', '工作台'],
tableData: [],
columns: [
{
label: '标的名称',
prop: 'bidName'
},
{
label: '数量',
prop: 'quantity'
},
{
label: '计量单位',
prop: 'unit'
},
{
label: '品牌',
prop: 'brand'
},
{
label: '规格型号',
prop: 'specification'
},
{
label: '标杆价(元)',
prop: 'price'
},
{
label: '备注',
prop: 'remark'
},
],
ruleForm: {
title: '',
projectId: '',
cityId: '',
districtId: '',
inquiryCode: '',
priority: '',
startTime: '',
endTime: '',
purchaseAgent: '1',
contact: '1',
contactPhone: '1',
facsimile: '',
budget: undefined,
supplierScale: '',
supplierQualification: '',
supplierRegion: '',
commercialRequirements: '',
accessoryPOList:[],
purchaseCategory:""
},
rules: {
address: [{
required: true,
validator: islocal,
trigger: 'change'
}],
budget: [{
required: true,
message: '请输入',
trigger: 'blur'
}],
title: [{
required: true,
message: '请输入',
trigger: 'blur'
}],
inquiryCode: [{
required: true,
message: '请输入请输入',
trigger: 'blur'
}],
contact: [{
required: true,
message: '请输入请输入',
trigger: 'blur'
}],
contactPhone: [{
required: true,
message: '请输入请输入',
trigger: 'blur'
}],
startTime: [{
required: true,
message: '请输入',
trigger: 'change'
}],
endTime: [{
required: true,
message: '请输入',
trigger: 'blur'
}],
purchaseAgent: [{
required: true,
message: '请输入',
trigger: 'blur'
}],
facsimile: [{
required: true,
validator: checkfacsimile,
trigger: 'blur'
}],
supplierScale: [{
required: true,
message: '请输入',
trigger: 'blur'
}],
supplierQualification: [{
required: true,
message: '请输入',
trigger: 'blur'
}],
supplierRegion: [{
required: true,
message: '请输入',
trigger: 'blur'
}],
commercialRequirements: [{
required: true,
message: '请输入',
trigger: 'blur'
}]
}
}
},
created() {
let userInfo=JSON.parse(localStorage.getItem("userInfo"))
this.ruleForm.purchaseAgent=userInfo.companyName
this.ruleForm.contact=userInfo.name
this.ruleForm.contactPhone=userInfo.phone
let data=getTime();
this.ruleForm.startTime=data;
this.projectCode=localStorage.getItem("projectCode")
this.projectName=localStorage.getItem("projectName")
this.getcommoditylist()
this.getinqueryinfo()
this.getGenerateNumber()
},
methods: {
// 获取上传文件
getfile(val) {
},
getfile(val) {
for (let item of val) {
item.accessoryUrl = item.fileUrl
}
this.ruleForm.accessoryPOList = val
},
// 获取编号
async getGenerateNumber() {
const {data} = await generateNumber(3)
this.ruleForm.inquiryCode = data
},
// 获取市ID
getprovinceId(val) {
this.ruleForm.provinceId = val
}, },
// 获取省ID data() {
getcityId(val) { // 测试省份
this.ruleForm.cityId = val let islocal = (rule, value, callback) => {
}, if (!this.ruleForm.provinceId) {
// 获取城ID callback(new Error('请选择省份'));
getdistrictId(val) { } else if (!this.ruleForm.cityId) {
this.ruleForm.districtId = val callback(new Error('请选择市'));
}, } else if (!this.ruleForm.districtId) {
cancel() { callback(new Error('请选择区'));
this.$router.go(-1) } else {
callback();
}
};
let checkfacsimile = async (rule, value, callback) => {
const reg = /^(?:\d{3,4}-)?\d{7,8}(?:-\d{1,6})?$/;
if (reg.test(value)) {
callback();
} else {
return callback(new Error('请输入正确的传真号'));
}
};
return {
projectName: '',
projectCode: '',
breads: ['招标管理', ' 招标项目管理', '工作台'],
tableData: [],
columns: [
{
label: '标的名称',
prop: 'bidName'
},
{
label: '数量',
prop: 'quantity'
},
{
label: '计量单位',
prop: 'unit'
},
{
label: '品牌',
prop: 'brand'
},
{
label: '规格型号',
prop: 'specification'
},
{
label: '标杆价(元)',
prop: 'price'
},
{
label: '备注',
prop: 'remark'
}
],
ruleForm: {
title: '',
projectId: '',
cityId: '',
districtId: '',
inquiryCode: '',
priority: '',
startTime: '',
endTime: '',
purchaseAgent: '1',
contact: '1',
contactPhone: '1',
facsimile: '',
budget: undefined,
supplierScale: '',
supplierQualification: '',
supplierRegion: '',
commercialRequirements: '',
accessoryPOList: [],
purchaseCategory: ''
},
rules: {
address: [
{
required: true,
validator: islocal,
trigger: 'change'
}
],
budget: [
{
required: true,
message: '请输入',
trigger: 'blur'
}
],
title: [
{
required: true,
message: '请输入',
trigger: 'blur'
}
],
inquiryCode: [
{
required: true,
message: '请输入请输入',
trigger: 'blur'
}
],
contact: [
{
required: true,
message: '请输入请输入',
trigger: 'blur'
}
],
contactPhone: [
{
required: true,
message: '请输入请输入',
trigger: 'blur'
}
],
startTime: [
{
required: true,
message: '请输入',
trigger: 'change'
}
],
endTime: [
{
required: true,
message: '请输入',
trigger: 'blur'
}
],
purchaseAgent: [
{
required: true,
message: '请输入',
trigger: 'blur'
}
],
facsimile: [
{
required: true,
validator: checkfacsimile,
trigger: 'blur'
}
],
supplierScale: [
{
required: true,
message: '请输入',
trigger: 'blur'
}
],
supplierQualification: [
{
required: true,
message: '请输入',
trigger: 'blur'
}
],
supplierRegion: [
{
required: true,
message: '请输入',
trigger: 'blur'
}
],
commercialRequirements: [
{
required: true,
message: '请输入',
trigger: 'blur'
}
]
},
type: ''
};
}, },
//提交表单 created() {
async submit() { let type = this.$route.query.type;
try { this.type = type;
const valid = await this.$refs['ruleForm'].validate() if (type == 1) {
const valid1 =await this.$refs['ruleForm1'].validate() this.getenquiryProjectId()
const valid2 =await this.$refs['ruleForm2'].validate() }else{
console.log(valid) let userInfo = JSON.parse(localStorage.getItem('userInfo'));
if (valid&&valid1&&valid2) { this.ruleForm.purchaseAgent = userInfo.companyName;
let ruleForm=this.ruleForm; this.ruleForm.contact = userInfo.name;
ruleForm.projectId=localStorage.getItem("projectId") this.ruleForm.contactPhone = userInfo.phone;
console.log("通过") this.ruleForm.startTime = getTime();
const {
code,
msg
} = await createEnquiry(ruleForm)
if (code == 200) {
this.$message({
message: msg,
type: 'success',
duration:1500
})
setTimeout(()=>{
this.$router.go(-1)
},1500)
}else{
this.$message.error(msg)
}
} }
} catch (err) { this.projectCode = localStorage.getItem('projectCode');
console.log(err) this.projectName = localStorage.getItem('projectName');
} this.getcommoditylist();
this.getinqueryinfo();
this.getGenerateNumber();
}, },
// 获取列表 methods: {
async getcommoditylist() { // 获取详情
let projectId=localStorage.getItem("projectId") async getenquiryProjectId() {
const { let projectId = localStorage.getItem('projectId');
data, const { data, code, msg } = await enquiryProjectId(projectId);
code if (code == 200) {
} = await commoditylist(projectId) for (let item of data.accessoryVOList) {
this.tableData=data item.name = item.fileName;
}, item.url = item.accessoryUrl;
// 获取招标截止时间 }
async getinqueryinfo() { this.ruleForm = data;
let projectId=localStorage.getItem("projectId") let userInfo = JSON.parse(localStorage.getItem('userInfo'));
const { this.ruleForm.purchaseAgent = userInfo.companyName;
data, this.ruleForm.contact = userInfo.name;
code this.ruleForm.contactPhone = userInfo.phone;
} = await inqueryinfo(projectId) this.ruleForm.startTime = getTime();
this.ruleForm.endTime=data.endTime; }
}, },
} // 获取上传文件
getfile(val) {
} for (let item of val) {
item.accessoryUrl = item.fileUrl;
}
this.ruleForm.accessoryPOList = val;
},
// 获取编号
async getGenerateNumber() {
const { data } = await generateNumber(3);
this.ruleForm.inquiryCode = data;
},
// 获取市ID
getprovinceId(val) {
this.ruleForm.provinceId = val;
},
// 获取省ID
getcityId(val) {
this.ruleForm.cityId = val;
},
// 获取城ID
getdistrictId(val) {
this.ruleForm.districtId = val;
},
cancel() {
this.$router.go(-1);
},
//提交表单
async submit() {
try {
const valid = await this.$refs['ruleForm'].validate();
const valid1 = await this.$refs['ruleForm1'].validate();
const valid2 = await this.$refs['ruleForm2'].validate();
console.log(valid);
if (valid && valid1 && valid2) {
let ruleForm = this.ruleForm;
ruleForm.projectId = localStorage.getItem('projectId');
console.log('通过');
const { code, msg } = await createEnquiry(ruleForm);
if (code == 200) {
this.$message({
message: msg,
type: 'success',
duration: 1500
});
setTimeout(() => {
this.$router.go(-1);
}, 1500);
} else {
this.$message.error(msg);
}
}
} catch (err) {
console.log(err);
}
},
//提交表单
async submit1() {
try {
const valid = await this.$refs['ruleForm'].validate();
const valid1 = await this.$refs['ruleForm1'].validate();
const valid2 = await this.$refs['ruleForm2'].validate();
console.log(valid);
if (valid && valid1 && valid2) {
let ruleForm = this.ruleForm;
ruleForm.projectId = localStorage.getItem('projectId');
console.log('通过');
const { code, msg } = await editEnquiry(ruleForm);
if (code == 200) {
this.$message({
message: msg,
type: 'success',
duration: 1500
});
setTimeout(() => {
this.$router.go(-1);
}, 1500);
} else {
this.$message.error(msg);
}
}
} catch (err) {
console.log(err);
}
},
// 获取列表
async getcommoditylist() {
let projectId = localStorage.getItem('projectId');
const { data, 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;
}
}
};
</script> </script>
<style scoped> <style scoped>
.othercontent>div { .othercontent > div {
background: #FFFFFF; background: #ffffff;
margin-bottom: 20px; margin-bottom: 20px;
} }
.form { .form {
padding: 10px 20px 20px 20px padding: 10px 20px 20px 20px;
} }
.adjustment { .adjustment {
margin-top: 5px; margin-top: 5px;
margin-right: 10px; margin-right: 10px;
} }
</style> </style>
<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>
<h1>项目状态:{{remark}}</h1> <h1>项目状态:{{ remark }}</h1>
<div class="flex state"> <div class="flex state">
<!-- <ul class="flex-left"> <ul class="flex-left">
<li v-for="(item,index) in states" :key="index" class="flex"> <li v-for="(item, index) in states" :key="index" class="flex">
<div>{{ item.title }}</div> <div>{{ item.title }}</div>
<ul class="inside flex"> <ul class="inside flex">
<li v-for="(mods,index) in item.modulars" :key="index" class="flex-center"> <li v-for="(mods, index) in item.modulars" :key="index" class="flex-center">
<div class="active" @click="jump(mods.label,mods.url)">{{ mods.label }}</div> <div :class="mods.bright ? 'active' : ''" @click="jump(mods)">{{ mods.label }}</div>
</li> </li>
</ul> </ul>
</li> </li>
</ul> --> </ul>
<ul class="flex"> <!-- <ul class="flex">
<li v-for="(item,index) in states" :key="index"> <li v-for="(item,index) in states" :key="index">
<el-button type="primary" @click="jump(item.button,item.uri)">{{ item.button }}</el-button> <el-button type="primary" @click="jump(item.button,item.uri)">{{ item.button }}</el-button>
</li> </li>
</ul> </ul> -->
</div> </div>
<div class="centerButton"> <div class="centerButton">
<el-button type="primary" @click="back">返回</el-button> <el-button type="primary" @click="back">返回</el-button>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { import { projectEnd } from '@api/common/list';
projectEnd import { projectConsole } from '@api/purchaser/bid';
} from '@api/common/list' import dataBreadcrumb from '@components/dataBreadcrumb.vue';
import { import changeNav from '@components/changeNav.vue';
projectConsole export default {
} from '@api/purchaser/bid' components: {
import dataBreadcrumb from '@components/dataBreadcrumb.vue' dataBreadcrumb,
import changeNav from '@components/changeNav.vue' changeNav
export default { },
components: { data() {
dataBreadcrumb, return {
changeNav states: [
}, {
data() { title: '公告',
return { modulars: [
states: [], {
breads: ['招标管理', '招标项目管理 ', '工作台'], id: 1,
navs: ['工作台'], label: '变更公告管理',
remark: "" url: '/purchaser/bid/bidStage/changeList',
} bright: false
}, },
methods: { {
back() { id: 2,
this.$router.go(-1) label: '流标公告管理',
}, url: '/purchaser/bid/bidStage/failList',
jump(label, url) { bright: false
if (label == "项目终止") { }
this.$confirm('确定要终止吗?', '提示', { ]
type: 'warning' },
}) {
.then(async () => { title: '招标',
let projectId = localStorage.getItem("projectId") modulars: [
const { {
msg, id: 3,
code label: '项目信息',
} = await projectEnd(projectId) url: '/purchaser/bid/bidStage/projectInformation',
if (code == 200) { bright: false
this.$message({ },
message: msg, {
type: 'success', id: 4,
duration: 1500 label: '发布询价公告',
}) url: '/purchaser/bid/reviewed/inquiryAnnouncement',
setTimeout(() => { bright: false
this.$router.go(-1) },
}, 1500) {
} else { id: 5,
this.$message.error(msg) label: '发布招标公告',
} url: '/purchaser/bid/reviewed/tenderAnnouncement',
bright: false
}) },
.catch(() => {}) {
} else { id: 6,
this.$router.push(url) label: '投标邀请书',
} url: '1',
}, bright: false
async getprojectConsole() { },
try { {
let message = {} id: 7,
message.projectId = localStorage.getItem("projectId") label: '招标文件澄清管理',
message.type = 1 url: '/purchaser/bid/bidStage/clearManagement',
const { bright: false
data, }
msg, ]
code },
} = await projectConsole(message) {
if (code == 200) { title: '投标',
this.states = data modulars: [
this.remark = data[0].remark {
} else { id: 8,
this.$message.error(msg) label: '投标信息查看',
} url: '/purchaser/bid/bidStage/tenderInformationlist',
} catch (e) { bright: false
console.log(e) }
} ]
} },
}, {
created() { title: '开标',
this.getprojectConsole() modulars: [
} {
} id: 9,
label: '开标设置',
url: '/purchaser/bid/bidStage/bidSet',
bright: false
},
{
id: 10,
label: '开标大厅',
url: '/purchaser/bid/bidOpen/bidOpenhal',
bright: false
},
{
id: 11,
label: '开标过程纪录查看',
url: '/purchaser/bid/bidEvaluation/hallInformation',
bright: false
}
]
},
{
title: '评标',
modulars: [
{
id: 12,
label: '评标管理',
url: '/purchaser/bid/bidEvaluation/projectManager/content',
bright: false
},
{
id: 13,
label: '开始评标',
url: '/purchaser/bid/bidEvaluation/review/review',
bright: false
}
]
},
{
title: '定标',
modulars: [
{
id: 14,
label: '中标候选人公示',
url: '/purchaser/bid/bidEvaluation/review/review',
bright: false
},
{
id: 15,
label: '确认中标人',
url: '/purchaser/bid/bidSure/determine',
bright: false
},
{
id: 16,
label: '中标公告',
url: '/purchaser/bid/bidSure/notice',
bright: false
},
{
id: 17,
label: '发布中标通知书',
url: '/purchaser/bid/bidSure/winBid/list',
bright: false
},
{
id: 18,
label: '发布招标结果通知书',
url: '/purchaser/bid/bidSure/bidResult/list',
bright: false
},
{
id: 19,
label: '合同管理',
url: '/purchaser/bid/bidSure/contract',
bright: false
}
]
},
{
title: '费用',
modulars: [
{
id: 20,
label: '标书费缴纳管理',
url: '/purchaser/bid/bidStage/tenderFeelist',
bright: false
},
{
id: 21,
label: '保证金缴纳管理',
url: '/purchaser/bid/bidStage/bondList',
bright: false
}
]
},
{
title: '功能',
modulars: [
{
id: 22,
label: '项目终止',
url: '1',
bright: false
}
]
}
],
breads: ['招标管理', '招标项目管理 ', '工作台'],
navs: ['工作台'],
remark: '',
buttonList: []
};
},
methods: {
geturl(url, status) {
let newUrl = '';
if (status == 0) {
newUrl = url;
} else if (status == 1) {
newUrl = `${url}?type=1`; //编辑
} else {
newUrl = `${url}?type=2`; //查看
}
return newUrl;
},
getlabel(label, status) {
console.log(label, status);
let newlabel = '';
if (status == 0) {
newlabel = label;
} else if (status == 1) {
newlabel = `编辑${label}`;
} else {
newlabel = `查看${label}`;
}
return newlabel;
},
back() {
this.$router.go(-1);
},
jump(mods) {
// if (mods.bright) {
if (mods.label == '项目终止') {
this.$confirm('确定要终止吗?', '提示', {
type: 'warning'
})
.then(async () => {
let projectId = localStorage.getItem('projectId');
const { msg, code } = await projectEnd(projectId);
if (code == 200) {
this.$message({
message: msg,
type: 'success',
duration: 1500
});
setTimeout(() => {
this.$router.go(-1);
}, 1500);
} else {
this.$message.error(msg);
}
})
.catch(() => {});
} else {
this.$router.push(mods.url);
}
// }
},
async getprojectConsole() {
try {
let message = {};
message.projectId = localStorage.getItem('projectId');
message.type = 1;
const { data, msg, code } = await projectConsole(message);
if (code == 200) {
for (let item of this.states) {
for (let item1 of item.modulars) {
for (let item2 of data) {
if (item1.id == item2.buttonId) {
item1.bright = true;
item1.url = this.geturl(item1.url, item2.status);
item1.label = this.getlabel(item1.label, item2.status);
}
}
}
}
this.remark = data[0].remark;
} else {
this.$message.error(msg);
}
} catch (e) {
console.log(e);
}
}
},
created() {
this.getprojectConsole();
}
};
</script> </script>
<style scoped> <style scoped>
.state { .state {
margin-top: 30px; margin-top: 30px;
/* margin-left: 50px; */ margin-left: 50px;
}
}
.state>ul { .state > ul {
flex-wrap: wrap; flex-wrap: wrap;
} }
.state>ul>li { .state > ul > li {
margin-right: 50px; margin-right: 50px;
margin-bottom: 50px; cursor: pointer;
cursor: pointer; }
}
/* .flex-left>li { .flex-left > li {
font-weight: bold; font-weight: bold;
font-size: 20px; font-size: 20px;
height: 50px; height: 70px;
line-height: 50px; line-height: 70px;
} }
.flex-left>li>div { .flex-left > li > div {
margin-right: 50px; margin-right: 50px;
padding-right: 30px; padding-right: 30px;
border-right: 1px solid #000; border-right: 1px solid #000;
} }
.inside>li>div { .inside > li > div {
padding: 0 10px; padding: 0 10px;
background: #ccc; background: #ccc;
color: #ffff; color: #ffff;
font-size: 14px; font-size: 14px;
margin-right: 30px; margin-right: 30px;
border-radius: 2px; border-radius: 2px;
line-height: 30px; line-height: 35px;
height: 30px; height: 35px;
} }
.inside>li>.active{ .inside > li > .active {
background: #2288EE background: #ff5203;
} */ }
</style> </style>
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
</li> </li>
<li> <li>
<div>注册角色</div> <div>注册角色</div>
<div>11</div> <div>{{detail.type=="1"?"采购商":"供应商"}}</div>
</li> </li>
<li> <li>
<div>法人姓名</div> <div>法人姓名</div>
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
</li> </li>
<li> <li>
<div>法人电话</div> <div>法人电话</div>
<div>11</div> <div>{{detail.legalPersonPhone}}</div>
</li> </li>
<li> <li>
<div>统一社会信用代码</div> <div>统一社会信用代码</div>
...@@ -47,15 +47,15 @@ ...@@ -47,15 +47,15 @@
</li> </li>
<li> <li>
<div>开户银行名称</div> <div>开户银行名称</div>
<div>222</div> <div>{{detail.bankName}}</div>
</li> </li>
<li> <li>
<div>结算账户</div> <div>结算账户</div>
<div>222</div> <div>{{detail.bankAccount}}</div>
</li> </li>
<li> <li>
<div>结算账户名</div> <div>结算账户名</div>
<div>222</div> <div>{{detail.bankName}}</div>
</li> </li>
<li> <li>
<div>注册资本(万元)</div> <div>注册资本(万元)</div>
......
<template>
<div>
<div class="content">
<dataBreadcrumb :breads="breads"></dataBreadcrumb>
<div class="message">
<div class="flex-between">
<div>项目编号: {{ projectCode }}</div>
<div>项目名称:{{ projectName }}</div>
</div>
<div>
<div>开标一览表:</div>
<dataTable :tableData="tableData" :columns="nopagecolumns" :margin-top="0" :margin-bottom="0"> </dataTable>
</div>
</div>
<changeNav :navs="navs" @getIndex="getIndex"></changeNav>
<!-- 开标大厅消息 -->
<div v-show="changeIndex == 0">
<dataTable :table-data="behaviorList" :columns="behavior" :is-pageobj="false" :is-index="true">
<el-table-column slot="operate" label="消息内容" align="center">
<template slot-scope="scope">
<div class="flex content">
<div>{{ scope.row.time }}</div>
<div>{{ scope.row.role }}</div>
<div>{{ scope.row.name }}</div>
<div>{{ scope.row.behavior }}</div>
</div>
</template>
</el-table-column>
</dataTable>
</div>
<!-- 对话消息 -->
<div v-show="changeIndex == 1">
<dataTable :table-data="chatList" :columns="chat" :is-pageobj="false" :is-index="true"> </dataTable>
</div>
<div class="centerButton">
<el-button @click="back">返回</el-button>
</div>
</div>
</div>
</template>
<script>
import { messageRecord, openInfo } from '@api/purchaser/bid';
import dataTable from '@components/nopageTable.vue';
import dataBreadcrumb from '@components/dataBreadcrumb.vue';
import changeNav from '@components/changeNav.vue';
export default {
components: {
dataTable,
dataBreadcrumb,
changeNav
},
data() {
return {
nopagecolumns: [
{
label: '投标人名称',
prop: 'companyName'
},
{
label: '投标报价(元)',
prop: 'price'
},
{
label: '是否签名',
prop: 'isSign'
}
], //
changeIndex: '0',
navs: ['开标大厅消息', '对话消息'],
breads: ['招标管理', '招标项目管理', '工作台'],
behaviorList: [],
behavior: [
{
slot: 'operate'
}
], // 操作列
chat: [
{
label: '发送人',
prop: 'name'
},
{
label: '发送时间',
prop: 'time'
},
{
label: '发送内容',
prop: 'chatContent'
}
],
chatList: [],
pageObj: {
size: 10,
total: 1,
currentPage: 1,
sizes: [100, 200, 300],
func: (currentPage) => {
this.pageTurning(currentPage);
}
},
projectCode: '',
projectName: '',
tableData: []
};
},
methods: {
back() {
this.$router.go(-1);
},
examine() {
this.$router.push('/admin/bid/bidingDetail');
},
getIndex(val) {
this.changeIndex = val;
},
async getmessageRecord() {
let projectId = localStorage.getItem('projectId');
const { data, code } = await messageRecord(projectId);
this.behaviorList = data.behaviorList;
this.chatList = data.chatList;
},
async getopenInfo() {
try {
let projectId = localStorage.getItem('projectId');
const { data, code } = await openInfo(projectId);
if (code == 200) {
for (let item of data) {
if (item.isSign) {
item.isSign = '是';
} else {
item.isSign = '否';
}
}
this.tableData = data;
}
} catch (e) {
console.log(e);
}
}
},
created() {
this.projectCode = localStorage.getItem('projectCode');
this.projectName = localStorage.getItem('projectName');
this.getmessageRecord();
this.getopenInfo();
}
};
</script>
<style scoped>
.content > div {
margin-right: 10px;
}
.upload > button {
border: 1px solid #000000;
background: #fff;
width: 50px;
height: 20px;
margin-left: 10px;
}
.message > div {
margin-bottom: 10px;
}
.message {
margin: 30px 0 30px 50px;
}
</style>
...@@ -140,7 +140,7 @@ export default { ...@@ -140,7 +140,7 @@ export default {
}; };
return { return {
isdisabled: true, isdisabled: true,
title: '看', title: '看',
state: '', state: '',
breads: ['招标管理', '招标项目管理', '工作台'], breads: ['招标管理', '招标项目管理', '工作台'],
ruleForm: {}, ruleForm: {},
......
...@@ -172,7 +172,7 @@ export default { ...@@ -172,7 +172,7 @@ export default {
}; };
return { return {
isdisabled: true, isdisabled: true,
title: '看', title: '看',
state: '', state: '',
breads: ['招标管理', '招标项目管理', '工作台'], breads: ['招标管理', '招标项目管理', '工作台'],
ruleForm: {}, ruleForm: {},
......
<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 flex-colunm"> <div class="message">
<div> <div>
<div>项目编号:{{projectCode}}</div> <div>项目编号:{{ projectCode }}</div>
<div>项目名称:{{projectName}}</div> <div>项目名称:{{ projectName }}</div>
</div>
<div>
<div>日期:{{ detail.winDate }}</div>
<div>中标金额:{{ detail.money }}</div>
</div>
<div>
<div class="flex-item">
<div style="margin-right: 20px">附件:</div>
<ul v-if="detail.fileList">
<li v-for="(item, i) in detail.fileList" :key="i">
<a :href="item.fileUrl">{{ item.fileName }}</a>
</li>
</ul>
<div v-else></div>
</div>
<div>中标通知书编号:{{ detail.number }}</div>
</div>
<div class="flex-colunm notice">
<h1>您已中标,请及时与平台签署应收账款买断合同。</h1>
<h3>咨询电话:400-4567457</h3>
<el-button type="primary">查看详情</el-button>
</div>
<div class="centerButton">
<el-button @click="back">返回</el-button>
</div>
</div>
</div> </div>
<div>
<div>日期:{{detail.winDate}}</div>
<div>中标金额:{{detail.money}}</div>
</div>
<div>
<div class="flex-item">
<div style="margin-right: 20px;">附件:中标通知书.pdf</div>
<el-button size="mini">下载</el-button>
</div>
<div>中标通知书编号:{{detail.number}}</div>
</div>
<div class="flex-colunm notice">
<h1>您已中标,请及时与平台签署应收账款买断合同。</h1>
<h3>咨询电话:400-4567457</h3>
<el-button type="primary">查看详情</el-button>
</div>
<el-button @click="back">返回</el-button>
</div>
</div> </div>
</div>
</template> </template>
<script> <script>
import { winBookdetail} from '@api/supply/bid' 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 {
components: { components: {
dataBreadcrumb, dataBreadcrumb,
changeNav changeNav
},
data() {
return {
projectCode:"",
projectName:"",
breads: ['投标管理 ', '我参加的项目', '工作台'],
navs: ['中标通知书'],
projectCode:"",
projectName:"",
detail:""
}
},
methods: {
back(){
this.$router.go(-1)
}, },
async getwinBookdetail() { data() {
let projectId=localStorage.getItem("projectId") return {
const { projectCode: '',
data, projectName: '',
code breads: ['投标管理 ', '我参加的项目', '工作台'],
} = await winBookdetail(projectId) navs: ['中标通知书'],
if(code==200){ projectCode: '',
this.detail=data projectName: '',
} detail: ''
} };
}, },
created() { methods: {
this.projectCode=localStorage.getItem("projectCode") open(url) {
this.projectName=localStorage.getItem("projectName") window.open(url);
this.getwinBookdetail() },
} back() {
this.$router.go(-1);
} },
async getwinBookdetail() {
let projectId = localStorage.getItem('projectId');
const { data, code } = await winBookdetail(projectId);
if (code == 200) {
this.detail = data;
}
}
},
created() {
this.projectCode = localStorage.getItem('projectCode');
this.projectName = localStorage.getItem('projectName');
this.getwinBookdetail();
}
};
</script> </script>
<style scoped> <style scoped>
.content>h1{ .content > h1 {
text-align: center; text-align: center;
margin-top:20px; margin-top: 20px;
margin-bottom:40px; margin-bottom: 40px;
font-weight: bold; font-weight: bold;
} }
.content>.img{ .content > .img {
width: 600px; width: 600px;
margin:0 auto margin: 0 auto;
} }
.enclosure{ .enclosure {
margin: 20px 0; margin: 20px 0;
} }
.message>div{ .message {
display:flex; width: 60%;
margin-bottom: 30px; margin: 0 auto;
} }
.message>div>div:first-child{ .message > .centerButton{
margin-right:300px; justify-content: center;
} }
.notice{ .message > div {
width: 80%; display: flex;
border:1px solid #000 justify-content: space-between;
} margin-bottom: 30px;
.notice{ }
margin-top: 200px; /* .message > div > div:first-child {
margin-bottom: 30px; margin-right: 300px;
padding: 20px 0; } */
} .notice {
.notice>h3{ width: 80%;
margin: 20px 0; border: 1px solid #000;
} }
.notice {
margin: 200px auto 30px;
padding: 20px 0;
}
.notice > h3 {
margin: 20px 0;
}
</style> </style>
<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 class="content">
<div class="flex-arround" style="margin-bottom:50px">
<div>项目编号:{{ projectCode }}</div>
<div>项目名称:{{ projectName }}</div>
<div>发布时间:{{ detail.createTime }}</div>
</div>
<div v-if="state">
<div v-html=" detail.content "></div>
<div class="enclosure flex-item">
<div style="margin-right: 30px">相关附件</div>
<div v-if="detail.accessoryDOList">
<ul>
<li v-for="(item, i) in detail.accessoryDOList" :key="i">
<a href="item.accessoryUrl">{{ item.fileName }}</a>
</li>
</ul>
</div>
<div v-else></div>
</div>
</div>
<div v-else>{{ msg }}</div>
<div class="centerButton">
<el-button @click="back">返回</el-button>
</div>
</div>
</div> </div>
<div class="content">
<div class="flex-arround">
<div>项目编号:{{projectCode}}</div>
<div>项目名称:{{projectName}}</div>
<div>发布时间:2020-08-08 18:12</div>
</div>
<h1>一级标题</h1>
<div class="img">
<img src="@static/images/content.png" alt="">
</div>
<div class="enclosure">相关附件:34567890-678.pdf</div>
<div class="centerButton">
<el-button @click="back">返回</el-button>
</div>
</div>
</div>
</template> </template>
<script> <script>
import { publicitydetail} from '@api/supply/bid' import { cadidate } from '@api/supply/bid';
import dataBreadcrumb from '@components/dataBreadcrumb.vue' import dataBreadcrumb from '@components/dataBreadcrumb.vue';
export default { export default {
components: { components: {
dataBreadcrumb, dataBreadcrumb
}, },
data() { data() {
return { return {
breads: ['投标管理 ', '我参加的项目', '工作台'], breads: ['投标管理 ', '我参加的项目', '工作台'],
projectCode:"", projectCode: '',
projectName:"" projectName: '',
detail: '',
msg: '',
state: true
};
},
methods: {
back() {
this.$router.go(-1);
},
async getcadidate() {
let projectId = localStorage.getItem('projectId');
const { data, code, msg } = await cadidate(projectId);
if (code == 200) {
this.detail = data;
} else {
this.msg = msg;
this.state = false;
}
}
},
created() {
this.projectCode = localStorage.getItem('projectCode');
this.projectName = localStorage.getItem('projectName');
this.getcadidate();
} }
}, };
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>
<style scoped> <style scoped>
.content>h1{ .content > h1 {
text-align: center; text-align: center;
margin-top:20px; margin-top: 20px;
margin-bottom:40px; margin-bottom: 40px;
font-weight: bold; font-weight: bold;
} }
.content>.img{ .content > .img {
width: 600px; width: 600px;
margin:0 auto margin: 0 auto;
} }
.enclosure{ .enclosure {
margin: 20px 0; margin: 20px 0;
} }
</style> </style>
...@@ -721,6 +721,11 @@ export default new Router({ ...@@ -721,6 +721,11 @@ export default new Router({
show: true, show: true,
component: () => import('../pages/supply/bid/joinProject/bidEvaluation/evaluationList.vue') component: () => import('../pages/supply/bid/joinProject/bidEvaluation/evaluationList.vue')
}, },
{
path: '/supply/bid/joinProject/bidEvaluation/hallInformation',
show: true,
component: () => import('../pages/supply/bid/joinProject/bidEvaluation/hallInformation.vue')
},
{ {
path: '/supply/bid/joinProject/bidEvaluation/reply', path: '/supply/bid/joinProject/bidEvaluation/reply',
show: true, show: true,
......
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