<template> <div class="app-container"> <!-- 尽职背调 --> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px" style="margin-left: -22px" > <el-form-item label="项目名称" prop="projectName"> <el-input v-model.trim="queryParams.projectName" placeholder="请输入项目名称" clearable @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="项目负责人" prop="investHead"> <el-input v-model.trim="queryParams.investHead" placeholder="请输入项目负责人" clearable @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="公司联系人" prop="projectContacts"> <el-input v-model.trim="queryParams.projectContacts" placeholder="请输入公司联系人" clearable @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="渠道" prop="channel"> <el-select v-model="queryParams.channel" placeholder="全部" clearable> <el-option v-for="item in channelList" :key="item.id" :label="item.channelName" :value="item.id" /> <el-option label="无" value="-1" /> </el-select> </el-form-item> <el-form-item label="所属组别" prop="projectGroup"> <el-select v-model="queryParams.projectGroup" placeholder="全部" clearable > <el-option v-for="dict in dict.type.project_group" :key="dict.value" :label="dict.label" :value="dict.value" /> </el-select> </el-form-item> <el-form-item label="项目公司" prop="company"> <el-input v-model.trim="queryParams.company" placeholder="请输入项目所属公司" clearable @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item class="searchWrapper"> <el-button type="primary" 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 plain :disabled="multiple" type="warning" size="mini" icon="el-icon-tickets" @click="handleSelectData(9)" v-hasPermi="['invest:pool:due']" >尽调申请</el-button > </el-col> <el-col :span="1.5"> <el-button plain :disabled="multiple" type="primary" size="mini" icon="el-icon-document-checked" @click="handleSelectData(10)" >上传尽调报告</el-button > </el-col> <el-col :span="1.5"> <el-button :disabled="multiple" plain type="success" size="mini" icon="el-icon-setting" v-hasPermi="['invest:pool:stage']" @click="handleSelectData(3)" >设置项目阶段</el-button > </el-col> <el-col :span="1.5"> <el-button @click="handleSelectData(4)" type="danger" plain icon="el-icon-switch-button" size="mini" :disabled="multiple" v-hasPermi="['invest:pool:remove']" >终止</el-button > </el-col> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" ></right-toolbar> </el-row> <el-table ref="dataTable" @row-click="clickRow" class="tableWrapper" v-loading="loading" border :data="poolList" @selection-change="handleSelectionChange" > <el-table-column type="selection" width="40" align="center" /> <el-table-column type="index" label="序号" width="50" align="center" ></el-table-column> <!-- <el-table-column label="主键id" align="center" prop="id" /> --> <el-table-column label="项目名称" align="center" prop="projectName"> <template slot-scope="scope"> <div :title="scope.row.projectName" class="public-text-blue public-cursor" @click.stop="handleDetail(scope.row)" > {{ scope.row.projectName }} </div> </template> </el-table-column> <el-table-column label="公司名称" align="center" prop="tProjectCompany.companyName" > <template slot-scope="scope"> <div :title="scope.row.tProjectCompany.companyName"> {{ scope.row.tProjectCompany.companyName }} </div> </template> </el-table-column> <el-table-column label="项目所属城市" align="center" prop="tProjectCompany.registeredAddress" > <template slot-scope="scope"> <div :title="scope.row.tProjectCompany.registeredAddress"> {{ scope.row.tProjectCompany.registeredAddress }} </div> </template> </el-table-column> <el-table-column label="所属行业" align="center" prop="industry" ><template slot-scope="scope"> <dict-tag :options="dict.type.CUSTOMER_TRADE" :value="scope.row.industry" /> </template> </el-table-column> <el-table-column label="项目阶段" align="center" prop="projectStage"> <template slot-scope="scope"> <dict-tag :options="dict.type.project_stage" :value="scope.row.projectStage" /> </template> </el-table-column> <!-- <el-table-column label="项目状态" align="center" prop="projectState"> <template slot-scope="scope"> <dict-tag :options="dict.type.project_state" :value="scope.row.projectState" /> </template> </el-table-column> --> <el-table-column label="备案时间" align="center" prop="tProjectCompany.filingTime" > <template slot-scope="scope"> <span>{{ parseTime(scope.row.tProjectCompany.filingTime, "{y}-{m}-{d}") }}</span> </template> </el-table-column> <el-table-column label="立项通过日期" align="center" prop="projectDate"> <template slot-scope="scope"> <span>{{ parseTime(scope.row.projectDate, "{y}-{m}-{d}") }}</span> </template> </el-table-column> <el-table-column label="已发起尽调申请" align="center" prop="investigateFlag" > <template slot-scope="scope"> <div> {{ scope.row.investigateFlag === "1" ? "是" : "否" }} </div> </template> </el-table-column> <!-- <el-table-column label="投决通过日期" align="center" prop="decisionDate"> <template slot-scope="scope"> <span>{{ parseTime(scope.row.decisionDate, "{y}-{m}-{d}") }}</span> </template> </el-table-column> --> <el-table-column label="项目负责人" align="center" prop="investHead"> <template slot-scope="scope"> <div :title="scope.row.investHead"> {{ scope.row.investHead }} </div> </template> </el-table-column> <!-- <el-table-column label="项目编号" align="center" prop="projectCode" /> --> <el-table-column label="渠道" align="center" prop="tProjectChannel.channelName" > <template slot-scope="scope"> <div v-if=" scope.row.tProjectChannel && scope.row.tProjectChannel.channelName " :title="scope.row.tProjectChannel.channelName" > {{ scope.row.tProjectChannel.channelName }} </div> </template> </el-table-column> <!-- <el-table-column label="所属组别" align="center" prop="tProjectChannel.channelGroup" > <template slot-scope="scope"> <dict-tag :options="dict.type.project_group" :value="scope.row.tProjectChannel.channelGroup" /> </template> </el-table-column> --> <!-- <el-table-column label="项目联系人" align="center" prop="tProjectContacts.name" > <template slot-scope="scope"> <div :title="scope.row.tProjectContacts.name"> {{ scope.row.tProjectContacts.name }} </div> </template> </el-table-column> --> <!--<el-table-column label="创建人" width="120" align="center" prop="createBy" /> <el-table-column label="创建时间" align="center" prop="createTime" width="160" /> --> <!-- delFlag --> <el-table-column label="状态" align="center" prop="investHead" width="50px" > <template slot-scope="scope"> <div :title="scope.row.delFlag === '1' ? '终止' : '正常'"> {{ scope.row.delFlag === "1" ? "终止" : "正常" }} </div> </template> </el-table-column> </el-table> <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" /> <!-- 尽调组件 --> <dueDiligenceList ref="dueDiligenceLists" :projectId="projectId" @getList="getList" ></dueDiligenceList> <!-- 设置项目状态对话框 --> <businessUpdate @getList="getList" ref="businessUpdate"></businessUpdate> </div> </template> <script> import { listInvestigateList, delPool, editStage, addInvestigate, } from "@/api/invest/pool"; import { selectByFlowKey } from "@/api/flowable/definition"; import { listChannel } from "@/api/invest/channel"; import dueDiligenceList from "../components/dueDiligenceList"; import businessUpdate from "../components/businessUpdate"; import { mapGetters } from "vuex"; export default { name: "Pool4", dicts: ["project_group", "project_stage", "project_state", "CUSTOMER_TRADE"], components: { dueDiligenceList, businessUpdate, }, data() { return { projectId: "", // 遮罩层 loading: false, // 选中id数组 ids: [], idsName: [], // 非单个禁用 single: true, // 非多个禁用 multiple: true, // 选中数组 selectRowList: [], // 显示搜索条件 showSearch: false, // 总条数 total: 0, // 项目池表格数据 poolList: [], // 查询参数 queryParams: { id: null, pageNum: 1, pageSize: 10, projectName: null, projectGroup: "", projectCode: null, channel: null, contactDate: null, projectDate: null, decisionDate: null, industry: null, company: null, projectContacts: null, investHead: null, previousFinancing: null, financingStage: null, financingMoney: null, financingDate: null, investValuation: null, investMoney: null, investType: null, investPloy: null, investWorth: null, projectStage: null, projectState: null, orderByColumn: "createTime", isAsc: "desc", createTime: null, }, channelList: [], }; }, computed: { ...mapGetters(["user"]), }, created() {}, mounted() { this.getList(); // 渠道 listChannel({ pageNum: 1, pageSize: 100, }).then((response) => { this.channelList = response.rows; }); }, methods: { /** 查询项目池列表 */ getList() { this.loading = true; listInvestigateList(this.queryParams).then((response) => { this.poolList = response.rows; this.total = response.total; this.loading = false; }); }, /** 搜索按钮操作 */ handleQuery() { this.queryParams.pageNum = 1; this.getList(); }, /** 重置按钮操作 */ resetQuery() { this.resetForm("queryForm"); this.queryParams.orderByColumn = "createTime"; this.queryParams.isAsc = "desc"; this.handleQuery(); }, // 多选框选中数据 handleSelectionChange(selection) { this.ids = selection.map((item) => item.id); if (selection.length > 1) { //移除上一次选中行数据 selection.shift(); //修改选中图标为未选中状态 this.$refs.dataTable.clearSelection(); //将当前选中行改为选中状态 this.$refs.dataTable.toggleRowSelection(selection[0]); } this.idsName = selection.map((item) => item.projectName); this.single = selection.length !== 1; this.multiple = !selection.length; this.selectRowList = selection; }, clickRow(row) { this.$refs.dataTable.toggleRowSelection(row); }, /** 新增按钮操作 */ handleAdd() { this.$router.push({ path: "/invest/pool/add" }); }, handleSelectData(type, otherData) { // type 1=修改 2=详情 3=设置项目阶段 4=终止 5=上传评估意见 // 6=立项申请 7=发起立项会议 8=上传打分表(立项) // 9=尽调申请 10=上传尽调报告 // 11=投决申请 12=发起投决会议 13=上传打分表(投决) if (this.selectRowList.length == 1) { const row = this.selectRowList[0]; // 1.单条数据 2.项目是否终止 3.是否能操作 if (row.delFlag === "1") { this.$message({ message: "项目已终止", duration: 1500, type: "error", }); } else if (type === 10) { // 是否有尽调申请 if (row.investigateFlag === "1") { // 是否被选为参与人 if ( row.tProjectInvestigate && row.tProjectInvestigate.investigatePerson.indexOf( this.user.nickName ) > -1 ) { //是否上传了尽调报告 if (!row.tProjectInvestigatePerson) { // 上传尽调报告 this.$refs.dueDiligenceLists.handleShowReportPop(row); } else { this.$message({ message: "您已上传尽调报告,无需重复操作", duration: 1500, type: "warning", }); } } else { this.$message({ message: "无权限", duration: 1500, type: "error", }); } } else { if (row.investHead === this.user.nickName) { this.$message({ message: "请先尽调申请", duration: 1500, type: "warning", }); } else { this.$message.warning("无权限"); } } } else if (row.investHead === this.user.nickName) { // 未终止 if (type === 2) { // 详情 this.handleDetail(row); } else if (type === 3) { // 设置项目阶段 this.$refs.businessUpdate.handleBusinessUpdate(row); } else if (type === 4) { this.handleDelete(row); } else if (type === 9) { // 是否有尽调申请 if (row.investigateFlag === "0") { // 尽调申请 this.$refs.dueDiligenceLists.handleShowApplyPop(row); } else { this.$message({ message: "您已发起尽调申请,无需重复操作", duration: 1500, type: "warning", }); } } } else { this.$message({ message: "无权限", duration: 1500, type: "error", }); } } else { this.$message({ message: "只能选择一条数据", duration: 1500, type: "warning", }); } }, handleDetail(row) { const id = row.id || this.ids; this.$router.push({ path: "/invest/pool/detail", query: { id: id } }); }, /** 修改按钮操作 */ handleUpdate(row) { const id = row.id; this.$router.push({ path: "/invest/pool/add", query: { id: id } }); }, /**终止按钮操作 */ handleDelete(row) { const ids = row.id || this.ids; const idsName = row.projectName ? row.projectName : this.idsName; this.$modal .confirm('是否终止"' + idsName + '"项目?') .then(function () { return delPool(ids); }) .then(() => { this.getList(); this.$modal.msgSuccess("已终止"); }) .catch(() => {}); }, /** 导出按钮操作 */ handleExport() { this.download( "invest/pool/export", { ...this.queryParams, }, `pool_${new Date().getTime()}.xlsx` ); }, }, }; </script> <style lang="scss" scoped> .tableWrapper { font-size: 12px; color: #000; ::v-deep .el-table__header-wrapper th { font-size: 12px; font-weight: bolder; color: #000; } ::v-deep td.el-table__cell:not(:last-child) div { text-overflow: -o-ellipsis-lastline; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 1; line-clamp: 1; -webkit-box-orient: vertical; } } /**找到表头那一行,然后把里面的复选框隐藏掉**/ .tableWrapper::v-deep .el-table__header-wrapper .el-table__header .el-checkbox { display: none; } </style>