Commit 34a25056 authored by 张冬's avatar 张冬

联调修改

parent 7355e38f
......@@ -180,16 +180,112 @@ export function noticeAbortive(id) {
// })
// }
// 2.1.4
//开标大厅
// 开标一览表
export function openInfo(projectId) {
return request({
url: `open-bid/openInfo/${projectId}`,
method: 'get',
})
}
//签到解密简略
export function signdetail(projectId) {
return request({
url: `/open-bid/sign/${projectId}`,
method: 'get',
})
}
// 开标按钮上三个信息(投标人数,缴纳保证金人数,签到人数)
export function startInfo(projectId) {
return request({
url: `open-bid/startInfo/${projectId}`,
method: 'get',
})
}
//获取开标大厅的时间信息
export function timeInfo(projectId) {
return request({
url: `open-bid/timeInfo/${projectId}`,
method: 'get',
})
}
// 立即开标
export function startbid(projectId) {
return request({
url: `open-bid/start/${projectId}`,
method: 'put',
})
}
// 流标
export function openbidFailed(data) {
return request({
url: "open-bid/bidFailed",
method: 'post',
data:data
})
}
// 查看流标信息
export function bidFaileddetail(projectId) {
return request({
url: `open-bid/bidFailed/detail/${projectId}`,
method: 'get',
})
}
// 2.1.5
// 评标管理:变更公告列表
export function accessoryupload(data) {
return request({
url: "tender-evaluate/accessory/upload",
method: 'post',
data:data
})
}
// 评标管理:变更公告列表
export function changeNoticelist(projectId) {
return request({
url: `tender-evaluate/changeNotice/list/${projectId}`,
method: 'get',
})
}
//投标文件
export function bidFilelist(projectId) {
return request({
url: `tender-evaluate/bidFile/list/${projectId}`,
method: 'get',
})
}
// 评标附件
export function accessorydownload(projectId) {
return request({
url: `tender-evaluate/accessory/download/${projectId}`,
method: 'get',
})
}
// 流标
export function bidFailed(data) {
return request({
url: "tender-evaluate/bidFailed",
method: 'put',
method: 'post',
data:data
})
}
//项目经理中的评标结算按钮
export function bidend(projectId) {
return request({
url: `/tender-evaluate/end/${projectId}`,
method: 'put',
})
}
// 查看投标公司评审信息
export function CompanyEvaluatec(projectId) {
......@@ -325,6 +421,34 @@ export function bidsetting(data) {
data:data
})
}
//中标候选人公示提交
export function createcadidate(data) {
return request({
url: "/tender-notice/create-cadidate",
method: 'post',
data:data
})
}
//中标公告提交
export function createwin(data) {
return request({
url: "tender-notice/create-win",
method: 'post',
data:data
})
}
// 标书费提交
export function operationAduit(data) {
......@@ -336,11 +460,12 @@ export function operationAduit(data) {
}
// 2.1.4
//开标大厅
// export function onlineCount() {
// return request({
// url: "/onlineCount",
// method: 'get',
// })
// }
\ No newline at end of file
// 招标文件下载
export function bidBookDownload(projectId) {
return request({
url: `tender-evaluate/bidBook-download/${projectId}`,
method: 'get',
})
}
......@@ -23,6 +23,15 @@ export function evidenceDetail(params) {
params:params
})
}
// 签署合同
export function signContract(projectId) {
return request({
url: `tender-payment/sign-contract/${projectId}`,
method: 'put',
})
}
......@@ -22,6 +22,7 @@ a {
.content-box {
min-width: 1000px;
position: absolute;
left: 250px;
right: 0;
......
......@@ -201,7 +201,7 @@ img {
.tips{
color:#FF0000
}
.el-input {
.message .el-input {
width: 250px!important;
......
......@@ -81,7 +81,7 @@ export default {
{
icon: 'el-icon-lx-home',
index: '/purchaser/buyOut/buyoutList',
title: '平台交货列表',
title: '应收账款买断列表',
}
]
},
......
......@@ -155,6 +155,7 @@ export default {
}
},
created() {
console.log("分页")
if (this.checklist.length > 0) {
const obj = {}
this.checklist.forEach((item) => {
......
......@@ -6,12 +6,7 @@
<script>
export default {
props: {
remainTime: {
type: Number,
default: 1200000
}
},
props: ["remainTime"],
data() {
return {
hour: '',
......@@ -31,7 +26,18 @@ export default {
return this.formatNum(this.second)
}
},
watch:{
remainTime(newValue, oldValue) {
console.log("监听")
this.checkTime()
return newValue;
}
},
mounted() {
this.checkTime()
},
methods: {
checkTime(){
if (this.remainTime > 0) {
this.hour = Math.floor((this.remainTime / 3600) % 24)
this.minute = Math.floor((this.remainTime / 60) % 60)
......@@ -39,7 +45,6 @@ export default {
this.countDowm()
}
},
methods: {
countDowm() {
var self = this
clearInterval(this.promiseTimer)
......
......@@ -4,31 +4,27 @@
<dataBreadcrumb :breads="breads"></dataBreadcrumb>
<div class="message">
<div class="flex-between" style="width: 50%;">
<div>招标文件:<span>下载招标文件</span></div>
<div>招标文件:<span @click="download(bidDetail.fileUrl)">{{bidDetail.fileName}}</span></div>
<div>开标信息:<span>开标一览表</span></div>
</div>
<div class="flex upload">
<div>变更信息:</div>
<ul class="title">
<li class="flex">
<div>公告标题.pdf</div>
<button>下载</button>
</li>
<li class="flex">
<div>公告标题.pdf</div>
<button>下载</button>
<li class="flex" v-for="(item,index) in changeList" :key="index">
<router-link :to="{path: '/purchaser/bid/bidStage/changeList/see', query: {id: item.noticeId }}">{{item.title}}</router-link>
</li>
</ul>
</div>
<!-- 投标文件 -->
<div>
<div>投标文件:</div>
<dataTable :table-data="bids" :columns="bidTitle" :is-pageobj="false" :is-index="true">
<dataTable :table-data="bids" :columns="bidTitle" :is-index="true">
<el-table-column slot="operate" label="文件" align="center" fixed="right">
<template slot-scope="scope">
<ul class="flex file">
<li v-for="(file,index) in scope.row.files" :key="index">{{ file }}下载</li>
</ul>
<div class="flex file">
<div @click="down(scope.row.fileUrl)">{{scope.row.fileName}}</div>
<div v-for="(file,index) in scope.row.fileList" :key="index" @click="down(file.fileUrl)">{{ file.fileName }}</div>
</div>
</template>
</el-table-column>
</dataTable>
......@@ -37,9 +33,9 @@
<div style="margin-top:100px">
<div class="flex-between">
<h5>评审信息</h5>
<el-button type="primary" size="small">澄清质询查看</el-button>
<el-button type="primary" size="small" @click='jump'>澄清质询查看</el-button>
</div>
<dataTable :table-data="review" :columns="reviewTitle" :is-pageobj="false" :is-index="true">
<dataTable :table-data="review" :columns="reviewTitle" :is-index="true">
<el-table-column slot="operate" label="资格审查" align="center" fixed="right">
<template slot-scope="scope">
<div v-if="scope.row.qualifi==0">通过</div>
......@@ -69,22 +65,23 @@
<!-- 排名信息 -->
<div>
<h5>排名信息</h5>
<dataTable :table-data="rank" :columns="rankTitle" :is-pageobj="false" :is-index="true">
<dataTable :table-data="rank" :columns="rankTitle" :is-index="true">
</dataTable>
</div>
<div class="flex">
<div>评标附件:</div>
<ul class="upload">
<li class="flex">
<div>评价附件.pdf</div>
<button>下载</button>
<li class="flex" v-for="(item,index) in downloadList" :key="index">
<div>{{item.fileName}}</div>
<button @click="down(item.fileUrl)">下载</button>
</li>
</ul>
</div>
<div class="button">
<el-button>返回</el-button>
<el-button @click="back">返回</el-button>
<el-button @click="fail">流标</el-button>
<el-button type="primary">评标结束</el-button>
<el-button type="primary" @click="end">评标结束</el-button>
</div>
</div>
</div>
......@@ -92,34 +89,46 @@
</template>
<script>
import dataTable from '@components/dataTable.vue'
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
export default {
import {
bidend,
CompanyEvaluatec,
companyRank,
bidBookDownload,
changeNoticelist,
bidFilelist,
accessorydownload
} from '@api/purchaser/bid'
import dataTable from '@components/nopageTable.vue'
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
export default {
components: {
dataTable,
dataBreadcrumb
},
data() {
return {
downloadList:[],
changeList:[],
bidDetail: "",
rankTitle: [{
label: '投标人名称',
prop: 'name'
prop: 'companyName'
},
{
label: '投标价(元)',
prop: 'bidPrice'
prop: 'price'
},
{
label: '商务评分',
prop: 'businessScore'
prop: 'commercialGrade'
},
{
label: '技术评分',
prop: 'technicalScore'
prop: 'skillGrade'
},
{
label: '价格得分',
prop: 'priceScore'
label: '价格评分',
prop: 'priceGrade'
},
{
label: '评标价(元)',
......@@ -132,81 +141,153 @@ export default {
{
label: '最终得分',
prop: 'finalScore'
}
],
rank: [{
name: '上海腾讯',
bidPrice: '490000',
businessScore: '30',
technicalScore: '4.8',
priceScore: '18.8',
evaluationPrice: '490000',
rank: '1',
finalScore: '53.6'
},
{
slot: 'operate'
}
],
rank: [],
bidTitle: [{
label: '投标人',
prop: 'name'
prop: 'companyName'
},
{
slot: 'operate'
}
],
bids: [{
name: '上海致远有限公司',
files: ['313121.zip', '546465.zip']
}],
bids: [],
breads: ['招标管理', '招标项目管理', '工作台'],
review: [{
name: '上海腾讯',
qualifi: '1',
accord: '1',
fail: '1',
conclusion: '1'
},
{
name: '上海腾讯',
qualifi: '0',
accord: '0',
fail: '0',
conclusion: '0'
}
],
review: [],
reviewTitle: [{
label: '投标人名称',
prop: 'name'
prop: 'companyName'
},
{
slot: 'operate'
}
], // 操作列
}
},
methods: {
down(url){
window.open(url)
},
jump() {
this.$router.push('/purchaser/bid/bidEvaluation/review/clear')
},
// 查看评标附件
async getaccessorydownload(){
let projectId = localStorage.getItem("projectId");
const{data,code}=await accessorydownload(projectId)
if(code===200){
this.downloadList=data
}
},
pageObj: {
size: 10,
total: 1,
currentPage: 1,
sizes: [100, 200, 300],
func: (currentPage) => {
this.pageTurning(currentPage)
// 查看投标文件
async getbidFilelist(){
let projectId = localStorage.getItem("projectId");
const{data,code}=await bidFilelist(projectId)
if(code===200){
this.bids=data
}
},
// 查看变更信息
async getchangeNoticelist(){
let projectId = localStorage.getItem("projectId");
const{data,code}=await changeNoticelist(projectId)
if(code===200){
this.changeList=data;
}
},
// 查投标公司评审信息
async getCompanyEvaluatec() {
try {
let projectId = localStorage.getItem("projectId");
const {
data,
code
} = await CompanyEvaluatec(projectId)
if (code === 200) {
this.review = data
}
} catch (e) {
console.log(e)
}
},
methods: {
// 查看投标公司排名信息
async getcompanyRank() {
try {
let projectId = localStorage.getItem("projectId");
const {
data,
code
} = await companyRank(projectId)
if (code === 200) {
this.rank = data
}
} catch (e) {
console.log(e)
}
},
async getbidBookDownload() {
try {
let projectId = localStorage.getItem("projectId")
const {
data,
code
} = await bidBookDownload(projectId)
if (code === 200) {
this.bidDetail = data
}
} catch (e) {
console.log(e)
}
},
async end() {
// 二次确认
this.$confirm('确定要流标吗?', '提示', {
type: 'warning'
})
.then(async () => {
let projectId = localStorage.getItem("projectId")
const {
msg,
code
} = await bidend(projectId)
this.$message({
message: msg,
type: 'success',
duration: 1500
})
})
.catch(() => {})
},
back() {
this.$router.go(-1)
},
examine() {
this.$router.push('/admin/bid/bidingDetail')
},
fail() {
this.$router.push('/purchaser/bid/bidEvaluation/projectManager/fail')
}
},
created() {
this.getaccessorydownload();
this.getbidFilelist();
this.getchangeNoticelist();
this.getcompanyRank()
this.getCompanyEvaluatec()
this.getbidBookDownload();
},
}
}
</script>
<style scoped>
.file>li {
.file>div {
margin-right: 10px;
color: #113DEE
}
......@@ -236,12 +317,14 @@ export default {
height: 20px;
margin-left: 10px;
}
h5 {
font-weight: bold;
margin-bottom: 20px;
}
.button{
width:280px;
margin:80px auto 30px
.button {
width: 280px;
margin: 80px auto 30px
}
</style>
......@@ -13,11 +13,11 @@
</div>
<div class="flex">
<div class="adjustment"> 评价报告</div>
<Upload :limit="1" :max="100" tip="最多上传一个文件,每个文件不超过100M。"></Upload>
<Upload :limit="1" :max="100" tip="最多上传一个文件,每个文件不超过100M。" @input="getfile"></Upload>
</div>
<div class="flex">
<div class="adjustment ">评标报告扫描件</div>
<Upload :limit="1" :max="100" tip="最多上传5个文件,每个文件不超过100M。"></Upload>
<Upload :limit="1" :max="100" tip="最多上传5个文件,每个文件不超过100M。" @input="getfile1"></Upload>
</div>
<div class="flex-center" style="margin:100px 0">
<el-button>取消</el-button>
......@@ -40,17 +40,38 @@ export default {
},
data() {
return {
breads: ['招标管理', '招标项目管理', '工作台']
breads: ['招标管理', '招标项目管理', '工作台'],
file:[],
file1:[]
}
},
methods: {
//
getfile(val){
this.file=val
},
getfile1(val){
this.file1=val
},
// 提交
async submitData() {
try {
let message={}
let filePOList=[];
let file=this.file;
let file1=this.file1;
for(let item of file){
item.type=1
};
for(let item1 of file1){
item1.type=2
};
filePOList=file.concat(file1)
message.filePOList=filePOList;
message.projectId=localStorage.getItem("projectId")
const {
data,
code
code,
msg
} = await bidFailed(message)
if(code==200){
this.$message({
......@@ -80,4 +101,8 @@ export default {
.message>div{
margin-bottom: 20px;
}
.adjustment{
width: 120px;
text-align: center;
}
</style>
......@@ -130,7 +130,7 @@
code
} = await bidsupplyList(projectId)
if (code === 200) {
// this.CompanyIds = data
this.CompanyIds = data
}
} catch (e) {
console.log(e)
......
......@@ -94,7 +94,7 @@ export default {
}
},
back(){
this.$route.go(-1)
this.$router.go(-1)
},
handleSee(row){
let id=row.pid;
......
......@@ -4,19 +4,14 @@
<dataBreadcrumb :breads="breads"></dataBreadcrumb>
<div class="message">
<div class="flex-between" style="width: 50%;">
<div>招标文件:<span>下载招标文件</span></div>
<div>招标文件:<span @click="download(bidDetail.fileUrl)">{{bidDetail.fileName}}</span></div>
<div>开标信息:<span>开标一览表</span></div>
</div>
<div class="flex upload">
<div>变更信息:</div>
<ul class="title">
<li class="flex">
<div>公告标题.pdf</div>
<button>下载</button>
</li>
<li class="flex">
<div>公告标题.pdf</div>
<button>下载</button>
<li class="flex" v-for="(item,index) in changeList" :key="index">
<router-link :to="{path: '/purchaser/bid/bidStage/changeList/see', query: {id: item.noticeId }}">{{item.title}}</router-link>
</li>
</ul>
</div>
......@@ -26,9 +21,10 @@
<dataTable :table-data="bids" :columns="bidTitle" :is-index="true">
<el-table-column slot="operate" label="文件" align="center" fixed="right">
<template slot-scope="scope">
<ul class="flex file">
<li v-for="(file,index) in scope.row.files" :key="index">{{ file }}下载</li>
</ul>
<div class="flex file">
<div @click="down(scope.row.fileUrl)">{{scope.row.fileName}}</div>
<div v-for="(file,index) in scope.row.fileList" :key="index" @click="down(file.fileUrl)">{{ file.fileName }}</div>
</div>
</template>
</el-table-column>
</dataTable>
......@@ -91,17 +87,11 @@
</div>
<div class="flex">
<div>评标附件:</div>
<ul class="upload">
<li class="flex">
<div>评价附件.pdf</div>
<button>下载</button>
</li>
</ul>
<singleUpload :limit="5" :max="100" tip="最多上传5份,每份不超过100M." @input="getfile"></singleUpload>
</div>
<div class="button">
<el-button>返回</el-button>
<el-button @click="fail">流标</el-button>
<el-button type="primary">评标结束</el-button>
<el-button @click="back">返回</el-button>
<el-button type="primary" @click="complete">完成</el-button>
</div>
</div>
</div>
......@@ -133,22 +123,22 @@
<!-- 编辑公司排名-->
<el-dialog title="编辑" :visible.sync="isRank">
<el-form :model="rankForm">
<el-form-item label="投标价" >
<el-input v-model="rankForm.price" ></el-input>
<el-form-item label="投标价">
<el-input v-model="rankForm.price"></el-input>
</el-form-item>
<el-form-item label="商务评分" >
<el-input v-model="rankForm.commercialGrade" ></el-input>
<el-form-item label="商务评分">
<el-input v-model="rankForm.commercialGrade"></el-input>
</el-form-item>
<el-form-item label="技术评分" >
<el-input v-model="rankForm.skillGrade" ></el-input>
<el-form-item label="技术评分">
<el-input v-model="rankForm.skillGrade"></el-input>
</el-form-item>
<el-form-item label="价格评分">
<el-input v-model="rankForm.priceGrade" ></el-input>
<el-input v-model="rankForm.priceGrade"></el-input>
</el-form-item>
<el-form-item label="评标价 " >
<el-input v-model="rankForm.evaluationPrice" ></el-input>
<el-form-item label="评标价 ">
<el-input v-model="rankForm.evaluationPrice"></el-input>
</el-form-item>
<el-form-item label="是否中标候选人" >
<el-form-item label="是否中标候选人">
<el-radio v-model="rankForm.winPerson" :label="true"></el-radio>
<el-radio v-model="rankForm.winPerson" :label="false"></el-radio>
</el-form-item>
......@@ -162,21 +152,32 @@
</template>
<script>
import {
import {
companyRank,
CompanyEvaluatec,
saveCompanyEvaluate,
saveCompanyRank
} from '@api/purchaser/bid'
import dataTable from '@components/nopageTable.vue'
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
export default {
saveCompanyRank,
bidBookDownload,
changeNoticelist,
bidFilelist,
accessoryupload
} from '@api/purchaser/bid'
import dataTable from '@components/nopageTable.vue'
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
import singleUpload from '@components/Upload/Upload.vue'
export default {
components: {
dataTable,
dataBreadcrumb
dataBreadcrumb,
singleUpload
},
data() {
return {
file: [],
downloadList: [],
changeList: [],
bidDetail: "",
evaluateForm: {
qualification: '',
conformity: '',
......@@ -186,9 +187,9 @@ export default {
evaluateIdx: '',
isEvaluate: false,
rankForm: {
price:"",
price: "",
},
rankIdx:"",
rankIdx: "",
isRank: false,
projectId: 2,
rankTitle: [{
......@@ -230,16 +231,13 @@ export default {
rank: [],
bidTitle: [{
label: '投标人',
prop: 'name'
prop: 'companyName'
},
{
slot: 'operate'
}
],
bids: [{
name: '上海致远有限公司',
files: ['313121.zip', '546465.zip']
}],
bids: [],
breads: ['招标管理', '招标项目管理', '工作台'],
review: [],
reviewTitle: [{
......@@ -255,8 +253,82 @@ export default {
created() {
this.getcompanyRank()
this.getCompanyEvaluatec()
this.getbidFilelist();
this.getchangeNoticelist();
this.getbidBookDownload();
},
methods: {
getfile(val) {
this.file = val
},
// 完成按钮
async complete() {
try {
let message = {}
message.projectId = localStorage.getItem("projectId")
message.fileList = this.file
const {
msg,
code
} = await accessoryupload(message)
if (code === 200) {
this.$message({
message: msg,
type: 'success',
duration: 1500
})
setTimeout(() => {
this.$router.go(-1)
}, 1500)
}
} catch (e) {
console.log(e)
}
},
back() {
this.$router.go(-1)
},
down(url) {
window.open(url)
},
async getbidBookDownload() {
try {
let projectId = localStorage.getItem("projectId")
const {
data,
code
} = await bidBookDownload(projectId)
if (code === 200) {
this.bidDetail = data
}
} catch (e) {
console.log(e)
}
},
// 查看投标文件
async getbidFilelist() {
let projectId = localStorage.getItem("projectId");
const {
data,
code
} = await bidFilelist(projectId)
if (code === 200) {
this.bids = data
}
},
// 查看变更信息
async getchangeNoticelist() {
let projectId = localStorage.getItem("projectId");
const {
data,
code
} = await changeNoticelist(projectId)
if (code === 200) {
this.changeList = data;
}
},
// 排名信息编辑
Edit(row, index) {
this.rankForm = Object.assign({}, row)
......@@ -268,7 +340,8 @@ export default {
async editCompanyRank() {
try {
const {
code, msg
code,
msg
} = await saveCompanyRank(this.form)
if (code === 200) {
this.$message.success(msg)
......@@ -289,7 +362,8 @@ export default {
async editCompanyEvaluate() {
try {
const {
code, msg
code,
msg
} = await saveCompanyEvaluate(this.form)
if (code === 200) {
this.$message.success(msg)
......@@ -300,10 +374,6 @@ export default {
console.log(e)
}
},
fail() {
this.$router.push('/purchaser/bid/bidEvaluation/projectManager/fail')
},
// 查投标公司评审信息
async getCompanyEvaluatec() {
try {
......@@ -322,7 +392,7 @@ export default {
// 查看投标公司排名信息
async getcompanyRank() {
try {
let projectId=localStorage.getItem("projectId");
let projectId = localStorage.getItem("projectId");
const {
data,
code
......@@ -336,7 +406,7 @@ export default {
}
}
}
}
}
</script>
<style scoped>
......
......@@ -169,8 +169,15 @@
code,
msg
} = await bidderEarnestpayment(message)
if (code === 2000) {
this.$success.success(msg)
if (code === 200) {
this.$message({
message: msg,
type: 'success',
duration:1500
})
setTimeout(()=>{
this.$router.go(-1)
},1500)
}
}
} catch (e) {
......
......@@ -111,14 +111,14 @@ export default {
msg
} = await createChange(this.ruleForm)
if (code === 200) {
// this.$message({
// message: msg,
// type: 'success',
// duration:1500
// })
// setTimeout(()=>{
// this.$router.go(-1)
// },1500)
this.$message({
message: msg,
type: 'success',
duration:1500
})
setTimeout(()=>{
this.$router.go(-1)
},1500)
}
}
} catch (err) {
......
......@@ -13,25 +13,17 @@
<div>项目分类:货物</div>
<div class="flex">
<div class="adjustment">上传附件:</div>
<singleUpload tips="支持上传1个附件,不超过20M"></singleUpload>
<singleUpload :limit="1" tip="支持上传1个附件,不超过20M" @input="getfile"></singleUpload>
</div>
</div>
</div>
<div class="form">
<h3>确定中标人</h3>
<dataTable :table-data="tableData" :columns="columns" :is-pageobj="false" :is-index="true">
<el-table-column slot="operate" label="是否中标" align="center" fixed="right" width="200">
<template slot-scope="scope">
<el-checkbox v-model="scope.row.isBid" @change="check(scope.$index)"></el-checkbox>
</template>
</el-table-column>
</dataTable>
<el-radio-group v-model="companyId">
<el-radio :label="item.companyId" v-for="(item,index) in tableData" :key="index">{{item.companyName}}</el-radio>
</el-radio-group>
<h3 style="margin-top:30px">说明</h3>
<el-input
:rows="3"
v-model="content"
type="textarea"
placeholder="请输入内容">
<el-input :rows="3" v-model="content" type="textarea" placeholder="请输入内容">
</el-input>
</div>
<div class="button flex-center">
......@@ -45,13 +37,16 @@
</template>
<script>
import {candidate,winnerSave} from '@api/purchaser/bid'
import {
candidate,
winnerSave
} from '@api/purchaser/bid'
import dataTable from '@components/nopageTable.vue'
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
import changeNav from '@components/changeNav.vue'
import singleUpload from '@components/Upload/singleUpload.vue'
export default {
import dataTable from '@components/nopageTable.vue'
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
import changeNav from '@components/changeNav.vue'
import singleUpload from '@components/Upload/Upload.vue'
export default {
components: {
dataBreadcrumb,
changeNav,
......@@ -60,7 +55,9 @@ export default {
},
data() {
return {
projectId:2,
file:"",
companyId:"",
projectId: 2,
content: '',
navs: ['确认中标人'],
breads: ['招标管理', '招标项目管理', '工作台'],
......@@ -84,32 +81,35 @@ export default {
] //
}
},
created(){
created() {
this.getcandidate()
},
methods: {
back(){
getfile(val){
this.file=val
},
back() {
this.$router.go(-1)
},
examine() {
this.$router.push('/admin/bid/bidingDetail')
},
check(index){
check(index) {
console.log(index);
},
// 获取中标人列表
async getcandidate() {
try {
let projectId=localStorage.getItem("projectId");
let projectId = localStorage.getItem("projectId");
const {
data,
code
} = await candidate(projectId)
if (code===200) {
for(let item of data){
item.companyName="杭州光海科技有限公司"
item.contacts="松江"
item.phone="77581633272"
if (code === 200) {
for (let item of data) {
item.companyName = "杭州光海科技有限公司"
item.contacts = "松江"
item.phone = "77581633272"
}
this.tableData = data
}
......@@ -119,30 +119,32 @@ export default {
},
// 提交中标人
async submitData() {
try {
let data={};
data.projectId=localStorage.getItem("projectId")
data.companyId=this.companyId
data.remark=this.remark;
data.fileList=this.file;
const {
msg,
code
} = await winnerSave(data)
if (code === 200) {
this.$message({
message: "提交完成",
type: 'success',
duration:1500
duration: 1500
})
setTimeout(()=>{
setTimeout(() => {
this.$router.go(-1)
},1500)
// try {
// let data={}
// data.projectId=localStorage.getItem("projectId");
// const {
// msg,
// code
// } = await winnerSave()
// if (code === 200) {
// this.$message.success(msg);
// }
// } catch (e) {
// console.log(e)
// }
}, 1500)
}
} catch (e) {
console.log(e)
}
}
}
}
}
</script>
<style scoped>
......@@ -153,11 +155,13 @@ export default {
.message>div {
margin-bottom: 20px;
}
.form>h3{
.form>h3 {
font-weight: bold;
margin-bottom: 30px;
}
.button{
.button {
width: 100%;
height: 50px;
......
......@@ -38,16 +38,14 @@
<el-form-item label="公告标题" prop="title">
<el-input v-model="ruleForm.title"></el-input>
</el-form-item>
</el-form>
<el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="demo-ruleForm">
<el-form-item label="公告内容" prop="content">
<quill-editor ref="text" v-model="form.content" :options="editorOption" class="myQuillEditor" />
<quill-editor ref="text" v-model="ruleForm.content" :options="editorOption" class="myQuillEditor" />
</el-form-item>
</el-form>
</div>
<div class="button flex-center">
<div class="bottomButton flex-center">
<el-button>返回</el-button>
<el-button type="primary">完成</el-button>
<el-button type="primary" @click="submitData">提交审批</el-button>
</div>
</div>
<el-dialog :visible.sync="dialogFormVisible" title="收货地址" width="30%">
......@@ -65,6 +63,9 @@
</template>
<script>
import {
createwin
} from '@api/purchaser/bid'
import {
quillEditor
} from 'vue-quill-editor'
......@@ -83,6 +84,8 @@
},
data() {
return {
editorOption: {},
file: [],
ruleForm: {
title: '',
content: ''
......@@ -125,9 +128,38 @@
}
},
methods: {
getfile(val) {
this.file = val
},
edit(row) {
this.dialogFormVisible = true
this.form = row
},
async submitData() {
try {
const valid = await this.$refs['ruleForm'].validate()
if (valid) {
let ruleForm = this.ruleForm;
ruleForm.projectId = localStorage.getItem("projectId")
ruleForm.accessoryPOList = this.file
const {
code,
msg
} = await createwin(ruleForm)
if (code === 200) {
this.$message({
message: msg,
type: 'success',
duration: 1500
})
setTimeout(() => {
this.$router.go(-1)
}, 1500)
}
}
} catch (e) {
console.log(e)
}
}
}
......
......@@ -3,7 +3,9 @@
<div class="content-head">
<dataBreadcrumb :breads="breads"></dataBreadcrumb>
<h3>发布中标候选人公示</h3>
<h5>发布中标候选人公示</h5> </div> <div class="content">
<h5>发布中标候选人公示</h5>
</div>
<div class="content">
<div class="message">
<div class="flex-between">
<div>项目编号:3456789567222</div>
......@@ -12,60 +14,49 @@
<div class="flex-between">
<div class="flex">
<div class="adjustment">上传附件:</div>
<singleUpload tips="支持上传1个附件,不超过20M"></singleUpload>
<singleUpload :limit="1" tip="支持上传1个附件,不超过20M" @input="getfile" :max="20"></singleUpload>
</div>
<div>发布媒体:捷安采官网</div>
</div>
<div class="flex-item">
<div style="width: 50px;">备注:</div>
<el-input :rows="4" v-model="remark" type="remark" placeholder="请输入备注">
<el-input :rows="4" v-model="remark" type="textarea" placeholder="请输入备注">
</el-input>
</div>
</div>
<div class="form">
<h3 style="margin-top:30px">中标候选人公示内容</h3>
<el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="demo-ruleForm">
<el-form-item label="公告标题" prop="title">
<el-input v-model="ruleForm.title"></el-input>
</el-form-item>
</el-form>
<el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="demo-ruleForm">
<el-form-item label="公告内容" prop="content">
<quill-editor ref="text" v-model="form.content" :options="editorOption" class="myQuillEditor" />
<quill-editor ref="text" v-model="ruleForm.content" :options="editorOption" class="myQuillEditor" />
</el-form-item>
</el-form>
</div>
<div class="bottomButton flex-center">
<el-button>返回</el-button>
<el-button type="primary">提交审批</el-button>
<el-button type="primary" @click="submitData">提交审批</el-button>
</div>
</div>
<el-dialog :visible.sync="dialogFormVisible" title="收货地址" width="30%">
<el-form :model="form">
<el-form-item label-width="120px" label="输入中标价">
<el-input v-model="form.price" type="number" autocomplete="off"></el-input>
</el-form-item>
</el-form>
<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>
</template>
<script>
import {
import {
createcadidate
} from '@api/purchaser/bid'
import {
quillEditor
} from 'vue-quill-editor'
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
import dataTable from '@components/dataTable.vue'
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
import singleUpload from '@components/Upload/singleUpload.vue'
export default {
} from 'vue-quill-editor'
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
import dataTable from '@components/dataTable.vue'
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
import singleUpload from '@components/Upload/Upload.vue'
export default {
components: {
dataTable,
dataBreadcrumb,
......@@ -74,6 +65,8 @@ export default {
},
data() {
return {
editorOption: {},
file: [],
ruleForm: {
title: '',
content: ''
......@@ -93,21 +86,44 @@ export default {
form: {
price: ''
},
dialogFormVisible: false,
remark: '',
breads: ['招标管理', '招标项目管理', '工作台']
}
},
methods: {
edit(row) {
this.dialogFormVisible = true
this.form = row
getfile(val) {
this.file = val
},
async submitData() {
try {
const valid = await this.$refs['ruleForm'].validate()
if (valid) {
let ruleForm = this.ruleForm;
ruleForm.projectId = localStorage.getItem("projectId")
ruleForm.accessoryPOList = this.file
const {
code,
msg
} = await createcadidate(ruleForm)
if (code === 200) {
this.$message({
message: msg,
type: 'success',
duration: 1500
})
setTimeout(() => {
this.$router.go(-1)
}, 1500)
}
}
} catch (e) {
console.log(e)
}
}
}
}
}
</script>
......@@ -130,4 +146,3 @@ export default {
margin-top: 50px;
}
</style>
......@@ -4,7 +4,7 @@
<dataBreadcrumb :breads="breads"></dataBreadcrumb>
<div class="message">
<div class="flex-between" style="width: 50%;">
<div>招标文件:<span>下载招标文件</span></div>
<div>招标文件:<span @click="download(bidDetail.fileUrl)">{{bidDetail.fileName}}</span></div>
<div>开标信息:<span>开标一览表</span></div>
</div>
<div class="flex upload">
......@@ -81,11 +81,11 @@
</li>
</ul>
</div>
<div class="button">
<!-- <div class="button">
<el-button @click="back">返回</el-button>
<el-button @click="fail">流标</el-button>
<el-button type="primary">评标结束</el-button>
</div>
</div> -->
</div>
</div>
</div>
......@@ -95,6 +95,7 @@
import {
companyRank,
CompanyEvaluatec,
bidBookDownload
} from '@api/purchaser/bid'
import dataTable from '@components/nopageTable.vue'
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
......@@ -105,6 +106,7 @@ export default {
},
data() {
return {
bidDetail:"",
projectId:2,
rankTitle: [{
label: '投标人名称',
......@@ -170,8 +172,12 @@ export default {
created() {
this.getcompanyRank()
this.getCompanyEvaluatec()
this.getbidBookDownload();
},
methods: {
download(url){
window.open(url)
},
back(){
this.$router.go(-1)
},
......@@ -214,7 +220,23 @@ export default {
} catch (e) {
console.log(e)
}
},
// 查看招标文件
async getbidBookDownload() {
try {
let projectId=localStorage.getItem("projectId")
const {
data,
code
} = await bidBookDownload(projectId)
if (code === 200) {
this.bidDetail=data
}
} catch (e) {
console.log(e)
}
},
//
}
}
</script>
......
......@@ -15,10 +15,10 @@
<div>日期:{{ date }}</div>
<div>中标金额:100.00元</div>
</div>
<div class="flex-between">
<div class="flex">
<div>
<div class="flex" style="margin-bottom:50px">
<div >上传附件:</div>
<singleUpload :limit='1' tip="支持上传一个pdf格式文件,大小不超过100M。" accept='.pdf'></singleUpload>
<singleUpload :limit='1' tip="支持上传一个pdf格式文件,大小不超过100M。" accept='.pdf' @input="getfile"></singleUpload>
</div>
<div>
<el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="120px" class="demo-ruleForm">
......@@ -29,7 +29,7 @@
</div>
</div>
<div class="flex-center button">
<el-button>取消</el-button>
<el-button @click="back">取消</el-button>
<el-button type="primary" @click="submitData">保存</el-button>
</div>
</div>
......@@ -50,8 +50,9 @@ export default {
},
data() {
return {
resultId:"",
ruleForm: {
code: ''
number: ''
},
rules: {
number: [{
......@@ -67,14 +68,25 @@ export default {
created() {
let date=getTime();
this.date=date.substring(0,9)
this.resultId=this.$route.query.id;
},
methods: {
back(){
this.$router.go(-1)
},
getfile(val){
this.ruleForm.fileList=val
},
//提交表单
async submitData() {
try {
const valid = await this.$refs['ruleForm'].validate()
if (valid) {
const { code,msg } = await editSentBook();
let ruleForm=this.ruleForm;
ruleForm.resultId=this.resultId
ruleForm.projectId=localStorage.getItem("projectId")
ruleForm.companyId=localStorage.getItem("companyId")
const { code,msg } = await editSentBook(ruleForm);
if (code === 2000) {
this.$success.success(msg)
}
......
......@@ -12,7 +12,7 @@
</el-table-column>
<el-table-column slot="operate" label="操作" align="center" fixed="right" width="150">
<template slot-scope="scope">
<el-button type="text" size="small" @click="edit(scope.row)">通知书编辑</el-button>
<el-button type="text" size="small" @click="edit(scope.row.id)">通知书编辑</el-button>
</template>
</el-table-column>
</dataTable>
......@@ -66,8 +66,8 @@ export default {
this.getsentBookList();
},
methods: {
edit() {
this.$router.push('/purchaser/bid/bidSure/winBid/edit')
edit(id) {
this.$router.push(`/purchaser/bid/bidSure/winBid/edit?id=${id}`)
},
back() {
this.$router.go(-1)
......
......@@ -33,7 +33,6 @@
<el-radio :label="0">普通</el-radio>
<el-radio :label="1">紧急</el-radio>
</el-radio-group>
</el-form-item>
</div>
<div class="flex-between" style="width:60%">
......
......@@ -17,8 +17,8 @@
</el-form-item>
<el-form-item label="公告内容" prop="content">
<quill-editor ref="text" v-model="ruleForm.content" :options="editorOption" class="myQuillEditor" />
</el-form-item></el-form>
</el-form-item>
</el-form>
</div>
</div>
<div class="bottomButton">
......
......@@ -56,7 +56,7 @@
checklist: [{
title: '供应商',
type: 'input',
model: 'tenderCompanyName'
model: 'bidCompanyName'
}, {
title: '状态',
type: 'select',
......
......@@ -25,14 +25,14 @@
</div>
<div class="bottomButton">
<el-button @click="back">取消</el-button>
<el-button type="primary">提交</el-button>
<el-button type="primary" @click="submitData">提交</el-button>
</div>
</div>
</template>
<script>
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
export default {
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
export default {
components: {
dataBreadcrumb
},
......@@ -54,25 +54,51 @@ export default {
this.$message.success('撤销成功')
})
.catch(() => {})
},
async submitData() {
try {
let projectId = localStorage.getItem("projectId")
const {
msg,
code
} = await signContract(projectId)
if (code == 200) {
this.$message({
message: msg,
type: 'success',
duration: 1500
})
setTimeout(() => {
this.$router.go(-1)
}, 1500)
}
} catch (e) {
console.log(e)
}
}
}
}
}
</script>
<style scoped>
.contractContent{
.contractContent {
width: 100%;
height: 500px;
border:1px solid #000000;
border: 1px solid #000000;
margin-top: 30px;
}
.button{
.button {
margin-top: 30px;
height: 50px;
width: 100%;
}
ul>li>div{
ul>li>div {
margin-right: 10px;
}
</style>
......@@ -33,10 +33,7 @@
<div>单位所在地</div>
<div>{{detail.location}}</div>
</li>
<li>
<div>行业类型</div>
<div>{{detail.businessScope}}</div>
</li>
<li>
<div>注册资本(万元)</div>
<div>{{detail.registeredCapital}}</div>
......@@ -59,9 +56,13 @@
</li>
</ul>
<div class="detail-item">
<div>*经营范围</div>
<div>经营范围</div>
<div>一般项目:技术服务,技术开发</div>
</div>
<div class="detail-item">
<div>行业类型</div>
<div>{{detail.businessScope}}</div>
</div>
</div>
<div class="operation">
<el-button @click="back">返回</el-button>
......
......@@ -37,12 +37,12 @@ service.interceptors.response.use(
}
},
error => {
if(error.response.status == 500){
if(error.response.status == 401){
Message.error("登陆失效,请重新登录!")
// localStorage.removeItem('token');
// setTimeout(function () {
// // location.href = 'http://192.168.200.201:8081/';
// location.href = 'http://localhost:3000/';
// 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