Browse Source

招投标管理基本信息

dev_kxc
xzt 2 years ago
parent
commit
094e32021a
  1. 449
      jwtech-admin-page/src/views/project/bid/options/PreQualificationPage.vue
  2. 1258
      jwtech-admin-page/src/views/project/bid/options/TenderAnnouncementPage.vue
  3. 701
      jwtech-admin-page/src/views/project/bid/options/bidBasePage.vue
  4. 717
      jwtech-admin-page/src/views/project/bid/options/candidatePage.vue
  5. 132
      jwtech-admin-page/src/views/project/bid/options/index.vue
  6. 870
      jwtech-admin-page/src/views/project/bid/options/winningResultPage.vue

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

@ -0,0 +1,449 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item
label="资格预审文件获取开始时间"
prop="fileGainTime"
label-width="180px"
>
<el-date-picker
clearable
size="small"
style="width: 200px"
v-model="queryParams.fileGainTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择资格预审文件获取开始时间"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
type="cyan"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['earlyStage:bidPrequ:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['earlyStage:bidPrequ:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['earlyStage:bidPrequ:remove']"
>删除</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="bidPrequList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" type="index" width="50" align="center" />
<el-table-column
label="招标项目名称"
align="center"
prop="bidProjectName"
/>
<el-table-column
label="资格预审文件获取开始时间"
align="center"
prop="fileGainTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.fileGainTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column
label="发布日期"
align="center"
prop="reportTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.reportTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column
label="公告内容附件"
align="center"
prop="noticeAtttachment"
/>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['earlyStage:bidPrequ:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['earlyStage:bidPrequ:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改资格预审公告对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="招标项目名称" prop="bidProjectName">
<el-input
v-model="form.bidProjectName"
placeholder="请输入招标项目名称"
/>
</el-form-item>
<el-form-item label="资格预审文件获取开始时间" prop="fileGainTime">
<el-date-picker
clearable
size="small"
style="width: 200px"
v-model="form.fileGainTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择资格预审文件获取开始时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="发布日期" prop="reportTime">
<el-date-picker
clearable
size="small"
style="width: 200px"
v-model="form.reportTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择发布日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="公告内容附件" prop="noticeAtttachment">
<el-input
v-model="form.noticeAtttachment"
placeholder="请输入公告内容附件"
/>
</el-form-item>
<el-form-item label="项目编码" prop="projectCode">
<el-input v-model="form.projectCode" placeholder="请输入项目编码" />
</el-form-item>
<el-form-item label="项目编号" prop="proNo">
<el-input v-model="form.proNo" placeholder="请输入项目编号" />
</el-form-item>
<el-form-item label="创建人" prop="createUid">
<el-input v-model="form.createUid" placeholder="请输入创建人" />
</el-form-item>
<el-form-item label="更新人" prop="updateUid">
<el-input v-model="form.updateUid" placeholder="请输入更新人" />
</el-form-item>
<el-form-item label="数源部门" prop="owerDept">
<el-input v-model="form.owerDept" placeholder="请输入数源部门" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listBidPrequ,
getBidPrequ,
delBidPrequ,
addBidPrequ,
updateBidPrequ,
exportBidPrequ,
} from "@/api/earlyStage/bidPrequ";
export default {
name: "BidPrequ",
props: ["proNo"],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
bidPrequList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
bidProjectName: null,
fileGainTime: null,
reportTime: null,
noticeAtttachment: null,
projectCode: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
owerDept: null,
remark: null,
},
},
//
form: {},
//
rules: {},
};
},
created() {
this.getList();
},
// axios
watch: {
proNo: function (n, o) {
this.proNo = n;
this.getList();
},
},
methods: {
/** 查询资格预审公告列表 */
getList() {
this.loading = true;
this.queryParams.data.proNo = this.proNo;
listBidPrequ(this.queryParams).then((response) => {
this.bidPrequList = response.records;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
bidProjectName: null,
fileGainTime: null,
reportTime: null,
noticeAtttachment: null,
projectCode: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
owerDept: null,
remark: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
bidProjectName: null,
fileGainTime: null,
reportTime: null,
noticeAtttachment: null,
projectCode: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
owerDept: null,
remark: null,
},
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetQueryForm();
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加资格预审公告";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getBidPrequ(id).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改资格预审公告";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
updateBidPrequ(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
this.form.proNo = this.proNo;
addBidPrequ(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("新增成功");
this.open = false;
this.getList();
}
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
if (ids) {
this.$confirm("是否删除选中的数据?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(function () {
return delBidPrequ(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
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 exportBidPrequ(queryParams);
})
.then((response) => {
this.downloadFile(response, true, response.msg);
// this.download(response.msg);
})
.catch(function () {});
},
},
};
</script>

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

File diff suppressed because it is too large

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

@ -0,0 +1,701 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="是否合并招标" prop="isConsolidatedBidding">
<el-select
v-model="queryParams.data.isConsolidatedBidding"
placeholder="请选择是否合并招标"
clearable
size="small"
>
<el-option
v-for="dict in isConsolidatedBiddingOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="招标计划名称" prop="bidPlanName">
<el-input
v-model="queryParams.data.bidPlanName"
placeholder="请输入招标计划名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button
type="cyan"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['earlyStage:bidInfo:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['earlyStage:bidInfo:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['earlyStage:bidInfo:remove']"
>删除</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="bidInfoList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" type="index" width="50" align="center" />
<el-table-column
label="是否合并招标"
align="center"
prop="isConsolidatedBidding"
:formatter="isConsolidatedBiddingFormat"
/>
<el-table-column label="招标性质" align="center" prop="bidNature" />
<el-table-column label="招标计划名称" align="center" prop="bidPlanName" />
<el-table-column
label="招标计划发布人"
align="center"
prop="bidPlanPerson"
/>
<el-table-column
label="发布时间"
align="center"
prop="reportTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.reportTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="招标人名称" align="center" prop="tendererName" />
<el-table-column
label="招标人统一社会信用代码"
align="center"
prop="socialCreditCode"
/>
<el-table-column
label="创建时间"
align="center"
prop="createTime"
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"
class-name="small-padding fixed-width"
width="180"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['earlyStage:bidInfo:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['earlyStage:bidInfo:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改招标计划基本信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<!-- 招标计划基本信息 -->
<el-divider content-position="left" class="divider"
>招标计划基本信息</el-divider
>
<el-row :gutter="15">
<el-form
ref="baseForm"
:model="baseForm"
:rules="rules"
label-width="150px"
>
<el-col :span="12">
<el-form-item label="是否合并招标" prop="isConsolidatedBidding">
<el-select
v-model="baseForm.isConsolidatedBidding"
placeholder="请选择是否合并招标"
>
<el-option
v-for="dict in isConsolidatedBiddingOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="招标性质" prop="bidNature">
<el-input
v-model="baseForm.bidNature"
placeholder="请输入招标性质"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="招标计划名称" prop="bidPlanName">
<el-input
v-model="baseForm.bidPlanName"
placeholder="请输入招标计划名称"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="招标计划发布人" prop="bidPlanPerson">
<el-input
v-model="baseForm.bidPlanPerson"
placeholder="请输入招标计划发布人"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="发布时间" prop="reportTime">
<el-date-picker
clearable
size="small"
style="width: 200px"
v-model="baseForm.reportTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择发布时间"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="招标人名称" prop="tendererName">
<el-input
v-model="baseForm.tendererName"
placeholder="请输入招标人名称"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="招标人统一社会信用代码"
prop="socialCreditCode"
>
<el-input
v-model="baseForm.socialCreditCode"
placeholder="请输入招标人统一社会信用代码"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="备注" prop="remark">
<el-input v-model="baseForm.remark" placeholder="请输入备注" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="附件" prop="bidAttachment">
<el-input
v-model="baseForm.bidAttachment"
placeholder="请输入附件"
/>
</el-form-item>
</el-col>
</el-form>
</el-row>
<!-- 计划明细内容 -->
<el-divider content-position="left">计划明细内容</el-divider>
<el-row :gutter="15">
<el-form ref="detailsForm" :model="detailsForm" label-width="150px">
<el-col :span="12">
<el-form-item label="招标项目名称" prop="bidProjectName">
<el-input
v-model="detailsForm.bidProjectName"
placeholder="请输入招标项目名称"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="是否依法必招项目(0:否,1:是)"
prop="isMustProject"
>
<el-input
v-model="detailsForm.isMustProject"
placeholder="请输入是否依法必招项目(0:否,1:是)"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="投资项目代码" prop="investProjectCode">
<el-input
v-model="detailsForm.investProjectCode"
placeholder="请输入投资项目代码"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="招标项目类型" prop="bidType">
<el-select
v-model="detailsForm.bidType"
placeholder="请选择招标项目类型"
>
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="招标方式" prop="bidMethod">
<el-input
v-model="detailsForm.bidMethod"
placeholder="请输入招标方式"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="招标内容" prop="bidContent">
<el-input
v-model="detailsForm.bidContent"
placeholder="请输入招标内容"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="预估发包价" prop="estimatedContractPrice">
<el-input
v-model="detailsForm.estimatedContractPrice"
placeholder="请输入预估发包价"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="招标项目建设地点"
prop="bidConstructionLocation"
>
<el-input
v-model="detailsForm.bidConstructionLocation"
placeholder="请输入招标项目建设地点"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="招标公告预计发布时间" prop="bidNoticeTime">
<el-date-picker
clearable
size="small"
style="width: 200px"
v-model="detailsForm.bidNoticeTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择招标公告预计发布时间"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="招标监管部门" prop="bidRegulator">
<el-input
v-model="detailsForm.bidRegulator"
placeholder="请输入招标监管部门"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目概况" prop="projectOverview">
<el-input
v-model="detailsForm.projectOverview"
placeholder="请输入项目概况"
/>
</el-form-item>
</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-row>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listBidInfo,
getBidInfo,
getBidInfoVO,
delBidInfoVO,
addBidInfoVO,
updateBidInfoVO,
} from "@/api/earlyStage/bidInfoVO";
export default {
name: "BidInfo",
props: ["proNo"],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
bidInfoList: [],
//
title: "",
//
open: false,
//
isConsolidatedBiddingOptions: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
isConsolidatedBidding: null,
bidPlanName: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "desc",
},
},
// //
detailQueryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
bidProjectName: null,
isMustProject: null,
investProjectCode: null,
bidType: null,
bidMethod: null,
bidContent: null,
estimatedContractPrice: null,
bidConstructionLocation: null,
bidNoticeTime: null,
bidRegulator: null,
projectOverview: null,
bidId: null,
projectCode: null,
attachmentAddress: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
owerDept: null,
remark: null,
},
},
//
baseForm: {},
//
detailsForm: {},
//
rules: {},
};
},
created() {
this.getList();
this.getDicts("yes_no").then((response) => {
this.isConsolidatedBiddingOptions = response.data;
});
},
// axios
watch: {
proNo: function (n, o) {
this.proNo = n;
this.getList();
},
},
methods: {
/** 查询招标计划基本信息列表 */
getList() {
this.loading = true;
this.queryParams.data.proNo = this.proNo;
listBidInfo(this.queryParams).then((response) => {
this.bidInfoList = response.records;
this.total = response.total;
this.loading = false;
});
},
//
isConsolidatedBiddingFormat(row, column) {
return this.selectDictLabel(
this.isConsolidatedBiddingOptions,
row.isConsolidatedBidding
);
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.baseForm = {
id: null,
isConsolidatedBidding: null,
bidNature: null,
bidPlanName: null,
bidPlanPerson: null,
reportTime: null,
tendererName: null,
socialCreditCode: null,
remark: null,
bidAttachment: null,
projectCode: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
owerDept: null,
};
this.detailsForm = {
id: null,
bidProjectName: null,
isMustProject: null,
investProjectCode: null,
bidType: null,
bidMethod: null,
bidContent: null,
estimatedContractPrice: null,
bidConstructionLocation: null,
bidNoticeTime: null,
bidRegulator: null,
projectOverview: null,
bidId: null,
projectCode: null,
attachmentAddress: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
owerDept: null,
remark: null,
};
this.resetForm("baseForm");
this.resetForm("detailsForm");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
isConsolidatedBidding: null,
bidNature: null,
bidPlanName: null,
bidPlanPerson: null,
reportTime: null,
tendererName: null,
socialCreditCode: null,
remark: null,
bidAttachment: null,
projectCode: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
owerDept: null,
},
};
this.resetForm("baseForm");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetQueryForm();
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加招标计划基本信息";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getBidInfoVO(id).then((response) => {
// this.baseForm = response.data;
console.log("666666666666", response);
this.open = true;
this.title = "修改招标计划基本信息";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["baseForm"].validate((valid) => {
this.$refs["detailsForm"].validate((valid2) => {
if (valid && valid2) {
if (this.baseForm.id != null || this.detailsForm.id != null) {
updateBidInfoVO({
specialProjectBidInfo: this.baseForm,
projectBidDetails: this.detailsForm,
}).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
this.baseForm.proNo = this.proNo;
this.detailsForm.proNo = this.proNo;
addBidInfoVO({
specialProjectBidInfo: this.baseForm,
projectBidDetails: this.detailsForm,
}).then((response) => {
if (response.code === 200) {
this.msgSuccess("新增成功");
this.open = false;
this.getList();
}
});
}
}
});
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
if (ids) {
this.$confirm("是否删除选中的数据?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(function () {
return delBidInfoVO(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
},
};
</script>
<style lang="scss" scoped>
::v-deep {
.el-dialog {
margin-top: 2vh !important;
height: 90%;
overflow-y: auto;
}
.el-divider {
height: 4px;
}
.el-divider__text {
font-weight: 700;
font-size: 20px;
}
}
</style>

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

@ -0,0 +1,717 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="中标候选人名称" prop="winningCandidateName">
<el-input
v-model="queryParams.data.winningCandidateName"
placeholder="请输入中标候选人名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="中标候选人代码" prop="winningCandidateCode">
<el-input
v-model="queryParams.data.winningCandidateCode"
placeholder="请输入中标候选人代码"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="排名" prop="ranking">
<el-input
v-model="queryParams.data.ranking"
placeholder="请输入排名"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="投标报价" prop="bidQuotation">
<el-input
v-model="queryParams.data.bidQuotation"
placeholder="请输入投标报价"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="费率" prop="rate">
<el-input
v-model="queryParams.data.rate"
placeholder="请输入费率"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="质量" prop="quality">
<el-input
v-model="queryParams.data.quality"
placeholder="请输入质量"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="工期" prop="deliveryTime">
<el-date-picker
clearable
size="small"
style="width: 200px"
v-model="queryParams.deliveryTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择工期"
>
</el-date-picker>
</el-form-item>
<el-form-item
label="中标候选人响应招标文件的资格能力条件"
prop="bidCapabilityConditions"
>
<el-input
v-model="queryParams.data.bidCapabilityConditions"
placeholder="请输入中标候选人响应招标文件的资格能力条件"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="评标情况" prop="evaluationSituation">
<el-input
v-model="queryParams.data.evaluationSituation"
placeholder="请输入评标情况"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="拟派项目负责人姓名" prop="projectLeader">
<el-input
v-model="queryParams.data.projectLeader"
placeholder="请输入拟派项目负责人姓名"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item
label="拟派项目负责人执业资格"
prop="projectLeaderQualification"
>
<el-input
v-model="queryParams.data.projectLeaderQualification"
placeholder="请输入拟派项目负责人执业资格"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</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="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-button
type="cyan"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['earlyStage:bidWinner:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['earlyStage:bidWinner:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['earlyStage:bidWinner:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['earlyStage:bidWinner:export']"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="bidWinnerList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" type="index" width="50" align="center" />
<el-table-column
label="中标候选人名称"
align="center"
prop="winningCandidateName"
/>
<el-table-column
label="中标候选人代码"
align="center"
prop="winningCandidateCode"
/>
<el-table-column label="排名" align="center" prop="ranking" />
<el-table-column label="投标报价" align="center" prop="bidQuotation" />
<el-table-column label="费率" align="center" prop="rate" />
<el-table-column label="质量" align="center" prop="quality" />
<el-table-column
label="工期"
align="center"
prop="deliveryTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.deliveryTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column
label="中标候选人响应招标文件的资格能力条件"
align="center"
prop="bidCapabilityConditions"
/>
<el-table-column
label="评标情况"
align="center"
prop="evaluationSituation"
/>
<el-table-column
label="拟派项目负责人姓名"
align="center"
prop="projectLeader"
/>
<el-table-column
label="拟派项目负责人执业资格"
align="center"
prop="projectLeaderQualification"
/>
<el-table-column label="公示ID" align="center" prop="noticeId" />
<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"
>
<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
label="更新时间"
align="center"
prop="updateTime"
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
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['earlyStage:bidWinner:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['earlyStage:bidWinner:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改中标候选人对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="中标候选人名称" prop="winningCandidateName">
<el-input
v-model="form.winningCandidateName"
placeholder="请输入中标候选人名称"
/>
</el-form-item>
<el-form-item label="中标候选人代码" prop="winningCandidateCode">
<el-input
v-model="form.winningCandidateCode"
placeholder="请输入中标候选人代码"
/>
</el-form-item>
<el-form-item label="排名" prop="ranking">
<el-input v-model="form.ranking" placeholder="请输入排名" />
</el-form-item>
<el-form-item label="投标报价" prop="bidQuotation">
<el-input v-model="form.bidQuotation" placeholder="请输入投标报价" />
</el-form-item>
<el-form-item label="费率" prop="rate">
<el-input v-model="form.rate" placeholder="请输入费率" />
</el-form-item>
<el-form-item label="质量" prop="quality">
<el-input v-model="form.quality" placeholder="请输入质量" />
</el-form-item>
<el-form-item label="工期" prop="deliveryTime">
<el-date-picker
clearable
size="small"
style="width: 200px"
v-model="form.deliveryTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择工期"
>
</el-date-picker>
</el-form-item>
<el-form-item
label="中标候选人响应招标文件的资格能力条件"
prop="bidCapabilityConditions"
>
<el-input
v-model="form.bidCapabilityConditions"
placeholder="请输入中标候选人响应招标文件的资格能力条件"
/>
</el-form-item>
<el-form-item label="评标情况" prop="evaluationSituation">
<el-input
v-model="form.evaluationSituation"
placeholder="请输入评标情况"
/>
</el-form-item>
<el-form-item label="拟派项目负责人姓名" prop="projectLeader">
<el-input
v-model="form.projectLeader"
placeholder="请输入拟派项目负责人姓名"
/>
</el-form-item>
<el-form-item
label="拟派项目负责人执业资格"
prop="projectLeaderQualification"
>
<el-input
v-model="form.projectLeaderQualification"
placeholder="请输入拟派项目负责人执业资格"
/>
</el-form-item>
<el-form-item label="公示ID" prop="noticeId">
<el-input v-model="form.noticeId" placeholder="请输入公示ID" />
</el-form-item>
<el-form-item label="项目编号" prop="proNo">
<el-input v-model="form.proNo" placeholder="请输入项目编号" />
</el-form-item>
<el-form-item label="创建人" prop="createUid">
<el-input v-model="form.createUid" placeholder="请输入创建人" />
</el-form-item>
<el-form-item label="更新人" prop="updateUid">
<el-input v-model="form.updateUid" placeholder="请输入更新人" />
</el-form-item>
<el-form-item label="数源部门" prop="owerDept">
<el-input v-model="form.owerDept" placeholder="请输入数源部门" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listBidWinner,
getBidWinner,
delBidWinner,
addBidWinner,
updateBidWinner,
exportBidWinner,
} from "@/api/earlyStage/bidWinner";
export default {
name: "BidWinner",
props: ["proNo"],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
bidWinnerList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
winningCandidateName: null,
winningCandidateCode: null,
ranking: null,
bidQuotation: null,
rate: null,
quality: null,
deliveryTime: null,
bidCapabilityConditions: null,
evaluationSituation: null,
projectLeader: null,
projectLeaderQualification: null,
noticeId: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
owerDept: null,
remark: null,
},
},
//
form: {},
//
rules: {},
};
},
created() {
this.getList();
},
// axios
watch: {
proNo: function (n, o) {
this.proNo = n;
this.getList();
},
},
methods: {
/** 查询中标候选人列表 */
getList() {
this.loading = true;
this.queryParams.data.proNo = this.proNo;
listBidWinner(this.queryParams).then((response) => {
this.bidWinnerList = response.records;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
winningCandidateName: null,
winningCandidateCode: null,
ranking: null,
bidQuotation: null,
rate: null,
quality: null,
deliveryTime: null,
bidCapabilityConditions: null,
evaluationSituation: null,
projectLeader: null,
projectLeaderQualification: null,
noticeId: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
owerDept: null,
remark: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
winningCandidateName: null,
winningCandidateCode: null,
ranking: null,
bidQuotation: null,
rate: null,
quality: null,
deliveryTime: null,
bidCapabilityConditions: null,
evaluationSituation: null,
projectLeader: null,
projectLeaderQualification: null,
noticeId: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
owerDept: null,
remark: null,
},
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetQueryForm();
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加中标候选人";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getBidWinner(id).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改中标候选人";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
updateBidWinner(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
this.form.proNo = this.proNo;
addBidWinner(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("新增成功");
this.open = false;
this.getList();
}
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
if (ids) {
this.$confirm("是否删除选中的数据?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(function () {
return delBidWinner(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
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 exportBidWinner(queryParams);
})
.then((response) => {
this.downloadFile(response, true, response.msg);
// this.download(response.msg);
})
.catch(function () {});
},
},
};
</script>

132
jwtech-admin-page/src/views/project/bid/options/index.vue

@ -0,0 +1,132 @@
<template>
<div class="app-container">
<!-- 面包屑 -->
<el-breadcrumb separator="/" style="margin-bottom: 20px">
<el-breadcrumb-item
v-for="(item, index) in routeList"
:key="item + index"
:to="routeList.length !== index + 1 ? { path: item.path } : undefined"
>{{ item.routeName }}</el-breadcrumb-item
>
</el-breadcrumb>
<el-tabs
v-model="activeName"
type="card"
@tab-click="handleClick"
style="height: 750px; margin-bottom: 20px"
>
<el-tab-pane label="招标基本信息" name="bidBasePage">
<bidBasePage
:proNo="formData.proNo"
:formData="formData"
ref="bidBasePage"
/>
</el-tab-pane>
<el-tab-pane
label="资格预审公告"
name="PreQualificationPage"
:disabled="!routeList[1].isEdit"
>
<PreQualificationPage :proNo="formData.proNo" />
</el-tab-pane>
<el-tab-pane
label="招标公告"
name="TenderAnnouncementPage"
:disabled="!routeList[1].isEdit"
>
<TenderAnnouncementPage
:proNo="formData.proNo"
:projectName="formData.projectName"
/>
</el-tab-pane>
<el-tab-pane
label="中标候选人公示"
name="candidatePage"
:disabled="!routeList[1].isEdit"
>
<candidatePage :proNo="formData.proNo" />
</el-tab-pane>
<el-tab-pane
label="中标结果"
name="winningResultPage"
:disabled="!routeList[1].isEdit"
>
<winningResultPage :proNo="formData.proNo" />
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
import bidBasePage from "./bidBasePage.vue";
import PreQualificationPage from "./PreQualificationPage.vue";
import TenderAnnouncementPage from "./TenderAnnouncementPage.vue";
import candidatePage from "./candidatePage.vue";
import winningResultPage from "./winningResultPage.vue";
import {
listBidInfo,
getBidInfo,
delBidInfo,
addBidInfo,
updateBidInfo,
exportBidInfo,
} from "@/api/earlyStage/bidInfo";
import { getProjectinfo } from "@/api/earlyStage/projectinfo";
export default {
components: {
bidBasePage,
PreQualificationPage,
TenderAnnouncementPage,
candidatePage,
winningResultPage,
},
data() {
return {
activeName: "bidBasePage",
routeList: [],
formData: {},
//
isConsolidatedBiddingOptions: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
isConsolidatedBidding: null,
bidPlanName: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "desc",
},
},
};
},
created() {
this.routeList = JSON.parse(this.$store.state.basePageData.routeList);
this.getList();
},
methods: {
/** 查询专题项目前期背景信息列表 */
getList() {
getProjectinfo(this.$route.query.baseDataId).then((response) => {
this.formData = response.data;
// console.log(this.formData);
// listBidInfo(this.queryParams).then((response) => {
// console.log(response);
// // this.formData = response.records[0];
// });
});
},
//
handleClick(tab, event) {
this.routeList[1].routeName = tab.label;
},
},
};
</script>

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

@ -0,0 +1,870 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="投资项目代码" prop="investProjectCode">
<el-input
v-model="queryParams.data.investProjectCode"
placeholder="请输入投资项目代码"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="投资项目名称" prop="investProjectName">
<el-input
v-model="queryParams.data.investProjectName"
placeholder="请输入投资项目名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="招标项目名称" prop="bidProjectName">
<el-input
v-model="queryParams.data.bidProjectName"
placeholder="请输入招标项目名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="标段" prop="lotName">
<el-input
v-model="queryParams.data.lotName"
placeholder="请输入标段"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="公示名称" prop="noticeName">
<el-input
v-model="queryParams.data.noticeName"
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
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="招标人" prop="tendererName">
<el-input
v-model="queryParams.data.tendererName"
placeholder="请输入招标人"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</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-button
type="cyan"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['earlyStage:bidWinning:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['earlyStage:bidWinning:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['earlyStage:bidWinning:remove']"
>删除</el-button
>
</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
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="bidWinningList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" type="index" width="50" align="center" />
<el-table-column
label="投资项目代码"
align="center"
prop="investProjectCode"
/>
<el-table-column
label="投资项目名称"
align="center"
prop="investProjectName"
/>
<el-table-column
label="招标项目名称"
align="center"
prop="bidProjectName"
/>
<el-table-column label="标段" align="center" prop="lotName" />
<el-table-column label="公示名称" align="center" prop="noticeName" />
<el-table-column
label="开标日期"
align="center"
prop="bidOpenDate"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.bidOpenDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column
label="评标情况"
align="center"
prop="evaluationSituation"
/>
<el-table-column label="招标人" align="center" prop="tendererName" />
<el-table-column label="办公地址" align="center" prop="officeAddress" />
<el-table-column
label="招标人联系人"
align="center"
prop="bidderContacts"
/>
<el-table-column label="联系电话" align="center" prop="contactsPhone" />
<el-table-column
label="招标投标监督部门"
align="center"
prop="tenderingSupervisionDept"
/>
<el-table-column label="联系电话" align="center" prop="deptPhone" />
<el-table-column label="联系地址" align="center" prop="deptAddress" />
<el-table-column
label="公示开始时间"
align="center"
prop="publicityStartTime"
width="180"
>
<template slot-scope="scope">
<span>{{
parseTime(scope.row.publicityStartTime, "{y}-{m}-{d}")
}}</span>
</template>
</el-table-column>
<el-table-column
label="公示结束日期"
align="center"
prop="publicityEndTime"
width="180"
>
<template slot-scope="scope">
<span>{{
parseTime(scope.row.publicityEndTime, "{y}-{m}-{d}")
}}</span>
</template>
</el-table-column>
<el-table-column label="公示ID" align="center" prop="noticeId" />
<el-table-column label="项目编码" align="center" prop="projectCode" />
<el-table-column
label="附件地址"
align="center"
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"
>
<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
label="更新时间"
align="center"
prop="updateTime"
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
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['earlyStage:bidWinning:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['earlyStage:bidWinning:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改中标候选人公示基本信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="投资项目代码" prop="investProjectCode">
<el-input
v-model="form.investProjectCode"
placeholder="请输入投资项目代码"
/>
</el-form-item>
<el-form-item label="投资项目名称" prop="investProjectName">
<el-input
v-model="form.investProjectName"
placeholder="请输入投资项目名称"
/>
</el-form-item>
<el-form-item label="招标项目名称" prop="bidProjectName">
<el-input
v-model="form.bidProjectName"
placeholder="请输入招标项目名称"
/>
</el-form-item>
<el-form-item label="标段" prop="lotName">
<el-input v-model="form.lotName" placeholder="请输入标段" />
</el-form-item>
<el-form-item label="公示名称" prop="noticeName">
<el-input v-model="form.noticeName" placeholder="请输入公示名称" />
</el-form-item>
<el-form-item label="开标日期" prop="bidOpenDate">
<el-date-picker
clearable
size="small"
style="width: 200px"
v-model="form.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="form.evaluationSituation"
placeholder="请输入评标情况"
/>
</el-form-item>
<el-form-item label="招标人" prop="tendererName">
<el-input v-model="form.tendererName" placeholder="请输入招标人" />
</el-form-item>
<el-form-item label="办公地址" prop="officeAddress">
<el-input v-model="form.officeAddress" placeholder="请输入办公地址" />
</el-form-item>
<el-form-item label="招标人联系人" prop="bidderContacts">
<el-input
v-model="form.bidderContacts"
placeholder="请输入招标人联系人"
/>
</el-form-item>
<el-form-item label="联系电话" prop="contactsPhone">
<el-input v-model="form.contactsPhone" placeholder="请输入联系电话" />
</el-form-item>
<el-form-item label="招标投标监督部门" prop="tenderingSupervisionDept">
<el-input
v-model="form.tenderingSupervisionDept"
placeholder="请输入招标投标监督部门"
/>
</el-form-item>
<el-form-item label="联系电话" prop="deptPhone">
<el-input v-model="form.deptPhone" placeholder="请输入联系电话" />
</el-form-item>
<el-form-item label="联系地址" prop="deptAddress">
<el-input v-model="form.deptAddress" placeholder="请输入联系地址" />
</el-form-item>
<el-form-item label="公示开始时间" prop="publicityStartTime">
<el-date-picker
clearable
size="small"
style="width: 200px"
v-model="form.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="form.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="form.noticeId" placeholder="请输入公示ID" />
</el-form-item>
<el-form-item label="项目编码" prop="projectCode">
<el-input v-model="form.projectCode" placeholder="请输入项目编码" />
</el-form-item>
<el-form-item label="附件地址" prop="attachmentAddress">
<el-input
v-model="form.attachmentAddress"
placeholder="请输入附件地址"
/>
</el-form-item>
<el-form-item label="项目编号" prop="proNo">
<el-input v-model="form.proNo" placeholder="请输入项目编号" />
</el-form-item>
<el-form-item label="创建人" prop="createUid">
<el-input v-model="form.createUid" placeholder="请输入创建人" />
</el-form-item>
<el-form-item label="更新人" prop="updateUid">
<el-input v-model="form.updateUid" placeholder="请输入更新人" />
</el-form-item>
<el-form-item label="数源部门" prop="owerDept">
<el-input v-model="form.owerDept" placeholder="请输入数源部门" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listBidWinning,
getBidWinning,
delBidWinning,
addBidWinning,
updateBidWinning,
exportBidWinning,
} from "@/api/earlyStage/bidWinning";
export default {
name: "BidWinning",
props: ["proNo"],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
bidWinningList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
investProjectCode: null,
investProjectName: null,
bidProjectName: null,
lotName: null,
noticeName: null,
bidOpenDate: null,
evaluationSituation: null,
tendererName: null,
officeAddress: null,
bidderContacts: null,
contactsPhone: null,
tenderingSupervisionDept: null,
deptPhone: null,
deptAddress: null,
publicityStartTime: null,
publicityEndTime: null,
noticeId: null,
projectCode: null,
attachmentAddress: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
owerDept: null,
remark: null,
},
},
//
form: {},
//
rules: {},
};
},
created() {
this.getList();
},
// axios
watch: {
proNo: function (n, o) {
this.proNo = n;
this.getList();
},
},
methods: {
/** 查询中标候选人公示基本信息列表 */
getList() {
this.loading = true;
this.queryParams.data.proNo = this.proNo;
listBidWinning(this.queryParams).then((response) => {
this.bidWinningList = response.records;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
investProjectCode: null,
investProjectName: null,
bidProjectName: null,
lotName: null,
noticeName: null,
bidOpenDate: null,
evaluationSituation: null,
tendererName: null,
officeAddress: null,
bidderContacts: null,
contactsPhone: null,
tenderingSupervisionDept: null,
deptPhone: null,
deptAddress: null,
publicityStartTime: null,
publicityEndTime: null,
noticeId: null,
projectCode: null,
attachmentAddress: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
owerDept: null,
remark: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
investProjectCode: null,
investProjectName: null,
bidProjectName: null,
lotName: null,
noticeName: null,
bidOpenDate: null,
evaluationSituation: null,
tendererName: null,
officeAddress: null,
bidderContacts: null,
contactsPhone: null,
tenderingSupervisionDept: null,
deptPhone: null,
deptAddress: null,
publicityStartTime: null,
publicityEndTime: null,
noticeId: null,
projectCode: null,
attachmentAddress: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
owerDept: null,
remark: null,
},
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetQueryForm();
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加中标候选人公示基本信息";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getBidWinning(id).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改中标候选人公示基本信息";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
updateBidWinning(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
this.form.proNo = this.proNo;
addBidWinning(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("新增成功");
this.open = false;
this.getList();
}
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
if (ids) {
this.$confirm("是否删除选中的数据?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(function () {
return delBidWinning(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
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>
Loading…
Cancel
Save