Procházet zdrojové kódy

Merge remote-tracking branch 'origin/invest-dev-hxy' into invest-dev-hxy

hxy před 3 měsíci
rodič
revize
135b611dc2

+ 76 - 0
ruoyi-ui/src/api/project/investigate/pool.js

@@ -0,0 +1,76 @@
+import request from '@/utils/request'
+// 我的待办任务列表
+export function getMyTaskList(query) {
+  return request({
+    url: '/invest/meeting/list',
+    method: 'get',
+    params: query
+  })
+}
+//我的已办任务列表
+export function getMyDoneTaskList(query) {
+  return request({
+    url: '/project/investmentOpportunity/getMyDoneTaskList',
+    method: 'get',
+    params: query
+  })
+}
+//我的单据列表
+export function getMyList(query) {
+  return request({
+    url: '/invest/meeting/myList',
+    method: 'get',
+    params: query
+  })
+}
+//启动流程
+export function investmentOpportunityStart(data) {
+  return request({
+    //url: '/invest/pool',
+    url:'/project/investmentOpportunity/start',
+    method: 'post',
+    data: data
+  })
+}
+//审批流程
+export function investmentOpportunityComplete(data) {
+  return request({
+    url:'/project/investmentOpportunity/complete',
+    method: 'put',
+    data: data,
+  })
+}
+// 查询项目池详细
+export function getPool(id) {
+  return request({
+    url: '/invest/pool/' + id,
+    method: 'get'
+  })
+}
+export function getInvestInfo(pInstId) {
+  return request({
+    url: '/project/investmentOpportunity/' + pInstId,
+    method: 'get'
+  })
+}
+
+// 新增项目池
+
+
+// 修改项目池
+/*export function updatePool(data) {
+  return request({
+    url: '/invest/pool',
+    method: 'put',
+    data: data
+  })
+}*/
+
+// 删除项目池
+/*export function delPool(id) {
+  return request({
+    url: '/invest/pool/' + id,
+    method: 'delete'
+  })
+}*/
+

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 2068 - 0
ruoyi-ui/src/views/project/investigate/audit.vue


+ 384 - 0
ruoyi-ui/src/views/project/investigate/detail.vue

@@ -0,0 +1,384 @@
+<template>
+  <div class="detailWrapper">
+    <section class="section1 public-flex">
+      <div class="public-margin-r-20">
+        <h4>
+          投资项目
+          <span class="alreadyStop" v-if="detailInfo.delFlag === '1'"
+            >已终止</span
+          >
+        </h4>
+        <p class="projectNameTit">{{ detailInfo.projectName }}</p>
+      </div>
+    </section>
+    <el-divider></el-divider>
+    <section>
+      <el-divider></el-divider>
+      <div
+        class="public-flex-between basicsInfo"
+        v-if="detailInfo.projectState != '1'"
+      >
+        <div class="public-flex-center-column">
+          <div>项目公司名称</div>
+          <p
+            style="width: 250px; text-align: center"
+            class="yichu1"
+            v-if="
+              detailInfo.tProjectCompany &&
+              detailInfo.tProjectCompany.companyName
+            "
+          >
+            {{ detailInfo.tProjectCompany.companyName }}
+          </p>
+        </div>
+        <div class="public-flex-center-column">
+          <div>渠道</div>
+          <p
+            v-if="
+              detailInfo.tProjectChannel &&
+              detailInfo.tProjectChannel.channelName
+            "
+          >
+            {{ detailInfo.tProjectChannel.channelName }}
+          </p>
+          <p v-else>无</p>
+        </div>
+        <div class="public-flex-center-column">
+          <div>项目负责人</div>
+          <p>{{ detailInfo.investHead }}</p>
+        </div>
+        <div class="public-flex-center-column" v-if="detailInfo.projectDate">
+          <div>立项通过日期</div>
+          <p>{{ detailInfo.projectDate }}</p>
+        </div>
+        <div class="public-flex-center-column" v-if="detailInfo.decisionDate">
+          <div>投决通过日期</div>
+          <p>{{ detailInfo.decisionDate }}</p>
+        </div>
+        <div class="public-flex-center-column">
+          <div>投前估值(万元)</div>
+          <p>{{ detailInfo.investValuation }}</p>
+        </div>
+        <div class="public-flex-center-column">
+          <div>预计投资金额(万元)</div>
+          <p>{{ detailInfo.investMoney }}</p>
+        </div>
+      </div>
+    </section>
+    <section class="section3">
+      <el-tabs v-model="activeName" @tab-click="handleClick">
+        <el-tab-pane label="立项信息" name="0"></el-tab-pane>
+        <el-tab-pane label="项目基本信息" name="1"></el-tab-pane>
+      </el-tabs>
+      <section>
+        <div v-if="activeName === '0'" class="public-padded-20 detail-meeting">
+          <el-tabs type="border-card">
+            <el-tab-pane label="项目立项申请表">
+              <el-form
+                v-if="formLXApply.id"
+                class="special-el-form public-padded-t-20"
+                ref="formLXApply"
+                :model="formLXApply"
+                label-width="120px"
+              >
+                <el-form-item
+                  label="项目概况"
+                  prop="projectOverview"
+                  class="special-el-form-item"
+                >
+                  <el-input
+                    rows="4"
+                    type="textarea"
+                    maxlength="200"
+                    v-model="formLXApply.projectOverview"
+                    disabled
+                  />
+                </el-form-item>
+                <el-form-item
+                  label="项目亮点"
+                  prop="projectSparkle"
+                  class="special-el-form-item"
+                >
+                  <el-input
+                    rows="4"
+                    type="textarea"
+                    maxlength="200"
+                    v-model="formLXApply.projectSparkle"
+                    disabled
+                  />
+                </el-form-item>
+                <el-form-item
+                  label="立项资料"
+                  prop="listFile"
+                  class="special-el-form-item"
+                >
+                  <fileItem
+                    ref="fileItemLXApply"
+                    :id="formLXApply.id"
+                  ></fileItem>
+                </el-form-item>
+                <el-form-item
+                  label="通知名单"
+                  prop="participants"
+                  class="special-el-form-item"
+                >
+                  <el-input
+                    rows="4"
+                    type="textarea"
+                    v-model="formLXApply.participants"
+                    disabled
+                  />
+                </el-form-item>
+              </el-form>
+              <div
+                v-else
+                class="public-flex-center public-padded-20"
+                style="color: #909399"
+              >
+                暂无数据
+              </div>
+            </el-tab-pane>
+<!--            <el-tab-pane label="项目立项评估评审汇总表">
+              <tableForm
+                :formType="2"
+                ref="approvalTableForm"
+                :readonly="true"
+                :showBack="false"
+              ></tableForm>
+            </el-tab-pane>-->
+          </el-tabs>
+        </div>
+        <div v-show="activeName === '1'">
+          <poolForm :type="type" :id="id"></poolForm>
+        </div>
+        <div v-if="activeName === '3'" class="public-padded-20 detail-meeting">
+
+        </div>
+      </section>
+    </section>
+  </div>
+</template>
+<script>
+import poolForm from "../../invest/components/poolForm";
+import tableForm from "../../invest/components/tableForm";
+import fileItem from "../../invest/components/fileItem";
+
+import {
+  getPool,
+  listProjectPoolId,
+  getInvestigatelist,
+  getInvestReviewList,
+} from "@/api/invest/pool";
+import {
+  listMeeting,
+  listProjectPoolIdNewApproval,
+  listProjectPoolIdNewDecision,
+} from "@/api/invest/meeting";
+
+import { mapGetters } from "vuex";
+
+export default {
+  name: "approvalDetail",
+  components: {
+    poolForm,
+    tableForm,
+    fileItem,
+  },
+  data() {
+    return {
+      showDueApply: false,
+      meetingId: "0",
+      type: "2",
+      id: "",
+      active: 0,
+      detailInfo: {
+        projectName: "",
+      },
+      activeName: "0",
+      /*activities: [
+        {
+          content: "活动按期开始",
+          timestamp: "2018-04-15",
+        },
+        {
+          content: "通过审核",
+          timestamp: "2018-04-13",
+        },
+        {
+          content: "创建成功",
+          timestamp: "2018-04-11",
+        },
+      ],*/
+
+      formLXApply: {
+        id: null,
+        projectPoolId: null,
+        projectName: null,
+        projectOverview: null,
+        projectSparkle: null,
+        listFile: null,
+        participants: null,
+        participantsId: null,
+      },
+      /*formTJApply: {
+        id: null,
+        projectPoolId: null,
+        projectName: null,
+        provision: null,
+        listFile: null,
+        participants: null,
+        participantsId: null,
+      },*/
+    };
+  },
+  computed: {
+    ...mapGetters(["user"]),
+  },
+  created() {
+    this.id = this.$route.query.id;
+    this.getDetail();
+    this.getlistProjectPoolIdNewApproval();
+    //this.getListProjectPoolId();
+    //this.getDueList();
+    if (this.$route.query.activeName) {
+      this.activeName = this.$route.query.activeName;
+    }
+  },
+  methods: {
+    /** 查询列表 */
+   /* changeShowDueApply(showDueApply) {
+      this.showDueApply = showDueApply === "1";
+    },*/
+    /*getDueList() {
+      //   this.loading = true;
+      let queryParams = {
+        orderByColumn: "createTime",
+        isAsc: "desc",
+        projectPoolId: this.id,
+      };
+
+    },*/
+    getMettingId(type) {
+      let queryParams = {
+        pageNum: 1,
+        pageSize: 10,
+        meetingType: type,
+        orderByColumn: "createTime",
+        isAsc: "desc",
+        projectPoolId: this.id,
+      };
+      listMeeting(queryParams).then((response) => {
+        let meetingList = response.rows;
+        if (meetingList.length > 0) {
+          let meetingId = meetingList[0].id;
+          if (type === "LX") {
+            this.$refs.approvalTableForm.initialize(meetingId);
+          } else if (type === "TJ") {
+            this.$refs.voteTableForm.initialize(meetingId);
+          }
+        } else {
+          if (type === "LX") {
+            this.$refs.approvalTableForm.showNodata();
+          } else if (type === "TJ") {
+            this.$refs.voteTableForm.showNodata();
+          }
+        }
+      });
+    },
+    handleClick(tab, event) {
+      let that = this;
+      if (this.activeName === "0") {
+        // 项目立项
+        this.getMettingId("LX");
+        this.getlistProjectPoolIdNewApproval();
+      } else if (this.activeName === "1") {
+        // 项目报备
+        this.getDetail();
+      }
+    },
+    // 获取立项申请
+    getlistProjectPoolIdNewApproval() {
+      let that = this;
+      listProjectPoolIdNewApproval(this.id).then((response) => {
+        if (response && response.data) {
+          that.formLXApply = response.data;
+          setTimeout(() => {
+            that.$refs.fileItemLXApply.handleButton();
+            that.$refs.fileItemLXApply.fileList = [];
+            that.$refs.fileItemLXApply.getListFileBusinessId(
+              that.formLXApply.id
+            );
+          }, 300);
+        }
+      });
+    },
+    //项目报备
+    getDetail() {
+      getPool(this.id).then((response) => {
+        this.detailInfo = response.data;
+        // 项目退出完成n
+        if (response.data.projectState === "n") {
+          this.active = parseInt(response.data.projectStage);
+        } else {
+          this.active = parseInt(response.data.projectStage) - 1;
+        }
+      });
+    },
+
+
+  },
+};
+</script>
+<style lang="scss" scoped>
+.detailWrapper {
+  padding: 20px 0;
+  width: 92%;
+  margin: 0 auto;
+  .section1 {
+    p {
+      font-size: 24px;
+      font-weight: bold;
+      margin: 0;
+    }
+    > div:first-child {
+      // width: calc(100% - 700px);
+      width: 100%;
+    }
+    .btnList {
+      width: 700px;
+      display: flex;
+      justify-content: flex-end;
+    }
+  }
+  .basicsInfo {
+    font-size: 14px;
+    background: #f1f1f1;
+    margin-top: -24px;
+    width: 100%;
+    padding: 30px 20px 10px;
+    div {
+      color: #7e7d7d;
+    }
+    p {
+      font-size: 16px;
+      color: #333;
+      font-weight: bold;
+    }
+  }
+  .section3 {
+    margin-top: 40px;
+  }
+}
+.projectNameTit {
+}
+.alreadyStop {
+  font-weight: normal;
+  font-size: 12px;
+  background: #ff0000;
+  color: #fff;
+  border-radius: 5px;
+  padding: 5px 10px;
+  margin-left: 10px;
+}
+
+</style>

+ 482 - 0
ruoyi-ui/src/views/project/investigate/edit.vue

@@ -0,0 +1,482 @@
+<template>
+  <div class="detailWrapper">
+    <section class="section1 public-flex">
+      <div class="public-margin-r-20">
+        <h4>
+          投资项目
+          <span class="alreadyStop" v-if="detailInfo.delFlag === '1'"
+          >已终止</span
+          >
+        </h4>
+        <p class="projectNameTit">{{ detailInfo.projectName }}</p>
+      </div>
+    </section>
+    <el-divider></el-divider>
+    <section>
+      <el-divider></el-divider>
+      <div class="public-flex-between basicsInfo" v-if="detailInfo.projectState != '1'">
+        <div class="public-flex-center-column">
+          <div>项目公司名称</div>
+          <p style="width: 250px; text-align: center" class="yichu1"
+             v-if="
+              detailInfo.tProjectCompany &&
+              detailInfo.tProjectCompany.companyName
+            ">
+            {{ detailInfo.tProjectCompany.companyName }}
+          </p>
+        </div>
+        <div class="public-flex-center-column">
+          <div>渠道</div>
+          <p
+            v-if="
+              detailInfo.tProjectChannel &&
+              detailInfo.tProjectChannel.channelName
+            "
+          >
+            {{ detailInfo.tProjectChannel.channelName }}
+          </p>
+          <p v-else>无</p>
+        </div>
+        <div class="public-flex-center-column">
+          <div>项目负责人</div>
+          <p>{{ detailInfo.investHead }}</p>
+        </div>
+        <div class="public-flex-center-column" v-if="detailInfo.projectDate">
+          <div>立项通过日期</div>
+          <p>{{ detailInfo.projectDate }}</p>
+        </div>
+        <div class="public-flex-center-column" v-if="detailInfo.decisionDate">
+          <div>投决通过日期</div>
+          <p>{{ detailInfo.decisionDate }}</p>
+        </div>
+        <div class="public-flex-center-column">
+          <div>投前估值(万元)</div>
+          <p>{{ detailInfo.investValuation }}</p>
+        </div>
+        <div class="public-flex-center-column">
+          <div>预计投资金额(万元)</div>
+          <p>{{ detailInfo.investMoney }}</p>
+        </div>
+      </div>
+    </section>
+    <section class="section3">
+      <el-tabs v-model="activeName" @tab-click="handleClick">
+        <el-tab-pane label="立项信息" name="0"></el-tab-pane>
+        <el-tab-pane label="项目基本信息" name="1"></el-tab-pane>
+      </el-tabs>
+      <section>
+        <div v-if="activeName === '0'" >
+          <el-tabs type="border-card">
+            <el-tab-pane label="项目立项申请表">
+              <el-form
+                v-if="formLXApply.id"
+                class="special-el-form public-padded-t-20"
+                ref="formLXApply"
+                :model="formLXApply"
+                label-width="120px"
+              >
+                <el-form-item
+                  label="项目概况"
+                  prop="projectOverview"
+                  class="special-el-form-item"
+                >
+                  <el-input
+                    rows="4"
+                    type="textarea"
+                    maxlength="200"
+                    v-model="formLXApply.projectOverview"
+                  />
+                </el-form-item>
+                <el-form-item
+                  label="项目亮点"
+                  prop="projectSparkle"
+                  class="special-el-form-item"
+                >
+                  <el-input
+                    rows="4"
+                    type="textarea"
+                    maxlength="200"
+                    v-model="formLXApply.projectSparkle"
+                  />
+                </el-form-item>
+                <el-form-item
+                  label="立项资料"
+                  prop="listFile"
+                  class="special-el-form-item"
+                >
+                  <fileItem
+                    ref="fileItemLXApply"
+                    :id="formLXApply.id"
+                    @getFileList="getFileListLXApply"
+                  ></fileItem>
+                </el-form-item>
+<!--                <el-form-item
+                  label="立项资料"
+                  prop="listFile"
+                  class="special-el-form-item"
+                >
+                  <fileItem
+                    ref="fileItemLXApply"
+                    :id="formLXApply.id"
+                  ></fileItem>
+                </el-form-item>-->
+<!--                <el-form-item
+                  label="通知名单"
+                  prop="participants"
+                  class="special-el-form-item"
+                >
+                  <el-input
+                    rows="4"
+                    type="textarea"
+                    v-model="formLXApply.participants"
+                  />
+                </el-form-item>-->
+              </el-form>
+              <div
+                v-else
+                class="public-flex-center public-padded-20"
+                style="color: #909399"
+              >
+                暂无数据
+              </div>
+            </el-tab-pane>
+<!--            <el-tab-pane label="项目立项评估评审汇总表">
+              <tableForm
+                :formType="2"
+                ref="approvalTableForm"
+                :readonly="true"
+                :showBack="false"
+              ></tableForm>
+            </el-tab-pane>-->
+          </el-tabs>
+        </div>
+        <div v-show="activeName === '1'">
+          <poolForm :type="type" :id="id"></poolForm>
+        </div>
+      </section>
+    </section>
+
+    <section class="approveBtn">
+      <el-form
+        ref="flowBaseInfo"
+        :model="flowBaseInfo"
+        :rules="rulesFlow"
+        label-width="120px"
+      >
+        <el-form-item class="btnList">
+          <el-button @click="goBack">返 回</el-button>
+          <el-button type="primary" @click="handleComplete(true)">提交</el-button>
+          <el-button type="warning" @click="handleComplete(false)">关闭</el-button>
+        </el-form-item>
+      </el-form>
+    </section>
+  </div>
+</template>
+<script>
+import poolForm from "../../invest/components/poolForm";
+/*import poolForm from "../components/poolForm";
+import contractList from "../components/contractList";
+import fileList from "../components/fileList";
+import followList from "../components/followList";
+import meetingList from "../components/meetingList";
+import projectList from "../components/projectList";
+import tableForm from "../components/tableForm";
+import listAllfile from "../components/listAllfile";
+import dueDiligenceList from "../components/dueDiligenceList";*/
+import fileItem from "../../invest/components/fileItem";
+
+import {
+  getPool
+} from "@/api/invest/pool";
+import {
+  listMeeting,
+  listProjectPoolIdNewApproval
+} from "@/api/invest/meeting";
+import{
+  approvalComplete
+} from "@/api/project/approval/pool"
+
+import { mapGetters } from "vuex";
+
+export default {
+  name: "approvalEdit",
+  components: {
+    poolForm,
+    /*  contractList,
+      fileList,
+      followList,
+      meetingList,
+      projectList,
+      tableForm,
+      listAllfile,
+      dueDiligenceList,
+      fileItem,*/
+    fileItem
+  },
+  data() {
+    return {
+      showDueApply: false,
+      meetingId: "0",
+      type: "2",
+      id: "",
+      active: 0,
+      detailInfo: {
+        projectName: "",
+      },
+      activeName: "0",
+      /*activities: [
+        {
+          content: "活动按期开始",
+          timestamp: "2018-04-15",
+        },
+        {
+          content: "通过审核",
+          timestamp: "2018-04-13",
+        },
+        {
+          content: "创建成功",
+          timestamp: "2018-04-11",
+        },
+      ],*/
+      formLXApply: {
+        id: null,
+        procInstId:null,
+        projectPoolId: null,
+        projectName: null,
+        projectOverview: null,
+        projectSparkle: null,
+        listFile: null,
+        participants: null,
+        participantsId: null,
+      },
+      flowBaseInfo:{
+        comment:null,
+        taskId:null
+      },
+      rulesFlow:{
+        comment: [{ required: true, trigger: "blur", message: "请输入" }],
+      }
+    };
+  },
+  computed: {
+    ...mapGetters(["user"]),
+  },
+  created() {
+    this.id = this.$route.query.id;
+    this.getlistProjectPoolIdNewApproval();
+    this.getDetail();
+    this.flowBaseInfo.taskId=this.$route.query.taskId;
+    //this.getListProjectPoolId();
+    //this.getDueList();
+    if (this.$route.query.activeName) {
+      this.activeName = this.$route.query.activeName;
+    }
+  },
+  methods: {
+    /** 查询列表 */
+    /*changeShowDueApply(showDueApply) {
+      this.showDueApply = showDueApply === "1";
+    },*/
+    /*getDueList() {
+      //   this.loading = true;
+      let queryParams = {
+        orderByColumn: "createTime",
+        isAsc: "desc",
+        projectPoolId: this.id,
+      };
+      getInvestigatelist(queryParams).then((response) => {
+        let list = response.rows,
+          showDueApply;
+        // 如果尽调全部完成,才能显示发起尽调;
+        if (list && list.length > 0) {
+          showDueApply = list.every(function (item) {
+            return item.status === "1";
+          });
+        } else {
+          showDueApply = true;
+        }
+        this.showDueApply = showDueApply;
+      });
+    },*/
+    getMettingId(type) {
+      let queryParams = {
+        pageNum: 1,
+        pageSize: 10,
+        meetingType: type,
+        orderByColumn: "createTime",
+        isAsc: "desc",
+        projectPoolId: this.id,
+      };
+      listMeeting(queryParams).then((response) => {
+        let meetingList = response.rows;
+        if (meetingList.length > 0) {
+          let meetingId = meetingList[0].id;
+          if (type === "LX") {
+            this.$refs.approvalTableForm.initialize(meetingId);
+          } else if (type === "TJ") {
+            this.$refs.voteTableForm.initialize(meetingId);
+          }
+        } else {
+          if (type === "LX") {
+            this.$refs.approvalTableForm.showNodata();
+          } else if (type === "TJ") {
+            this.$refs.voteTableForm.showNodata();
+          }
+        }
+      });
+    },
+    handleClick(tab, event) {
+      let that = this;
+      if (this.activeName === "0") {
+        // 项目立项
+        this.getMettingId("LX");
+        this.getlistProjectPoolIdNewApproval();
+      } else if (this.activeName === "1") {
+        // 项目报备
+        this.getDetail();
+      }
+    },
+    // 获取立项申请
+    getlistProjectPoolIdNewApproval() {
+      let that = this;
+      listProjectPoolIdNewApproval(this.id).then((response) => {
+        if (response && response.data) {
+          that.formLXApply = response.data;
+          setTimeout(() => {
+            //that.$refs.fileItemLXApply.handleButton();
+            that.$refs.fileItemLXApply.fileList = [];
+            that.$refs.fileItemLXApply.getListFileBusinessId(
+              that.formLXApply.id
+            );
+          }, 300);
+        }
+      });
+    },
+    // 立项申请附件回显
+    getFileListLXApply(fileList) {
+      this.fileListLXApply = fileList;
+      if (fileList && fileList.length > 0) {
+        this.$refs.formLXApply.clearValidate(["listFile"]);
+      } else {
+        this.fileListLXApply = [];
+      }
+    },
+    //项目报备
+    getDetail() {
+      getPool(this.id).then((response) => {
+        this.detailInfo = response.data;
+        // 项目退出完成n
+        if (response.data.projectState === "n") {
+          this.active = parseInt(response.data.projectStage);
+        } else {
+          this.active = parseInt(response.data.projectStage) - 1;
+        }
+      });
+    },
+
+    /** 加载审批任务弹框 */
+    handleComplete(flag) {
+      /*this.completeOpen = true;
+      this.completeTitle = "流程审批";*/
+      ///his.submitForm(flag);
+
+      this.taskComplete(flag);
+    },
+    /** 用户审批任务 */
+    taskComplete(flag) {
+      /*if (!this.flowBaseInfo.comment) {
+        this.$modal.msgError("请输入审批意见!");
+        return;
+      }
+      if (this.form.taskDefKey=='softwareDept'&&!this.formAssess.context) {
+        this.$modal.msgError("请输入评估意见!");
+        return;
+      }*/
+      this.formLXApply.flag=flag;
+      const params={
+        /*projectPool: this.form,  // 拆分明确字段
+        projectReview: this.formAssess,
+        flowBaseInfo: this.flowBaseInfo*/
+        projectApproval:this.formLXApply,
+        flowBaseInfo: this.flowBaseInfo
+      }
+
+      approvalComplete(params).then(response => {
+        this.$modal.msgSuccess(response.msg);
+        this.goMyTask();
+      });
+    },
+    /*返回*/
+    goBack() {
+      this.$router.go(-1);
+    },
+    //跳转到我的任务-投资机会
+    goMyTask(){
+      this.$router.push({ path: "/myTask/project/approval/myTask"});
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.detailWrapper {
+  padding: 20px 0;
+  width: 92%;
+  margin: 0 auto;
+  .section1 {
+    p {
+      font-size: 24px;
+      font-weight: bold;
+      margin: 0;
+    }
+    > div:first-child {
+      // width: calc(100% - 700px);
+      width: 100%;
+    }
+    .btnList {
+      width: 700px;
+      display: flex;
+      justify-content: flex-end;
+    }
+  }
+  .basicsInfo {
+    font-size: 14px;
+    background: #f1f1f1;
+    margin-top: -24px;
+    width: 100%;
+    padding: 30px 20px 10px;
+    div {
+      color: #7e7d7d;
+    }
+    p {
+      font-size: 16px;
+      color: #333;
+      font-weight: bold;
+    }
+  }
+  .section3 {
+    margin-top: 40px;
+  }
+  .approveBtn {
+    margin-top: 30px;
+    .btnList {
+      display: flex;
+      justify-content: flex-end;
+      /* 让内部元素(按钮)整体靠右 */
+      gap: 10px; /* 替代 margin,给按钮之间加间距,可选 */
+      padding-right: 50px;
+    }
+  }
+}
+.projectNameTit {
+}
+.alreadyStop {
+  font-weight: normal;
+  font-size: 12px;
+  background: #ff0000;
+  color: #fff;
+  border-radius: 5px;
+  padding: 5px 10px;
+  margin-left: 10px;
+}
+
+</style>

+ 646 - 0
ruoyi-ui/src/views/project/investigate/list.vue

@@ -0,0 +1,646 @@
+<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-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"
+          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"
+          size="mini"
+          icon="el-icon-document-checked"
+          @click="handleSelectData(8)"
+          >上传打分表</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"
+        width="120"
+      >
+        <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="approvalFlag"
+      >
+        <template slot-scope="scope">
+          <div>
+            {{ scope.row.approvalFlag === "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"
+    />
+    <!-- 会议管理组件 -->
+    <meetingList
+      :type="'3'"
+      ref="meetingList"
+      :projectId="projectId"
+      @getList="getList"
+    ></meetingList>
+    <!-- 设置项目状态对话框 -->
+    <businessUpdate @getList="getList" ref="businessUpdate"></businessUpdate>
+  </div>
+</template>
+
+<script>
+import { listApprovalList, delPool, editStage } from "@/api/invest/pool";
+import { listChannel } from "@/api/invest/channel";
+import meetingList from "./meetingList";
+import businessUpdate from "../../invest/components/businessUpdate";
+import { mapGetters } from "vuex";
+export default {
+  name: "Pool3",
+  dicts: ["project_group", "project_stage", "project_state", "CUSTOMER_TRADE"],
+  components: {
+    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: "",
+        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: [],
+
+      projectId: "",
+    };
+  },
+  computed: {
+    ...mapGetters(["user"]),
+  },
+  created() {},
+  mounted() {
+    this.getList();
+    // 渠道
+    listChannel({
+      pageNum: 1,
+      pageSize: 100,
+    }).then((response) => {
+      this.channelList = response.rows;
+    });
+  },
+  methods: {
+    /** 查询项目池列表 */
+    getList() {
+      this.loading = true;
+      listApprovalList(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 === 8) {
+          // 有立项会议
+          if (row.tProjectMeeting) {
+            // 参与人
+            if (
+              row.tProjectMeeting.participants.indexOf(this.user.nickName) > -1
+            ) {
+              // 是否打过分
+              if (row.tProjectScoring) {
+                this.$message.warning("您已打分,无需重复操作");
+              } else {
+                // 立项-去打分
+                this.$refs.meetingList.handleMark(row.tProjectMeeting, "1", false);
+              }
+            } else {
+              this.$message.warning("无权限");
+            }
+          } 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 === 6) {
+            if (row.approvalFlag === "0") {
+              // 立项申请
+              this.$refs.meetingList.showLXApplyPop(row);
+            } else {
+              this.$message({
+                message: "您已发起立项申请,无需重复操作",
+                duration: 1500,
+                type: "warning",
+              });
+            }
+          } else if (type === 7) {
+            if (row.approvalFlag === "1") {
+              // 发起立项会议
+              this.handleMeeting(row, otherData);
+            } 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 } });
+    },
+    // 发起会议
+    handleMeeting(row, meetingType) {
+      this.$store.commit("SET_PROJECTITEMMESSAGE", row);
+      this.$refs.meetingList.handleAdd(row.id, meetingType);
+    },
+    /**终止按钮操作 */
+    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>

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1547 - 0
ruoyi-ui/src/views/project/investigate/meetingList.vue


+ 743 - 0
ruoyi-ui/src/views/project/investigate/myTask.vue

@@ -0,0 +1,743 @@
+<template>
+<!--  <div class="app-container">-->
+  <div>
+    <el-card shadow="hover">
+      <!-- 查询表单区域 -->
+      <el-form :model="queryParams" ref="queryForm" inline>
+        <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>
+<!--          <el-button type="primary" @click="handleQuery">查询</el-button>
+          <el-button @click="handleReset">重置</el-button>-->
+          <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>
+      <!-- Tab 切换区域 -->
+      <el-tabs v-model="activeTab" type="card" @tab-click="handleTabClick">
+        <el-tab-pane label="待办任务" name="list1">
+          <!-- 列表一内容 -->
+          <el-table
+            ref="dataTable"
+            @row-click="clickRow"
+            class="tableWrapper"
+            v-loading="loading"
+            border
+            :data="myTaskList"
+          >
+            <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="userName">
+              <template slot-scope="scope">
+                <div :title="scope.row.userName">
+                  {{ scope.row.userName }}
+                </div>
+              </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="taskName">
+              <template slot-scope="scope">
+                <div :title="scope.row.taskName"  class="public-text-blue public-cursor" @click="handleReadImage(scope.row)">
+                  {{ scope.row.taskName}}
+                </div>
+              </template>
+            </el-table-column>
+            <!-- fixed="right" -->
+            <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
+              <template slot-scope="scope">
+<!--                <el-button  icon="el-icon-edit-outline" type="primary" size="mini" @click="handleDelegate">签收</el-button>&ndash;&gt;
+                <el-button size="mini" type="text" icon="el-icon-edit-outline" @click="handleProcess(scope.row)">处理</el-button>
+                <el-button  type="text" size="small" @click="handleFlowRecord(scope.row)">详情</el-button>-->
+
+                <el-button v-if="scope.row.taskDefKey=='modifyApply'" type="text" @click="handleEdit(scope.row)">处理</el-button>
+                <template v-else>
+                <!-- 1. 签收按钮:无签收人时显示 -->
+                  <el-button v-if="!scope.row.assignee" type="primary" size="mini" @click="handleSign(scope.row)">签收</el-button>
+                  <!-- 2. 处理按钮:有签收人时显示 -->
+                  <el-button v-else size="mini" type="text" @click="handleProcess(scope.row)">处理</el-button>
+                <!-- 3. 撤回按钮:需补充逻辑(比如仅未签收可撤回,可结合 signPerson 判断) -->
+<!--                <el-button v-if="!scope.row.assignee" size="mini" type="text" icon="el-icon-refresh-right" @click="handleWithdraw(scope.row)">撤回</el-button>-->
+                <!-- 4. 详情按钮:一直显示 -->
+
+                </template>
+                <el-button type="text" size="small" @click="handleDetail(scope.row)">详情</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+
+          <!-- 分页 -->
+          <pagination
+            v-show="myTaskTotal > 0"
+            :total="myTaskTotal"
+            :page.sync="queryParams.pageNum"
+            :limit.sync="queryParams.pageSize"
+            @pagination="getMyTaskList"
+          />
+        </el-tab-pane>
+
+        <el-tab-pane label="已办任务" name="list2">
+          <!-- 我的单据表格 -->
+          <!-- 列表一内容 -->
+          <el-table
+            ref="dataTable"
+            @row-click="clickRow"
+            class="tableWrapper"
+            v-loading="loading"
+            border
+            :data="myDoneTaskList"
+          >
+            <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="userName">
+              <template slot-scope="scope">
+                <div :title="scope.row.userName">
+                  {{ scope.row.userName }}
+                </div>
+              </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="taskName">
+              <template slot-scope="scope">
+                <div :title="scope.row.taskName"  class="public-text-blue public-cursor" @click="handleReadImage(scope.row)">
+                  {{ scope.row.taskName}}
+                </div>
+              </template>
+            </el-table-column>
+            <!-- fixed="right" -->
+            <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
+              <template slot-scope="scope">
+                <!--                <el-button  icon="el-icon-edit-outline" type="primary" size="mini" @click="handleDelegate">签收</el-button>&ndash;&gt;
+                                <el-button size="mini" type="text" icon="el-icon-edit-outline" @click="handleProcess(scope.row)">处理</el-button>
+                                <el-button  type="text" size="small" @click="handleFlowRecord(scope.row)">详情</el-button>-->
+                <!-- 1. 签收按钮:无签收人时显示 -->
+<!--                <el-button v-if="!scope.row.assignee" icon="el-icon-edit-outline" type="primary" size="mini" @click="handleSign(scope.row)">签收</el-button>
+                &lt;!&ndash; 2. 处理按钮:有签收人时显示 &ndash;&gt;
+                <el-button v-else size="mini" type="text" icon="el-icon-edit-outline" @click="handleProcess(scope.row)">处理</el-button>
+                &lt;!&ndash; 3. 撤回按钮:需补充逻辑(比如仅未签收可撤回,可结合 signPerson 判断) &ndash;&gt;
+                <el-button v-if="!scope.row.assignee" size="mini" type="text" icon="el-icon-refresh-right" @click="handleWithdraw(scope.row)">撤回</el-button>-->
+                <!-- 4. 详情按钮:一直显示 -->
+                <el-button type="text" size="small" @click="handleDetail(scope.row)">详情</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+          <!-- 分页 -->
+          <pagination
+            v-show="myTotal > 0"
+            :total="myTotal"
+            :page.sync="queryParams.pageNum"
+            :limit.sync="queryParams.pageSize"
+            @pagination="getMyDoneTaskList"
+          />
+        </el-tab-pane>
+        <el-tab-pane label="我的单据" name="list3">
+          <!-- 我的单据表格 -->
+          <!-- 列表一内容 -->
+          <el-table
+            ref="dataTable"
+            @row-click="clickRow"
+            class="tableWrapper"
+            v-loading="loading"
+            border
+            :data="myList"
+          >
+            <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="userName">
+              <template slot-scope="scope">
+                <div :title="scope.row.userName">
+                  {{ scope.row.userName }}
+                </div>
+              </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="taskName">
+              <template slot-scope="scope">
+                <div :title="scope.row.taskName"  class="public-text-blue public-cursor" @click="handleReadImage(scope.row)">
+                  {{ scope.row.taskName}}
+                </div>
+              </template>
+            </el-table-column>
+            <!-- fixed="right" -->
+            <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
+              <template slot-scope="scope">
+                <!--                <el-button  icon="el-icon-edit-outline" type="primary" size="mini" @click="handleDelegate">签收</el-button>&ndash;&gt;
+                                <el-button size="mini" type="text" icon="el-icon-edit-outline" @click="handleProcess(scope.row)">处理</el-button>
+                                <el-button  type="text" size="small" @click="handleFlowRecord(scope.row)">详情</el-button>-->
+                <!-- 1. 签收按钮:无签收人时显示 -->
+                <!--                <el-button v-if="!scope.row.assignee" icon="el-icon-edit-outline" type="primary" size="mini" @click="handleSign(scope.row)">签收</el-button>
+                                &lt;!&ndash; 2. 处理按钮:有签收人时显示 &ndash;&gt;
+                                <el-button v-else size="mini" type="text" icon="el-icon-edit-outline" @click="handleProcess(scope.row)">处理</el-button>
+                                &lt;!&ndash; 3. 撤回按钮:需补充逻辑(比如仅未签收可撤回,可结合 signPerson 判断) &ndash;&gt;
+                                <el-button v-if="!scope.row.assignee" size="mini" type="text" icon="el-icon-refresh-right" @click="handleWithdraw(scope.row)">撤回</el-button>-->
+                <!-- 4. 详情按钮:一直显示 -->
+                <el-button type="text" size="small" @click="handleDetail(scope.row)">详情</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+          <!-- 分页 -->
+          <pagination
+            v-show="myTotal > 0"
+            :total="myTotal"
+            :page.sync="queryParams.pageNum"
+            :limit.sync="queryParams.pageSize"
+            @pagination="getMyList"
+          />
+        </el-tab-pane>
+      </el-tabs>
+    </el-card>
+  <!-- Flowable 流程图弹窗 -->
+  <!-- 流程图 -->
+
+  <el-dialog :title="readImage.title" :visible.sync="readImage.open" width="70%"  append-to-body>
+    <!-- <el-image :src="readImage.src"></el-image> -->
+    <flow :flowData="flowData"/>
+  </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import { getMyTaskList,getMyDoneTaskList,getMyList } from "@/api/project/investigate/pool";
+import { selectByFlowKey,flowXmlAndNode } from "@/api/flowable/definition";
+import { listChannel } from "@/api/invest/channel";
+import dueDiligenceList from "../../invest/components/dueDiligenceList.vue";
+import followList from "../../invest/components/followList.vue";
+import meetingList from "../../invest/components/meetingList.vue";
+import businessUpdate from "../../invest/components/businessUpdate.vue";
+import flow from '@/views/flowable/task/todo/detail/flow';
+
+import { mapGetters } from "vuex";
+import pool from "../../invest/pool/index.vue";
+export default {
+  dicts: ["project_group", "project_stage", "project_state", "CUSTOMER_TRADE"],
+  components: {
+    dueDiligenceList,
+    followList,
+    meetingList,
+    businessUpdate,
+    flow
+  },
+  data() {
+    return {
+      // 当前激活的 Tab
+      activeTab:"list1",
+      // 遮罩层
+      loading: false,
+      // 查询参数
+      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,
+      },
+      // 数据列表(分开存储不同Tab的数据)
+      myTaskList: [],       // 待办任务数据
+      // 待办任务总条数,用于分页
+      myTaskTotal: 0,
+      myDoneTaskList: [],   // 已办任务数据
+      // 已办任务总条数,用于分页
+      myDoneTaskTotal: 0,
+      myList: [],   // 我的单据数据
+      // 我的单据总条数,用于分页
+      myTotal: 0,
+      channelList: [], //渠道
+      //流程图信息
+      readImage:{
+        open: false,
+        src: "",
+      },
+      // xml
+      flowData: {},
+    };
+  },
+  computed: {
+    ...mapGetters(["user"]),
+  },
+  created() {
+    // 页面初始化时,加载当前激活Tab的数据
+    this.initTabData();
+  },
+  mounted() {
+    // 渠道
+    listChannel({
+      pageNum: 1,
+      pageSize: 100,
+    }).then((response) => {
+      this.channelList = response.rows;
+    });
+  },
+  methods: {
+    // Tab切换事件处理
+    handleTabClick(tab) {
+      // tab为当前点击的Tab对象,tab.name即标识(list1/list2)
+      this.activeTab = tab.name;
+      // 根据Tab标识加载对应数据
+      this.initTabData();
+    },
+    // 初始化当前Tab数据(支持传入Tab名,默认用activeTab)
+    initTabData() {
+      switch (this.activeTab) {
+        case "list1":
+          // 待办任务:调用待办查询方法
+          this.getMyTaskList();
+          break;
+        case "list2":
+          // 已办任务:调用已办查询方法
+          this.getMyDoneTaskList();
+          break;
+        case "list3":
+          // 我的单据:调用单据查询方法
+          this.getMyList();
+          break;
+        default:
+          break;
+      }
+    },
+
+    // 1. 查询“我的待办任务”数据
+    getMyTaskList() {
+      this.loading = true;
+      // 调用待办任务接口(示例)
+      getMyTaskList(this.queryParams).then((response) => {
+        console.log( response.rows);
+        this.myTaskList = response.rows; // 表格数据
+        this.myTaskTotal = response.total; // 分页总条数
+        this.loading = false;
+      }).catch(() => {
+        this.loading = false;
+      });
+    },
+    // 2. 查询“我的已办任务”数据
+    getMyDoneTaskList() {
+      this.loading = true;
+      // 调用待办任务接口(示例)
+      getMyDoneTaskList(this.queryParams).then((response) => {
+        this.myDoneTaskList = response.rows; // 表格数据
+        this.myDoneTaskTotal = response.total; // 分页总条数
+        this.loading = false;
+      }).catch(() => {
+        this.loading = false;
+      });
+    },
+
+    // 3. 查询“我的单据”数据
+    getMyList() {
+      this.loading = true;
+      // 调用我的单据接口(示例)
+      getMyList(this.queryParams).then((response) => {
+        this.myList = response.rows;
+        this.myTotal = response.total;
+        this.loading = false;
+      }).catch(() => {
+        this.loading = false;
+      });
+    },
+
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.initTabData();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.queryParams.orderByColumn = "createTime";
+      this.queryParams.isAsc = "desc";
+      this.queryParams.pageNum = 1;
+      this.queryParams.pageSize = 10;
+      this.handleQuery();
+    },
+    clickRow(row) {
+      this.$refs.dataTable.toggleRowSelection(row);
+    },
+    // 跳转到处理页面(暂存节点页面)
+    handleEdit(row){
+      const id = row.id || this.ids;
+      const poolId=row.projectPoolId;
+      const pInstId=row.procInstId;
+      const taskId=row.taskId;
+      this.$router.push({ path: "/project/approval/edit", query: { id: poolId , pInstId: pInstId , taskId:taskId} });
+    },
+    // 签收操作
+    handleSign(row) {
+      // 标记签收人、更新状态等逻辑
+      row.signPerson = '当前用户';
+      this.$message.success('签收成功');
+    },
+    // 跳转到处理页面
+    handleProcess(row){
+      /*this.$router.push({ path: '/flowable/task/todo/detail/index',
+        query: {
+          procInsId: row.procInsId,
+          executionId: row.executionId,
+          deployId: row.deployId,
+          taskId: row.taskId,
+          taskName: row.taskName,
+          startUser: row.startUserName + '-' + row.startDeptName,
+        }})*/
+      const id = row.id || this.ids;
+      const poolId=row.projectPoolId;
+      const pInstId=row.procInstId;
+      const taskId=row.taskId;
+      this.$store.commit("SET_PROJECTITEMMESSAGE", row);
+      this.$router.push({ path: "/project/approval/audit", query: { id:poolId , pInstId: pInstId ,taskId:taskId} });
+
+    },
+    // 撤回操作
+    handleWithdraw(row) {
+      // 撤回逻辑(比如清空签收人)
+      row.signPerson = '';
+      this.$message.success('已撤回');
+    },
+    // 详情操作
+    /*handleFlowRecord(row) {
+      // 查看流程详情逻辑
+      console.log('流程详情:', row);
+    }*/
+    /*详情*/
+    handleDetail(row) {
+      const id = row.id || this.ids;
+      const poolId=row.projectPoolId;
+      const pInstId=row.procInstId;
+      this.$router.push({ path: "/project/approval/detail", query: { id: poolId , pInstId: pInstId } });
+    },
+    /** 修改按钮操作 */
+    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`
+      );
+    },
+    /** 流程图查看 */
+    handleReadImage(row){
+      this.readImage.title = "流程图";
+      this.readImage.open = true;
+      console.log(row)
+      // this.readImage.src = process.env.VUE_APP_BASE_API + "/flowable/definition/readImage/" + deploymentId;
+      flowXmlAndNode({procInsId: row.procInstId,deployId:row.deployId}).then(res => {
+        this.flowData = res.data;
+      })
+    },
+
+  },
+};
+</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;
+  }
+}
+/**找到表头那一行,然后把里面的复选框隐藏掉**/
+.hideHeaderCheckBox
+::v-deep
+.el-table__header-wrapper
+.el-table__header
+.el-checkbox {
+  display: none;
+}
+</style>

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 2537 - 0
ruoyi-ui/src/views/project/investigate/tableForm.vue


+ 0 - 2
ruoyi-ui/src/views/project/meetingList.vue

@@ -917,8 +917,6 @@ import {
   updateDecision,
   updateDecision,
 } from "@/api/invest/meeting";
 } from "@/api/invest/meeting";
 import {approvalStart} from "@/api/project/approval/pool";
 import {approvalStart} from "@/api/project/approval/pool";
-import {decisionStart} from "@/api/project/decision/pool";
-import {terminationStart} from "@/api/project/termination/pool";
 import projectItem from "../invest/components/projectItem";
 import projectItem from "../invest/components/projectItem";
 import fileItem from "../invest/components/fileItem";
 import fileItem from "../invest/components/fileItem";
 import selecDept from "../invest/components/selecDept";
 import selecDept from "../invest/components/selecDept";