Browse Source

招投标管理板块基本完成

dev_kxc
xzt 2 years ago
parent
commit
ea13ef7fa3
  1. 4
      jwtech-admin-page/src/api/earlyStage/bidInfoVO.js
  2. 61
      jwtech-admin-page/src/api/earlyStage/bidWinningVO.js
  3. 188
      jwtech-admin-page/src/views/project/bid/options/PreQualificationPage.vue
  4. 1148
      jwtech-admin-page/src/views/project/bid/options/TenderAnnouncementPage.vue
  5. 224
      jwtech-admin-page/src/views/project/bid/options/bidBasePage.vue
  6. 907
      jwtech-admin-page/src/views/project/bid/options/candidatePage.vue
  7. 697
      jwtech-admin-page/src/views/project/bid/options/winningResultPage.vue
  8. 269
      jwtech-admin-page/src/views/project/report/index.vue

4
jwtech-admin-page/src/api/earlyStage/bidInfoVO.js

@ -20,7 +20,7 @@ export function getBidInfo(id) {
// 查询招标计划基本信息详细及明细表 // 查询招标计划基本信息详细及明细表
export function getBidInfoVO(id) { export function getBidInfoVO(id) {
return request({ return request({
url: '/earlyStage/bidInfo/listVO' + id, url: '/earlyStage/bidInfo/listVO/' + id,
method: 'get' method: 'get'
}) })
} }
@ -46,7 +46,7 @@ export function updateBidInfoVO(data) {
// 删除招标计划基本信息及详细信息 // 删除招标计划基本信息及详细信息
export function delBidInfoVO(id) { export function delBidInfoVO(id) {
return request({ return request({
url: '/earlyStage/bidInfo/delVO' + id, url: '/earlyStage/bidInfo/delVO/' + id,
method: 'delete' method: 'delete'
}) })
} }

61
jwtech-admin-page/src/api/earlyStage/bidWinningVO.js

@ -0,0 +1,61 @@
import request from '@/utils/request'
// 查询中标候选人公示基本信息列表
export function listBidWinning(query) {
return request({
url: '/earlyStage/bidWinning/list',
method: 'post',
data: query
})
}
// 查询中标候选人公示基本信息详细
export function getBidWinning(id) {
return request({
url: '/earlyStage/bidWinning/' + id,
method: 'get'
})
}
// 查询中标候选人公示基本信息及候选人表
export function getBidWinningVO(id) {
return request({
url: '/earlyStage/bidWinning/listVO/' + id,
method: 'get'
})
}
// 新增中标候选人公示基本信息及候选人表
export function addBidWinningVO(data) {
return request({
url: '/earlyStage/bidWinning/addVO',
method: 'post',
data: data
})
}
// 修改中标候选人公示基本信息及候选人表
export function updateBidWinningVO(data) {
return request({
url: '/earlyStage/bidWinning/editVO',
method: 'put',
data: data
})
}
// 删除中标候选人公示基本信息及候选人表
export function delBidWinningVO(id) {
return request({
url: '/earlyStage/bidWinning/delVO/' + id,
method: 'delete'
})
}
// 导出中标候选人公示基本信息
export function exportBidWinning(query) {
return request({
url: '/earlyStage/bidWinning/export',
method: 'get',
params: query
})
}

188
jwtech-admin-page/src/views/project/bid/options/PreQualificationPage.vue

@ -115,12 +115,28 @@
label="公告内容附件" label="公告内容附件"
align="center" align="center"
prop="noticeAtttachment" prop="noticeAtttachment"
/> width="180"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(scope.row.noticeAtttachment)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile(scope)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column <el-table-column
label="操作" label="操作"
align="center" align="center"
class-name="small-padding fixed-width" class-name="small-padding fixed-width"
width="180"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
@ -152,8 +168,14 @@
/> />
<!-- 添加或修改资格预审公告对话框 --> <!-- 添加或修改资格预审公告对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> :title="title"
:visible.sync="open"
width="700px"
append-to-body
@close="close"
>
<el-form ref="form" :model="form" :rules="rules" label-width="180px">
<el-form-item label="招标项目名称" prop="bidProjectName"> <el-form-item label="招标项目名称" prop="bidProjectName">
<el-input <el-input
v-model="form.bidProjectName" v-model="form.bidProjectName"
@ -164,7 +186,7 @@
<el-date-picker <el-date-picker
clearable clearable
size="small" size="small"
style="width: 200px" style="width: 100%"
v-model="form.fileGainTime" v-model="form.fileGainTime"
type="date" type="date"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
@ -176,7 +198,7 @@
<el-date-picker <el-date-picker
clearable clearable
size="small" size="small"
style="width: 200px" style="width: 100%"
v-model="form.reportTime" v-model="form.reportTime"
type="date" type="date"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
@ -185,28 +207,30 @@
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="公告内容附件" prop="noticeAtttachment"> <el-form-item label="公告内容附件" prop="noticeAtttachment">
<el-input <!-- <el-input
v-model="form.noticeAtttachment" v-model="form.noticeAtttachment"
placeholder="请输入公告内容附件" placeholder="请输入公告内容附件"
/> /> -->
</el-form-item> <el-upload
<el-form-item label="项目编码" prop="projectCode"> class="upload-demo"
<el-input v-model="form.projectCode" placeholder="请输入项目编码" /> action="http://127.0.0.1/thinking/common/upload"
</el-form-item> :headers="headers"
<el-form-item label="项目编号" prop="proNo"> :on-preview="handleNoticePreview"
<el-input v-model="form.proNo" placeholder="请输入项目编号" /> :on-remove="handleNoticeRemove"
</el-form-item> :before-remove="beforeNoticeRemove"
<el-form-item label="创建人" prop="createUid"> multiple
<el-input v-model="form.createUid" placeholder="请输入创建人" /> :on-exceed="handleNoticeExceed"
</el-form-item> :on-success="submitNoticeUpload"
<el-form-item label="更新人" prop="updateUid"> :file-list="noticeFileList"
<el-input v-model="form.updateUid" placeholder="请输入更新人" /> >
</el-form-item> <el-button size="small" type="primary" plain>
<el-form-item label="数源部门" prop="owerDept"> <i class="el-icon-upload el-icon--right"></i>
<el-input v-model="form.owerDept" placeholder="请输入数源部门" /> 点击上传
</el-form-item> </el-button>
<el-form-item label="备注" prop="remark"> <div slot="tip" class="el-upload__tip">
<el-input v-model="form.remark" placeholder="请输入备注" /> 支持jpg/png/pdf/word/excel文件等不超过100M
</div>
</el-upload>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -226,6 +250,8 @@ import {
updateBidPrequ, updateBidPrequ,
exportBidPrequ, exportBidPrequ,
} from "@/api/earlyStage/bidPrequ"; } from "@/api/earlyStage/bidPrequ";
import { getToken } from "@/utils/auth";
import { getFileStream } from "@/api/system/upload";
export default { export default {
name: "BidPrequ", name: "BidPrequ",
@ -274,6 +300,12 @@ export default {
form: {}, form: {},
// //
rules: {}, rules: {},
//
noticeFileList: [],
//
headers: {
jianwei: "jwtech " + getToken(),
},
}; };
}, },
created() { created() {
@ -297,11 +329,6 @@ export default {
this.loading = false; this.loading = false;
}); });
}, },
//
cancel() {
this.open = false;
this.reset();
},
// //
reset() { reset() {
this.form = { this.form = {
@ -320,6 +347,7 @@ export default {
remark: null, remark: null,
}; };
this.resetForm("form"); this.resetForm("form");
this.noticeFileList = [];
}, },
// //
resetQueryForm() { resetQueryForm() {
@ -362,16 +390,19 @@ export default {
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset();
this.open = true; this.open = true;
this.title = "添加资格预审公告"; this.title = "添加资格预审公告";
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset();
const id = row.id || this.ids; const id = row.id || this.ids;
getBidPrequ(id).then((response) => { getBidPrequ(id).then((response) => {
this.form = response.data; this.form = response.data;
//
console.log("response.data", response.data);
if (response.data.noticeAtttachment) {
this.noticeFileList = JSON.parse(response.data.noticeAtttachment);
}
this.open = true; this.open = true;
this.title = "修改资格预审公告"; this.title = "修改资格预审公告";
}); });
@ -379,6 +410,8 @@ export default {
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate((valid) => { this.$refs["form"].validate((valid) => {
//
this.form.noticeAtttachment = JSON.stringify(this.noticeFileList);
if (valid) { if (valid) {
if (this.form.id != null) { if (this.form.id != null) {
updateBidPrequ(this.form).then((response) => { updateBidPrequ(this.form).then((response) => {
@ -401,6 +434,14 @@ export default {
} }
}); });
}, },
//
cancel() {
this.open = false;
},
//
close() {
this.reset();
},
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const ids = row.id || this.ids; const ids = row.id || this.ids;
@ -422,28 +463,67 @@ export default {
this.$message.warning("请选择要删除的数据!!"); this.$message.warning("请选择要删除的数据!!");
} }
}, },
/** 导出按钮操作 */
handleExport() { submitNoticeUpload(_, fileList) {
const queryParams = this.queryParams; console.log("fileList", fileList);
let message = "是否确认导出所有的数据项?"; this.noticeFileList.push({
if (this.ids) { name: fileList.name,
message = "是否确认导出选中的数据项?"; fileName: fileList.response.fileName,
queryParams.ids = this.ids; url: fileList.response.url,
} uid: fileList.uid,
this.$confirm(message, "警告", { });
confirmButtonText: "确定", },
cancelButtonText: "取消", handleNoticeRemove(file, fileList) {
type: "warning", // console.log(file, fileList);
}) let index = this.noticeFileList.findIndex(
.then(function () { (item) => item.uid === file.uid
return exportBidPrequ(queryParams); );
}) //
.then((response) => { this.noticeFileList.splice(index, 1);
this.downloadFile(response, true, response.msg); },
// this.download(response.msg); //
}) downloadFile(scope) {
.catch(function () {}); // console.log(scope);
let file = JSON.parse(scope.row.noticeAtttachment)[0];
this.handleNoticePreview(file);
},
//
handleNoticePreview(file) {
// console.log(file);
getFileStream({ fileName: file.fileName }).then((res) => {
const blob = new Blob([res], {
// type
// application/xlsx application/zip
type: "application/xlsx",
}); //excel,pdf
const href = URL.createObjectURL(blob); //URLblob
const a = document.createElement("a"); //a
a.style.display = "none";
a.href = href; //
a.download = file.name; //
a.click(); //
URL.revokeObjectURL(a.href); //URL
});
},
handleNoticeExceed(files, fileList) {
this.$message.warning(
`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
files.length + fileList.length
} 个文件`
);
},
beforeNoticeRemove(file, fileList) {
return this.$confirm(`确定移除 ${file.name}`);
}, },
}, },
}; };
</script> </script>
<style lang="scss" scoped>
::v-deep {
.el-dialog {
margin-top: 2vh !important;
height: 90%;
overflow-y: auto;
}
}
</style>

1148
jwtech-admin-page/src/views/project/bid/options/TenderAnnouncementPage.vue

File diff suppressed because it is too large

224
jwtech-admin-page/src/views/project/bid/options/bidBasePage.vue

@ -97,13 +97,25 @@
align="center" align="center"
prop="isConsolidatedBidding" prop="isConsolidatedBidding"
:formatter="isConsolidatedBiddingFormat" :formatter="isConsolidatedBiddingFormat"
width="180"
/>
<el-table-column
label="招标性质"
align="center"
prop="bidNature"
width="180"
/>
<el-table-column
label="招标计划名称"
align="center"
prop="bidPlanName"
width="180"
/> />
<el-table-column label="招标性质" align="center" prop="bidNature" />
<el-table-column label="招标计划名称" align="center" prop="bidPlanName" />
<el-table-column <el-table-column
label="招标计划发布人" label="招标计划发布人"
align="center" align="center"
prop="bidPlanPerson" prop="bidPlanPerson"
width="180"
/> />
<el-table-column <el-table-column
label="发布时间" label="发布时间"
@ -115,12 +127,40 @@
<span>{{ parseTime(scope.row.reportTime, "{y}-{m}-{d}") }}</span> <span>{{ parseTime(scope.row.reportTime, "{y}-{m}-{d}") }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="招标人名称" align="center" prop="tendererName" /> <el-table-column
label="招标人名称"
align="center"
prop="tendererName"
width="180"
/>
<el-table-column <el-table-column
label="招标人统一社会信用代码" label="招标人统一社会信用代码"
align="center" align="center"
prop="socialCreditCode" prop="socialCreditCode"
width="180"
/> />
<el-table-column
label="附件"
align="center"
prop="bidAttachment"
width="180"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(scope.row.bidAttachment)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile(scope)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column <el-table-column
label="创建时间" label="创建时间"
align="center" align="center"
@ -167,23 +207,28 @@
/> />
<!-- 添加或修改招标计划基本信息对话框 --> <!-- 添加或修改招标计划基本信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> <el-dialog
:title="title"
:visible.sync="open"
width="90%"
append-to-body
@close="close"
>
<!-- 招标计划基本信息 --> <!-- 招标计划基本信息 -->
<el-divider content-position="left" class="divider" <el-divider content-position="left"> 招标计划基本信息 </el-divider>
>招标计划基本信息</el-divider
>
<el-row :gutter="15"> <el-row :gutter="15">
<el-form <el-form
ref="baseForm" ref="baseForm"
:model="baseForm" :model="baseForm"
:rules="rules" :rules="rules"
label-width="150px" label-width="170px"
> >
<el-col :span="12"> <el-col :span="12">
<el-form-item label="是否合并招标" prop="isConsolidatedBidding"> <el-form-item label="是否合并招标" prop="isConsolidatedBidding">
<el-select <el-select
v-model="baseForm.isConsolidatedBidding" v-model="baseForm.isConsolidatedBidding"
placeholder="请选择是否合并招标" placeholder="请选择是否合并招标"
style="width: 100%"
> >
<el-option <el-option
v-for="dict in isConsolidatedBiddingOptions" v-for="dict in isConsolidatedBiddingOptions"
@ -223,7 +268,7 @@
<el-date-picker <el-date-picker
clearable clearable
size="small" size="small"
style="width: 200px" style="width: 100%"
v-model="baseForm.reportTime" v-model="baseForm.reportTime"
type="date" type="date"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
@ -258,10 +303,30 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="附件" prop="bidAttachment"> <el-form-item label="附件" prop="bidAttachment">
<el-input <!-- <el-input
v-model="baseForm.bidAttachment" v-model="baseForm.bidAttachment"
placeholder="请输入附件" placeholder="请输入附件"
/> /> -->
<el-upload
class="upload-demo"
action="http://127.0.0.1/thinking/common/upload"
:headers="headers"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
:on-success="submitUpload"
:file-list="fileList"
>
<el-button size="small" type="primary" plain>
<i class="el-icon-upload el-icon--right"></i>
点击上传
</el-button>
<div slot="tip" class="el-upload__tip">
支持jpg/png/pdf/word/excel文件等不超过100M
</div>
</el-upload>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-form> </el-form>
@ -269,7 +334,7 @@
<!-- 计划明细内容 --> <!-- 计划明细内容 -->
<el-divider content-position="left">计划明细内容</el-divider> <el-divider content-position="left">计划明细内容</el-divider>
<el-row :gutter="15"> <el-row :gutter="15">
<el-form ref="detailsForm" :model="detailsForm" label-width="150px"> <el-form ref="detailsForm" :model="detailsForm" label-width="170px">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="招标项目名称" prop="bidProjectName"> <el-form-item label="招标项目名称" prop="bidProjectName">
<el-input <el-input
@ -279,14 +344,19 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item <el-form-item label="是否依法必招项目" prop="isMustProject">
label="是否依法必招项目(0:否,1:是)" <el-select
prop="isMustProject"
>
<el-input
v-model="detailsForm.isMustProject" v-model="detailsForm.isMustProject"
placeholder="请输入是否依法必招项目(0:否,1:是)" placeholder="请输入是否依法必招项目"
/> style="width: 100%"
>
<el-option
v-for="dict in isMustProject"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@ -302,8 +372,14 @@
<el-select <el-select
v-model="detailsForm.bidType" v-model="detailsForm.bidType"
placeholder="请选择招标项目类型" placeholder="请选择招标项目类型"
style="width: 100%"
> >
<el-option label="请选择字典生成" value="" /> <el-option
v-for="dict in bidType"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -347,7 +423,7 @@
<el-date-picker <el-date-picker
clearable clearable
size="small" size="small"
style="width: 200px" style="width: 100%"
v-model="detailsForm.bidNoticeTime" v-model="detailsForm.bidNoticeTime"
type="date" type="date"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
@ -372,14 +448,6 @@
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item label="招标计划ID" prop="bidId">
<el-input
v-model="detailsForm.bidId"
placeholder="请输入招标计划ID"
/>
</el-form-item>
</el-col>
</el-form> </el-form>
</el-row> </el-row>
@ -400,6 +468,8 @@ import {
addBidInfoVO, addBidInfoVO,
updateBidInfoVO, updateBidInfoVO,
} from "@/api/earlyStage/bidInfoVO"; } from "@/api/earlyStage/bidInfoVO";
import { getToken } from "@/utils/auth";
import { getFileStream } from "@/api/system/upload";
export default { export default {
name: "BidInfo", name: "BidInfo",
@ -426,6 +496,10 @@ export default {
open: false, open: false,
// //
isConsolidatedBiddingOptions: [], isConsolidatedBiddingOptions: [],
//
isMustProject: [],
//
bidType: [],
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
@ -478,12 +552,23 @@ export default {
detailsForm: {}, detailsForm: {},
// //
rules: {}, rules: {},
//
fileList: [],
//
headers: {
jianwei: "jwtech " + getToken(),
},
}; };
}, },
created() { created() {
this.getList(); this.getList();
this.getDicts("yes_no").then((response) => { this.getDicts("whether").then((response) => {
// console.log("444444", response);
this.isConsolidatedBiddingOptions = response.data; this.isConsolidatedBiddingOptions = response.data;
this.isMustProject = response.data;
});
this.getDicts("Bid_type").then((response) => {
this.bidType = response.data;
}); });
}, },
// axios // axios
@ -511,11 +596,6 @@ export default {
row.isConsolidatedBidding row.isConsolidatedBidding
); );
}, },
//
cancel() {
this.open = false;
this.reset();
},
// //
reset() { reset() {
this.baseForm = { this.baseForm = {
@ -561,7 +641,7 @@ export default {
owerDept: null, owerDept: null,
remark: null, remark: null,
}; };
this.fileList = [];
this.resetForm("baseForm"); this.resetForm("baseForm");
this.resetForm("detailsForm"); this.resetForm("detailsForm");
}, },
@ -610,17 +690,21 @@ export default {
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset();
this.open = true; this.open = true;
this.title = "添加招标计划基本信息"; this.title = "添加招标计划基本信息";
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset();
const id = row.id || this.ids; const id = row.id || this.ids;
getBidInfoVO(id).then((response) => { getBidInfoVO(id).then((response) => {
// this.baseForm = response.data; // console.log("666666666666", response);
console.log("666666666666", response); this.baseForm = response.data.specialProjectBidInfo;
if (response.data.specialProjectBidInfo.bidAttachment) {
this.fileList = JSON.parse(
response.data.specialProjectBidInfo.bidAttachment
);
}
this.detailsForm = response.data.projectBidDetails;
this.open = true; this.open = true;
this.title = "修改招标计划基本信息"; this.title = "修改招标计划基本信息";
}); });
@ -629,6 +713,8 @@ export default {
submitForm() { submitForm() {
this.$refs["baseForm"].validate((valid) => { this.$refs["baseForm"].validate((valid) => {
this.$refs["detailsForm"].validate((valid2) => { this.$refs["detailsForm"].validate((valid2) => {
//
this.baseForm.bidAttachment = JSON.stringify(this.fileList);
if (valid && valid2) { if (valid && valid2) {
if (this.baseForm.id != null || this.detailsForm.id != null) { if (this.baseForm.id != null || this.detailsForm.id != null) {
updateBidInfoVO({ updateBidInfoVO({
@ -659,6 +745,14 @@ export default {
}); });
}); });
}, },
//
cancel() {
this.open = false;
},
//
close() {
this.reset();
},
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const ids = row.id || this.ids; const ids = row.id || this.ids;
@ -680,6 +774,56 @@ export default {
this.$message.warning("请选择要删除的数据!!"); this.$message.warning("请选择要删除的数据!!");
} }
}, },
submitUpload(_, fileList) {
console.log("fileList", fileList);
this.fileList.push({
name: fileList.name,
fileName: fileList.response.fileName,
url: fileList.response.url,
uid: fileList.uid,
});
},
handleRemove(file, fileList) {
// console.log(file, fileList);
let index = this.fileList.findIndex((item) => item.uid === file.uid);
//
this.fileList.splice(index, 1);
},
//
downloadFile(scope) {
// console.log(scope);
let file = JSON.parse(scope.row.bidAttachment)[0];
this.handlePreview(file);
},
//
handlePreview(file) {
// console.log(file);
getFileStream({ fileName: file.fileName }).then((res) => {
const blob = new Blob([res], {
// type
// application/xlsx application/zip
type: "application/xlsx",
}); //excel,pdf
const href = URL.createObjectURL(blob); //URLblob
const a = document.createElement("a"); //a
a.style.display = "none";
a.href = href; //
a.download = file.name; //
a.click(); //
URL.revokeObjectURL(a.href); //URL
});
},
handleExceed(files, fileList) {
this.$message.warning(
`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
files.length + fileList.length
} 个文件`
);
},
beforeRemove(file, fileList) {
return this.$confirm(`确定移除 ${file.name}`);
},
}, },
}; };
</script> </script>

907
jwtech-admin-page/src/views/project/bid/options/candidatePage.vue

File diff suppressed because it is too large

697
jwtech-admin-page/src/views/project/bid/options/winningResultPage.vue

@ -43,31 +43,10 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="公名称" prop="noticeName"> <el-form-item label="公名称" prop="noticeName">
<el-input <el-input
v-model="queryParams.data.noticeName" v-model="queryParams.data.noticeName"
placeholder="请输入公示名称" placeholder="请输入公告名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="开标日期" prop="bidOpenDate">
<el-date-picker
clearable
size="small"
style="width: 200px"
v-model="queryParams.bidOpenDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择开标日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="评标情况" prop="evaluationSituation">
<el-input
v-model="queryParams.data.evaluationSituation"
placeholder="请输入评标情况"
clearable clearable
size="small" size="small"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
@ -82,180 +61,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="办公地址" prop="officeAddress">
<el-input
v-model="queryParams.data.officeAddress"
placeholder="请输入办公地址"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="招标人联系人" prop="bidderContacts">
<el-input
v-model="queryParams.data.bidderContacts"
placeholder="请输入招标人联系人"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="联系电话" prop="contactsPhone">
<el-input
v-model="queryParams.data.contactsPhone"
placeholder="请输入联系电话"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="招标投标监督部门" prop="tenderingSupervisionDept">
<el-input
v-model="queryParams.data.tenderingSupervisionDept"
placeholder="请输入招标投标监督部门"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="联系电话" prop="deptPhone">
<el-input
v-model="queryParams.data.deptPhone"
placeholder="请输入联系电话"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="联系地址" prop="deptAddress">
<el-input
v-model="queryParams.data.deptAddress"
placeholder="请输入联系地址"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="公示开始时间" prop="publicityStartTime">
<el-date-picker
clearable
size="small"
style="width: 200px"
v-model="queryParams.publicityStartTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择公示开始时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="公示结束日期" prop="publicityEndTime">
<el-date-picker
clearable
size="small"
style="width: 200px"
v-model="queryParams.publicityEndTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择公示结束日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="公示ID" prop="noticeId">
<el-input
v-model="queryParams.data.noticeId"
placeholder="请输入公示ID"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="项目编码" prop="projectCode">
<el-input
v-model="queryParams.data.projectCode"
placeholder="请输入项目编码"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="附件地址" prop="attachmentAddress">
<el-input
v-model="queryParams.data.attachmentAddress"
placeholder="请输入附件地址"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="项目编号" prop="proNo">
<el-input
v-model="queryParams.data.proNo"
placeholder="请输入项目编号"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="创建人" prop="createUid">
<el-input
v-model="queryParams.data.createUid"
placeholder="请输入创建人"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
clearable
size="small"
style="width: 200px"
v-model="queryParams.createTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择创建时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="更新人" prop="updateUid">
<el-input
v-model="queryParams.data.updateUid"
placeholder="请输入更新人"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="更新时间" prop="updateTime">
<el-date-picker
clearable
size="small"
style="width: 200px"
v-model="queryParams.updateTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择更新时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="数源部门" prop="owerDept">
<el-input
v-model="queryParams.data.owerDept"
placeholder="请输入数源部门"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
v-model="queryParams.data.remark"
placeholder="请输入备注"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item> <el-form-item>
<el-button <el-button
type="cyan" type="cyan"
@ -277,7 +83,7 @@
icon="el-icon-plus" icon="el-icon-plus"
size="mini" size="mini"
@click="handleAdd" @click="handleAdd"
v-hasPermi="['earlyStage:bidWinning:add']" v-hasPermi="['earlyStage:bidResult:add']"
>新增</el-button >新增</el-button
> >
</el-col> </el-col>
@ -288,7 +94,7 @@
size="mini" size="mini"
:disabled="single" :disabled="single"
@click="handleUpdate" @click="handleUpdate"
v-hasPermi="['earlyStage:bidWinning:edit']" v-hasPermi="['earlyStage:bidResult:edit']"
>修改</el-button >修改</el-button
> >
</el-col> </el-col>
@ -299,20 +105,10 @@
size="mini" size="mini"
:disabled="multiple" :disabled="multiple"
@click="handleDelete" @click="handleDelete"
v-hasPermi="['earlyStage:bidWinning:remove']" v-hasPermi="['earlyStage:bidResult:remove']"
>删除</el-button >删除</el-button
> >
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['earlyStage:bidWinning:export']"
>导出</el-button
>
</el-col>
<right-toolbar <right-toolbar
:showSearch.sync="showSearch" :showSearch.sync="showSearch"
@queryTable="getList" @queryTable="getList"
@ -321,7 +117,7 @@
<el-table <el-table
v-loading="loading" v-loading="loading"
:data="bidWinningList" :data="bidResultList"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
@ -331,109 +127,90 @@
label="投资项目代码" label="投资项目代码"
align="center" align="center"
prop="investProjectCode" prop="investProjectCode"
width="180"
/> />
<el-table-column <el-table-column
label="投资项目名称" label="投资项目名称"
align="center" align="center"
prop="investProjectName" prop="investProjectName"
width="180"
/> />
<el-table-column <el-table-column
label="招标项目名称" label="招标项目名称"
align="center" align="center"
prop="bidProjectName" prop="bidProjectName"
width="180"
/> />
<el-table-column label="标段" align="center" prop="lotName" /> <el-table-column label="标段" align="center" prop="lotName" width="180" />
<el-table-column label="公示名称" align="center" prop="noticeName" />
<el-table-column <el-table-column
label="开标日期" label="公告名称"
align="center" align="center"
prop="bidOpenDate" prop="noticeName"
width="180" width="180"
> />
<template slot-scope="scope"> <el-table-column
<span>{{ parseTime(scope.row.bidOpenDate, "{y}-{m}-{d}") }}</span> label="招标人"
</template> align="center"
</el-table-column> prop="tendererName"
width="180"
/>
<el-table-column <el-table-column
label="评标情况" label="招标代理"
align="center" align="center"
prop="evaluationSituation" prop="biddingAgency"
width="180"
/> />
<el-table-column label="招标人" align="center" prop="tendererName" />
<el-table-column label="办公地址" align="center" prop="officeAddress" />
<el-table-column <el-table-column
label="招标人联系人" label="中标人"
align="center" align="center"
prop="bidderContacts" prop="successfulBidder"
width="180"
/> />
<el-table-column label="联系电话" align="center" prop="contactsPhone" />
<el-table-column <el-table-column
label="招标投标监督部门" label="中标价"
align="center" align="center"
prop="tenderingSupervisionDept" prop="bidWinningPrice"
width="180"
/> />
<el-table-column label="联系电话" align="center" prop="deptPhone" /> <el-table-column label="费率" align="center" prop="rate" width="180" />
<el-table-column label="联系地址" align="center" prop="deptAddress" />
<el-table-column <el-table-column
label="公示开始时间" label="工期"
align="center" align="center"
prop="publicityStartTime" prop="deliveryTime"
width="180" width="180"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ <span>{{ parseTime(scope.row.deliveryTime, "{y}-{m}-{d}") }}</span>
parseTime(scope.row.publicityStartTime, "{y}-{m}-{d}")
}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="项目负责人" align="center" prop="projectLeader" />
<el-table-column <el-table-column
label="公示结束日期" label="中标日期"
align="center" align="center"
prop="publicityEndTime" prop="bidWinningTime"
width="180" width="180"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ <span>{{ parseTime(scope.row.bidWinningTime, "{y}-{m}-{d}") }}</span>
parseTime(scope.row.publicityEndTime, "{y}-{m}-{d}")
}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="公示ID" align="center" prop="noticeId" />
<el-table-column label="项目编码" align="center" prop="projectCode" />
<el-table-column <el-table-column
label="附件地址" label="附件地址"
align="center" align="center"
prop="attachmentAddress" prop="attachmentAddress"
/>
<el-table-column label="项目编号" align="center" prop="proNo" />
<el-table-column label="创建人" align="center" prop="createUid" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
width="180" width="180"
> />
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="更新人" align="center" prop="updateUid" />
<el-table-column <el-table-column
label="更新时间" label="项目编码"
align="center" align="center"
prop="updateTime" prop="projectCode"
width="180" width="180"
> />
<template slot-scope="scope">
<span>{{ parseTime(scope.row.updateTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="数源部门" align="center" prop="owerDept" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column <el-table-column
label="操作" label="操作"
align="center" align="center"
class-name="small-padding fixed-width" class-name="small-padding fixed-width"
width="180"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
@ -441,7 +218,7 @@
type="text" type="text"
icon="el-icon-edit" icon="el-icon-edit"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
v-hasPermi="['earlyStage:bidWinning:edit']" v-hasPermi="['earlyStage:bidResult:edit']"
>修改</el-button >修改</el-button
> >
<el-button <el-button
@ -449,7 +226,7 @@
type="text" type="text"
icon="el-icon-delete" icon="el-icon-delete"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
v-hasPermi="['earlyStage:bidWinning:remove']" v-hasPermi="['earlyStage:bidResult:remove']"
>删除</el-button >删除</el-button
> >
</template> </template>
@ -464,130 +241,139 @@
@pagination="getList" @pagination="getList"
/> />
<!-- 添加或修改中标候选人公示基本信息对话框 --> <!-- 添加或修改中标结果对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-row :gutter="15">
<el-form-item label="投资项目代码" prop="investProjectCode"> <el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-input <el-col :span="12">
v-model="form.investProjectCode" <el-form-item label="投资项目代码" prop="investProjectCode">
placeholder="请输入投资项目代码" <el-input
/> v-model="form.investProjectCode"
</el-form-item> placeholder="请输入投资项目代码"
<el-form-item label="投资项目名称" prop="investProjectName"> />
<el-input </el-form-item>
v-model="form.investProjectName" </el-col>
placeholder="请输入投资项目名称" <el-col :span="12">
/> <el-form-item label="投资项目名称" prop="investProjectName">
</el-form-item> <el-input
<el-form-item label="招标项目名称" prop="bidProjectName"> v-model="form.investProjectName"
<el-input placeholder="请输入投资项目名称"
v-model="form.bidProjectName" />
placeholder="请输入招标项目名称" </el-form-item>
/> </el-col>
</el-form-item> <el-col :span="12">
<el-form-item label="标段" prop="lotName"> <el-form-item label="招标项目名称" prop="bidProjectName">
<el-input v-model="form.lotName" placeholder="请输入标段" /> <el-input
</el-form-item> v-model="form.bidProjectName"
<el-form-item label="公示名称" prop="noticeName"> placeholder="请输入招标项目名称"
<el-input v-model="form.noticeName" placeholder="请输入公示名称" /> />
</el-form-item> </el-form-item>
<el-form-item label="开标日期" prop="bidOpenDate"> </el-col>
<el-date-picker <el-col :span="12">
clearable <el-form-item label="标段" prop="lotName">
size="small" <el-input v-model="form.lotName" placeholder="请输入标段" />
style="width: 200px" </el-form-item>
v-model="form.bidOpenDate" </el-col>
type="date" <el-col :span="12">
value-format="yyyy-MM-dd" <el-form-item label="公告名称" prop="noticeName">
placeholder="选择开标日期" <el-input
> v-model="form.noticeName"
</el-date-picker> placeholder="请输入公告名称"
</el-form-item> />
<el-form-item label="评标情况" prop="evaluationSituation"> </el-form-item>
<el-input </el-col>
v-model="form.evaluationSituation" <el-col :span="12">
placeholder="请输入评标情况" <el-form-item label="招标人" prop="tendererName">
/> <el-input
</el-form-item> v-model="form.tendererName"
<el-form-item label="招标人" prop="tendererName"> placeholder="请输入招标人"
<el-input v-model="form.tendererName" placeholder="请输入招标人" /> />
</el-form-item> </el-form-item>
<el-form-item label="办公地址" prop="officeAddress"> </el-col>
<el-input v-model="form.officeAddress" placeholder="请输入办公地址" /> <el-col :span="12">
</el-form-item> <el-form-item label="招标代理" prop="biddingAgency">
<el-form-item label="招标人联系人" prop="bidderContacts"> <el-input
<el-input v-model="form.biddingAgency"
v-model="form.bidderContacts" placeholder="请输入招标代理"
placeholder="请输入招标人联系人" />
/> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="联系电话" prop="contactsPhone"> <el-col :span="12">
<el-input v-model="form.contactsPhone" placeholder="请输入联系电话" /> <el-form-item label="中标人" prop="successfulBidder">
</el-form-item> <el-input
<el-form-item label="招标投标监督部门" prop="tenderingSupervisionDept"> v-model="form.successfulBidder"
<el-input placeholder="请输入中标人"
v-model="form.tenderingSupervisionDept" />
placeholder="请输入招标投标监督部门" </el-form-item>
/> </el-col>
</el-form-item> <el-col :span="12">
<el-form-item label="联系电话" prop="deptPhone"> <el-form-item label="中标价" prop="bidWinningPrice">
<el-input v-model="form.deptPhone" placeholder="请输入联系电话" /> <el-input
</el-form-item> v-model="form.bidWinningPrice"
<el-form-item label="联系地址" prop="deptAddress"> placeholder="请输入中标价"
<el-input v-model="form.deptAddress" placeholder="请输入联系地址" /> />
</el-form-item> </el-form-item>
<el-form-item label="公示开始时间" prop="publicityStartTime"> </el-col>
<el-date-picker <el-col :span="12">
clearable <el-form-item label="费率" prop="rate">
size="small" <el-input v-model="form.rate" placeholder="请输入费率" />
style="width: 200px" </el-form-item>
v-model="form.publicityStartTime" </el-col>
type="date" <el-col :span="12">
value-format="yyyy-MM-dd" <el-form-item label="工期" prop="deliveryTime">
placeholder="选择公示开始时间" <el-date-picker
> clearable
</el-date-picker> size="small"
</el-form-item> style="width: 100%"
<el-form-item label="公示结束日期" prop="publicityEndTime"> v-model="form.deliveryTime"
<el-date-picker type="date"
clearable value-format="yyyy-MM-dd"
size="small" placeholder="选择工期"
style="width: 200px" >
v-model="form.publicityEndTime" </el-date-picker>
type="date" </el-form-item>
value-format="yyyy-MM-dd" </el-col>
placeholder="选择公示结束日期" <el-col :span="12">
> <el-form-item label="项目负责人" prop="projectLeader">
</el-date-picker> <el-input
</el-form-item> v-model="form.projectLeader"
<el-form-item label="公示ID" prop="noticeId"> placeholder="请输入项目负责人"
<el-input v-model="form.noticeId" placeholder="请输入公示ID" /> />
</el-form-item> </el-form-item>
<el-form-item label="项目编码" prop="projectCode"> </el-col>
<el-input v-model="form.projectCode" placeholder="请输入项目编码" />
</el-form-item> <el-col :span="12">
<el-form-item label="附件地址" prop="attachmentAddress"> <el-form-item label="中标日期" prop="bidWinningTime">
<el-input <el-date-picker
v-model="form.attachmentAddress" clearable
placeholder="请输入附件地址" size="small"
/> style="width: 100%"
</el-form-item> v-model="form.bidWinningTime"
<el-form-item label="项目编号" prop="proNo"> type="date"
<el-input v-model="form.proNo" placeholder="请输入项目编号" /> value-format="yyyy-MM-dd"
</el-form-item> placeholder="选择中标日期"
<el-form-item label="创建人" prop="createUid"> >
<el-input v-model="form.createUid" placeholder="请输入创建人" /> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="更新人" prop="updateUid"> </el-col>
<el-input v-model="form.updateUid" placeholder="请输入更新人" /> <el-col :span="12">
</el-form-item> <el-form-item label="附件地址" prop="attachmentAddress">
<el-form-item label="数源部门" prop="owerDept"> <el-input
<el-input v-model="form.owerDept" placeholder="请输入数源部门" /> v-model="form.attachmentAddress"
</el-form-item> placeholder="请输入附件地址"
<el-form-item label="备注" prop="remark"> />
<el-input v-model="form.remark" placeholder="请输入备注" /> </el-form-item>
</el-form-item> </el-col>
</el-form> <el-col :span="12">
<el-form-item label="项目编码" prop="projectCode">
<el-input
v-model="form.projectCode"
placeholder="请输入项目编码"
/>
</el-form-item>
</el-col>
</el-form>
</el-row>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button> <el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button> <el-button @click="cancel"> </el-button>
@ -598,16 +384,16 @@
<script> <script>
import { import {
listBidWinning, listBidResult,
getBidWinning, getBidResult,
delBidWinning, delBidResult,
addBidWinning, addBidResult,
updateBidWinning, updateBidResult,
exportBidWinning, exportBidResult,
} from "@/api/earlyStage/bidWinning"; } from "@/api/earlyStage/bidResult";
export default { export default {
name: "BidWinning", name: "BidResult",
props: ["proNo"], props: ["proNo"],
data() { data() {
return { return {
@ -623,8 +409,8 @@ export default {
showSearch: true, showSearch: true,
// //
total: 0, total: 0,
// //
bidWinningList: [], bidResultList: [],
// //
title: "", title: "",
// //
@ -640,20 +426,16 @@ export default {
bidProjectName: null, bidProjectName: null,
lotName: null, lotName: null,
noticeName: null, noticeName: null,
bidOpenDate: null,
evaluationSituation: null,
tendererName: null, tendererName: null,
officeAddress: null, biddingAgency: null,
bidderContacts: null, successfulBidder: null,
contactsPhone: null, bidWinningPrice: null,
tenderingSupervisionDept: null, rate: null,
deptPhone: null, deliveryTime: null,
deptAddress: null, projectLeader: null,
publicityStartTime: null, bidWinningTime: null,
publicityEndTime: null,
noticeId: null,
projectCode: null,
attachmentAddress: null, attachmentAddress: null,
projectCode: null,
proNo: null, proNo: null,
createUid: null, createUid: null,
createTime: null, createTime: null,
@ -680,12 +462,12 @@ export default {
}, },
}, },
methods: { methods: {
/** 查询中标候选人公示基本信息列表 */ /** 查询中标结果列表 */
getList() { getList() {
this.loading = true; this.loading = true;
this.queryParams.data.proNo = this.proNo; this.queryParams.data.proNo = this.proNo;
listBidWinning(this.queryParams).then((response) => { listBidResult(this.queryParams).then((response) => {
this.bidWinningList = response.records; this.bidResultList = response.records;
this.total = response.total; this.total = response.total;
this.loading = false; this.loading = false;
}); });
@ -704,20 +486,16 @@ export default {
bidProjectName: null, bidProjectName: null,
lotName: null, lotName: null,
noticeName: null, noticeName: null,
bidOpenDate: null,
evaluationSituation: null,
tendererName: null, tendererName: null,
officeAddress: null, biddingAgency: null,
bidderContacts: null, successfulBidder: null,
contactsPhone: null, bidWinningPrice: null,
tenderingSupervisionDept: null, rate: null,
deptPhone: null, deliveryTime: null,
deptAddress: null, projectLeader: null,
publicityStartTime: null, bidWinningTime: null,
publicityEndTime: null,
noticeId: null,
projectCode: null,
attachmentAddress: null, attachmentAddress: null,
projectCode: null,
proNo: null, proNo: null,
createUid: null, createUid: null,
createTime: null, createTime: null,
@ -740,20 +518,16 @@ export default {
bidProjectName: null, bidProjectName: null,
lotName: null, lotName: null,
noticeName: null, noticeName: null,
bidOpenDate: null,
evaluationSituation: null,
tendererName: null, tendererName: null,
officeAddress: null, biddingAgency: null,
bidderContacts: null, successfulBidder: null,
contactsPhone: null, bidWinningPrice: null,
tenderingSupervisionDept: null, rate: null,
deptPhone: null, deliveryTime: null,
deptAddress: null, projectLeader: null,
publicityStartTime: null, bidWinningTime: null,
publicityEndTime: null,
noticeId: null,
projectCode: null,
attachmentAddress: null, attachmentAddress: null,
projectCode: null,
proNo: null, proNo: null,
createUid: null, createUid: null,
createTime: null, createTime: null,
@ -785,16 +559,16 @@ export default {
handleAdd() { handleAdd() {
this.reset(); this.reset();
this.open = true; this.open = true;
this.title = "添加中标候选人公示基本信息"; this.title = "添加中标结果";
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset(); this.reset();
const id = row.id || this.ids; const id = row.id || this.ids;
getBidWinning(id).then((response) => { getBidResult(id).then((response) => {
this.form = response.data; this.form = response.data;
this.open = true; this.open = true;
this.title = "修改中标候选人公示基本信息"; this.title = "修改中标结果";
}); });
}, },
/** 提交按钮 */ /** 提交按钮 */
@ -802,7 +576,7 @@ export default {
this.$refs["form"].validate((valid) => { this.$refs["form"].validate((valid) => {
if (valid) { if (valid) {
if (this.form.id != null) { if (this.form.id != null) {
updateBidWinning(this.form).then((response) => { updateBidResult(this.form).then((response) => {
if (response.code === 200) { if (response.code === 200) {
this.msgSuccess("修改成功"); this.msgSuccess("修改成功");
this.open = false; this.open = false;
@ -811,7 +585,7 @@ export default {
}); });
} else { } else {
this.form.proNo = this.proNo; this.form.proNo = this.proNo;
addBidWinning(this.form).then((response) => { addBidResult(this.form).then((response) => {
if (response.code === 200) { if (response.code === 200) {
this.msgSuccess("新增成功"); this.msgSuccess("新增成功");
this.open = false; this.open = false;
@ -832,7 +606,7 @@ export default {
type: "warning", type: "warning",
}) })
.then(function () { .then(function () {
return delBidWinning(ids); return delBidResult(ids);
}) })
.then(() => { .then(() => {
this.getList(); this.getList();
@ -843,28 +617,15 @@ export default {
this.$message.warning("请选择要删除的数据!!"); this.$message.warning("请选择要删除的数据!!");
} }
}, },
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
let message = "是否确认导出所有的数据项?";
if (this.ids) {
message = "是否确认导出选中的数据项?";
queryParams.ids = this.ids;
}
this.$confirm(message, "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(function () {
return exportBidWinning(queryParams);
})
.then((response) => {
this.downloadFile(response, true, response.msg);
// this.download(response.msg);
})
.catch(function () {});
},
}, },
}; };
</script> </script>
<style lang="scss" scoped>
::v-deep {
.el-dialog {
margin-top: 2vh !important;
height: 90%;
overflow-y: auto;
}
}
</style>

269
jwtech-admin-page/src/views/project/report/index.vue

@ -1,17 +1,15 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<!-- 面包屑 --> <!-- 面包屑 -->
<el-breadcrumb separator="/" style="margin-bottom: 20px"> <el-breadcrumb separator="/" style="margin-bottom: 20px">
<el-breadcrumb-item <el-breadcrumb-item
v-for="(item, index) in routeList" v-for="(item, index) in routeList"
:key="item + index" :key="item + index"
:to="{ path: item.path }" :to="{ path: item.path }"
>{{ item.routeName }}</el-breadcrumb-item >{{ item.routeName }}</el-breadcrumb-item
> >
</el-breadcrumb> </el-breadcrumb>
<el-row :gutter="20" v-show="showSearch"> <el-row :gutter="20" v-show="showSearch">
<el-col :span="22"> <el-col :span="22">
<!-- 搜索条件 --> <!-- 搜索条件 -->
@ -49,27 +47,19 @@
<el-form-item> <el-form-item>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery" <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button >重置</el-button
> >
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-col> </el-col>
<el-col :span="2"> <el-col :span="2">
<el-button <el-button size="mini" type="primary" @click="handleAdd"
size="mini" >新增研究报告</el-button
type="primary"
@click="handleAdd"
>新增研究报告</el-button
> >
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="success" type="success"
@ -78,7 +68,8 @@
:disabled="single" :disabled="single"
@click="handleUpdate" @click="handleUpdate"
v-hasPermi="['earlyStage:feasibility:edit']" v-hasPermi="['earlyStage:feasibility:edit']"
>修改</el-button> >修改</el-button
>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -88,22 +79,45 @@
:disabled="multiple" :disabled="multiple"
@click="handleDelete" @click="handleDelete"
v-hasPermi="['earlyStage:feasibility:remove']" v-hasPermi="['earlyStage:feasibility:remove']"
>删除</el-button> >删除</el-button
>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row> </el-row>
<!-- 列表-->
<el-table
<!-- 列表--> v-loading="loading"
<el-table v-loading="loading" :data="feasibilityList" @selection-change="handleSelectionChange"> :data="feasibilityList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" type="index" width="50" align="center"/> <el-table-column label="序号" type="index" width="50" align="center" />
<el-table-column label="项目名称" align="center" prop="projectName" /> <el-table-column
<el-table-column label="项目类型" align="center" prop="projectType" :formatter="projectTypeFormat"/> label="项目名称"
align="center"
prop="projectName"
:formatter="projectNameFormat"
width="180"
/>
<el-table-column
label="项目类型"
align="center"
prop="projectType"
:formatter="projectTypeFormat"
width="180"
/>
<el-table-column label="编制单位" align="center" prop="compilingUnit" /> <el-table-column label="编制单位" align="center" prop="compilingUnit" />
<el-table-column label="可行性研究报告文件" align="center" prop="feasibilityReportFile" > <el-table-column
label="可行性研究报告文件"
align="center"
prop="feasibilityReportFile"
width="180"
>
<template slot-scope="scope"> <template slot-scope="scope">
<div <div
v-for="(item, index) in JSON.parse(scope.row.feasibilityReportFile)" v-for="(item, index) in JSON.parse(scope.row.feasibilityReportFile)"
@ -114,10 +128,17 @@
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="可行性研究报告相关附件" align="center" prop="feasibilityReportAttachment" > <el-table-column
label="可行性研究报告相关附件"
align="center"
prop="feasibilityReportAttachment"
width="180"
>
<template slot-scope="scope"> <template slot-scope="scope">
<div <div
v-for="(item, index) in JSON.parse(scope.row.feasibilityReportAttachment)" v-for="(item, index) in JSON.parse(
scope.row.feasibilityReportAttachment
)"
:key="item + index" :key="item + index"
> >
<i class="el-icon-document"></i> <i class="el-icon-document"></i>
@ -126,14 +147,23 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> label="创建时间"
align="center"
prop="createTime"
width="180"
>
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d}") }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
width="180"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
size="mini" size="mini"
@ -141,29 +171,28 @@
icon="el-icon-edit" icon="el-icon-edit"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
v-hasPermi="['earlyStage:feasibility:edit']" v-hasPermi="['earlyStage:feasibility:edit']"
>修改</el-button> >修改</el-button
>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-delete" icon="el-icon-delete"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
v-hasPermi="['earlyStage:feasibility:remove']" v-hasPermi="['earlyStage:feasibility:remove']"
>删除</el-button> >删除</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination
v-show="total>0" v-show="total > 0"
:total="total" :total="total"
:page.sync="queryParams.pageNum" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize" :limit.sync="queryParams.pageSize"
@pagination="getList" @pagination="getList"
/> />
<!-- 添加或修改可行性研究报告对话框 --> <!-- 添加或修改可行性研究报告对话框 -->
<el-dialog <el-dialog
:title="title" :title="title"
@ -185,9 +214,9 @@
> >
<el-option <el-option
v-for="dict in projectNameOptions" v-for="dict in projectNameOptions"
:key="dict.proNo" :key="dict.projectName + dict.id"
:label="dict.projectName+'['+dict.projectCode+']'" :label="dict.projectName + '[' + dict.projectCode + ']'"
:value="dict.projectName+'['+dict.projectCode+']'" :value="dict.projectName + '[' + dict.projectCode + ']'"
@click.native="getId(dict)" @click.native="getId(dict)"
/> />
</el-select> </el-select>
@ -229,7 +258,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<!-- <el-col :span="12"> <!-- <el-col :span="12">
<el-form-item label="项目编码" prop="projectCode"> <el-form-item label="项目编码" prop="projectCode">
<el-select <el-select
v-model="form.projectCode" v-model="form.projectCode"
@ -275,7 +304,6 @@
type="date" type="date"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
placeholder="选择上报时间" placeholder="选择上报时间"
> >
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
@ -290,7 +318,6 @@
type="date" type="date"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
placeholder="选择审批时间" placeholder="选择审批时间"
> >
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
@ -340,7 +367,10 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="可行性研究报告相关附件" prop="opinionAttachment"> <el-form-item
label="可行性研究报告相关附件"
prop="opinionAttachment"
>
<!-- <el-input <!-- <el-input
v-model="form.opinionAttachment" v-model="form.opinionAttachment"
placeholder="请输入意见附件" placeholder="请输入意见附件"
@ -378,7 +408,14 @@
</template> </template>
<script> <script>
import { listFeasibility, getFeasibility, delFeasibility, addFeasibility, updateFeasibility, exportFeasibility } from "@/api/earlyStage/feasibility"; import {
listFeasibility,
getFeasibility,
delFeasibility,
addFeasibility,
updateFeasibility,
exportFeasibility,
} from "@/api/earlyStage/feasibility";
import { import {
listProposal, listProposal,
getProposal, getProposal,
@ -386,10 +423,10 @@ import {
addProposal, addProposal,
updateProposal, updateProposal,
exportProposal, exportProposal,
getProjectCode getProjectCode,
} from "@/api/earlyStage/proposal"; } from "@/api/earlyStage/proposal";
import {getProjectinfo, listProjectinfo} from "@/api/earlyStage/projectinfo"; import { getProjectinfo, listProjectinfo } from "@/api/earlyStage/projectinfo";
import {getFileStream} from "@/api/system/upload"; import { getFileStream } from "@/api/system/upload";
import { getToken } from "@/utils/auth"; import { getToken } from "@/utils/auth";
export default { export default {
@ -397,7 +434,7 @@ export default {
data() { data() {
return { return {
// //
attachmentList:[], attachmentList: [],
// //
fileList: [], fileList: [],
// //
@ -405,12 +442,9 @@ export default {
jianwei: "jwtech " + getToken(), jianwei: "jwtech " + getToken(),
}, },
// //
projectNameOptions:[], projectNameOptions: [],
// //
IS:[ IS: ["是", "否"],
"是",
"否"
],
// //
routeList: [ routeList: [
{ {
@ -442,8 +476,8 @@ export default {
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
ids:null, ids: null,
data:{ data: {
projectName: null, projectName: null,
projectType: null, projectType: null,
compilingUnit: null, compilingUnit: null,
@ -463,23 +497,18 @@ export default {
updateUid: null, updateUid: null,
updateTime: null, updateTime: null,
owerDept: null, owerDept: null,
remark: null remark: null,
}, },
cv:{} cv: {},
}, },
// //
form: {}, form: {},
// //
rules: { rules: {},
}, projectType: "",
projectType:"",
proNo: "", proNo: "",
proCodeList:[], proCodeList: [],
// projectCode: "", // projectCode: "",
}; };
}, },
created() { created() {
@ -489,31 +518,31 @@ export default {
}); });
}, },
methods: { methods: {
clear(){ clear() {
this.fileList = []; this.fileList = [];
this.attachmentList = []; this.attachmentList = [];
this.proCodeList = []; this.proCodeList = [];
}, },
getId(res){ getId(res) {
// console.log(res.projectType) // console.log(res.projectType)
this.form.projectType = res.projectType; this.form.projectType = res.projectType;
this.form.projectCode = res.projectCode; this.form.projectCode = res.projectCode;
}, },
// //
projectTypeFormat(row, column) { projectTypeFormat(row, column) {
return this.selectDictLabel(this.projectTypeOptions, row.projectType); return this.selectDictLabel(this.projectTypeOptions, row.projectType);
}, },
projectNameFormat(row) {
return row.projectName.slice(0, row.projectName.indexOf("["));
},
/** 查询可行性研究报告列表 */ /** 查询可行性研究报告列表 */
getList() { getList() {
this.loading = true; this.loading = true;
this.queryParams.params = { this.queryParams.params = {
orderBy: "create_time", orderBy: "create_time",
sort:"desc" sort: "desc",
}; };
listFeasibility(this.queryParams).then(response => { listFeasibility(this.queryParams).then((response) => {
this.feasibilityList = response.records; this.feasibilityList = response.records;
this.total = response.total; this.total = response.total;
this.loading = false; this.loading = false;
@ -547,7 +576,7 @@ export default {
updateUid: null, updateUid: null,
updateTime: null, updateTime: null,
owerDept: null, owerDept: null,
remark: null remark: null,
}; };
this.resetForm("form"); this.resetForm("form");
}, },
@ -556,7 +585,7 @@ export default {
this.queryParams = { this.queryParams = {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
data:{ data: {
id: null, id: null,
projectName: null, projectName: null,
projectType: null, projectType: null,
@ -577,17 +606,16 @@ export default {
updateUid: null, updateUid: null,
updateTime: null, updateTime: null,
owerDept: null, owerDept: null,
remark: null remark: null,
}, },
cv: {}, cv: {},
}; };
this.resetForm("form"); this.resetForm("form");
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
this.queryParams.cv.name="projectName" this.queryParams.cv.name = "projectName";
this.queryParams.cv.type="like" this.queryParams.cv.type = "like";
this.queryParams.pageNum = 1; this.queryParams.pageNum = 1;
this.getList(); this.getList();
}, },
@ -598,9 +626,9 @@ export default {
}, },
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.id) this.ids = selection.map((item) => item.id);
this.single = selection.length!==1 this.single = selection.length !== 1;
this.multiple = !selection.length this.multiple = !selection.length;
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
@ -608,32 +636,32 @@ export default {
this.form = {}; this.form = {};
this.fileList = []; this.fileList = [];
this.attachmentList = []; this.attachmentList = [];
listProposal(this.queryParams).then((response) => {
this.projectNameOptions = response.records;
});
this.open = true; this.open = true;
this.title = "添加可行性研究报告"; this.title = "添加可行性研究报告";
listProposal(this.queryParams).then((response)=>{
this.projectNameOptions = response.records;
})
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset(); this.reset();
this.open = true;
this.title = "修改可行性研究报告";
// listProjectinfo(this.queryParams).then((response)=>{ // listProjectinfo(this.queryParams).then((response)=>{
// this.projectNameOptions = response.records; // this.projectNameOptions = response.records;
// }) // })
const id = row.id || this.ids const id = row.id || this.ids;
getFeasibility(id).then(response => { getFeasibility(id).then((response) => {
this.form = response.data; this.form = response.data;
// //
if (response.data.feasibilityReportFile) { if (response.data.feasibilityReportFile) {
this.fileList = JSON.parse(response.data.feasibilityReportFile); this.fileList = JSON.parse(response.data.feasibilityReportFile);
} }
if (response.data.feasibilityReportAttachment) { if (response.data.feasibilityReportAttachment) {
this.attachmentList = JSON.parse(response.data.feasibilityReportAttachment); this.attachmentList = JSON.parse(
response.data.feasibilityReportAttachment
);
} }
// getProjectCode(response.data.proNo).then((response)=>{ // getProjectCode(response.data.proNo).then((response)=>{
@ -641,26 +669,24 @@ export default {
// this.proCodeList = response.data; // this.proCodeList = response.data;
// // console.log(this.proCodeList) // // console.log(this.proCodeList)
// }) // })
listProposal(this.queryParams).then((response)=>{ listProposal(this.queryParams).then((response) => {
this.projectNameOptions = response.records; this.projectNameOptions = response.records;
}) });
this.open = true;
this.title = "修改可行性研究报告";
}); });
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate((valid) => {
// //
this.form.feasibilityReportFile = JSON.stringify(this.fileList); this.form.feasibilityReportFile = JSON.stringify(this.fileList);
this.form.feasibilityReportAttachment = JSON.stringify(this.attachmentList); this.form.feasibilityReportAttachment = JSON.stringify(
this.attachmentList
);
if (valid) { if (valid) {
if (this.form.id != null) { if (this.form.id != null) {
updateFeasibility(this.form).then((response) => {
this.form.projectName=this.form.projectName.slice(0, this.form.projectName.indexOf('['));
updateFeasibility(this.form).then(response => {
if (response.code === 200) { if (response.code === 200) {
this.msgSuccess("修改成功"); this.msgSuccess("修改成功");
this.open = false; this.open = false;
@ -668,10 +694,13 @@ export default {
} }
}); });
} else { } else {
this.form.proNo=this.proNo; this.form.proNo = this.proNo;
// this.form.projectType = this.projectType; // this.form.projectType = this.projectType;
this.form.projectName=this.form.projectName.slice(0, this.form.projectName.indexOf('[')); this.form.projectName = this.form.projectName.slice(
addFeasibility(this.form).then(response => { 0,
this.form.projectName.indexOf("[")
);
addFeasibility(this.form).then((response) => {
if (response.code === 200) { if (response.code === 200) {
this.msgSuccess("新增成功"); this.msgSuccess("新增成功");
this.open = false; this.open = false;
@ -685,21 +714,23 @@ export default {
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const ids = row.id || this.ids; const ids = row.id || this.ids;
if(ids){ if (ids) {
this.$confirm("是否删除选中的数据?", "警告", { this.$confirm("是否删除选中的数据?", "警告", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
type: "warning" type: "warning",
}).then(function() { })
return delFeasibility(ids); .then(function () {
}).then(() => { return delFeasibility(ids);
this.getList(); })
this.msgSuccess("删除成功"); .then(() => {
}).catch(function() {}); this.getList();
}else{ this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!"); this.$message.warning("请选择要删除的数据!!");
} }
}, },
// //
handleFilePreview(file) { handleFilePreview(file) {
@ -721,9 +752,7 @@ export default {
}, },
handleFileRemove(file, fileList) { handleFileRemove(file, fileList) {
// console.log(file, fileList); // console.log(file, fileList);
let index = this.fileList.findIndex( let index = this.fileList.findIndex((item) => item.uid === file.uid);
(item) => item.uid === file.uid
);
// //
this.fileList.splice(index, 1); this.fileList.splice(index, 1);
}, },
@ -793,6 +822,6 @@ export default {
// fileList: fileList, // fileList: fileList,
}); });
}, },
} },
}; };
</script> </script>

Loading…
Cancel
Save