<template> <div class="app-container"> <el-form v-if="type !== '2'" :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-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" v-if="type === '2' && stage == '4' ? false : true" > <el-col :span="1.5"> <el-button v-if="type === '1' && stage == '1'" type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['invest:pool:add']" >新增</el-button > </el-col> <el-col :span="1.5"> <el-button :disabled="multiple" plain type="success" v-if="stage === '1'" size="mini" icon="el-icon-edit" @click="handleSelectData(1)" v-hasPermi="['invest:pool:edit']" >修改</el-button > </el-col> <el-col :span="1.5"> <el-button :disabled="multiple" plain type="primary" size="mini" icon="el-icon-edit" v-if="stage === '2'" @click="handleSelectData(5)" v-hasPermi="['invest:pool:assess']" >上传评估意见</el-button > </el-col> <el-col :span="1.5"> <el-button plain :disabled="multiple" type="warning" v-if="stage == '3'" size="mini" icon="el-icon-document" @click="handleSelectData(6)" v-hasPermi="['invest:pool:lx:apply']" >立项申请</el-button > </el-col> <el-col :span="1.5"> <el-button plain :disabled="multiple" type="warning" v-if="stage == '3'" size="mini" icon="el-icon-chat-line-round" @click="handleSelectData(7, 'LX')" v-hasPermi="['invest:pool:lx:meeting']" >发起立项会议</el-button > </el-col> <el-col :span="1.5"> <el-button plain :disabled="multiple" type="primary" v-if="stage == '3'" size="mini" icon="el-icon-document-checked" @click="handleSelectData(8)" >上传打分表</el-button > </el-col> <el-col :span="1.5"> <el-button plain :disabled="multiple" type="warning" v-if="stage == '4'" 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" v-if="stage == '4'" size="mini" icon="el-icon-document-checked" @click="handleSelectData(10)" >上传尽调报告</el-button > </el-col> <el-col :span="1.5"> <el-button plain :disabled="multiple" type="warning" v-if="stage == '5'" size="mini" icon="el-icon-document" @click="handleSelectData(11)" v-hasPermi="['invest:pool:tj:apply']" >投决申请</el-button > </el-col> <el-col :span="1.5"> <el-button plain :disabled="multiple" type="warning" v-if="stage == '5'" size="mini" icon="el-icon-chat-line-square" @click="handleSelectData(12, 'TJ')" v-hasPermi="['invest:pool:tj:meeting']" >发起投决会议</el-button > </el-col> <el-col :span="1.5"> <el-button plain :disabled="multiple" type="primary" v-if="stage == '5'" size="mini" icon="el-icon-document-checked" @click="handleSelectData(13)" >上传打分表</el-button > </el-col> <el-col :span="1.5"> <el-button :disabled="multiple" plain type="success" v-if="stage !== '0'" 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)" v-if="type === '1' && stage !== '0'" type="danger" plain icon="el-icon-switch-button" size="mini" :disabled="multiple" v-hasPermi="['invest:pool:remove']" >终止</el-button > </el-col> <el-col :span="1.5"> <el-button v-if="type === '1' && stage == '0'" type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['invest:pool:export']" >导出</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="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="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="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> <!-- fixed="right" --> <el-table-column label="操作" align="center" v-if="false"> <template slot-scope="scope"> <!-- stage//0=全部 1=项目报备 2=评估考察 3=项目立项 4=尽职背调 5=项目投决 --> <!-- <el-button class="custom-orange-color" v-if="stage == '1'" size="mini" type="text" icon="el-icon-thumb" @click="handlefollowRecord(scope.row)" >上传跟进记录</el-button> --> <!-- <el-button class="custom-orange-color" v-if="stage == '3' && scope.row.delFlag !== '1'" size="mini" type="text" icon="el-icon-chat-line-round" @click="handleMeeting(scope.row, 'LX')" >发起立项会议</el-button > <el-button class="custom-orange-color" v-if="stage == '5' && scope.row.delFlag !== '1'" size="mini" type="text" icon="el-icon-chat-line-square" @click="handleMeeting(scope.row, 'TJ')" >发起投决会议</el-button > <el-button class="custom-orange-color" v-if="stage == '4' && scope.row.delFlag !== '1'" size="mini" type="text" icon="el-icon-tickets" @click="handleDropdown($event, scope.row)" >尽职背调</el-button > <el-button v-if="scope.row.delFlag !== '1' && stage !== '0'" size="mini" type="text" icon="el-icon-setting" @click="handleBusinessUpdate(scope.row)" >设置项目阶段</el-button > <el-button v-if="scope.row.delFlag !== '1' && stage !== '0'" size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['invest:pool:edit']" >修改</el-button > <el-button class="custom-blue-color" size="mini" type="text" icon="el-icon-search" @click="handleDetail(scope.row)" v-hasPermi="['invest:pool:query']" >详情</el-button > --> <el-button v-if="scope.row.delFlag !== '1' && stage !== '0'" class="custom-red-color" size="mini" type="text" icon="el-icon-switch-button" @click="handleDelete(scope.row)" v-hasPermi="['invest:pool: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" /> <!-- 设置项目状态对话框 --> <businessUpdate @getList="getList" ref="businessUpdate"></businessUpdate> <!-- 上传评估意见对话框 --> <!-- <el-dialog :title="titleAssess" :visible.sync="openAssess" width="800px" append-to-body > <el-form ref="formAssess" :model="formAssess" :rules="rulesAssess" label-width="120px" > <el-form-item label="评估意见" prop="assess"> <el-input maxlength="200" rows="4" type="textarea" v-model="formAssess.assess" placeholder="请填写评估意见" > </el-input> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button type="primary" @click="submitAssessForm" v-preventReClick >确 定</el-button > <el-button @click="openAssess = false">取 消</el-button> </div> </el-dialog> --> <!-- 尽调组件 --> <!-- <dueDiligenceList ref="dueDiligenceLists" :projectId="projectId" :projectName="form.projectName" ></dueDiligenceList> --> <!-- 跟进记录组件 --> <!-- <followList :type="'3'" ref="followList" :projectId="projectId" ></followList> --> <!-- 会议管理组件 --> <!-- <meetingList :type="'3'" ref="meetingList" :projectId="projectId" ></meetingList> --> </div> </template> <script> import { listPool, delPool, editStage } from "@/api/invest/pool"; import { selectByFlowKey } from "@/api/flowable/definition"; import { listChannel } from "@/api/invest/channel"; import dueDiligenceList from "./dueDiligenceList"; import followList from "./followList"; import meetingList from "./meetingList"; import businessUpdate from "./businessUpdate"; import { mapGetters } from "vuex"; export default { props: { type: { type: String, default: "1", //1=显示全部列表 2=显示某项目下的详情列表 }, stage: { type: String, default: "0", //0=全部 1=项目报备 2=评估考察 3=项目立项 4=尽职背调 5=项目投决 }, projectId: { type: String, }, }, dicts: ["project_group", "project_stage", "project_state", "CUSTOMER_TRADE"], components: { dueDiligenceList, followList, meetingList, businessUpdate, }, data() { return { // 遮罩层 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: null, 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: [], // isInitiator: false, //是否是发起人 // needInitiate: false, //需要发起申请 // needUpload: false, //需要上传 // dueForm: { // id: null, // investigateName: null, // investigateCode: null, // projectPoolId: null, // investigatePerson: null, // investigatePersonId: null, // investigateCost: null, // describe: null, // remark: null, // delFlag: null, // createBy: null, // createTime: null, // updateBy: null, // updateTime: null, // projectPoolId: null, // projectName: null, // }, // 上传评估意见 // formAssess: { // id: null, // assess: null, // projectPoolId: null, // }, // openAssess: false, // titleAssess: "", // rulesAssess: { // assess: [{ required: true, trigger: "blur", message: "请输入" }], // }, }; }, computed: { ...mapGetters(["user"]), }, created() {}, mounted() { // 项目阶段 if (this.stage != "0") { this.queryParams.projectStage = this.stage; } if (this.projectId) { this.queryParams.id = this.projectId; } this.getList(); // 渠道 listChannel({ pageNum: 1, pageSize: 100, }).then((response) => { this.channelList = response.rows; }); }, activated() { // 项目阶段 if (this.stage != "0") { this.queryParams.projectStage = this.stage; } this.getList(); }, methods: { /** 查询项目池列表 */ getList() { this.loading = true; listPool(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); 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]; // 项目负责人 if (row.investHead === this.user.nickName) { if (type === 4) { if (row.delFlag === "1") { this.$message({ message: "项目已终止", duration: 1200, type: "error", }); } else { this.handleDelete(row); } } else if (row.delFlag !== "1") { // 未终止 if (type === 1) { // 修改 this.handleUpdate(row); } else if (type === 2) { // 详情 this.handleDetail(row); } else if (type === 3) { if (row.projectState !== "1") { // 设置项目阶段 this.$refs.businessUpdate.handleBusinessUpdate(row); } else { this.$message({ message: "暂存时不能修改项目阶段", duration: 1200, type: "warning", }); } } else if (type === 5) { // 上传评估意见 this.handleAssessPop(row); } else if (type === 6) { // 立项申请 this.$refs.meetingList.showLXApplyPop(row); } else if (type === 7) { // 发起立项会议 this.handleMeeting(row, otherData); } else if (type === 8) { // 立项-去打分 this.$refs.meetingList.handleMark(row, "1", false); } else if (type === 9) { // 尽调申请 this.handleDropdown("1", row); } else if (type === 10) { // 上传尽调报告 this.handleDropdown("3", row); } else if (type === 11) { // 投决申请 this.$refs.meetingList.showTJApplyPop(row); } else if (type === 12) { // 发起投决会议 this.handleMeeting(row, otherData); } else if (type === 13) { // 投决-去打分 this.$refs.meetingList.handleMark(row, "3", false); } } else { this.$message({ message: "无权限", duration: 1200, type: "error", }); } } else { this.$message({ message: "无权限", duration: 1200, type: "error", }); } } else { this.$message({ message: "只能选择一条数据", duration: 1200, 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` ); }, // // 上传评估意见 // handleAssessPop(row) { // this.resetAssess(); // this.openAssess = true; // this.titleAssess = "上传评估意见"; // }, // // 发起会议 // handleMeeting(row, meetingType) { // this.$store.commit("SET_PROJECTITEMMESSAGE", row); // this.$refs.meetingList.handleAdd(row.id, meetingType); // }, // getButtonItem(row) { // let that = this; // this.needUpload = false; // // 是否是发起人 // this.isInitiator = row.investHead == this.user.nickName; // getlistProjectPoolId(row.id).then((response) => { // // 是否有尽调报告 // if (response.tProjectInvestigate) { // // 修改尽调申请 // this.needInitiate = false; // this.dueForm = response.tProjectInvestigate; // // 如果上传人有 this.user.userId 那么 needUpload=true // // 需要上传的人数组 // let investigatePersonIdList = // response.tProjectInvestigate.investigatePersonId.split(","); // if (investigatePersonIdList.indexOf(this.user.userId) > -1) { // this.needUpload = true; // } // if (!this.needUpload && !this.isInitiator) { // this.$message({ // message: "暂无更多操作权限", // duration: 1200, // type: "warning", // }); // } // } else { // // 发起尽调申请 // this.needInitiate = true; // if (!this.isInitiator) { // this.$message({ // message: "暂无更多操作权限", // duration: 1200, // type: "warning", // }); // } // } // }); // }, // // 上传跟进记录 // handlefollowRecord(row) { // this.$store.commit("SET_PROJECTITEMMESSAGE", row); // this.$refs.followList.handleAdd(row.id); // }, // // 设置上传评估意见表单重置 // resetAssess() { // this.formAssess = { // id: null, // assess: null, // projectPoolId: this.selectRowList[0].id, // }; // this.resetForm("formAssess"); // }, // // 上传评估意见提交 // submitAssessForm() { // let that = this; // this.$refs["formAssess"].validate((valid) => { // if (valid) { // // editStage(this.formAssess).then((response) => { // // that.$modal.msgSuccess("提交成功"); // // that.openAssess = false; // // }); // } // }); // }, }, }; </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; } } </style>