Commit 96b199b3 authored by 张冬's avatar 张冬

招标公告编辑

parent 8a41f77b
......@@ -43,9 +43,9 @@ export default {
async getbiddingProjectId() {
let projectId = localStorage.getItem('projectId');
const { data, code,msg } = await biddingProjectId(projectId);
this.$emit("getmsg",code)
if (code == 200) {
this.detail = data;
this.$emit("getstate",data.auditStatus)
} else if (code == 500) {
this.state = false;
this.msg = msg;
......
<template>
<div>
<div class="content-head">
<dataBreadcrumb :breads="breads"></dataBreadcrumb>
<h3>编辑招标公告</h3>
<h5>编辑招标公告</h5>
</div>
<div class="content">
<div class="describe">招标公告</div>
<div class="form">
<el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="demo-ruleForm">
<el-form-item label="公告标题" prop="title"
><strong></strong>
<el-input v-model.trim="ruleForm.title" maxlength="30"></el-input>
</el-form-item>
<el-form-item label="上传附件"
><strong></strong>
<singleUpload tip="支持扩展名:.rar .zip .doc .docx .pdf .jpg..." @input="getfile" :fileList="ruleForm.accessoryVOList"></singleUpload>
</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>
</div>
</div>
<div class="bottomButton">
<el-button @click="back">取消</el-button>
<el-button type="primary" @click="submit">编辑</el-button>
</div>
</div>
</template>
<script>
import { editBidding} from '@api/purchaser/bid';
import { biddingProjectId } from '@api/common/list';
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 dataBreadcrumb from '@components/dataBreadcrumb.vue';
import singleUpload from '@components/Upload/Upload.vue';
export default {
components: {
dataBreadcrumb,
singleUpload,
quillEditor
},
data() {
// 检测文件是否上传
let checkupload = (rule, value, callback) => {
if (this.justimg.length === 0) {
callback(new Error('请上传正面照片'));
} else {
callback();
}
};
return {
accessoryPOList: [],
editorOption: {},
breads: ['招标管理', '招标项目管理', '工作台'],
ruleForm: {
title: '',
content: ''
},
rules: {
title: [
{
required: true,
message: '请填写',
trigger: 'blue'
}
],
content: [
{
required: true,
message: '请填写',
trigger: 'blue'
}
]
}
};
},
created() {
this.getbiddingProjectId();
},
methods: {
back() {
this.$router.go(-1);
},
cancel() {
this.$router.go(-1);
},
getfile(val) {
for (let item of val) {
item.accessoryUrl = item.fileUrl;
}
this.accessoryPOList = val;
},
//提交表单
async submit() {
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);
}
},
// 获取详情
async getbiddingProjectId() {
let projectId = localStorage.getItem('projectId');
const { data, code, msg } = await biddingProjectId(projectId);
if (code == 200) {
for(let item of data.accessoryVOList){
item.url=item.accessoryUrl
item.name=item.fileName
}
this.ruleForm= data;
}
}
}
};
</script>
<style scoped>
.ql-editor {
height: 400px;
}
.bottomButton {
margin-top: 20px;
}
.form {
padding-bottom: 80px;
}
</style>
\ No newline at end of file
......@@ -3,15 +3,19 @@
<div class="content">
<dataBreadcrumb :breads="breads"></dataBreadcrumb>
<div class="message">
<div class="flex-between bond" >
<div>招标文件:<span @click="download(bidDetail.fileUrl)">{{bidDetail.fileName}}</span></div>
<div class="flex-between bond">
<div>
招标文件:<span @click="download(bidDetail.fileUrl)">{{ bidDetail.fileName }}</span>
</div>
<div>开标信息:<span @click="changeOpen">开标一览表</span></div>
</div>
<div class="flex upload">
<div>变更信息:</div>
<ul class="title flex" >
<li 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>
<ul class="title flex">
<li 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>
......@@ -22,42 +26,44 @@
<el-table-column slot="operate" label="文件" align="center" fixed="right">
<template slot-scope="scope">
<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 @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>
</div>
<!-- 评审信息 -->
<div style="margin-top:100px">
<div style="margin-top: 100px">
<div class="flex-between">
<h5>评审信息</h5>
<el-button type="primary" size="small" @click='jump'>澄清质询查看</el-button>
<el-button type="primary" size="small" @click="jump">澄清质询查看</el-button>
</div>
<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>
<div v-else>未通过</div>
<div v-if="scope.row.qualification">通过</div>
<div v-if="!scope.row.qualification">未通过</div>
</template>
</el-table-column>
<el-table-column slot="operate" label="符合性审查" align="center" fixed="right">
<template slot-scope="scope">
<div v-if="scope.row.accord==0">通过</div>
<div v-else>未通过</div>
<div v-if="scope.row.conformity">通过</div>
<div v-if="!scope.row.conformity">未通过</div>
</template>
</el-table-column>
<el-table-column slot="operate" label="手动废标" align="center" fixed="right">
<template slot-scope="scope">
<div v-if="scope.row.fail==0">通过</div>
<div v-else>未通过</div>
<div v-if="scope.row.bidRejection">通过</div>
<div v-if="!scope.row.bidRejection">未通过</div>
</template>
</el-table-column>
<el-table-column slot="operate" label="结论" align="center" fixed="right">
<template slot-scope="scope">
<div v-if="scope.row.conclusion==0">通过</div>
<div v-else>未通过</div>
<div v-if="scope.row.conclusion">通过</div>
<div v-if="!scope.row.conclusion">未通过</div>
</template>
</el-table-column>
</dataTable>
......@@ -66,9 +72,15 @@
<div>
<h5>排名信息</h5>
<dataTable :table-data="rank" :columns="rankTitle" :is-index="true">
<el-table-column slot="operate" label="是否中标候选人" align="center" fixed="right">
<template slot-scope="scope">
<div v-if="scope.row.winPerson"></div>
<div v-if="!scope.row.winPerson"></div>
</template>
</el-table-column>
<el-table-column slot="operate" label="排名" align="center" fixed="right">
<template slot-scope="scope">
<div>{{scope.$index+1}}</div>
<div>{{ scope.$index + 1 }}</div>
</template>
</el-table-column>
</dataTable>
......@@ -77,8 +89,8 @@
<div class="flex">
<div>评标附件:</div>
<ul class="upload">
<li class="flex" v-for="(item,index) in downloadList" :key="index">
<div>{{item.fileName}}</div>
<li class="flex" v-for="(item, index) in downloadList" :key="index">
<div>{{ item.fileName }}</div>
<button @click="down(item.fileUrl)">下载</button>
</li>
</ul>
......@@ -91,8 +103,7 @@
</div>
<!-- 开标一览表 -->
<el-dialog title="开标一览表" :visible.sync="isOpenInfo">
<dataTable :tableData="tableData" :columns="nopagecolumns" :margin-top="0" :margin-bottom="0">
</dataTable>
<dataTable :tableData="tableData" :columns="nopagecolumns" :margin-top="0" :margin-bottom="0"> </dataTable>
<div slot="footer" class="dialog-footer">
<el-button @click="isOpenInfo = false">取 消</el-button>
</div>
......@@ -102,7 +113,7 @@
</template>
<script>
import {
import {
bidend,
CompanyEvaluatec,
companyRank,
......@@ -111,19 +122,20 @@
bidFilelist,
accessorydownload,
openInfo
} from '@api/purchaser/bid'
import dataTable from '@components/nopageTable.vue'
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
export default {
} from '@api/purchaser/bid';
import dataTable from '@components/nopageTable.vue';
import dataBreadcrumb from '@components/dataBreadcrumb.vue';
export default {
components: {
dataTable,
dataBreadcrumb
},
data() {
return {
isOpenInfo:false,
tableData:[],
nopagecolumns: [{
isOpenInfo: false,
tableData: [],
nopagecolumns: [
{
label: '投标人名称',
prop: 'companyName'
},
......@@ -133,13 +145,14 @@
},
{
label: '是否签名',
prop: 'isSign',
},
prop: 'isSign'
}
], //
downloadList: [],
changeList: [],
bidDetail: "",
rankTitle: [{
bidDetail: '',
rankTitle: [
{
label: '投标人名称',
prop: 'companyName'
},
......@@ -172,7 +185,8 @@
}
],
rank: [],
bidTitle: [{
bidTitle: [
{
label: '投标人',
prop: 'companyName'
},
......@@ -183,85 +197,74 @@
bids: [],
breads: ['招标管理', '招标项目管理', '工作台'],
review: [],
reviewTitle: [{
reviewTitle: [
{
label: '投标人名称',
prop: 'companyName'
},
{
slot: 'operate'
}
], // 操作列
}
] // 操作列
};
},
methods: {
changeOpen(){
this.isOpenInfo=true;
this.getopenInfo() ;
changeOpen() {
this.isOpenInfo = true;
this.getopenInfo();
},
// 开标一览表
async getopenInfo() {
try {
let projectId = localStorage.getItem("projectId")
const {
data,
code
} = await openInfo(projectId)
let projectId = localStorage.getItem('projectId');
const { data, code } = await openInfo(projectId);
if (code == 200) {
for (let item of data) {
if (item.isSign) {
item.isSign = "是"
item.isSign = '是';
} else {
item.isSign = "否"
item.isSign = '否';
}
}
this.tableData = data
this.tableData = data;
}
} catch (e) {
console.log(e)
console.log(e);
}
},
down(url) {
window.open(url)
window.open(url);
},
jump() {
this.$router.push('/purchaser/bid/bidEvaluation/review/clear')
this.$router.push('/purchaser/bid/bidEvaluation/review/clear');
},
compare(property) {
return function(a, b) {
return function (a, b) {
var value1 = a[property];
var value2 = b[property];
return value2 - value1;
}
};
},
// 查看评标附件
async getaccessorydownload() {
let projectId = localStorage.getItem("projectId");
const {
data,
code
} = await accessorydownload(projectId)
let projectId = localStorage.getItem('projectId');
const { data, code } = await accessorydownload(projectId);
if (code === 200) {
this.downloadList = data
this.downloadList = data;
}
},
// 查看投标文件
async getbidFilelist() {
let projectId = localStorage.getItem("projectId");
const {
data,
code
} = await bidFilelist(projectId)
let projectId = localStorage.getItem('projectId');
const { data, code } = await bidFilelist(projectId);
if (code === 200) {
this.bids = data
this.bids = data;
}
},
// 查看变更信息
async getchangeNoticelist() {
let projectId = localStorage.getItem("projectId");
const {
data,
code
} = await changeNoticelist(projectId)
let projectId = localStorage.getItem('projectId');
const { data, code } = await changeNoticelist(projectId);
if (code === 200) {
this.changeList = data;
}
......@@ -269,49 +272,39 @@
// 查投标公司评审信息
async getCompanyEvaluatec() {
try {
let projectId = localStorage.getItem("projectId");
const {
data,
code
} = await CompanyEvaluatec(projectId)
let projectId = localStorage.getItem('projectId');
const { data, code } = await CompanyEvaluatec(projectId);
if (code === 200) {
this.review = data
this.review = data;
}
} catch (e) {
console.log(e)
console.log(e);
}
},
// 查看投标公司排名信息
async getcompanyRank() {
try {
let projectId = localStorage.getItem("projectId");
const {
data,
code
} = await companyRank(projectId)
let projectId = localStorage.getItem('projectId');
const { data, code } = await companyRank(projectId);
if (code === 200) {
console.log(data, "...............");
let data1 = data.sort(this.compare('finalScore'))
this.rank = data1
console.log(data, '...............');
let data1 = data.sort(this.compare('finalScore'));
this.rank = data1;
}
} catch (e) {
console.log(e)
console.log(e);
}
},
async getbidBookDownload() {
try {
let projectId = localStorage.getItem("projectId")
const {
data,
code
} = await bidBookDownload(projectId)
let projectId = localStorage.getItem('projectId');
const { data, code } = await bidBookDownload(projectId);
if (code === 200) {
this.bidDetail = data
this.bidDetail = data;
}
} catch (e) {
console.log(e)
console.log(e);
}
},
async end() {
......@@ -320,91 +313,87 @@
type: 'warning'
})
.then(async () => {
let projectId = localStorage.getItem("projectId")
const {
msg,
code
} = await bidend(projectId)
let projectId = localStorage.getItem('projectId');
const { msg, code } = await bidend(projectId);
if (code == 200) {
this.$message({
message: msg,
type: 'success',
duration: 1500
})
});
setTimeout(() => {
this.$router.go(-1)
}, 1500)
this.$router.go(-1);
}, 1500);
} else {
this.$message.error(msg)
this.$message.error(msg);
}
})
.catch(() => {})
.catch(() => {});
},
back() {
this.$router.go(-1)
this.$router.go(-1);
},
examine() {
this.$router.push('/admin/bid/bidingDetail')
this.$router.push('/admin/bid/bidingDetail');
},
fail() {
this.$router.push('/purchaser/bid/bidEvaluation/projectManager/fail')
this.$router.push('/purchaser/bid/bidEvaluation/projectManager/fail');
}
},
created() {
this.getaccessorydownload();
this.getbidFilelist();
this.getchangeNoticelist();
this.getcompanyRank()
this.getCompanyEvaluatec()
this.getcompanyRank();
this.getCompanyEvaluatec();
this.getbidBookDownload();
},
}
};
</script>
<style scoped>
.bond span{
cursor:pointer;
}
.bond span {
cursor: pointer;
}
.file>div {
.file > div {
margin-right: 10px;
color: #113DEE;
cursor:pointer;
}
color: #113dee;
cursor: pointer;
}
.message {
.message {
margin-left: 50px;
margin-bottom: 50px;
}
}
.message span {
color: #113DEE
}
.message span {
color: #113dee;
}
.message>div {
.message > div {
margin-bottom: 15px;
}
}
.title>li {
.title > li {
margin-right: 15px;
}
}
.upload button {
.upload button {
border: 1px solid #000000;
background: #fff;
width: 50px;
height: 20px;
margin-left: 10px;
}
}
h5 {
h5 {
font-weight: bold;
margin-bottom: 20px;
}
}
.button {
.button {
width: 280px;
margin: 80px auto 30px
}
margin: 80px auto 30px;
}
</style>
......@@ -44,26 +44,26 @@
<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.qualification == true">通过</div>
<div v-if="scope.row.qualification == false">未通过</div>
<div v-if="scope.row.qualification">通过</div>
<div v-if="!scope.row.qualification">未通过</div>
</template>
</el-table-column>
<el-table-column slot="operate" label="符合性审查" align="center" fixed="right">
<template slot-scope="scope">
<div v-if="scope.row.conformity == true">通过</div>
<div v-if="scope.row.conformity == false">未通过</div>
<div v-if="scope.row.conformity">通过</div>
<div v-if="!scope.row.conformity">未通过</div>
</template>
</el-table-column>
<el-table-column slot="operate" label="手动废标" align="center" fixed="right">
<template slot-scope="scope">
<div v-if="scope.row.bidRejection == true">通过</div>
<div v-if="scope.row.bidRejection == false">未通过</div>
<div v-if="scope.row.bidRejection">通过</div>
<div v-if="!scope.row.bidRejection">未通过</div>
</template>
</el-table-column>
<el-table-column slot="operate" label="结论" align="center" fixed="right">
<template slot-scope="scope">
<div v-if="scope.row.conclusion == true">通过</div>
<div v-if="scope.row.conclusion == false">未通过</div>
<div v-if="scope.row.conclusion">通过</div>
<div v-if="!scope.row.conclusion">未通过</div>
</template>
</el-table-column>
<el-table-column slot="operate" label="操作" align="center" fixed="right">
......@@ -79,8 +79,8 @@
<dataTable :table-data="rank" :columns="rankTitle" :is-index="true">
<el-table-column slot="operate" label="是否中标候选人" align="center" fixed="right">
<template slot-scope="scope">
<div v-if="scope.row.winPerson == 'true'"></div>
<div v-if="scope.row.winPerson == 'false'"></div>
<div v-if="scope.row.winPerson"></div>
<div v-if="!scope.row.winPerson"></div>
</template>
</el-table-column>
<el-table-column slot="operate" label="排名" align="center" fixed="right">
......@@ -175,8 +175,8 @@
></el-input-number>
</el-form-item>
<el-form-item label="是否中标候选人" prop="winPerson">
<el-radio v-model="rankForm.winPerson" label="true"></el-radio>
<el-radio v-model="rankForm.winPerson" label="false"></el-radio>
<el-radio v-model="rankForm.winPerson" :label="true"></el-radio>
<el-radio v-model="rankForm.winPerson" :label="false"></el-radio>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
......@@ -596,13 +596,13 @@ export default {
let projectId = localStorage.getItem('projectId');
const { data, code } = await companyRank(projectId);
if (code === 200) {
for(let item of data){
if(item.winPerson){
item.winPerson="true"
}else{
item.winPerson="false"
}
}
// for(let item of data){
// if(item.winPerson){
// item.winPerson="true"
// }else{
// item.winPerson="false"
// }
// }
let data1 = data.sort(this.compare('finalScore'));
this.rank = data1;
}
......
......@@ -41,7 +41,7 @@
} from '@api/purchaser/bid'
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
import dataTable from '@components/dataTable.vue'
import singleUpload from '@components/Upload/singleUpload.vue'
import singleUpload from '@components/Upload/Upload.vue'
export default {
name: 'bidingList',
components: {
......@@ -132,9 +132,7 @@
<style scoped>
.message {
/* width:60%; */
}
.message>div {
margin-bottom: 30px;
......
......@@ -84,12 +84,8 @@ export default {
} = await resultBookList(projectId)
if (code === 200) {
for (let item of data) {
if (item.status == 0) {
item.state = "未审核"
} else if (item.status == 1) {
item.state = "通过审核"
} else if (item.status == 2) {
item.state = "未通过审核"
if (item.status == 1) {
item.state = "已发送"
} else if (item.status == -1) {
item.state = "暂存本地"
}
......
......@@ -150,6 +150,8 @@
setTimeout(() => {
this.$router.go(-1)
}, 1500)
}else{
this.$message.error(msg);
}
} catch (e) {
console.log(e)
......
......@@ -71,22 +71,32 @@
<!-- 排名信息 -->
<div>
<h5>排名信息</h5>
<dataTable :table-data="rank" :columns="rankTitle" :is-pageobj="false" :is-index="true"> </dataTable>
<dataTable :table-data="rank" :columns="rankTitle" :is-pageobj="false" :is-index="true">
<el-table-column slot="operate" label="是否中标候选人" align="center" fixed="right">
<template slot-scope="scope">
<div v-if="scope.row.winPerson"></div>
<div v-if="!scope.row.winPerson"></div>
</template>
</el-table-column>
<el-table-column slot="operate" label="排名" align="center" fixed="right">
<template slot-scope="scope">
<div v-if="scope.row.finalScore">{{ scope.$index + 1 }}</div>
</template>
</el-table-column>
</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">
<div class="centerButton">
<el-button @click="back">返回</el-button>
<el-button @click="fail">流标</el-button>
<el-button type="primary">评标结束</el-button>
</div> -->
</div>
</div>
<!-- 开标一览表 -->
<el-dialog title="开标一览表" :visible.sync="isOpenInfo">
......@@ -96,15 +106,19 @@
</div>
</el-dialog>
</div>
<div class="bottomButton">
<el-button @click="back">返回</el-button>
<el-button type="primary" v-if="ruleForm.auditStatus == 2" @click="submitData">提交</el-button>
</div>
</div>
</template>
<script>
import { companyRank, CompanyEvaluatec, bidBookDownload, openInfo ,accessorydownload,bidFilelist,changeNoticelist} from '@api/purchaser/bid';
import {
companyRank,
CompanyEvaluatec,
bidBookDownload,
openInfo,
accessorydownload,
bidFilelist,
changeNoticelist
} from '@api/purchaser/bid';
import dataTable from '@components/nopageTable.vue';
import dataBreadcrumb from '@components/dataBreadcrumb.vue';
export default {
......@@ -114,6 +128,7 @@ export default {
},
data() {
return {
changeList: [],
isOpenInfo: false,
tableData: [],
nopagecolumns: [
......@@ -157,10 +172,6 @@ export default {
label: '评标价(元)',
prop: 'evaluationPrice'
},
{
label: '排名',
prop: 'rank'
},
{
label: '最终得分',
prop: 'finalScore'
......@@ -173,7 +184,7 @@ export default {
bidTitle: [
{
label: '投标人',
prop: 'name'
prop: 'companyName'
},
{
slot: 'operate'
......@@ -202,8 +213,14 @@ export default {
this.getcompanyRank();
this.getCompanyEvaluatec();
this.getbidBookDownload();
this.getchangeNoticelist();
this.getaccessorydownload();
this.getbidFilelist()
},
methods: {
down(url) {
window.open(url);
},
back() {
this.$router.go(-1);
},
......@@ -290,52 +307,42 @@ export default {
},
// 查看评标附件
async getaccessorydownload() {
let projectId = localStorage.getItem("projectId");
const {
data,
code
} = await accessorydownload(projectId)
let projectId = localStorage.getItem('projectId');
const { data, code } = await accessorydownload(projectId);
if (code === 200) {
this.downloadList = data
this.downloadList = data;
}
},
// 查看投标文件
async getbidFilelist() {
let projectId = localStorage.getItem("projectId");
const {
data,
code
} = await bidFilelist(projectId)
let projectId = localStorage.getItem('projectId');
const { data, code } = await bidFilelist(projectId);
if (code === 200) {
this.bids = data
this.bids = data;
}
},
// 查看变更信息
async getchangeNoticelist() {
let projectId = localStorage.getItem("projectId");
const {
data,
code
} = await changeNoticelist(projectId)
let projectId = localStorage.getItem('projectId');
const { data, code } = await changeNoticelist(projectId);
if (code === 200) {
this.changeList = data;
}
},
}
//
}
};
</script>
<style scoped>
.bond span{
cursor:pointer;
}
.file>div{
.bond span {
cursor: pointer;
}
.file > div {
margin-right: 10px;
color: #113DEE;
cursor:pointer;
}
color: #113dee;
cursor: pointer;
}
.message {
margin-left: 50px;
......
......@@ -85,12 +85,8 @@
} = await sentBookList(projectId)
if (code === 200) {
for (let item of data) {
if (item.status == 0) {
item.state = "未审核"
} else if (item.status == 1) {
item.state = "通过审核"
} else if (item.status == 2) {
item.state = "未通过审核"
if (item.status == 1) {
item.state = "已发送"
} else if (item.status == -1) {
item.state = "暂存本地"
}
......
<template>
<div class="info">
<div class="content">
<editTenderAnnouncement v-if="auditStatus == 2"></editTenderAnnouncement>
<div v-if="auditStatus == 0||auditStatus == 1">
<div class="title_info">
<dataBreadcrumb :breads="breads"></dataBreadcrumb>
</div>
<div class="info_box">
<noticeDetail></noticeDetail>
<noticeDetail @getstate="getstate"></noticeDetail>
<el-row>
<el-button @click="back">返回</el-button>
</el-row>
</div>
</div>
</div>
</div>
</template>
<script>
import noticeDetail from '@components/detail/noticeDetail.vue'
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
import noticeDetail from '@components/detail/noticeDetail.vue';
import editTenderAnnouncement from '@components/edit/editTenderAnnouncement.vue';
import dataBreadcrumb from '@components/dataBreadcrumb.vue';
export default {
components: {
dataBreadcrumb,
noticeDetail
noticeDetail,
editTenderAnnouncement
},
data() {
return {
breads: ['投标管理', '在线报名', '招标公告'],
}
auditStatus: ''
};
},
methods: {
back() {
this.$router.go(-1)
getstate(val) {
this.auditStatus = val;
},
},
}
back() {
this.$router.go(-1);
}
}
};
</script>
<style scoped>
.info {
.info {
box-sizing: border-box;
padding: 30px;
background: rgb(240, 242, 245);
width: 100%;
}
}
.info>.info_prev {
.info > .info_prev {
box-sizing: border-box;
padding-left: 30px;
padding-top: 30px;
background: #fff;
}
}
.content_list {
.content_list {
margin-top: 50px;
}
}
.content_list h3 {
.content_list h3 {
margin-top: 30px;
font-weight: bold;
padding-bottom: 10px;
}
}
.content_list p {
.content_list p {
margin-top: 10px;
margin-bottom: 10px;
}
}
.message>p{
.message > p {
font-weight: bold;
}
.el-row {
}
.el-row {
display: flex;
justify-content: center;
margin-top: 50px;
}
}
</style>
......@@ -24,8 +24,8 @@
<el-button type="text" size="small" v-else disabled>合同查看</el-button>
</div>
<div>
<el-button type="text" size="small" @click="voucherSign(scope.row.projectId)" v-if="scope.row.voucherOperation==1">确认凭证</el-button>
<el-button type="text" size="small" @click="voucherSee(scope.row.projectId)" v-else-if="scope.row.voucherOperation==2">查看凭证</el-button>
<el-button type="text" size="small" @click="voucherSign(scope.row)" v-if="scope.row.voucherOperation==1">确认凭证</el-button>
<el-button type="text" size="small" @click="voucherSee(scope.row)" v-else-if="scope.row.voucherOperation==2">查看凭证</el-button>
<el-button type="text" size="small" v-else disabled>查看凭证</el-button>
</div>
</div>
......@@ -103,10 +103,10 @@
})
},
voucherSee(id) {
this.$router.push(`/purchaser/buyOut/voucherSee?id=${id}`)
this.$router.push(`/purchaser/buyOut/voucherSee?projectId=${row.projectId}&companyId=${row.bidCompanyId}`)
},
voucherSign(id) {
this.$router.push(`/purchaser/buyOut/voucherSign?id=${id}`)
voucherSign(row) {
this.$router.push(`/purchaser/buyOut/voucherSign?projectId=${row.projectId}&companyId=${row.bidCompanyId}`)
},
async getDropList() {
const {
......
......@@ -31,7 +31,8 @@ export default {
data() {
return {
breads: ['应收账款买断管理', '应收账款买断列表'],
id: '',
projectId: '',
companyId: '',
imgList:[],
srcList:[]
};
......@@ -43,8 +44,8 @@ export default {
// 查看详情
async getevidenceDetail() {
let message = {};
message.projectId = this.id;
message.companyId = localStorage.getItem('companyId');
message.projectId = this.projectId
message.companyId = this.companyId
const { data, code, msg } = await evidenceDetail(message);
if (code == 200) {
this.imgList = data;
......@@ -57,7 +58,8 @@ export default {
}
},
created() {
this.id = this.$route.query.id;
this.projectId = this.$route.query.projectId;
this.companyId = this.$route.query.companyId;
this.getevidenceDetail();
}
};
......
......@@ -6,22 +6,11 @@
<h5>确认应收账款等凭证</h5>
</div>
<div class="content">
<div class="flex-item">
<div>下载合同:</div>
<ul>
<li class="flex-item">
<div>{{detail.fileName}}f</div>
<!-- <el-button size="mini">下载</el-button> -->
<a :href="detail.fileUrl">下载</a>
</li>
</ul>
</div>
<div class="flex" style="margin-top: 50px;">
<div class="flex" style="margin-top: 50px">
<div>查看图片:</div>
<div class="img-list flex">
<div v-for="(item,index) in imgList" :key="index">
<el-image :src="item" :preview-src-list="srcList" style="width: 100px; height: 100px">
</el-image>
<div v-for="(item, index) in imgList" :key="index">
<el-image :src="item" :preview-src-list="srcList" style="width: 100px; height: 100px"> </el-image>
</div>
</div>
</div>
......@@ -34,97 +23,88 @@
</template>
<script>
import {
confirmvoucher,
evidenceDetail
} from '@api/purchaser/buyOut'
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
export default {
import { confirmvoucher, evidenceDetail } from '@api/purchaser/buyOut';
import dataBreadcrumb from '@components/dataBreadcrumb.vue';
export default {
components: {
dataBreadcrumb
},
data() {
return {
imgList: ['https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg'
],
breads: ['应收账款买断管理', '应收账款买断列表'],
srcList: [
'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg',
'https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg'
],
id:"",
detail:""
}
projectId: '',
companyId: '',
imgList: [],
srcList: []
};
},
created() {
this.getevidenceDetail()
this.getevidenceDetail();
},
methods: {
back() {
this.$router.go(-1)
this.$router.go(-1);
},
// 查看详情
async getevidenceDetail() {
let message={}
message.projectId = this.id
message.companyId =localStorage.getItem("companyId")
const {
data,
code
} = await evidenceDetail(message)
let message = {};
message.projectId = this.projectId;
message.companyId = this.companyId;
const { data, code } = await evidenceDetail(message);
if (code == 200) {
this.detail = data
this.imgList = data;
for (let item of data) {
this.srcList.push(item.fileUrl);
}
} else {
this.$message.error(msg);
}
},
// 提出
async submitData() {
try {
let projectId = this.id
const {
msg,
code
} = await confirmvoucher(projectId)
let projectId = this.projectId;
const { msg, code } = await confirmvoucher(projectId);
if (code == 200) {
this.$message({
message: msg,
type: 'success',
duration: 1500
})
});
setTimeout(() => {
this.$router.go(-1)
}, 1500)
}else{
this.$message.error(msg)
this.$router.go(-1);
}, 1500);
} else {
this.$message.error(msg);
}
} catch (e) {
console.log(e)
console.log(e);
}
}
},
},
created() {
this.id=this.$route.query.id
this.projectId = this.$route.query.projectId;
this.companyId = this.$route.query.companyId;
this.getevidenceDetail();
}
}
};
</script>
<style scoped>
.img-list {
.img-list {
flex-wrap: wrap;
}
}
.img-list>div {
.img-list > div {
margin-right: 20px;
}
}
ul>li>div {
ul > li > div {
margin-right: 10px;
}
}
.backButton {
.backButton {
width: 200px;
margin: 200px auto 30px;
}
}
</style>
......@@ -7,24 +7,23 @@
</div>
<div class="content">
<div class="flex-arround">
<div>项目编号:{{projectCode}}</div>
<div>项目名称:{{projectName}}</div>
<div v-if="state">发布时间:{{detail.createTime}}</div>
<div>项目编号:{{ projectCode }}</div>
<div>项目名称:{{ projectName }}</div>
<div v-if="state">发布时间:{{ detail.createTime }}</div>
</div>
<div class='detail1' v-if="state">
<div class="detail1" v-if="state">
<div v-html="detail.content"></div>
<div class="enclosure" v-if="detail.accessoryDOList">
<ul>
<li v-for="(item,i) in detail.accessoryDOList" :key="i">
<a href="item.accessoryUrl">item.fileName</a>
<div class="enclosure flex-item">
<div style="margin-right: 30px">相关附件</div>
<ul v-if="detail.accessoryDOList.length>0">
<li v-for="(item, i) in detail.accessoryDOList" :key="i">
<a href="item.accessoryUrl">{{ item.fileName }}</a>
</li>
</ul>
<div v-else></div>
</div>
<div class="enclosure">相关附件:空</div>
</div>
<div v-else class="detail1">
未找到该公告详情!
</div>
<div v-else class="detail1">未找到该公告详情!</div>
<div class="centerButton">
<el-button @click="back">返回</el-button>
</div>
......@@ -33,74 +32,69 @@
</template>
<script>
import {
noticeWin
} from '@api/supply/bid'
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
export default {
import { noticeWin } from '@api/supply/bid';
import dataBreadcrumb from '@components/dataBreadcrumb.vue';
export default {
components: {
dataBreadcrumb
},
data() {
return {
breads: ['投标管理 ', '我参加的项目', '工作台'],
projectCode: "",
projectName: "",
projectCode: '',
projectName: '',
state: true,
detail: ""
}
detail: ''
};
},
methods: {
back() {
this.$router.go(-1)
this.$router.go(-1);
},
async getnoticeWin() {
try {
let projectId = localStorage.getItem("projectId")
const {
data,
code
} = await noticeWin(projectId)
let projectId = localStorage.getItem('projectId');
const { data, code } = await noticeWin(projectId);
if (code == 200) {
console.log(data)
this.detail = data
console.log(data);
this.detail = data;
} else {
this.state = false
this.state = false;
}
} catch (err) {
console.log(err)
console.log(err);
}
}
},
created() {
this.projectCode = localStorage.getItem("projectCode")
this.projectName = localStorage.getItem("projectName")
this.getnoticeWin()
}
this.projectCode = localStorage.getItem('projectCode');
this.projectName = localStorage.getItem('projectName');
this.getnoticeWin();
}
};
</script>
<style scoped>
.detail1 {
.detail1 {
background: #fff;
margin-top: 30px;
}
}
.content>h1 {
.content > h1 {
text-align: center;
margin-top: 20px;
margin-bottom: 40px;
font-weight: bold;
}
}
.content>.img {
.content > .img {
width: 600px;
margin: 0 auto
}
margin: 0 auto;
}
.enclosure {
.enclosure {
margin: 50px 0;
}
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment