armg 11 mēneši atpakaļ
vecāks
revīzija
bf047b569f
30 mainītis faili ar 5710 papildinājumiem un 996 dzēšanām
  1. 3 3
      ruoyi-ui/src/App.vue
  2. 64 0
      ruoyi-ui/src/api/invest/meeting.js
  3. 94 2
      ruoyi-ui/src/api/invest/pool.js
  4. 6 2
      ruoyi-ui/src/api/system/file.js
  5. 18 2
      ruoyi-ui/src/assets/styles/public.scss
  6. 60 12
      ruoyi-ui/src/layout/components/Sidebar/Item.vue
  7. 5 0
      ruoyi-ui/src/store/getters.js
  8. 120 2
      ruoyi-ui/src/store/modules/user.js
  9. 0 1
      ruoyi-ui/src/views/home.vue
  10. 171 20
      ruoyi-ui/src/views/invest/channel/index.vue
  11. 148 19
      ruoyi-ui/src/views/invest/components/contractList.vue
  12. 414 232
      ruoyi-ui/src/views/invest/components/dueDiligenceList.vue
  13. 2 2
      ruoyi-ui/src/views/invest/components/fileItem.vue
  14. 0 1
      ruoyi-ui/src/views/invest/components/fileList.vue
  15. 201 45
      ruoyi-ui/src/views/invest/components/followList.vue
  16. 569 93
      ruoyi-ui/src/views/invest/components/meetingList.vue
  17. 293 80
      ruoyi-ui/src/views/invest/components/poolForm.vue
  18. 368 378
      ruoyi-ui/src/views/invest/components/projectList.vue
  19. 17 14
      ruoyi-ui/src/views/invest/components/selecDept.vue
  20. 4 5
      ruoyi-ui/src/views/invest/components/tableForm.vue
  21. 53 39
      ruoyi-ui/src/views/invest/pool/detail.vue
  22. 755 7
      ruoyi-ui/src/views/invest/pool/index2.vue
  23. 725 7
      ruoyi-ui/src/views/invest/pool/index3.vue
  24. 719 6
      ruoyi-ui/src/views/invest/pool/index4.vue
  25. 716 6
      ruoyi-ui/src/views/invest/pool/index5.vue
  26. 20 0
      ruoyi-ui/src/views/invest/pool/index6.vue
  27. 22 0
      ruoyi-ui/src/views/invest/pool/index7.vue
  28. 12 1
      ruoyi-ui/src/views/login.vue
  29. 129 15
      ruoyi-ui/src/views/study/gen/index.vue
  30. 2 2
      ruoyi-ui/vue.config.js

+ 3 - 3
ruoyi-ui/src/App.vue

@@ -6,6 +6,8 @@
 </template>
 
 <script>
+// console.log(this.$store.getters.inspectNum, this.$store.state.user.inspectNum)
+// this.$store.commit("SET_INSPECTNUM", 2);
 import ThemePicker from "@/components/ThemePicker";
 export default {
   name: "App",
@@ -23,9 +25,7 @@ export default {
       },
     };
   },
-  methods: {
-   
-  },
+  methods: {},
 };
 </script>
 <style scoped>

+ 64 - 0
ruoyi-ui/src/api/invest/meeting.js

@@ -82,3 +82,67 @@ export function selectMeetingId(id) {
   })
 }
 
+
+
+// 新增立项申请​/dev-api​/invest​/approval
+export function addApproval(data) {
+  return request({
+    url: '/invest/approval',
+    method: 'post',
+    data: data
+  })
+}
+//修改立项申请 /dev-api/invest/approval
+export function updateApproval(data) {
+  return request({
+    url: '/invest/approval',
+    method: 'put',
+    data: data
+  })
+}
+// 删除立项申请
+export function delApproval(id) {
+  return request({
+    url: '/invest/approval/' + id,
+    method: 'delete'
+  })
+}
+//查询立项申请列表 
+export function getApprovalList() {
+  return request({
+    url: '/invest/approval/list',
+    method: 'get'
+  })
+}
+
+
+// 新增投决申请​/dev-api​/invest​/decision
+export function addDecision(data) {
+  return request({
+    url: '/invest/decision',
+    method: 'post',
+    data: data
+  })
+}
+//修改投决申请 ​/dev-api​/invest​/decision
+export function updateDecision(data) {
+  return request({
+    url: '/invest/decision',
+    method: 'put',
+    data: data
+  })
+}
+// 删除投决申请
+export function delDecision(id) {
+  return request({
+    url: '/invest/decision/' + id,
+    method: 'delete'
+  })
+}
+//查询投决申请列表 
+export function getDecisionList() {
+  return request({
+    url: '/invest/decision/list',
+    method: 'get'
+  })
+}

+ 94 - 2
ruoyi-ui/src/api/invest/pool.js

@@ -60,6 +60,84 @@ export function listProjectPoolId(id) {
   })
 }
 
+
+
+
+// demo获取代办
+export function getNum() {
+  return request({
+    url: '/invest/getNum',
+    method: 'get'
+  })
+}
+
+//  查询评估考察列表
+export function listReviewList() {
+  return request({
+    url: '/invest/pool/listReview',
+    method: 'get'
+  })
+}
+
+//  查询项目立项列表 ​/dev-api​/invest​/pool​/listApproval
+export function listApprovalList() {
+  return request({
+    url: '/invest/pool/listApproval',
+    method: 'get'
+  })
+}
+
+//  查询尽职背调列表 ​/dev-api​/invest​/pool​/listInvestigate
+export function listInvestigateList() {
+  return request({
+    url: '/invest/pool/listInvestigate',
+    method: 'get'
+  })
+}
+
+//  查询项目投决列表 ​/dev-api​/invest​/pool​/listDecision
+export function listDecisionList() {
+  return request({
+    url: '/invest/pool/listDecision',
+    method: 'get'
+  })
+}
+
+
+// 新增评审记录 /dev-api/invest/review
+export function addInvestReview(data) {
+  return request({
+    url: '/invest/review',
+    method: 'post',
+    data: data
+  })
+}
+//修改评审记录 /dev-api/invest/review
+export function updateInvestReview(data) {
+  return request({
+    url: '/invest/review',
+    method: 'put',
+    data: data
+  })
+}
+// 删除评审记录
+export function delInvestReview(id) {
+  return request({
+    url: '/invest/review/' + id,
+    method: 'delete'
+  })
+}
+//查询评审记录列表 
+export function getInvestReviewList() {
+  return request({
+    url: '/invest/invest/list',
+    method: 'get'
+  })
+}
+
+
+
+
 // 尽调
 // 根据项目ID获取尽调数据
 export function getlistProjectPoolId(id) {
@@ -108,7 +186,7 @@ export function addInvestigatePerson(data) {
   })
 }
 
-//  /dev-api/invest/investigate/list
+//尽调列表  /dev-api/invest/investigate/list
 export function getInvestigatelist(data) {
   return request({
     url: '/invest/investigate/list',
@@ -150,4 +228,18 @@ export function updateStatus(data) {
     method: 'put',
     data: data
   })
-}
+}
+
+// 获取尽调关联详细信息
+// /dev-api/invest/investigate/{id}
+export function getInvestReviewById(id) {
+  return request({
+    url: '/invest/review/' + id,
+    method: 'get'
+  })
+}
+
+
+
+
+// 

+ 6 - 2
ruoyi-ui/src/api/system/file.js

@@ -44,11 +44,15 @@ export function delFile(id) {
 }
 
 // 根据附件业务ID()获取附件详情信息列表
-export function listFileBusinessId(id) {
+export function listFileBusinessId(id, uploadType) {
+  let obj = { fileBusinessId: id };
+  if (uploadType) {
+    obj.uploadType = uploadType;
+  }
   return request({
     url: '/system/file/listFileBusinessId',
     method: 'get',
-    params: { fileBusinessId: id }
+    params: obj
   })
 }
 

+ 18 - 2
ruoyi-ui/src/assets/styles/public.scss

@@ -513,6 +513,22 @@
 .el-input.is-disabled .el-input__inner,.el-textarea.is-disabled .el-textarea__inner{
   color:#333!important;
 }
-.inputSimulation{
-  height:40px!important;
+.public-input-height{
+  height:36px;
+}
+.public-input-height-2{
+  height:72px;
+}
+.public-input-height-2 .inputSimulation{
+  height:72px!important;
+
+}
+.public-input-height .inputSimulation{
+  height:36px!important;
+}
+.public-text-blue{
+  color:#1890ff;
+}
+.public-cursor{
+  cursor: pointer!important;
 }

+ 60 - 12
ruoyi-ui/src/layout/components/Sidebar/Item.vue

@@ -1,33 +1,81 @@
 <script>
+import store from "@/store";
 export default {
-  name: 'MenuItem',
+  name: "MenuItem",
   functional: true,
   props: {
     icon: {
       type: String,
-      default: ''
+      default: "",
     },
     title: {
       type: String,
-      default: ''
-    }
+      default: "",
+    },
   },
   render(h, context) {
-    const { icon, title } = context.props
-    const vnodes = []
+    const { icon, title } = context.props;
+    const vnodes = [];
 
     if (icon) {
-      vnodes.push(<svg-icon icon-class={icon}/>)
+      vnodes.push(<svg-icon icon-class={icon} />);
     }
 
     if (title) {
       if (title.length > 5) {
-        vnodes.push(<span slot='title' title={(title)}>{(title)}</span>)
+        vnodes.push(
+          <span slot="title" title={title}>
+            {title}
+          </span>
+        );
       } else {
-        vnodes.push(<span slot='title'>{(title)}</span>)
+        let inspectNum = store.getters.inspectNum; //评估考察
+        let projectLXNum = store.getters.projectLXNum; //项目立项
+        let dueNum = store.getters.dueNum; //尽职背调
+        let projectTJNum = store.getters.projectTJNum; //项目投决
+        vnodes.push(
+          <span slot="title">
+            {title}
+            {title === "评估考察" && inspectNum ? (
+              <span class="hint">{inspectNum}</span>
+            ) : (
+              ""
+            )}
+            {title === "项目立项" && projectLXNum ? (
+              <span class="hint">{projectLXNum}</span>
+            ) : (
+              ""
+            )}
+            {title === "尽职背调" && dueNum ? (
+              <span class="hint">{dueNum}</span>
+            ) : (
+              ""
+            )}
+            {title === "项目投决" && projectTJNum ? (
+              <span class="hint">{projectTJNum}</span>
+            ) : (
+              ""
+            )}
+          </span>
+        );
       }
     }
-    return vnodes
-  }
-}
+    return vnodes;
+  },
+};
 </script>
+<style lang="scss" scoped>
+.hint {
+  width: 16px;
+  height: 16px;
+  border-radius: 50%;
+  background: #f8ac59;
+  color: #fff;
+  display: inline-block;
+  line-height: 16px;
+  text-align: center;
+  margin-left: 5px;
+  font-size: 12px;
+  font-weight: bold;
+}
+</style>

+ 5 - 0
ruoyi-ui/src/store/getters.js

@@ -17,6 +17,11 @@ const getters = {
   dhrmCompany: state => state.user.dhrmCompany,
   projectItemMessage:state => state.user.projectItemMessage,
   tProjectScoring:state => state.user.tProjectScoring,
+  inspectNum:state => state.user.inspectNum,
+  projectLXNum:state => state.user.projectLXNum,
+  dueNum:state => state.user.dueNum,
+  projectTJNum:state => state.user.projectTJNum,
+  projectState:state => state.user.projectState,
   permission_routes: state => state.permission.routes,
   topbarRouters:state => state.permission.topbarRouters,
   defaultRoutes:state => state.permission.defaultRoutes,

+ 120 - 2
ruoyi-ui/src/store/modules/user.js

@@ -1,5 +1,6 @@
 import { login, logout, getInfo } from '@/api/login'
 import { getToken, setToken, removeToken } from '@/utils/auth'
+import { getNum } from '@/api/invest/pool'
 
 const user = {
   state: {
@@ -12,7 +13,89 @@ const user = {
     dept: {},
     dhrmCompany: {},
     projectItemMessage: {},
-    tProjectScoring: {}
+    tProjectScoring: {},
+    // 各项代办数量
+    inspectNum: 0,//评估考察
+    projectLXNum: 0,//项目立项
+    dueNum: 0,//尽职背调
+    projectTJNum: 0,//项目投决
+    projectState: [
+      [
+        {
+          dictValue: "a",
+          dictLabel: "项目报备完成",
+        },
+        {
+          dictValue: "1",
+          dictLabel: "暂存",
+        },
+      ],
+      [
+        {
+          dictValue: "b",
+          dictLabel: "评估考察中",
+        },
+      ],
+      [
+        {
+          dictValue: "c",
+          dictLabel: "准备立项材料",
+        },
+        {
+          dictValue: "d",
+          dictLabel: "项目立项",
+        },
+        {
+          dictValue: "e",
+          dictLabel: "立项通过",
+        },
+      ],
+      [
+        {
+          dictValue: "f",
+          dictLabel: "尽职背调",
+        },
+        {
+          dictValue: "g",
+          dictLabel: "尽职背调通过",
+        },
+      ],
+      [
+        {
+          dictValue: "h",
+          dictLabel: "准备项目投决材料",
+        },
+        {
+          dictValue: "i",
+          dictLabel: "项目投决通过",
+        },
+      ],
+      [
+        {
+          dictValue: "j",
+          dictLabel: "签约协议沟通中",
+        },
+        {
+          dictValue: "k",
+          dictLabel: "协议签约完成",
+        },
+      ],
+      [
+        {
+          dictValue: "l",
+          dictLabel: "投后管理",
+        },
+        {
+          dictValue: "m",
+          dictLabel: "准备投后退出材料",
+        },
+        {
+          dictValue: "n",
+          dictLabel: "项目退出完成",
+        },
+      ],
+    ],
+
   },
 
   mutations: {
@@ -46,6 +129,18 @@ const user = {
     SET_TPROJECTSCORING: (state, tProjectScoring) => {
       state.tProjectScoring = tProjectScoring
     },
+    SET_INSPECTNUM: (state, inspectNum) => {
+      state.inspectNum = inspectNum
+    },
+    SET_PROJECTLXNUM: (state, projectLXNum) => {
+      state.projectLXNum = projectLXNum
+    },
+    SET_DUENUM: (state, dueNum) => {
+      state.dueNum = dueNum
+    },
+    SET_PROJECTTJNUM: (state, projectTJNum) => {
+      state.projectTJNum = projectTJNum
+    }
   },
 
   actions: {
@@ -70,7 +165,8 @@ const user = {
     GetInfo({ commit, state }) {
       return new Promise((resolve, reject) => {
         getInfo().then(res => {
-          const user = res.user
+          res.user.userId = res.user.userId.toString();
+          const user = res.user;
           const avatar = (user.avatar == "" || user.avatar == null) ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar;
           if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
             commit('SET_ROLES', res.roles)
@@ -115,7 +211,29 @@ const user = {
         removeToken()
         resolve()
       })
+    },
+
+    // 更新代办数量并且刷新侧边栏
+    updataNum({ commit, state }) {
+      // this.$store.dispatch("updataNum");
+      return new Promise(resolve => {
+        const inspectNum = parseInt(9);//评估考察
+        commit('SET_INSPECTNUM', inspectNum);
+        // getNum().then(res => {
+        //   const inspectNum = parseInt(res.data.inspectNum);//评估考察
+        //   const projectLXNum = parseInt(res.data.projectLXNum);//项目立项
+        //   const dueNum = parseInt(res.data.dueNum);//尽职背调
+        //   const projectTJNum = parseInt(res.data.projectTJNum);//项目投决
+        //   commit('SET_INSPECTNUM', inspectNum);
+        //   commit('SET_PROJECTLXNUM', projectLXNum);
+        //   commit('SET_DUENUM', dueNum);
+        //   commit('SET_PROJECTTJNUM', projectTJNum);
+        //   window.location.reload()
+
+        // })
+      })
     }
+
   }
 }
 

+ 0 - 1
ruoyi-ui/src/views/home.vue

@@ -25,7 +25,6 @@ export default {
       this.$store.commit('SET_SYSTEMTITLE', title)
       //生成侧边栏   
       store.dispatch("GenerateRoutes").then((accessRoutes) => {
-        console.log("accessRoutes=", accessRoutes);
         // 根据roles权限生成可访问的路由表
         router.addRoutes(accessRoutes); // 动态添加可访问路由表
         that.$router.push({ name, query: { type, title } });

+ 171 - 20
ruoyi-ui/src/views/invest/channel/index.vue

@@ -90,30 +90,30 @@
           >新增</el-button
         >
       </el-col>
-      <!-- <el-col :span="1.5">
+      <el-col :span="1.5">
         <el-button
           type="success"
           plain
           icon="el-icon-edit"
           size="mini"
           :disabled="single"
-          @click="handleUpdate"
+          @click="handleSelectData(1)"
           v-hasPermi="['invest:channel:edit']"
           >修改</el-button
         >
-      </el-col> -->
-      <!-- <el-col :span="1.5">
+      </el-col>
+      <el-col :span="1.5">
         <el-button
           type="danger"
           plain
           icon="el-icon-delete"
           size="mini"
           :disabled="multiple"
-          @click="handleDelete"
+          @click="handleSelectData(2)"
           v-hasPermi="['invest:channel:remove']"
           >删除</el-button
         >
-      </el-col> -->
+      </el-col>
       <el-col :span="1.5">
         <el-button
           type="warning"
@@ -132,6 +132,8 @@
     </el-row>
 
     <el-table
+      ref="dataTable"
+      @row-click="clickRow"
       class="tableWrapper"
       v-loading="loading"
       border
@@ -139,6 +141,12 @@
       @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="55" 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="channelCode">
         <template slot-scope="scope">
@@ -149,7 +157,11 @@
       </el-table-column>
       <el-table-column label="渠道名称" align="center" prop="channelName">
         <template slot-scope="scope">
-          <div :title="scope.row.channelName">
+          <div
+            :title="scope.row.channelName"
+            class="public-text-blue public-cursor"
+            @click="handleDetail(scope.row)"
+          >
             {{ scope.row.channelName }}
           </div>
         </template>
@@ -207,6 +219,7 @@
         </template>
       </el-table-column>
       <el-table-column
+        v-if="false"
         label="操作"
         align="center"
         width="120"
@@ -222,15 +235,15 @@
             v-hasPermi="['invest:channel:edit']"
             >修改</el-button
           >
-          <el-button
+          <!-- <el-button
             v-if="user.nickName !== scope.row.createBy"
             class="custom-blue-color"
             size="mini"
             type="text"
             icon="el-icon-search"
-            @click="handleUpdate(scope.row)"
+            @click="handleDetail(scope.row)"
             >详情</el-button
-          >
+          > -->
           <el-button
             v-if="user.nickName === scope.row.createBy"
             class="custom-red-color"
@@ -265,7 +278,7 @@
         ref="form"
         :model="form"
         :rules="rules"
-        label-width="120px"
+        label-width="100px"
       >
         <el-form-item label="渠道名称" prop="channelName">
           <el-input
@@ -372,6 +385,98 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+    <!-- 渠道详情 -->
+    <el-dialog
+      title="渠道详情"
+      :visible.sync="openDetail"
+      width="1000px"
+      append-to-body
+    >
+      <el-form
+        class="special-el-form"
+        ref="form"
+        :model="form"
+        label-width="100px"
+      >
+        <el-form-item label="渠道名称" prop="channelName">
+          <el-input maxlength="100" v-model="form.channelName" disabled />
+        </el-form-item>
+        <el-form-item label="组别" prop="channelGroup">
+          <el-select v-model="form.channelGroup" disabled>
+            <el-option
+              v-for="dict in dict.type.project_group"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="类别" prop="channelType">
+          <el-select v-model="form.channelType" disabled>
+            <el-option
+              v-for="dict in dict.type.channel_type"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="联系人" prop="contacts">
+          <el-input disabled maxlength="25" v-model="form.contacts" />
+        </el-form-item>
+        <el-form-item label="联系电话" prop="telephone">
+          <el-input disabled maxlength="20" v-model="form.telephone" />
+        </el-form-item>
+        <el-form-item label="地址" prop="address">
+          <el-input disabled maxlength="100" v-model="form.address" />
+        </el-form-item>
+        <el-form-item label="渠道负责人" prop="channelHead">
+          <el-input disabled v-model="form.channelHead" />
+        </el-form-item>
+        <el-form-item label="状态" prop="status">
+          <el-select v-model="form.status" disabled>
+            <el-option
+              v-for="dict in dict.type.channel_status"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="附件" prop="file" class="special-el-form-item">
+          <fileItem
+            ref="fileItemsDet"
+            :id="form.id"
+            @getFileList="getFileList"
+          ></fileItem>
+        </el-form-item>
+        <el-form-item
+          label="简介"
+          prop="channelBlurb"
+          class="special-el-form-item"
+        >
+          <el-input
+            maxlength="200"
+            rows="4"
+            type="textarea"
+            v-model="form.channelBlurb"
+            disabled
+          />
+        </el-form-item>
+        <el-form-item label="备注" prop="mark" class="special-el-form-item">
+          <el-input
+            maxlength="200"
+            rows="4"
+            type="textarea"
+            v-model="form.mark"
+            disabled
+          />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="openDetail = false">关 闭</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -385,6 +490,7 @@ import {
 } from "@/api/invest/channel";
 import selecDept from "../components/selecDept";
 import fileItem from "../components/fileItem";
+import { mapGetters } from "vuex";
 
 export default {
   name: "Channel",
@@ -402,8 +508,10 @@ export default {
       single: true,
       // 非多个禁用
       multiple: true,
+      // 选中数组
+      selectRowList: [],
       // 显示搜索条件
-      showSearch: true,
+      showSearch: false,
       // 总条数
       total: 0,
       // 渠道信息表格数据
@@ -470,17 +578,13 @@ export default {
         channelHead: [{ required: true, trigger: "change", message: "请选择" }],
         status: [{ required: true, trigger: "change", message: "请选择" }],
       },
-
-      user: {
-        userId: "",
-        nickName: "",
-      },
-      popType: 2, //弹窗类型 1=修改 2=详情
+      openDetail: false,
     };
   },
+  computed: {
+    ...mapGetters(["user"]),
+  },
   created() {
-    this.user = this.$store.getters.user;
-    this.user.userId = this.user.userId.toString();
     this.getList();
   },
   methods: {
@@ -554,6 +658,7 @@ export default {
       this.idsName = selection.map((item) => item.channelName);
       this.single = selection.length !== 1;
       this.multiple = !selection.length;
+      this.selectRowList = selection;
     },
     /** 新增按钮操作 */
     handleAdd() {
@@ -580,6 +685,20 @@ export default {
         }, 300);
       });
     },
+    // 详情弹窗
+    handleDetail(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      getChannel(id).then((response) => {
+        this.form = response.data;
+        this.openDetail = true;
+        setTimeout(() => {
+          this.$refs.fileItemsDet.fileList = [];
+          this.$refs.fileItemsDet.getListFileBusinessId(id);
+          this.$refs.fileItemsDet.handleButton();
+        }, 300);
+      });
+    },
 
     /** 提交按钮 */
     submitForm() {
@@ -628,6 +747,38 @@ export default {
         `channel_${new Date().getTime()}.xlsx`
       );
     },
+
+    clickRow(row) {
+      this.$refs.dataTable.toggleRowSelection(row);
+    },
+    handleSelectData(type) {
+      // type 1=修改 2=删除
+      if (this.selectRowList.length == 1) {
+        const row = this.selectRowList[0];
+        // 创建人
+        if (row.createBy === this.user.nickName) {
+          if (type === 1) {
+            // 修改
+            this.handleUpdate(row);
+          } else if (type === 2) {
+            // 删除
+            this.handleDelete(row);
+          }
+        } else {
+          this.$message({
+            message: "无权限",
+            duration: 1200,
+            type: "error",
+          });
+        }
+      } else {
+        this.$message({
+          message: "只能选择一条数据",
+          duration: 1200,
+          type: "warning",
+        });
+      }
+    },
   },
 };
 </script>

+ 148 - 19
ruoyi-ui/src/views/invest/components/contractList.vue

@@ -67,14 +67,14 @@
           >新增</el-button
         >
       </el-col>
-      <!-- <el-col :span="1.5">
+      <el-col :span="1.5">
         <el-button
           type="success"
           plain
           icon="el-icon-edit"
           size="mini"
           :disabled="single"
-          @click="handleUpdate"
+          @click="handleSelectData(1)"
           v-hasPermi="['invest:contract:edit']"
           >修改</el-button
         >
@@ -86,11 +86,11 @@
           icon="el-icon-delete"
           size="mini"
           :disabled="multiple"
-          @click="handleDelete"
+          @click="handleSelectData(2)"
           v-hasPermi="['invest:contract:remove']"
           >删除</el-button
         >
-      </el-col> -->
+      </el-col> 
       <el-col :span="1.5">
         <el-button
           type="warning"
@@ -109,6 +109,8 @@
     </el-row>
 
     <el-table
+      ref="dataTable"
+      @row-click="clickRow"
       class="tableWrapper"
       v-loading="loading"
       border
@@ -121,10 +123,17 @@
         width="55"
         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="contractName">
         <template slot-scope="scope">
-          <div :title="scope.row.contractName">
+          <div :title="scope.row.contractName" class="public-text-blue public-cursor" @click="handleDetail(scope.row)">
             {{ scope.row.contractName }}
           </div>
         </template>
@@ -197,6 +206,7 @@
       <!-- <el-table-column label="会议编号" align="center" prop="fileBusinessId" /> -->
       <el-table-column
         label="操作"
+        v-if="false"
         align="center"
         class-name="small-padding fixed-width"
       >
@@ -210,15 +220,15 @@
             v-hasPermi="['invest:contract:edit']"
             >修改</el-button
           >
-          <el-button
+          <!-- <el-button
             v-if="user.nickName !== scope.row.createBy"
             class="custom-blue-color"
             size="mini"
             type="text"
             icon="el-icon-search"
-            @click="handleUpdate(scope.row)"
+            @click="handleDetail(scope.row)"
             >详情</el-button
-          >
+          > -->
           <el-button
             v-if="user.nickName === scope.row.createBy"
             class="custom-red-color"
@@ -255,14 +265,14 @@
         :rules="rules"
         label-width="80px"
       >
-        <el-form-item label="合同名称" prop="contractName">
+        <el-form-item label="合同名称" prop="contractName" class="special-el-form-item">
           <el-input
             maxlength="100"
             v-model="form.contractName"
             placeholder="请输入合同名称"
           />
         </el-form-item>
-        <el-form-item label="合同类别" prop="contractType">
+        <el-form-item label="合同类别" prop="contractType" class="special-el-form-item">
           <el-select v-model="form.contractType" placeholder="请选择合同类别">
             <el-option
               v-for="dict in dict.type.contract_type"
@@ -272,9 +282,9 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="项目名称" prop="projectName">
+        <el-form-item label="项目名称" prop="projectName" class="special-el-form-item public-input-height-2">
           <div
-            class="el-input__inner inputSimulation yichu1"
+            class="el-input__inner inputSimulation"
             @click="handleProjectItem"
             :class="{ show_disabled: pageType === '1' }"
             :title="form.projectName"
@@ -286,7 +296,7 @@
             @getProjectInfo="getProjectInfo"
           ></projectItem>
         </el-form-item>
-        <el-form-item label="项目阶段" prop="projectStage">
+        <el-form-item label="项目阶段" prop="projectStage" class="special-el-form-item">
           <el-select
             v-model="form.projectStage"
             disabled
@@ -337,6 +347,73 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+
+    <!-- 合同详情-->
+    <el-dialog
+      title="合同详情"
+      :visible.sync="openDetail"
+      width="1000px"
+      append-to-body
+    >
+      <el-form
+        class="special-el-form"
+        ref="form"
+        :model="form"
+        label-width="80px"
+      >
+        <el-form-item label="合同名称" prop="contractName" class="special-el-form-item">
+          <el-input maxlength="100" v-model="form.contractName" disabled />
+        </el-form-item>
+        <el-form-item label="合同类别" prop="contractType" class="special-el-form-item">
+          <el-select v-model="form.contractType" disabled>
+            <el-option
+              v-for="dict in dict.type.contract_type"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="项目名称" prop="projectName" class="special-el-form-item">
+          <el-input type="textarea" rows="2" maxlength="100" v-model="form.projectName" disabled />
+        </el-form-item>
+        <el-form-item label="项目阶段" prop="projectStage" class="special-el-form-item">
+          <el-select
+            v-model="form.projectStage"
+            disabled
+            placeholder=""
+            style="width: 100%"
+          >
+            <el-option
+              v-for="dict in dict.type.project_stage"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="文件" prop="listFile" class="special-el-form-item">
+          <fileItem
+            ref="fileItemsDet"
+            :id="form.id"
+            @getFileList="getFileList"
+          ></fileItem>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark" class="special-el-form-item">
+          <el-input
+            maxlength="200"
+            rows="4"
+            type="textarea"
+            v-model="form.remark"
+            disabled
+          />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="openDetail = false">关 闭</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -351,6 +428,7 @@ import {
 import projectItem from "./projectItem";
 import fileItem from "./fileItem";
 import meetingItem from "./meetingItem";
+import { mapGetters } from "vuex";
 
 export default {
   props: {
@@ -385,8 +463,10 @@ export default {
       single: true,
       // 非多个禁用
       multiple: true,
+      // 选中数组
+      selectRowList: [],
       // 显示搜索条件
-      showSearch: true,
+      showSearch: false,
       // 总条数
       total: 0,
       // 合同管理表格数据
@@ -436,13 +516,12 @@ export default {
         // fileType: [{ required: true, trigger: "change", message: "请选择" }],
         listFile: [{ required: true, validator: validateLogo }],
       },
-      user: {
-        userId: "",
-        nickName: "",
-      },
-      popType: 2, //弹窗类型 1=修改 2=详情
+      openDetail: false,
     };
   },
+  computed: {
+    ...mapGetters(["user"]),
+  },
   created() {
     if (this.projectId) {
       this.queryParams.projectPoolId = this.projectId;
@@ -537,6 +616,7 @@ export default {
       this.idsName = selection.map((item) => item.contractName);
       this.single = selection.length !== 1;
       this.multiple = !selection.length;
+      this.selectRowList = selection;
     },
     /** 新增按钮操作 */
     handleAdd(projectId) {
@@ -573,6 +653,23 @@ export default {
         }, 300);
       });
     },
+    // 详情
+    handleDetail(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      getContract(id).then((response) => {
+        this.form = response.data;
+        this.form.projectName = response.data.tProjectPool.projectName;
+        this.form.projectStage = response.data.tProjectPool.projectStage;
+        this.form.projectGroup = response.data.tProjectPool.projectGroup;
+        this.openDetail = true;
+        setTimeout(() => {
+          this.$refs.fileItemsDet.fileList = [];
+          this.$refs.fileItemsDet.getListFileBusinessId(id);
+          this.$refs.fileItemsDet.handleButton();
+        }, 300);
+      });
+    },
     /** 提交按钮 */
     submitForm() {
       this.$refs["form"].validate((valid) => {
@@ -619,6 +716,38 @@ export default {
         `contract_${new Date().getTime()}.xlsx`
       );
     },
+    
+    clickRow(row) {
+      this.$refs.dataTable.toggleRowSelection(row);
+    },
+    handleSelectData(type) {
+      // type 1=修改 2=删除
+      if (this.selectRowList.length == 1) {
+        const row = this.selectRowList[0];
+        // 创建人
+        if (row.createBy === this.user.nickName) {
+          if (type === 1) {
+            // 修改
+            this.handleUpdate(row);
+          } else if (type === 2) {
+            // 删除
+            this.handleDelete(row);
+          }
+        } else {
+          this.$message({
+            message: "无权限",
+            duration: 1200,
+            type: "error",
+          });
+        }
+      } else {
+        this.$message({
+          message: "只能选择一条数据",
+          duration: 1200,
+          type: "warning",
+        });
+      }
+    },
   },
 };
 </script>

+ 414 - 232
ruoyi-ui/src/views/invest/components/dueDiligenceList.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="app-container">
-    <div v-show="type == 1">
-      <el-table border :data="dueList" class="tableWrapper">
+    <div>
+      <el-table v-if="false" border :data="dueList" class="tableWrapper">
         <!-- <el-table-column  type="selection" width="55" align="center" /> -->
         <el-table-column label="尽调名称" align="center" prop="investigateName">
           <template slot-scope="scope">
@@ -105,235 +105,393 @@
             >
           </template>
         </el-table-column>
-        <!-- 添加或修改尽调申请 -->
-        <el-dialog
-          :title="dueDiligenceTit"
-          :visible.sync="dueDiligenceOpen"
-          width="1000px"
-          append-to-body
+      </el-table>
+    </div>
+    <!-- 添加或修改尽调申请 -->
+    <el-dialog
+      :title="dueDiligenceTit"
+      :visible.sync="dueDiligenceOpen"
+      width="1100px"
+      append-to-body
+    >
+      <el-form
+        ref="dueForm"
+        class="special-el-form"
+        :model="dueForm"
+        :rules="dueRules"
+        label-width="170px"
+      >
+        <el-form-item
+          label="项目名称"
+          prop="projectName"
+          class="special-el-form-item"
         >
-          <el-form
-            ref="dueForm"
-            class="special-el-form"
-            :model="dueForm"
-            :rules="dueRules"
-            label-width="120px"
-          >
-            <el-form-item label="尽调名称" prop="investigateName">
-              <el-input
-                v-model="dueForm.investigateName"
-                placeholder="请输入尽调名称"
-              />
-            </el-form-item>
-            <el-form-item label="项目名称" prop="projectName">
-              <el-input disabled v-model="dueForm.projectName" />
-            </el-form-item>
-            <el-form-item label="尽调人员" prop="investigatePerson">
-              <div
-                class="el-input__inner inputSimulation"
-                @click="handleSelectPeople"
-              >
-                {{
-                  dueForm.investigatePerson
-                    ? dueForm.investigatePerson
-                    : "请选择尽调人员"
-                }}
-              </div>
-            </el-form-item>
-            <el-form-item label="尽调费用(元)" prop="investigateCost">
-              <el-input
-                v-model="dueForm.investigateCost"
-                placeholder="请输入尽调费用"
-                onkeyup="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3').replace(/-/g, '')"
-              />
-            </el-form-item>
-            <el-form-item label="文件" prop="file" class="special-el-form-item">
-              <fileItem
-                ref="fileItems"
-                :id="dueForm.id"
-                @getFileList="getFileList"
-              ></fileItem>
-            </el-form-item>
-            <el-form-item
-              label="描述"
-              prop="describe"
-              class="special-el-form-item"
-            >
-              <el-input
-                rows="4"
-                v-model="dueForm.describe"
-                type="textarea"
-                placeholder="请输入内容"
-              />
-            </el-form-item>
-            <el-form-item
-              label="备注"
-              prop="remark"
-              class="special-el-form-item"
-            >
-              <el-input
-                rows="4"
-                type="textarea"
-                v-model="dueForm.remark"
-                placeholder="请输入备注"
-              />
-            </el-form-item>
-          </el-form>
-          <div slot="footer" class="dialog-footer">
-            <el-button type="primary" @click="submitDueForm" v-preventReClick
-              >确 定</el-button
-            >
-            <el-button @click="cancelDueForm">取 消</el-button>
-          </div>
-        </el-dialog>
-        <!-- 添加或修改尽调报告 -->
-        <el-dialog
-          :title="dueDiligenceTit1"
-          :visible.sync="dueDiligenceOpen1"
-          width="1000px"
-          append-to-body
+          <el-input
+            rows="2"
+            type="textarea"
+            disabled
+            v-model="dueForm.projectName"
+          />
+        </el-form-item>
+        <el-form-item
+          label="尽调名称"
+          prop="investigateName"
+          class="special-el-form-item"
         >
-          <h3>尽调申请详情</h3>
-          <el-divider></el-divider>
-          <el-form
-            ref="duePeportForm"
-            class="special-el-form"
-            :model="duePeportForm"
-            :rules="dueRules1"
-            label-width="100px"
+          <el-input
+            maxlength="100"
+            v-model="dueForm.investigateName"
+            placeholder="请输入尽调名称"
+          />
+        </el-form-item>
+        <el-form-item
+          label="尽调地点"
+          prop="address"
+          class="special-el-form-item"
+        >
+          <el-input
+            maxlength="100"
+            v-model="dueForm.address"
+            placeholder="请输入尽调地点"
+          />
+        </el-form-item>
+
+        <el-form-item label="期望尽调开始时间" prop="startTime">
+          <el-date-picker
+            clearable
+            v-model="dueForm.startTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择期望尽调开始时间"
           >
-            <el-form-item label="尽调名称">
-              <el-input
-                disabled
-                v-model="dueForm.investigateName"
-                placeholder="请输入尽调名称"
-              />
-            </el-form-item>
-            <el-form-item label="项目名称">
-              <el-input disabled v-model="dueForm.projectName" />
-            </el-form-item>
-            <el-form-item label="尽调人员">
-              <el-input disabled v-model="dueForm.investigatePerson" />
-            </el-form-item>
-            <el-form-item label="尽调费用(元)">
-              <el-input disabled v-model="dueForm.investigateCost" />
-            </el-form-item>
-            <el-form-item label="文件" class="special-el-form-item">
-              <!-- class="show_disabled" -->
-              <fileItem
-                ref="fileItems1"
-                :id="dueForm.id"
-                @getFileList="getFileList"
-              ></fileItem>
-            </el-form-item>
-            <el-form-item label="描述" class="special-el-form-item">
-              <el-input
-                disabled
-                rows="4"
-                v-model="dueForm.describe"
-                type="textarea"
-              />
-            </el-form-item>
-            <el-form-item label="备注" class="special-el-form-item">
-              <el-input
-                disabled
-                rows="4"
-                type="textarea"
-                v-model="dueForm.remark"
-              />
-            </el-form-item>
-            <h3>尽调报告</h3>
-            <el-divider></el-divider>
-            <el-form-item
-              label="文件"
-              prop="listFile"
-              class="special-el-form-item"
-            >
-              <fileItem
-                ref="reportFileItems"
-                :id="duePeportForm.id"
-                @getFileList="getreportFileList"
-              ></fileItem>
-            </el-form-item>
-            <el-form-item
-              label="备注"
-              prop="remark"
-              class="special-el-form-item"
-            >
-              <el-input
-                rows="4"
-                type="textarea"
-                v-model="duePeportForm.remark"
-                placeholder="请输入备注"
-              />
-            </el-form-item>
-          </el-form>
-          <div slot="footer" class="dialog-footer">
-            <el-button
-              type="primary"
-              @click="submitduePeportForm"
-              v-preventReClick
-              >确 定</el-button
-            >
-            <el-button @click="cancelduePeportForm">取 消</el-button>
-          </div>
-        </el-dialog>
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="期望尽调结束时间" prop="endTime">
+          <el-date-picker
+            clearable
+            v-model="dueForm.endTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择期望尽调结束时间"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="尽调资料是否齐全" prop="resource">
+          <el-radio-group v-model="dueForm.resource">
+            <el-radio label="1">是</el-radio>
+            <el-radio label="0">否</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="是否有第三方投资机构" prop="organization">
+          <el-radio-group v-model="dueForm.organization">
+            <el-radio label="1">是</el-radio>
+            <el-radio label="0">否</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="尽调费用(元)" prop="investigateCost">
+          <el-input
+            v-model="dueForm.investigateCost"
+            placeholder="请输入尽调费用"
+            onkeyup="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3').replace(/-/g, '')"
+          />
+        </el-form-item>
+        <el-form-item label="尽调财务数据截止日期" prop="upToTime">
+          <el-date-picker
+            clearable
+            v-model="dueForm.upToTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择尽调财务数据截止日期"
+          >
+          </el-date-picker>
+        </el-form-item>
 
-        <!-- 查看该申请下的所有尽调报告 -->
-        <el-dialog
-          title="尽调报告"
-          :visible.sync="dueDiligenceOpen2"
-          width="1000px"
-          append-to-body
-          class="examineDialog"
+        <el-form-item
+          label="尽调人员"
+          prop="investigatePerson"
+          class="special-el-form-item public-input-height-2"
         >
-          <div v-if="dueAllPeportList.length > 0">
-            <el-form
-              v-for="(item, index) in dueAllPeportList"
-              :key="index"
-              class="special-el-form"
-              :model="item"
-              label-width="100px"
-            >
-              <el-form-item label="尽调人员" class="special-el-form-item">
-                <el-input disabled v-model="item.investigatePerson" />
-              </el-form-item>
-              <el-form-item label="文件" class="special-el-form-item">
-                <!-- class="show_disabled" -->
-                <fileItem
-                  ref="dueAllreportFileItems"
-                  :id="item.id"
-                  @getFileList="getreportFileList"
-                ></fileItem>
-              </el-form-item>
-              <el-form-item label="备注" class="special-el-form-item">
-                <el-input
-                  disabled
-                  rows="4"
-                  type="textarea"
-                  v-model="item.remark"
-                  placeholder="请输入备注"
-                />
-              </el-form-item>
-              <el-divider></el-divider>
-            </el-form>
-          </div>
           <div
-            v-else
-            class="public-flex-center public-padded-t-20"
-            style="color: #909399"
+            class="el-input__inner inputSimulation"
+            @click="handleSelectPeople"
           >
-            暂无数据
+            {{
+              dueForm.investigatePerson
+                ? dueForm.investigatePerson
+                : "请选择尽调人员"
+            }}
           </div>
+        </el-form-item>
+        <el-form-item
+          label="尽调背调资料"
+          prop="file"
+          class="special-el-form-item"
+        >
+          <fileItem
+            ref="fileItems"
+            :id="dueForm.id"
+            @getFileList="getFileList"
+          ></fileItem>
+        </el-form-item>
+        <el-form-item label="描述" prop="describe" class="special-el-form-item">
+          <el-input
+            rows="4"
+            v-model="dueForm.describe"
+            type="textarea"
+            placeholder="请输入内容"
+          />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark" class="special-el-form-item">
+          <el-input
+            rows="4"
+            type="textarea"
+            v-model="dueForm.remark"
+            placeholder="请输入备注"
+          />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitDueForm" v-preventReClick
+          >确 定</el-button
+        >
+        <el-button @click="cancelDueForm">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!-- 添加或修改尽调报告 -->
+    <el-dialog
+      :title="dueDiligenceTit1"
+      :visible.sync="dueDiligenceOpen1"
+      width="1100px"
+      append-to-body
+    >
+      <h3>尽调申请详情</h3>
+      <el-divider></el-divider>
+      <el-form
+        ref="duePeportForm"
+        class="special-el-form"
+        :model="duePeportForm"
+        :rules="dueRules1"
+        label-width="170px"
+      >
+        <el-form-item label="项目名称" class="special-el-form-item">
+          <el-input
+            type="textarea"
+            rows="2"
+            disabled
+            v-model="dueForm.projectName"
+          />
+        </el-form-item>
+        <el-form-item label="尽调名称" class="special-el-form-item">
+          <el-input
+            disabled
+            v-model="dueForm.investigateName"
+            placeholder="请输入尽调名称"
+          />
+        </el-form-item>
+        <el-form-item
+          label="尽调地点"
+          prop="address"
+          class="special-el-form-item"
+        >
+          <el-input disabled maxlength="100" v-model="dueForm.address" />
+        </el-form-item>
+        <el-form-item label="期望尽调开始时间" prop="startTime">
+          <el-date-picker
+            disabled
+            clearable
+            v-model="dueForm.startTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="期望尽调结束时间" prop="endTime">
+          <el-date-picker
+            disabled
+            clearable
+            v-model="dueForm.endTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="尽调资料是否齐全" prop="resource">
+          <el-radio-group v-model="dueForm.resource" disabled>
+            <el-radio label="1">是</el-radio>
+            <el-radio label="0">否</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="是否有第三方投资机构" prop="organization">
+          <el-radio-group v-model="dueForm.organization" disabled>
+            <el-radio label="1">是</el-radio>
+            <el-radio label="0">否</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="尽调费用(元)">
+          <el-input disabled v-model="dueForm.investigateCost" />
+        </el-form-item>
 
-          <div slot="footer" class="dialog-footer">
-            <el-button type="primary" @click="dueDiligenceOpen2 = false"
-              >确 定</el-button
-            >
-            <el-button @click="dueDiligenceOpen2 = false">取 消</el-button>
-          </div>
-        </el-dialog>
-      </el-table>
+        <el-form-item label="尽调财务数据截止日期" prop="upToTime">
+          <el-date-picker
+            disabled
+            clearable
+            v-model="dueForm.upToTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="尽调人员" class="special-el-form-item">
+          <el-input
+            type="textarea"
+            rows="2"
+            disabled
+            v-model="dueForm.investigatePerson"
+          />
+        </el-form-item>
+        <el-form-item label="尽调资料" class="special-el-form-item">
+          <fileItem
+            ref="fileItems1"
+            :id="dueForm.id"
+            @getFileList="getFileList"
+          ></fileItem>
+        </el-form-item>
+        <el-form-item label="描述" class="special-el-form-item">
+          <el-input
+            disabled
+            rows="4"
+            v-model="dueForm.describe"
+            type="textarea"
+          />
+        </el-form-item>
+        <el-form-item label="备注" class="special-el-form-item">
+          <el-input
+            disabled
+            rows="4"
+            type="textarea"
+            v-model="dueForm.remark"
+          />
+        </el-form-item>
+        <h3>尽调报告</h3>
+        <el-divider></el-divider>
+        <el-form-item label="报告" prop="listFile" class="special-el-form-item">
+          <fileItem
+            ref="reportFileItems"
+            :id="duePeportForm.id"
+            @getFileList="getreportFileList"
+          ></fileItem>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark" class="special-el-form-item">
+          <el-input
+            rows="4"
+            type="textarea"
+            v-model="duePeportForm.remark"
+            placeholder="请输入备注"
+          />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitduePeportForm" v-preventReClick
+          >确 定</el-button
+        >
+        <el-button @click="cancelduePeportForm">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!-- 查看该申请下的所有尽调报告 -->
+    <el-dialog
+      v-if="false"
+      title="尽调报告"
+      :visible.sync="dueDiligenceOpen2"
+      width="1100px"
+      append-to-body
+      class="examineDialog"
+    >
+      <div v-if="dueAllPeportList.length > 0">
+        <el-form
+          v-for="(item, index) in dueAllPeportList"
+          :key="index"
+          class="special-el-form"
+          :model="item"
+          label-width="100px"
+        >
+          <el-form-item label="尽调人员" class="special-el-form-item">
+            <el-input disabled v-model="item.investigatePerson" />
+          </el-form-item>
+          <el-form-item label="报告" class="special-el-form-item">
+            <!-- class="show_disabled" -->
+            <fileItem
+              ref="dueAllreportFileItems"
+              :id="item.id"
+              @getFileList="getreportFileList"
+            ></fileItem>
+          </el-form-item>
+          <el-form-item label="备注" class="special-el-form-item">
+            <el-input
+              disabled
+              rows="4"
+              type="textarea"
+              v-model="item.remark"
+              placeholder="请输入备注"
+            />
+          </el-form-item>
+          <el-divider></el-divider>
+        </el-form>
+      </div>
+      <div
+        v-else
+        class="public-flex-center public-padded-t-20"
+        style="color: #909399"
+      >
+        暂无数据
+      </div>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="dueDiligenceOpen2 = false"
+          >确 定</el-button
+        >
+        <el-button @click="dueDiligenceOpen2 = false">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!-- 尽调详情 -->
+    <div v-if="type == 1">
+        <div v-if="dueAllPeportList.length > 0">
+        <el-form
+          v-for="(item, index) in dueAllPeportList"
+          :key="index"
+          class="special-el-form"
+          :model="item"
+          label-width="100px"
+        >
+          <el-form-item label="尽调人员" class="special-el-form-item">
+            <el-input disabled v-model="item.investigatePerson" />
+          </el-form-item>
+          <el-form-item label="报告" class="special-el-form-item">
+            <!-- class="show_disabled" -->
+            <fileItem
+              ref="dueAllreportFileItems"
+              :id="item.id"
+              @getFileList="getreportFileList"
+            ></fileItem>
+          </el-form-item>
+          <el-form-item label="备注" class="special-el-form-item">
+            <el-input
+              disabled
+              rows="4"
+              type="textarea"
+              v-model="item.remark"
+              placeholder="请输入备注"
+            />
+          </el-form-item>
+          <el-divider></el-divider>
+        </el-form>
+      </div>
+      <div
+        v-else
+        class="public-flex-center public-padded-t-20"
+        style="color: #909399"
+      >
+        暂无数据
+      </div>
     </div>
     <!--选择人员-->
     <selecUser
@@ -361,6 +519,7 @@ import projectItem from "./projectItem";
 import fileItem from "./fileItem";
 import selecDept from "./selecDept";
 import selecUser from "./selecUser";
+import { mapGetters } from "vuex";
 
 export default {
   props: {
@@ -373,7 +532,7 @@ export default {
       required: false,
     },
     type: {
-      type: Number, //1显示表格  2不显示
+      type: Number, //1显示最新的尽调申请及报告  2不显示 只有弹窗
     },
   },
   dicts: ["up_way", "project_stage"],
@@ -395,10 +554,6 @@ export default {
       userVisible: false,
       dueList: [],
       total: null,
-      user: {
-        userId: null,
-        nickName: null,
-      },
       dueDiligenceTit: "",
       dueDiligenceOpen: false,
       dueDiligenceTit1: "",
@@ -426,6 +581,14 @@ export default {
         investigatePerson: null,
         investigatePersonId: null,
         investigateCost: null,
+        //
+        startTime: null,
+        endTime: null,
+        address: null,
+        resource: null,
+        organization: null,
+        upToTime: null,
+        //
         describe: null,
         remark: null,
         delFlag: null,
@@ -453,12 +616,24 @@ export default {
           { required: true, trigger: "blur", message: "请输入" },
         ],
         describe: [{ required: true, trigger: "blur", message: "请输入" }],
+
+        startTime: { required: true, trigger: "blur", message: "请选择" },
+        endTime: { required: true, trigger: "blur", message: "请选择" },
+        address: [{ required: true, trigger: "blur", message: "请输入" }],
+        resource: [{ required: true, trigger: "change", message: "请选择" }],
+        organization: [
+          { required: true, trigger: "change", message: "请选择" },
+        ],
+        upToTime: { required: true, trigger: "blur", message: "请选择" },
       },
       fileList: [],
       reportFileList: [],
       dueDiligenceType: "0",
     };
   },
+  computed: {
+    ...mapGetters(["user"]),
+  },
   watch: {
     dueDiligenceOpen: function (newValue, oldValue) {
       if (newValue === false) {
@@ -468,8 +643,6 @@ export default {
     },
   },
   mounted() {
-    this.user = this.$store.getters.user;
-    this.user.userId = this.user.userId.toString();
     this.getList();
   },
   methods: {
@@ -542,7 +715,7 @@ export default {
       getInvestigateById(id).then((response) => {
         if (response.data) {
           this.dueForm = response.data;
-          this.dueForm.projectName = this.projectName;
+          // this.dueForm.projectName = this.projectName;
           this.selectValues = response.data.investigatePersonId;
           this.selectNameValues = response.data.investigatePerson;
           this.dueDiligenceTit = "修改尽调申请";
@@ -613,9 +786,10 @@ export default {
         this.handleUpdate(row);
       } else if (type === "3") {
         this.dueForm = transmitForm;
-        this.dueForm.projectName = this.projectName;
+        // this.dueForm.projectName = this.projectName;
         this.duePeportForm.projectInvestigateId = this.dueForm.id;
         setTimeout(() => {
+          that.$refs.fileItems1.handleButton();
           that.$refs.fileItems1.handleButton();
           that.$refs.fileItems1.getListFileBusinessId(this.dueForm.id);
         }, 300);
@@ -637,7 +811,7 @@ export default {
       // this.dueForm.projectPoolId = row.id;
       this.dueForm.projectPoolId = this.projectId;
     },
-    // 尽调报告
+    // 尽调报告-上传
     submitduePeportForm() {
       this.$refs["duePeportForm"].validate((valid) => {
         if (valid) {
@@ -711,6 +885,14 @@ export default {
         investigatePerson: null,
         investigatePersonId: null,
         investigateCost: null,
+        //
+        startTime: null,
+        endTime: null,
+        address: null,
+        resource: null,
+        organization: null,
+        upToTime: null,
+        //
         describe: null,
         remark: null,
         delFlag: null,

+ 2 - 2
ruoyi-ui/src/views/invest/components/fileItem.vue

@@ -59,9 +59,9 @@ export default {
   },
   methods: {
     // 根据附件业务ID()获取附件详情信息列表
-    getListFileBusinessId(id) {
+    getListFileBusinessId(id,uploadType) {
       if (id) {
-        listFileBusinessId(id).then((response) => {
+        listFileBusinessId(id,uploadType).then((response) => {
           if (response.data.length > 0) {
             let list = response.data;
             for (let i in list) {

+ 0 - 1
ruoyi-ui/src/views/invest/components/fileList.vue

@@ -444,7 +444,6 @@ export default {
     },
     // 获取fileList
     getFileList(fileList) {
-      console.log("文件资料",fileList)
       this.fileList = fileList;
       if (fileList && fileList.length > 0) {
         this.$refs.fileForm.clearValidate(["listFile"]);

+ 201 - 45
ruoyi-ui/src/views/invest/components/followList.vue

@@ -84,14 +84,14 @@
           >新增</el-button
         >
       </el-col>
-      <!-- <el-col :span="1.5">
+      <el-col :span="1.5">
         <el-button
           type="success"
           plain
           icon="el-icon-edit"
           size="mini"
           :disabled="single"
-          @click="handleUpdate"
+          @click="handleSelectData(1)"
           v-hasPermi="['invest:record:edit']"
           >修改</el-button
         >
@@ -103,11 +103,11 @@
           icon="el-icon-delete"
           size="mini"
           :disabled="multiple"
-          @click="handleDelete"
+          @click="handleSelectData(2)"
           v-hasPermi="['invest:record:remove']"
           >删除</el-button
         >
-      </el-col> -->
+      </el-col>
       <el-col :span="1.5">
         <el-button
           type="warning"
@@ -126,6 +126,8 @@
     </el-row>
 
     <el-table
+      ref="dataTable"
+      @row-click="clickRow"
       class="tableWrapper"
       v-if="type !== '3'"
       v-loading="loading"
@@ -139,6 +141,12 @@
         width="55"
         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="projectId" /> -->
       <el-table-column
@@ -147,17 +155,16 @@
         prop="tProjectPool.projectName"
       >
         <template slot-scope="scope">
-          <div :title="scope.row.tProjectPool.projectName">
+          <div
+            :title="scope.row.tProjectPool.projectName"
+            class="public-text-blue public-cursor"
+            @click="handleDetail(scope.row)"
+          >
             {{ scope.row.tProjectPool.projectName }}
           </div>
         </template>
       </el-table-column>
-      <el-table-column
-        label="跟进人"
-        width="100"
-        align="center"
-        prop="upPerson"
-      >
+      <el-table-column label="跟进人" align="center" prop="upPerson">
         <template slot-scope="scope">
           <div :title="scope.row.upPerson">
             {{ scope.row.upPerson }}
@@ -169,12 +176,7 @@
           <dict-tag :options="dict.type.up_way" :value="scope.row.upWay" />
         </template>
       </el-table-column>
-      <el-table-column
-        label="公司联系人"
-        width="80"
-        align="center"
-        prop="contacts"
-      >
+      <el-table-column label="公司联系人" align="center" prop="contacts">
         <template slot-scope="scope">
           <div :title="scope.row.contacts">
             {{ scope.row.contacts }}
@@ -188,19 +190,14 @@
           </div>
         </template>
       </el-table-column>
-      <el-table-column
-        label="跟进日期"
-        width="100"
-        align="center"
-        prop="realityUpDate"
-      >
+      <el-table-column label="跟进日期" align="center" prop="realityUpDate">
         <template slot-scope="scope">
           <span :title="scope.row.realityUpDate">{{
             parseTime(scope.row.realityUpDate, "{y}-{m}-{d}")
           }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="创建人" width="80" align="center" prop="createBy">
+      <el-table-column label="创建人" align="center" prop="createBy">
         <template slot-scope="scope">
           <div :title="scope.row.createBy">
             {{ scope.row.createBy }}
@@ -215,12 +212,23 @@
         </template>
       </el-table-column> -->
       <!-- fixed="right" -->
+      <!-- v-if="type == '1'" -->
       <el-table-column
         label="操作"
+        v-if="false"
         align="center"
         class-name="small-padding fixed-width"
       >
         <template slot-scope="scope">
+          <!-- <el-button
+            v-if="user.nickName !== scope.row.createBy"
+            class="custom-blue-color"
+            size="mini"
+            type="text"
+            icon="el-icon-search"
+            @click="handleDetail(scope.row)"
+            >详情</el-button
+          > -->
           <el-button
             v-if="user.nickName === scope.row.createBy"
             size="mini"
@@ -230,15 +238,6 @@
             v-hasPermi="['invest:record:edit']"
             >修改</el-button
           >
-          <el-button
-            v-if="user.nickName !== scope.row.createBy"
-            class="custom-blue-color"
-            size="mini"
-            type="text"
-            icon="el-icon-search"
-            @click="handleUpdate(scope.row)"
-            >详情</el-button
-          >
           <el-button
             v-if="user.nickName === scope.row.createBy"
             class="custom-red-color"
@@ -275,9 +274,13 @@
         :rules="rules"
         label-width="120px"
       >
-        <el-form-item label="项目名称" prop="projectName">
+        <el-form-item
+          label="项目名称"
+          prop="projectName"
+          class="special-el-form-item public-input-height-2"
+        >
           <div
-            class="el-input__inner inputSimulation yichu1"
+            class="el-input__inner inputSimulation"
             @click="handleProjectItem"
             :class="{ show_disabled: pageType === '1' }"
             :title="form.projectName"
@@ -289,7 +292,11 @@
             @getProjectInfo="getProjectInfo"
           ></projectItem>
         </el-form-item>
-        <el-form-item label="项目阶段" prop="projectStage">
+        <el-form-item
+          label="项目阶段"
+          prop="projectStage"
+          class="special-el-form-item"
+        >
           <el-select v-model="form.projectStage" disabled placeholder="">
             <el-option
               v-for="dict in dict.type.project_stage"
@@ -370,6 +377,106 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+    <!-- 跟进记录详情 -->
+    <el-dialog
+      title="跟进记录详情"
+      :visible.sync="openDetail"
+      width="1000px"
+      append-to-body
+    >
+      <el-form
+        class="special-el-form"
+        ref="form"
+        :model="form"
+        label-width="120px"
+      >
+        <el-form-item
+          label="项目名称"
+          prop="projectName"
+          class="special-el-form-item"
+        >
+          <el-input
+            type="textarea"
+            rows="2"
+            disabled
+            v-model="form.projectName"
+          />
+        </el-form-item>
+        <el-form-item
+          label="项目阶段"
+          prop="projectStage"
+          class="special-el-form-item"
+        >
+          <el-select disabled v-model="form.projectStage">
+            <el-option
+              v-for="dict in dict.type.project_stage"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="公司联系人" prop="contacts">
+          <el-input disabled v-model="form.contacts" />
+        </el-form-item>
+        <el-form-item label="跟进日期" prop="realityUpDate">
+          <el-date-picker
+            clearable
+            disabled
+            v-model="form.realityUpDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="跟进人" prop="upPerson">
+          <el-input disabled v-model="form.upPerson" />
+        </el-form-item>
+        <el-form-item label="跟进方式" prop="upWay">
+          <el-select v-model="form.upWay" disabled>
+            <el-option
+              v-for="dict in dict.type.up_way"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="附件" prop="file" class="special-el-form-item">
+          <fileItem
+            ref="fileItemsDet"
+            :id="form.id"
+            @getFileList="getFileList"
+          ></fileItem>
+        </el-form-item>
+        <el-form-item
+          label="跟进内容"
+          prop="upContent"
+          class="special-el-form-item"
+        >
+          <el-input
+            maxlength="200"
+            rows="4"
+            type="textarea"
+            v-model="form.upContent"
+            disabled
+          />
+        </el-form-item>
+
+        <el-form-item label="备注" prop="mark" class="special-el-form-item">
+          <el-input
+            maxlength="200"
+            rows="4"
+            type="textarea"
+            v-model="form.mark"
+            disabled
+          />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="openDetail = false">关 闭</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -384,6 +491,7 @@ import {
 import projectItem from "./projectItem";
 import fileItem from "./fileItem";
 import selecDept from "./selecDept";
+import { mapGetters } from "vuex";
 
 export default {
   props: {
@@ -421,8 +529,10 @@ export default {
       single: true,
       // 非多个禁用
       multiple: true,
+      // 选中数组
+      selectRowList: [],
       // 显示搜索条件
-      showSearch: true,
+      showSearch: false,
       // 总条数
       total: 0,
       // 跟进记录表格数据
@@ -472,15 +582,13 @@ export default {
         upContent: [{ required: true, trigger: "blur", message: "请输入" }],
         upPerson: [{ required: true, trigger: "blur", message: "请选择" }],
       },
-      user: {
-        userId: "",
-        nickName: "",
-      },
+      openDetail: false,
     };
   },
+  computed: {
+    ...mapGetters(["user"]),
+  },
   created() {
-    this.user = this.$store.getters.user;
-    this.user.userId = this.user.userId.toString();
     // 查询该id下的列表信息
     if (this.$route.query.id) {
       this.queryParams.projectId = this.$route.query.id;
@@ -559,7 +667,7 @@ export default {
         projectStage: null,
         contacts: null,
         realityUpDate: null,
-        upPerson: null,
+        upPerson: this.user.nickName,
         upWay: null,
         upContent: null,
         mark: null,
@@ -592,6 +700,11 @@ export default {
       );
       this.single = selection.length !== 1;
       this.multiple = !selection.length;
+      this.selectRowList = selection;
+    },
+
+    clickRow(row) {
+      this.$refs.dataTable.toggleRowSelection(row);
     },
     /** 新增按钮操作 */
     handleAdd(projectId) {
@@ -631,7 +744,22 @@ export default {
         }, 300);
       });
     },
-    handleDetail(){},
+    // 详情弹窗
+    handleDetail(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      getRecord(id).then((response) => {
+        this.form = response.data;
+        this.form.projectName = response.data.tProjectPool.projectName;
+        this.form.projectStage = response.data.tProjectPool.projectStage;
+        this.openDetail = true;
+        setTimeout(() => {
+          this.$refs.fileItemsDet.fileList = [];
+          this.$refs.fileItemsDet.getListFileBusinessId(id);
+          this.$refs.fileItemsDet.handleButton();
+        }, 300);
+      });
+    },
     /** 提交按钮 */
     submitForm() {
       this.$refs["form"].validate((valid) => {
@@ -680,6 +808,34 @@ export default {
         `record_${new Date().getTime()}.xlsx`
       );
     },
+    handleSelectData(type) {
+      // type 1=修改 2=删除
+      if (this.selectRowList.length == 1) {
+        const row = this.selectRowList[0];
+        // 创建人
+        if (row.createBy === this.user.nickName) {
+          if (type === 1) {
+            // 修改
+            this.handleUpdate(row);
+          } else if (type === 2) {
+            // 删除
+            this.handleDelete(row);
+          }
+        } else {
+          this.$message({
+            message: "无权限",
+            duration: 1200,
+            type: "error",
+          });
+        }
+      } else {
+        this.$message({
+          message: "只能选择一条数据",
+          duration: 1200,
+          type: "warning",
+        });
+      }
+    },
   },
 };
 </script>

+ 569 - 93
ruoyi-ui/src/views/invest/components/meetingList.vue

@@ -98,14 +98,14 @@
           >新增</el-button
         >
       </el-col>
-      <!-- <el-col :span="1.5">
+      <el-col :span="1.5">
         <el-button
           type="success"
           plain
           icon="el-icon-edit"
           size="mini"
           :disabled="single"
-          @click="handleUpdate"
+          @click="handleSelectData(1)"
           v-hasPermi="['invest:meeting:edit']"
           >修改</el-button
         >
@@ -117,11 +117,11 @@
           icon="el-icon-delete"
           size="mini"
           :disabled="multiple"
-          @click="handleDelete"
+          @click="handleSelectData(2)"
           v-hasPermi="['invest:meeting:remove']"
           >删除</el-button
         >
-      </el-col> -->
+      </el-col>
       <el-col :span="1.5">
         <el-button
           type="warning"
@@ -140,6 +140,8 @@
     </el-row>
 
     <el-table
+      ref="dataTable"
+      @row-click="clickRow"
       class="tableWrapper"
       v-if="type !== '3'"
       v-loading="loading"
@@ -153,6 +155,13 @@
         width="55"
         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="会议编号"
@@ -174,7 +183,11 @@
         title="meetingTheme"
       >
         <template slot-scope="scope">
-          <div :title="scope.row.meetingTheme">
+          <div
+            :title="scope.row.meetingTheme"
+            class="public-text-blue public-cursor"
+            @click="handleDetail(scope.row)"
+          >
             {{ scope.row.meetingTheme }}
           </div>
         </template>
@@ -288,10 +301,11 @@
       </el-table-column>
       <el-table-column
         label="操作"
+        v-if="false"
         fixed="right"
         align="center"
         class-name="small-padding fixed-width"
-        width="200"
+        width="120"
       >
         <template slot-scope="scope">
           <el-button
@@ -303,15 +317,15 @@
             v-hasPermi="['invest:meeting:edit']"
             >修改</el-button
           >
-           <el-button
+          <!-- <el-button
             v-if="user.nickName !== scope.row.createBy"
             class="custom-blue-color"
             size="mini"
             type="text"
             icon="el-icon-search"
-            @click="handleUpdate(scope.row)"
+            @click="handleDetail(scope.row)"
             >详情</el-button
-          >
+          > -->
           <el-button
             v-if="user.nickName === scope.row.createBy"
             class="custom-red-color"
@@ -325,7 +339,9 @@
 
           <el-dropdown
             v-if="
-              scope.row.meetingType == 'LX' || scope.row.meetingType == 'TJ'
+              (scope.row.meetingType == 'LX' ||
+                scope.row.meetingType == 'TJ') &&
+              false
             "
             trigger="click"
             @command="handleCommand($event, scope.row)"
@@ -411,6 +427,41 @@
         :rules="rules"
         label-width="120px"
       >
+        <el-form-item
+          label="项目名称"
+          prop="projectName"
+          class="special-el-form-item public-input-height-2"
+          :rules="[
+            { required: verifyProjectName, trigger: 'blur', message: '请选择' },
+          ]"
+        >
+          <div
+            class="el-input__inner inputSimulation yichu1"
+            @click="handleProjectItem"
+            :class="{ show_disabled: pageType === '1' }"
+            :title="form.projectName"
+          >
+            {{ form.projectName ? form.projectName : "请选择 " }}
+          </div>
+          <projectItem
+            ref="projectItem"
+            @getProjectInfo="getProjectInfo"
+          ></projectItem>
+        </el-form-item>
+        <el-form-item
+          label="项目阶段"
+          prop="projectStage"
+          class="special-el-form-item"
+        >
+          <el-select v-model="form.projectStage" disabled placeholder="">
+            <el-option
+              v-for="dict in dict.type.project_stage"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            />
+          </el-select>
+        </el-form-item>
         <el-form-item label="会议主题" prop="meetingTheme">
           <el-input
             maxlength="100"
@@ -455,46 +506,6 @@
           </el-select>
         </el-form-item>
 
-        <el-form-item
-          label="项目名称"
-          prop="projectName"
-          :rules="[
-            { required: verifyProjectName, trigger: 'blur', message: '请选择' },
-          ]"
-        >
-          <div
-            class="el-input__inner inputSimulation yichu1"
-            @click="handleProjectItem"
-            :class="{ show_disabled: pageType === '1' }"
-            :title="form.projectName"
-          >
-            {{ form.projectName ? form.projectName : "请选择 " }}
-          </div>
-          <projectItem
-            ref="projectItem"
-            @getProjectInfo="getProjectInfo"
-          ></projectItem>
-        </el-form-item>
-        <el-form-item label="项目阶段" prop="projectStage">
-          <el-select v-model="form.projectStage" disabled placeholder="">
-            <el-option
-              v-for="dict in dict.type.project_stage"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            />
-          </el-select>
-        </el-form-item>
-        <!-- <el-form-item label="组别" prop="projectGroup">
-          <el-select v-model="form.projectGroup" disabled placeholder="">
-            <el-option
-              v-for="dict in dict.type.project_group"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            ></el-option>
-          </el-select>
-        </el-form-item> -->
         <el-form-item label="会议开始时间" prop="startTime">
           <el-date-picker
             v-model="form.startTime"
@@ -504,14 +515,6 @@
             value-format="yyyy-MM-dd HH:mm"
           >
           </el-date-picker>
-          <!-- <el-date-picker
-            clearable
-            v-model="form.startTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择会议开始时间"
-          >
-          </el-date-picker> -->
         </el-form-item>
         <el-form-item label="会议结束时间" prop="endTime">
           <el-date-picker
@@ -522,14 +525,6 @@
             placeholder="请选择会议结束时间"
           >
           </el-date-picker>
-          <!-- <el-date-picker
-            clearable
-            v-model="form.endTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择会议结束时间"
-          >
-          </el-date-picker> -->
         </el-form-item>
         <el-form-item label="会议地点" prop="place">
           <el-input
@@ -538,11 +533,12 @@
             placeholder="请输入会议地点"
           />
         </el-form-item>
-        <el-form-item label="会议发起人" prop="promoter">
-          <div
-            class="el-input__inner inputSimulation"
-            @click="openSelectDept(1)"
-          >
+        <el-form-item
+          label="会议发起人"
+          prop="promoter"
+          class="public-input-height"
+        >
+          <div class="el-input__inner" @click="openSelectDept(1)">
             {{ form.promoter ? form.promoter : "请选择会议发起人" }}
           </div>
           <selecDept
@@ -554,22 +550,15 @@
         <el-form-item
           label="会议参与人"
           prop="participants"
-          class="special-el-form-item"
+          class="special-el-form-item public-input-height-2"
         >
           <div
             class="el-input__inner inputSimulation yichu1"
             @click="handleSelectPeople()"
             :title="form.participants"
           >
-            <!-- @click="openSelectDept(2)" -->
             {{ form.participants ? form.participants : "请选择会议参与人" }}
           </div>
-          <!-- <selecDept
-            ref="selecDepts1"
-            @getDeptMoreUserInfo="getDeptMoreUserInfo"
-            :deptId="deptId"
-            :isSolo="false"
-          ></selecDept> -->
         </el-form-item>
         <el-form-item label="附件" prop="file" class="special-el-form-item">
           <fileItem
@@ -594,6 +583,274 @@
       :selectNameValues="selectNameValues"
       @handleUserSelect="handleUserSelect"
     ></selecUser>
+    <!-- 会议记录详情-->
+    <el-dialog
+      title="会议详情"
+      :visible.sync="openDetail"
+      width="1000px"
+      append-to-body
+    >
+      <el-form
+        class="special-el-form"
+        ref="form"
+        :model="form"
+        label-width="120px"
+      >
+        <el-form-item
+          label="项目名称"
+          prop="projectName"
+          class="special-el-form-item"
+        >
+          <el-input
+            type="textarea"
+            rows="2"
+            v-model="form.projectName"
+            disabled
+          />
+        </el-form-item>
+        <el-form-item
+          label="项目阶段"
+          prop="projectStage"
+          class="special-el-form-item"
+        >
+          <el-select v-model="form.projectStage" disabled>
+            <el-option
+              v-for="dict in dict.type.project_stage"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="会议主题" prop="meetingTheme">
+          <el-input maxlength="100" v-model="form.meetingTheme" disabled />
+        </el-form-item>
+        <el-form-item label="会议类别" prop="meetingType">
+          <el-select v-if="showAllType" v-model="form.meetingType" disabled>
+            <el-option
+              v-for="dict in meetingTypeList"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+          <el-select v-else v-model="form.meetingType" disabled>
+            <el-option
+              v-for="dict in meetingTypeList1"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="会议开始时间" prop="startTime">
+          <el-date-picker
+            v-model="form.startTime"
+            type="datetime"
+            disabled
+            format="yyyy-MM-dd HH:mm"
+            value-format="yyyy-MM-dd HH:mm"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="会议结束时间" prop="endTime">
+          <el-date-picker
+            v-model="form.endTime"
+            format="yyyy-MM-dd HH:mm"
+            value-format="yyyy-MM-dd HH:mm"
+            type="datetime"
+            disabled
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="会议地点" prop="place">
+          <el-input maxlength="100" v-model="form.place" disabled />
+        </el-form-item>
+        <el-form-item label="会议发起人" prop="promoter">
+          <el-input v-model="form.promoter" disabled />
+        </el-form-item>
+        <el-form-item
+          label="会议参与人"
+          prop="participants"
+          class="special-el-form-item"
+        >
+          <el-input
+            rows="4"
+            type="textarea"
+            v-model="form.participants"
+            disabled
+          />
+        </el-form-item>
+        <el-form-item label="附件" prop="file" class="special-el-form-item">
+          <fileItem
+            ref="fileItemsDet"
+            :id="form.id"
+            @getFileList="getFileList"
+          ></fileItem>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="openDetail = false">关 闭</el-button>
+      </div>
+    </el-dialog>
+    <!-- 立项申请弹窗 -->
+    <el-dialog
+      :title="titleLXApply"
+      :visible.sync="openLXApply"
+      width="1000px"
+      append-to-body
+    >
+      <el-form
+        class="special-el-form"
+        ref="formLXApply"
+        :model="formLXApply"
+        :rules="rulesLXApply"
+        label-width="120px"
+      >
+        <el-form-item
+          label="项目名称"
+          prop="projectName"
+          class="special-el-form-item"
+        >
+          <el-input
+            type="textarea"
+            rows="2"
+            v-model="formLXApply.projectName"
+            disabled
+          />
+        </el-form-item>
+
+        <el-form-item
+          label="项目概况"
+          prop="projectOverview"
+          class="special-el-form-item"
+        >
+          <el-input
+            rows="4"
+            type="textarea"
+            maxlength="200"
+            v-model="formLXApply.projectOverview"
+            placeholder="请输入项目概况"
+          />
+        </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"
+            placeholder="请输入项目亮点"
+          />
+        </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="participants"
+          class="special-el-form-item public-input-height-2"
+        >
+          <div
+            class="el-input__inner inputSimulation yichu1"
+            @click="handleSelectPeople()"
+            :title="formLXApply.participants"
+          >
+            {{ formLXApply.participants ? formLXApply.participants : "请选择" }}
+          </div>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFormLXApply" v-preventReClick
+          >确 定</el-button
+        >
+        <el-button @click="openLXApply = false">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!-- 投决申请弹窗 -->
+    <el-dialog
+      :title="titleTJApply"
+      :visible.sync="openTJApply"
+      width="1000px"
+      append-to-body
+    >
+      <el-form
+        class="special-el-form"
+        ref="formTJApply"
+        :model="formTJApply"
+        :rules="rulesTJApply"
+        label-width="120px"
+      >
+        <el-form-item
+          label="项目名称"
+          prop="projectName"
+          class="special-el-form-item"
+        >
+          <el-input
+            type="textarea"
+            rows="2"
+            v-model="formTJApply.projectName"
+            disabled
+          />
+        </el-form-item>
+
+        <el-form-item
+          label="股权/其他合作商务条款"
+          prop="provision"
+          class="special-el-form-item"
+        >
+          <el-input
+            rows="4"
+            type="textarea"
+            maxlength="200"
+            v-model="formTJApply.provision"
+            placeholder="请输入股权/其他合作商务条款"
+          />
+        </el-form-item>
+        <el-form-item
+          label="投决资料"
+          prop="listFile"
+          class="special-el-form-item"
+        >
+          <fileItem
+            ref="fileItemTJApply"
+            :id="formTJApply.id"
+            @getFileList="getFileListTJApply"
+          ></fileItem>
+        </el-form-item>
+        <el-form-item
+          label="参与人"
+          prop="participants"
+          class="special-el-form-item public-input-height-2"
+        >
+          <div
+            class="el-input__inner inputSimulation yichu1"
+            @click="handleSelectPeople()"
+            :title="formTJApply.participants"
+          >
+            {{ formTJApply.participants ? formTJApply.participants : "请选择" }}
+          </div>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFormTJApply" v-preventReClick
+          >确 定</el-button
+        >
+        <el-button @click="openTJApply = false">取 消</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -605,11 +862,16 @@ import {
   addMeeting,
   updateMeeting,
   getCanScoringMeetingId,
+  addApproval,
+  updateApproval,
+  addDecision,
+  updateDecision,
 } from "@/api/invest/meeting";
 import projectItem from "./projectItem";
 import fileItem from "./fileItem";
 import selecDept from "./selecDept";
 import selecUser from "./selecUser";
+import { mapGetters } from "vuex";
 
 export default {
   props: {
@@ -643,6 +905,13 @@ export default {
     },
   },
   data() {
+    const validateLogo = (rule, value, callback) => {
+      if (this.fileListLXApply.length <= 0) {
+        callback(new Error("请上传文件"));
+      } else {
+        callback();
+      }
+    };
     return {
       meetingTypeDisabled: false, //会议类别
       showMenu: false,
@@ -667,8 +936,10 @@ export default {
       single: true,
       // 非多个禁用
       multiple: true,
+      // 选中数组
+      selectRowList: [],
       // 显示搜索条件
-      showSearch: true,
+      showSearch: false,
       // 总条数
       total: 0,
       // 会议记录表格数据
@@ -758,17 +1029,54 @@ export default {
         },
       ],
       showAllType: false,
-      user: {
-        userId: "",
-        nickName: "",
+      openDetail: false,
+      // 立项申请
+      titleLXApply: "",
+      openLXApply: false,
+      formLXApply: {
+        id: null,
+        projectPoolId: null,
+        projectName: null,
+        projectOverview: null,
+        projectSparkle: null,
+        listFile: null,
+        participants: null,
+        participantsId: null,
+      },
+      fileListLXApply: [],
+      rulesLXApply: {
+        projectOverview: [
+          { required: true, trigger: "blur", message: "请输入" },
+        ],
+        projectSparkle: [
+          { required: true, trigger: "blur", message: "请输入" },
+        ],
+        listFile: [{ required: true, validator: validateLogo }],
+      },
+      // 投决申请
+      titleTJApply: "",
+      openTJApply: false,
+      formTJApply: {
+        id: null,
+        projectPoolId: null,
+        projectName: null,
+        provision: null,
+        listFile: null,
+        participants: null,
+        participantsId: null,
+      },
+      fileListTJApply: [],
+      rulesTJApply: {
+        provision: [{ required: true, trigger: "blur", message: "请输入" }],
+        listFile: [{ required: true, validator: validateLogo }],
       },
-      popType: 2, //弹窗类型 1=修改 2=详情
     };
   },
+  computed: {
+    ...mapGetters(["user"]),
+  },
   created() {
-    this.user = this.$store.getters.user;
     this.showAllType = this.type === "3";
-    this.user.userId = this.user.userId.toString();
     // 查询该id下的列表信息
     if (this.$route.query.id) {
       this.queryParams.projectPoolId = this.$route.query.id;
@@ -803,16 +1111,24 @@ export default {
     handleUserSelect(selection) {
       const that = this;
       if (selection && selection[0]) {
+        let form;
+        if (this.open) {
+          form = this.form;
+        } else if (this.openLXApply) {
+          form = this.formLXApply;
+        } else if (this.openTJApply) {
+          form = this.formTJApply;
+        }
         if (selection instanceof Array) {
           const userIds = selection.map((item) => item.userId);
           const nickName = selection.map((item) => item.nickName);
-          this.form.participants = nickName.join(",");
-          this.form.participantsId = userIds.join(",");
+          form.participants = nickName.join(",");
+          form.participantsId = userIds.join(",");
           this.selectNameValues = nickName.join(",");
           this.selectValues = userIds.join(",");
         } else {
-          this.form.participants = selection.nickName;
-          this.form.participantsId = selection.userId;
+          form.participants = selection.nickName;
+          form.participantsId = selection.userId;
           this.selectNameValues = selection.nickName;
           this.selectValues = selection.userId;
         }
@@ -909,7 +1225,7 @@ export default {
       this.form.participantsId = peopleIdStr;
       this.$refs.form.clearValidate(["participants"]);
     },
-    // 获取fileList
+    // 会议申请附件回显
     getFileList(fileList) {
       if (fileList && fileList.length > 0) {
         this.fileList = fileList;
@@ -917,6 +1233,44 @@ export default {
         this.fileList = [];
       }
     },
+    // 展示立项申请弹窗
+    showLXApplyPop(row) {
+      this.resetLXApply(row);
+      this.fileListLXApply = [];
+      this.openLXApply = true;
+      this.titleLXApply = "立项申请";
+      setTimeout(() => {
+        this.$refs.fileItemLXApply.fileList = [];
+      }, 200);
+    },
+    // 展示投决申请弹窗
+    showTJApplyPop(row) {
+      this.resetTJApply(row);
+      this.fileListLXApply = [];
+      this.openTJApply = true;
+      this.titleTJApply = "投决申请";
+      setTimeout(() => {
+        this.$refs.fileItemTJApply.fileList = [];
+      }, 200);
+    },
+    // 立项申请附件回显
+    getFileListLXApply(fileList) {
+      this.fileListLXApply = fileList;
+      if (fileList && fileList.length > 0) {
+        this.$refs.formLXApply.clearValidate(["listFile"]);
+      } else {
+        this.fileListLXApply = [];
+      }
+    },
+    // 投决申请附件回显
+    getFileListTJApply(fileList) {
+      this.fileListTJApply = fileList;
+      if (fileList && fileList.length > 0) {
+        this.$refs.formTJApply.clearValidate(["listFile"]);
+      } else {
+        this.fileListTJApply = [];
+      }
+    },
     // 获取公司信息
     getProjectInfo(info) {
       if (info.length > 0) {
@@ -950,7 +1304,7 @@ export default {
       this.open = false;
       this.reset();
     },
-    // 表单重置
+    // 会议申请表单重置
     reset() {
       this.form = {
         id: null,
@@ -977,6 +1331,30 @@ export default {
       };
       this.resetForm("form");
     },
+    // 立项申请表单重置
+    resetLXApply(row) {
+      this.formLXApply = {
+        id: null,
+        projectPoolId: row.id,
+        projectName: row.projectName,
+        projectOverview: null,
+        projectSparkle: null,
+        listFile: null,
+      };
+      this.resetForm("formLXApply");
+    },
+    // 投决申请表单重置
+    resetTJApply(row) {
+      this.formTJApply = {
+        id: null,
+        projectPoolId: row.id,
+        projectName: row.projectName,
+        projectOverview: null,
+        projectSparkle: null,
+        listFile: null,
+      };
+      this.resetForm("formTJApply");
+    },
     /** 搜索按钮操作 */
     handleQuery() {
       this.queryParams.pageNum = 1;
@@ -1002,6 +1380,7 @@ export default {
       this.idsName = selection.map((item) => item.meetingTheme);
       this.single = selection.length !== 1;
       this.multiple = !selection.length;
+      this.selectRowList = selection;
     },
     /** 新增按钮操作 */
     handleAdd(projectId, meetingType) {
@@ -1057,7 +1436,30 @@ export default {
         }, 300);
       });
     },
-    /** 提交按钮 */
+    // 详情
+    handleDetail(row) {
+      this.selectValues = null;
+      this.selectNameValues = null;
+      this.showAllType = true;
+      this.reset();
+      const id = row.id || this.ids;
+      this.meetingTypeDisabled = true;
+      getMeeting(id).then((response) => {
+        this.form = response.data;
+        this.form.projectName = response.data.tProjectPool.projectName;
+        this.form.projectStage = response.data.tProjectPool.projectStage;
+        this.form.projectGroup = response.data.tProjectPool.projectGroup;
+        this.openDetail = true;
+        this.selectValues = response.data.participantsId;
+        this.selectNameValues = response.data.participants;
+        setTimeout(() => {
+          this.$refs.fileItemsDet.fileList = [];
+          this.$refs.fileItemsDet.getListFileBusinessId(id);
+          this.$refs.fileItemsDet.handleButton();
+        }, 300);
+      });
+    },
+    /** 会议-提交按钮 */
     submitForm() {
       this.$refs["form"].validate((valid) => {
         if (valid) {
@@ -1091,6 +1493,48 @@ export default {
         }
       });
     },
+    // 项目申请-提交
+    submitFormLXApply() {
+      this.$refs["formLXApply"].validate((valid) => {
+        if (valid) {
+          this.formLXApply.listFile = this.fileListLXApply;
+          if (this.formLXApply.id != null) {
+            updateApproval(this.formLXApply).then((response) => {
+              this.$modal.msgSuccess("修改成功");
+              this.openLXApply = false;
+              this.getList();
+            });
+          } else {
+            addApproval(this.formLXApply).then((response) => {
+              this.$modal.msgSuccess("新增成功");
+              this.openLXApply = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    // 投决申请-提交
+    submitFormTJApply() {
+      this.$refs["formTJApply"].validate((valid) => {
+        if (valid) {
+          this.formTJApply.listFile = this.fileListTJApply;
+          if (this.formTJApply.id != null) {
+            updateDecision(this.formTJApply).then((response) => {
+              this.$modal.msgSuccess("修改成功");
+              this.openTJApply = false;
+              this.getList();
+            });
+          } else {
+            addDecision(this.formTJApply).then((response) => {
+              this.$modal.msgSuccess("新增成功");
+              this.openTJApply = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
@@ -1116,6 +1560,38 @@ export default {
         `meeting_${new Date().getTime()}.xlsx`
       );
     },
+
+    clickRow(row) {
+      this.$refs.dataTable.toggleRowSelection(row);
+    },
+    handleSelectData(type) {
+      // type 1=修改 2=删除
+      if (this.selectRowList.length == 1) {
+        const row = this.selectRowList[0];
+        // 创建人
+        if (row.createBy === this.user.nickName) {
+          if (type === 1) {
+            // 修改
+            this.handleUpdate(row);
+          } else if (type === 2) {
+            // 删除
+            this.handleDelete(row);
+          }
+        } else {
+          this.$message({
+            message: "无权限",
+            duration: 1200,
+            type: "error",
+          });
+        }
+      } else {
+        this.$message({
+          message: "只能选择一条数据",
+          duration: 1200,
+          type: "warning",
+        });
+      }
+    },
   },
 };
 </script>

+ 293 - 80
ruoyi-ui/src/views/invest/components/poolForm.vue

@@ -18,17 +18,30 @@
       </el-form-item>
 
       <el-form-item label="渠道" prop="channel">
-        <div class="el-input__inner inputSimulation" @click="handleChannelItem">
+        <el-select
+          v-model="form.tProjectChannel.channelName"
+          placeholder="请选择"
+          clearable
+          @change="handleChannel"
+        >
+          <el-option
+            v-for="item in channelList"
+            :key="item.id"
+            :label="item.channelName"
+            :value="item.id"
+          />
+        </el-select>
+        <!-- <div class="el-input__inner inputSimulation" @click="handleChannelItem">
           {{
             form.tProjectChannel && form.tProjectChannel.channelName
               ? form.tProjectChannel.channelName
               : "请选择渠道"
           }}
-        </div>
-        <channelItem
+        </div> -->
+        <!-- <channelItem
           ref="channelItem"
           @getChannelInfo="getChannelInfo"
-        ></channelItem>
+        ></channelItem> -->
         <!-- <el-input v-model="form.channel" placeholder="请输入渠道" /> -->
       </el-form-item>
       <el-form-item label="初次接触日期" prop="contactDate">
@@ -132,7 +145,13 @@
         <el-input
           maxlength="20"
           v-model="form.tProjectCompany.registeredCapital"
-          onkeyup="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/,'$1$2.$3').replace(/-/g, '')"
+          @input="
+            (value) =>
+              (form.tProjectCompany.registeredCapital = value
+                .replace(/[^0-9.]/g, '')
+                .replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/, '$1$2.$3')
+                .replace(/-/g, ''))
+          "
           placeholder="请输入注册资本"
         />
       </el-form-item>
@@ -140,7 +159,13 @@
         <el-input
           maxlength="20"
           v-model="form.tProjectCompany.paidCapital"
-          onkeyup="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/,'$1$2.$3').replace(/-/g, '')"
+          @input="
+            (value) =>
+              (form.tProjectCompany.paidCapital = value
+                .replace(/[^0-9.]/g, '')
+                .replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/, '$1$2.$3')
+                .replace(/-/g, ''))
+          "
           placeholder="请输入实缴资本"
         />
       </el-form-item>
@@ -166,6 +191,16 @@
           placeholder="请输入所属类型"
         />
       </el-form-item>
+      <el-form-item label="备案时间" prop="tProjectCompany.filingTime">
+        <el-date-picker
+          clearable
+          v-model="form.tProjectCompany.filingTime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择备案时间"
+        >
+        </el-date-picker>
+      </el-form-item>
       <el-form-item
         label="注册地址"
         prop="tProjectCompany.registeredAddress"
@@ -193,8 +228,16 @@
           placeholder="请输入办公地址"
         />
       </el-form-item>
-      <el-form-item label="附件" prop="listFile" class="special-el-form-item">
-        <fileItem :id="form.id" @getFileList="getFileList"></fileItem>
+      <el-form-item
+        label="公司附件"
+        prop="listFile"
+        class="special-el-form-item"
+      >
+        <fileItem
+          ref="fileItem"
+          :id="form.id"
+          @getFileList="getFileList"
+        ></fileItem>
       </el-form-item>
       <h3>项目公司联系人信息</h3>
       <el-divider></el-divider>
@@ -238,7 +281,10 @@
         <el-input
           maxlength="20"
           v-model="form.financingMoney"
-          onkeyup="this.value=this.value.replace(/\D/g,'').replace(/-/g, '')"
+          @input="
+            (value) =>
+              (form.financingMoney = value.replace(/\D/g, '').replace(/-/g, ''))
+          "
           placeholder="请输入预期融资金额"
         />
       </el-form-item>
@@ -246,7 +292,13 @@
         <el-input
           maxlength="20"
           v-model="form.investValuation"
-          onkeyup="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3').replace(/-/g, '')"
+          @input="
+            (value) =>
+              (form.investValuation = value
+                .replace(/[^0-9.]/g, '')
+                .replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3')
+                .replace(/-/g, ''))
+          "
           placeholder="请输入投前估值"
         />
       </el-form-item>
@@ -254,7 +306,10 @@
         <el-input
           maxlength="20"
           v-model="form.investMoney"
-          onkeyup="this.value=this.value.replace(/\D/g,'').replace(/-/g, '')"
+          @input="
+            (value) =>
+              (form.investMoney = value.replace(/\D/g, '').replace(/-/g, ''))
+          "
           placeholder="请输入预计投资金额"
         />
       </el-form-item>
@@ -344,6 +399,25 @@
       </el-form-item>
       <h3>其他</h3>
       <el-divider></el-divider>
+
+      <el-form-item label="BP" prop="bpFile" class="special-el-form-item">
+        <fileItem
+          ref="bpFileItem"
+          :id="form.id"
+          @getFileList="getBPFileList"
+        ></fileItem>
+      </el-form-item>
+      <el-form-item
+        label="其他附件"
+        prop="otherFile"
+        class="special-el-form-item"
+      >
+        <fileItem
+          ref="otherFileItem"
+          :id="form.id"
+          @getFileList="getOtherFileList"
+        ></fileItem>
+      </el-form-item>
       <el-form-item label="备注" prop="mark" class="special-el-form-item">
         <el-input
           maxlength="200"
@@ -354,9 +428,17 @@
           placeholder="请输入备注"
         />
       </el-form-item>
+
       <el-form-item class="btnList" v-if="type === '1'">
         <el-button @click="goBack">返 回</el-button>
-        <el-button type="primary" @click="submitForm" v-preventReClick
+        <el-button
+          type="warning"
+          @click="submitForm(1)"
+          v-preventReClick
+          v-if="!form.projectState || form.projectState == '1'"
+          >暂 存</el-button
+        >
+        <el-button type="primary" @click="submitForm(2)" v-preventReClick
           >提 交</el-button
         >
       </el-form-item>
@@ -371,9 +453,11 @@ import {
   addPool,
   updatePool,
 } from "@/api/invest/pool";
+import { listChannel } from "@/api/invest/channel";
 import fileItem from "./fileItem";
 import channelItem from "./channelItem";
 import selecDept from "../components/selecDept";
+import { mapGetters } from "vuex";
 export default {
   props: {
     id: {
@@ -394,6 +478,13 @@ export default {
     "financing_stage",
   ],
   data() {
+    const validateLogo = (rule, value, callback) => {
+      if (this.fileListBP.length <= 0) {
+        callback(new Error("请上传BP"));
+      } else {
+        callback();
+      }
+    };
     return {
       deptId: process.env.VUE_APP_DEPTID,
       title: "新增项目",
@@ -407,7 +498,7 @@ export default {
         industry: null,
         recordDate: null,
         projectCode: null,
-        channel: null,
+        channel: "",
         contactDate: null,
         projectDate: null,
         decisionDate: null,
@@ -422,6 +513,7 @@ export default {
           businessAddress: null,
           actualBod: null,
           phone: null,
+          filingTime: null,
           type: null,
         },
         tProjectContacts: {
@@ -430,8 +522,8 @@ export default {
           contact: null,
         },
         tProjectChannel: {
-          channelName: null,
-          channelGroup: null,
+          channelName: "",
+          channelGroup: "",
         },
 
         description: null,
@@ -458,19 +550,24 @@ export default {
         updateBy: null,
         updateTime: null,
         listFile: null,
+        bpFile: null,
+        otherFile: null,
       },
       fileList: [],
+      fileListBP: [],
+      fileListOther: [],
       // 表单校验
       rules1: {},
       rules: {
         projectName: [{ required: true, trigger: "blur", message: "请输入" }],
-        channel: [{ required: true, trigger: "blur", message: "请输入" }],
+        // channel: [{ required: true, trigger: "blur", message: "请输入" }],
         contactDate: [{ required: true, trigger: "blur", message: "请输入" }],
         // projectGroup: [
         //   { required: true, trigger: "change", message: "请选择" },
         // ],
         industry: [{ required: true, trigger: "change", message: "请选择" }],
         investHead: [{ required: true, trigger: "blur", message: "请输入" }],
+        bpFile: [{ required: true, validator: validateLogo }],
         // description: [{ required: true, trigger: "blur", message: "请输入" }],
         "tProjectCompany.companyName": [
           { required: true, trigger: "blur", message: "请输入" },
@@ -507,6 +604,9 @@ export default {
           //   trigger: "blur",
           // },
         ],
+        "tProjectCompany.filingTime": [
+          { required: true, trigger: "blur", message: "请选择" },
+        ],
         "tProjectCompany.type": [
           { required: true, trigger: "blur", message: "请输入" },
         ],
@@ -521,7 +621,7 @@ export default {
           { required: true, trigger: "blur", message: "请输入" },
         ],
         financingStage: [
-          { required: true, trigger: "blur", message: "请选择" },
+          { required: true, trigger: "change", message: "请选择" },
         ],
         financingMoney: [
           { required: true, trigger: "blur", message: "请输入" },
@@ -541,19 +641,42 @@ export default {
         shareholding: [{ required: true, trigger: "blur", message: "请输入" }],
         // mark: [{ required: true, trigger: "blur", message: "请输入" }]
       },
+      channelList: [],
     };
   },
+  computed: {
+    ...mapGetters(["user"]),
+  },
   mounted() {
-    if (this.id) {
-      this.getPoolDetail(this.id);
-    } else {
-      this.reset();
-    }
+    new Promise((resolve, reject) => {
+      listChannel({
+        pageNum: 1,
+        pageSize: 100,
+      }).then((response) => {
+        this.channelList = response.rows;
+        resolve();
+      });
+    }).then(() => {
+      if (this.id) {
+        this.getPoolDetail(this.id);
+      } else {
+        this.reset();
+      }
+    });
   },
   methods: {
+    // getListChannel() {
+    //   // 渠道
+    //   listChannel({
+    //     pageNum: 1,
+    //     pageSize: 100,
+    //   }).then((response) => {
+    //     this.channelList = response.rows;
+    //   });
+    // },
     // 选择部门人
     openSelectDept() {
-      this.$refs.selecDepts.show();
+      this.$refs.selecDepts.show(1, this.user.userId);
     },
     getDeptUserInfo(info) {
       if (info.length > 0) {
@@ -570,12 +693,52 @@ export default {
         this.$refs.form.clearValidate(["channel"]);
       }
     },
+    // 选择渠道
+    handleChannel(vId) {
+      let obj = {};
+      obj = this.channelList.find((item) => {
+        return item.id === vId;
+      });
+      if (obj && obj.id) {
+        this.form.channel = obj.id;
+        this.form.tProjectChannel.channelName = obj.channelName;
+        this.form.tProjectChannel.channelGroup = obj.channelGroup;
+      } else {
+        this.form.channel = "";
+        this.form.tProjectChannel.channelName = "";
+        this.form.tProjectChannel.channelGroup = "";
+      }
+    },
     handleChannelItem() {
       this.$refs.channelItem.showChannelItem = true;
     },
     getPoolDetail(id) {
       getPool(id).then((response) => {
         this.form = response.data;
+        let channeItem = this.channelList.find((item) => {
+          if (this.form.channel == item.id) {
+            return item;
+          }
+        });
+        if (channeItem && channeItem.channelName) {
+          this.form.tProjectChannel.channelName = channeItem.channelName;
+          this.form.tProjectChannel.channelGroup = channeItem.channelGroup;
+        } else {
+          this.form.tProjectChannel = {
+            channelName: "",
+            channelGroup: "",
+          };
+        }
+        setTimeout(() => {
+          this.$refs.fileItem.fileList = [];
+          this.$refs.fileItem.getListFileBusinessId(
+            this.form.tProjectCompany.companyId
+          );
+          this.$refs.bpFileItem.fileList = [];
+          this.$refs.bpFileItem.getListFileBusinessId(this.form.id, "9");
+          this.$refs.otherFileItem.fileList = [];
+          this.$refs.otherFileItem.getListFileBusinessId(this.form.id, "0");
+        }, 300);
       });
     },
     // 获取fileList
@@ -586,67 +749,114 @@ export default {
         this.fileList = [];
       }
     },
+    getBPFileList(fileList) {
+      if (fileList && fileList.length > 0) {
+        this.fileListBP = fileList;
+        this.$refs.form.clearValidate(["bpFile"]);
+      } else {
+        this.fileList = [];
+      }
+    },
+    getOtherFileList(fileList) {
+      if (fileList && fileList.length > 0) {
+        this.fileListOther = fileList;
+      } else {
+        this.fileList = [];
+      }
+    },
     /** 提交按钮 */
-    submitForm() {
+    submitForm(type) {
       let that = this;
-      this.$refs["form"].validate((valid, rules) => {
-        if (valid) {
-          this.form.listFile = this.fileList;
-          this.form.tProjectCompany.registeredCapital =
-            this.form.tProjectCompany.registeredCapital
+      if (type === 1) {
+        if(!this.form.projectName){
+          this.$modal.msgError("请输入项目名称");
+          return false;
+        }
+        // 暂存
+        if (this.form.id != null) {
+          updatePool(this.form).then((response) => {
+            this.$modal.msgSuccess("暂存成功");
+            setTimeout(() => {
+              that.goBack();
+            }, 1500);
+          });
+        } else {
+          this.form.projectStage = "1";
+          this.form.projectState = "1";
+          this.form.projectGroup = this.form.tProjectChannel.channelGroup;
+          addPool(this.form).then((response) => {
+            this.$modal.msgSuccess("暂存成功");
+            setTimeout(() => {
+              that.goBack();
+            }, 1500);
+          });
+        }
+      } else if (type === 2) {
+        // 提交
+        this.$refs["form"].validate((valid, rules) => {
+          if (valid) {
+            this.form.listFile = this.fileList;
+            this.form.bpFile = this.fileListBP;
+            this.form.otherFile = this.fileListOther;
+            this.form.tProjectCompany.registeredCapital =
+              this.form.tProjectCompany.registeredCapital
+                .replace(/[^0-9.]/g, "")
+                .replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/, "$1$2.$3")
+                .replace(/-/g, "");
+            this.form.tProjectCompany.paidCapital =
+              this.form.tProjectCompany.paidCapital
+                .replace(/[^0-9.]/g, "")
+                .replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/, "$1$2.$3")
+                .replace(/-/g, "");
+            this.form.investValuation = this.form.investValuation
               .replace(/[^0-9.]/g, "")
-              .replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/, "$1$2.$3")
+              .replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3")
               .replace(/-/g, "");
-          this.form.tProjectCompany.paidCapital =
-            this.form.tProjectCompany.paidCapital
-              .replace(/[^0-9.]/g, "")
-              .replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/, "$1$2.$3")
+            this.form.financingMoney = this.form.financingMoney
+              .replace(/\D/g, "")
               .replace(/-/g, "");
-          this.form.investValuation = this.form.investValuation
-            .replace(/[^0-9.]/g, "")
-            .replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3")
-            .replace(/-/g, "");
-          this.form.financingMoney = this.form.financingMoney
-            .replace(/\D/g, "")
-            .replace(/-/g, "");
-          this.form.investMoney = this.form.investMoney
-            .replace(/\D/g, "")
-            .replace(/-/g, "");
-          if (this.form.id != null) {
-            updatePool(this.form).then((response) => {
-              this.$modal.msgSuccess("修改成功");
-              setTimeout(() => {
-                that.goBack();
-              }, 1500);
-            });
+            this.form.investMoney = this.form.investMoney
+              .replace(/\D/g, "")
+              .replace(/-/g, "");
+            if (this.form.id != null) {
+              if (this.form.projectState == "1") {
+                this.form.projectState = "a";
+              }
+              updatePool(this.form).then((response) => {
+                this.$modal.msgSuccess("修改成功");
+                setTimeout(() => {
+                  that.goBack();
+                }, 1500);
+              });
+            } else {
+              this.form.projectStage = "1";
+              this.form.projectState = "a";
+              this.form.projectGroup = this.form.tProjectChannel.channelGroup;
+              addPool(this.form).then((response) => {
+                this.$modal.msgSuccess("新增成功");
+                setTimeout(() => {
+                  that.goBack();
+                }, 1500);
+              });
+            }
           } else {
-            this.form.projectStage = "1";
-            this.form.projectState = "a";
-            this.form.projectGroup = this.form.tProjectChannel.channelGroup;
-            addPool(this.form).then((response) => {
-              this.$modal.msgSuccess("新增成功");
-              setTimeout(() => {
-                that.goBack();
-              }, 1500);
+            for (var ruleName in rules) {
+              let _rule = rules[ruleName];
+              let message = _rule[0].message;
+              this.$message.warning(message, 1);
+              break;
+            }
+            //验证不通过回滚到不通过的第一个位置
+            this.$nextTick(() => {
+              let isError = document.getElementsByClassName("is-error");
+              isError[0].scrollIntoView({
+                block: "center",
+                behavior: "smooth",
+              });
             });
           }
-        } else {
-          for (var ruleName in rules) {
-            let _rule = rules[ruleName];
-            let message = _rule[0].message;
-            this.$message.warning(message, 1);
-            break;
-          }
-          //验证不通过回滚到不通过的第一个位置
-          this.$nextTick(() => {
-            let isError = document.getElementsByClassName("is-error");
-            isError[0].scrollIntoView({
-              block: "center",
-              behavior: "smooth",
-            });
-          });
-        }
-      });
+        });
+      }
     },
     goBack() {
       this.$router.go(-1);
@@ -660,7 +870,7 @@ export default {
         industry: null,
         recordDate: null,
         projectCode: null,
-        channel: null,
+        channel: "",
         contactDate: null,
         projectDate: null,
         decisionDate: null,
@@ -675,6 +885,7 @@ export default {
           businessAddress: null,
           actualBod: null,
           phone: null,
+          filingTime: null,
           type: null,
         },
         tProjectContacts: {
@@ -683,12 +894,12 @@ export default {
           contact: null,
         },
         tProjectChannel: {
-          channelName: null,
-          channelGroup: null,
+          channelName: "",
+          channelGroup: "",
         },
         description: null,
         projectContacts: null,
-        investHead: null,
+        investHead: this.user.nickName,
         previousFinancing: null,
         financingStage: null,
         financingCondition: null,
@@ -710,6 +921,8 @@ export default {
         updateBy: null,
         updateTime: null,
         listFile: null,
+        bpFile: null,
+        otherFile: null,
       };
       this.resetForm("form");
     },

+ 368 - 378
ruoyi-ui/src/views/invest/components/projectList.vue

@@ -67,97 +67,6 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-
-      <!-- <el-form-item label="初次接触日期" prop="contactDate">
-        <el-date-picker
-          clearable
-          v-model="queryParams.contactDate"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择初次接触日期"
-        >
-        </el-date-picker>
-      </el-form-item> -->
-      <!-- <el-form-item label="立项通过日期" prop="projectDate">
-        <el-date-picker
-          clearable
-          v-model="queryParams.projectDate"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择立项通过日期"
-        >
-        </el-date-picker>
-      </el-form-item> -->
-      <!-- <el-form-item label="投决通过日期" prop="decisionDate">
-        <el-date-picker
-          clearable
-          v-model="queryParams.decisionDate"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择投决通过日期"
-        >
-        </el-date-picker>
-      </el-form-item> -->
-
-      <!-- <el-form-item label="项目编号" prop="projectCode">
-        <el-input
-          v-model="queryParams.projectCode"
-          placeholder="请输入项目编号"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item> -->
-      <!-- <el-form-item label="历次融资" prop="previousFinancing">
-        <el-input
-          v-model="queryParams.previousFinancing"
-          placeholder="请输入历次融资"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item> -->
-      <!-- <el-form-item label="项目融资阶段" prop="financingStage">
-        <el-input
-          v-model="queryParams.financingStage"
-          placeholder="请输入项目融资阶段"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item> -->
-      <!-- <el-form-item label="预期融资金额" prop="financingMoney">
-        <el-input
-          v-model="queryParams.financingMoney"
-          placeholder="请输入预期融资金额"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item> -->
-      <!-- <el-form-item label="投前估值" prop="investValuation">
-        <el-input
-          v-model="queryParams.investValuation"
-          placeholder="请输入投前估值"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item> -->
-      <!-- <el-form-item label="预计投资金额" prop="investMoney">
-        <el-input
-          v-model="queryParams.investMoney"
-          placeholder="请输入预计投资金额"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item> -->
-      <!-- <el-form-item label="创建日期" prop="createTime">
-        <el-date-picker
-          style="width: 205px"
-          clearable
-          v-model="queryParams.createTime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择创建日期"
-        >
-        </el-date-picker>
-      </el-form-item> -->
       <el-form-item class="searchWrapper">
         <el-button
           type="primary"
@@ -189,28 +98,156 @@
           >新增</el-button
         >
       </el-col>
+
       <el-col :span="1.5">
         <el-button
-          v-if="type === '1' && stage == '1'"
-          type="success"
+          :disabled="multiple"
           plain
-          icon="el-icon-edit"
+          type="success"
+          v-if="stage === '1'"
           size="mini"
-          :disabled="single"
-          @click="handleUpdate"
+          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"
-          @click="handleDelete"
           v-hasPermi="['invest:pool:remove']"
           >终止</el-button
         >
@@ -233,6 +270,8 @@
       ></right-toolbar>
     </el-row>
     <el-table
+      ref="dataTable"
+      @row-click="clickRow"
       class="tableWrapper"
       v-loading="loading"
       border
@@ -240,11 +279,20 @@
       @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="40" align="center" />
-      <el-table-column type="index" width="30"></el-table-column>
+      <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">
+          <div
+            :title="scope.row.projectName"
+            class="public-text-blue public-cursor"
+            @click="handleDetail(scope.row)"
+          >
             {{ scope.row.projectName }}
           </div>
         </template>
@@ -287,18 +335,14 @@
           />
         </template>
       </el-table-column>
-      <!-- <el-table-column
-        label="项目状态"
-        align="center"
-        prop="projectState"
-      >
+      <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>
       <el-table-column label="立项通过日期" align="center" prop="projectDate">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.projectDate, "{y}-{m}-{d}") }}</span>
@@ -324,7 +368,7 @@
         prop="tProjectChannel.channelName"
       >
         <template slot-scope="scope">
-          <div :title="scope.row.tProjectChannel.channelName">
+          <div v-if="scope.row.tProjectChannel && scope.row.tProjectChannel.channelName" :title="scope.row.tProjectChannel.channelName">
             {{ scope.row.tProjectChannel.channelName }}
           </div>
         </template>
@@ -342,16 +386,6 @@
         </template>
       </el-table-column> -->
 
-      <!-- <el-table-column
-        label="初次接触日期"
-        align="center"
-        prop="contactDate"
-      >
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.contactDate, "{y}-{m}-{d}") }}</span>
-        </template>
-      </el-table-column> -->
-
       <!-- <el-table-column
         label="项目联系人"
         align="center"
@@ -364,72 +398,7 @@
         </template>
       </el-table-column> -->
 
-      <!-- <el-table-column
-        label="历次融资"
-        align="center"
-        prop="previousFinancing"
-      />
-      <el-table-column
-        label="项目融资阶段"
-        align="center"
-        width="120"
-        prop="financingStage"
-      >
-        <template slot-scope="scope">
-          <dict-tag
-            :options="dict.type.financing_stage"
-            :value="scope.row.financingStage"
-          />
-        </template>
-      </el-table-column>
-      <el-table-column
-        label="预期融资金额"
-        align="center"
-        width="120"
-        prop="financingMoney"
-      />
-      <el-table-column label="投前估值" align="center" prop="investValuation" />
-      <el-table-column
-        label="预计投资金额"
-        width="120"
-        align="center"
-        prop="investMoney"
-      />
-      <el-table-column
-        label="投资类型"
-        width="120"
-        align="center"
-        prop="investType"
-      >
-        <template slot-scope="scope">
-          <dict-tag
-            :options="dict.type.invest_type"
-            :value="scope.row.investType"
-          />
-        </template>
-      </el-table-column>
-      <el-table-column label="投资策略" align="center" prop="investPloy">
-        <template slot-scope="scope">
-          <dict-tag
-            :options="dict.type.invest_ploy"
-            :value="scope.row.investPloy"
-          />
-        </template>
-      </el-table-column>
-      <el-table-column
-        label="投资价值"
-        width="120"
-        align="center"
-        prop="investWorth"
-      >
-        <template slot-scope="scope">
-          <dict-tag
-            :options="dict.type.invest_worth"
-            :value="scope.row.investWorth"
-          />
-        </template>
-      </el-table-column>
-      <el-table-column
+      <!--<el-table-column
         label="创建人"
         width="120"
         align="center"
@@ -455,12 +424,7 @@
         </template>
       </el-table-column>
       <!-- fixed="right" -->
-      <el-table-column
-        label="操作"
-        align="center"
-        :width="stage === '0' ? 100 : 400"
-      >
-        <!-- class-name="small-padding fixed-width" -->
+      <el-table-column label="操作" align="center" v-if="false">
         <template slot-scope="scope">
           <!-- stage//0=全部 1=项目报备  2=评估考察 3=项目立项 4=尽职背调 5=项目投决 -->
           <!-- <el-button
@@ -471,7 +435,7 @@
             icon="el-icon-thumb"
             @click="handlefollowRecord(scope.row)"
             >上传跟进记录</el-button> -->
-          <el-button
+          <!-- <el-button
             class="custom-orange-color"
             v-if="stage == '3' && scope.row.delFlag !== '1'"
             size="mini"
@@ -509,7 +473,7 @@
           >
 
           <el-button
-            v-if="scope.row.delFlag !== '1'&& stage !== '0'"
+            v-if="scope.row.delFlag !== '1' && stage !== '0'"
             size="mini"
             type="text"
             icon="el-icon-edit"
@@ -525,7 +489,7 @@
             @click="handleDetail(scope.row)"
             v-hasPermi="['invest:pool:query']"
             >详情</el-button
-          >
+          > -->
 
           <el-button
             v-if="scope.row.delFlag !== '1' && stage !== '0'"
@@ -537,42 +501,6 @@
             v-hasPermi="['invest:pool:remove']"
             >终止</el-button
           >
-
-          <!-- <el-dropdown
-            v-if="stage == '4'"
-            trigger="click"
-            @command="handleDropdown($event, scope.row)"
-          >
-            <span
-              class="el-dropdown-link"
-              v-preventReClick
-              @click="getButtonItem(scope.row)"
-            >
-              <el-button size="mini" type="text" icon="el-icon-d-arrow-right"
-                >更多</el-button
-              >
-            </span>
-            <el-dropdown-menu slot="dropdown" style="width: 150px">
-              <el-dropdown-item
-                command="1"
-                v-if="isInitiator && needInitiate"
-                icon="el-icon-document-remove"
-                >发起尽调申请</el-dropdown-item
-              >
-              <el-dropdown-item
-                v-if="isInitiator && !needInitiate"
-                command="2"
-                icon="el-icon-document-remove"
-                >修改尽调申请</el-dropdown-item
-              >
-              <el-dropdown-item
-                v-if="needUpload"
-                icon="el-icon-search"
-                command="3"
-                >上传尽调报告</el-dropdown-item
-              >
-            </el-dropdown-menu>
-          </el-dropdown> -->
         </template>
       </el-table-column>
     </el-table>
@@ -663,20 +591,51 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
-    <!-- 尽调 -->
+    <!-- 上传评估意见对话框 -->
+    <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
       :type="2"
       ref="dueDiligenceLists"
       :projectId="projectId"
       :projectName="form.projectName"
     ></dueDiligenceList>
-    <!-- 跟进记录 -->
+    <!-- 跟进记录组件 -->
     <followList
       :type="'3'"
       ref="followList"
       :projectId="projectId"
     ></followList>
-    <!-- 会议管理 -->
+    <!-- 会议管理组件 -->
     <meetingList
       :type="'3'"
       ref="meetingList"
@@ -689,16 +648,14 @@
 import {
   listPool,
   delPool,
-  editStage,
-  getlistProjectPoolId,
+  editStage
 } from "@/api/invest/pool";
 import { selectByFlowKey } from "@/api/flowable/definition";
 import { listChannel } from "@/api/invest/channel";
-import projectItem from "./projectItem";
-import fileItem from "./fileItem";
 import dueDiligenceList from "./dueDiligenceList";
 import followList from "./followList";
 import meetingList from "./meetingList";
+import { mapGetters } from "vuex";
 export default {
   props: {
     type: {
@@ -717,99 +674,16 @@ export default {
     "project_group",
     "project_stage",
     "project_state",
-    "invest_type",
-    "invest_ploy",
-    "invest_worth",
-    "financing_stage",
     "CUSTOMER_TRADE",
   ],
   components: {
-    projectItem,
-    fileItem,
     dueDiligenceList,
     followList,
     meetingList,
   },
   data() {
     return {
-      // 人员选择器
-      checkType: "multiple",
-      // 数据回显
-      selectValues: null,
-      userVisible: false,
       project_state: [],
-      projectState: [
-        [
-          {
-            dictValue: "a",
-            dictLabel: "项目报备完成",
-          },
-        ],
-        [
-          {
-            dictValue: "b",
-            dictLabel: "评估考察中",
-          },
-        ],
-        [
-          {
-            dictValue: "c",
-            dictLabel: "准备立项材料",
-          },
-          {
-            dictValue: "d",
-            dictLabel: "项目立项",
-          },
-          {
-            dictValue: "e",
-            dictLabel: "立项通过",
-          },
-        ],
-        [
-          {
-            dictValue: "f",
-            dictLabel: "尽职背调",
-          },
-          {
-            dictValue: "g",
-            dictLabel: "尽职背调通过",
-          },
-        ],
-        [
-          {
-            dictValue: "h",
-            dictLabel: "准备项目投决材料",
-          },
-          {
-            dictValue: "i",
-            dictLabel: "项目投决通过",
-          },
-        ],
-        [
-          {
-            dictValue: "j",
-            dictLabel: "签约协议沟通中",
-          },
-          {
-            dictValue: "k",
-            dictLabel: "协议签约完成",
-          },
-        ],
-        [
-          {
-            dictValue: "l",
-            dictLabel: "投后管理",
-          },
-          {
-            dictValue: "m",
-            dictLabel: "准备投后退出材料",
-          },
-          {
-            dictValue: "n",
-            dictLabel: "项目退出完成",
-          },
-        ],
-      ],
       rules: {
         projectStage: [
           { required: true, trigger: "change", message: "请选择项目阶段" },
@@ -820,14 +694,15 @@ export default {
       },
       // 遮罩层
       loading: false,
-
-      // 选中数组
+      // 选中id数组
       ids: [],
       idsName: [],
       // 非单个禁用
       single: true,
       // 非多个禁用
       multiple: true,
+      // 选中数组
+      selectRowList: [],
       // 显示搜索条件
       showSearch: false,
       // 总条数
@@ -907,12 +782,22 @@ export default {
       },
       verifyProjectDate: false,
       verifyDecisionDate: false,
-      user:{
-        userId:"",
-        nickName:""
-      }
+      // 上传评估意见
+      formAssess: {
+        id: null,
+        assess: null,
+        projectPoolId: null,
+      },
+      openAssess: false,
+      titleAssess: "",
+      rulesAssess: {
+        assess: [{ required: true, trigger: "blur", message: "请输入" }],
+      },
     };
   },
+  computed: {
+    ...mapGetters(["user","projectState"]),
+  },
   watch: {
     "form.projectState": function (newValue, oldValue) {
       // 项目立项通过
@@ -929,10 +814,7 @@ export default {
       }
     },
   },
-  created() {
-    this.user = this.$store.getters.user;
-    this.user.userId = this.user.userId.toString();
-  },
+  created() {},
   mounted() {
     // 项目阶段
     if (this.stage != "0") {
@@ -1009,18 +891,109 @@ export default {
       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" });
     },
+    // 上传评估意见
+    handleAssessPop(row) {
+      this.resetAssess();
+      this.openAssess = true;
+      this.titleAssess = "上传评估意见";
+    },
+    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) {
+              // 设置项目阶段
+              this.handleBusinessUpdate(row);
+            } 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.ids;
+      const id = row.id;
       this.$router.push({ path: "/invest/pool/add", query: { id: id } });
     },
     // 修改业务节点
@@ -1039,59 +1012,55 @@ export default {
     // 发起会议
     handleMeeting(row, meetingType) {
       this.$store.commit("SET_PROJECTITEMMESSAGE", row);
-      // this.$router.push({
-      //   path: "/resource/meeting",
-      //   query: { id: row.id, type: "1", meetingType: meetingType },
-      // });
       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",
-            });
-          }
-        }
-      });
-    },
+    // 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",
+    //         });
+    //       }
+    //     }
+    //   });
+    // },
     // 发起尽调申请
     handleDropdown(type, row) {
       const id = row.id || this.ids;
-      this.$router.push({
-        path: "/invest/pool/detail",
-        query: { id: id, activeName: "4" },
-      });
+      // this.$router.push({
+      //   path: "/invest/pool/detail",
+      //   query: { id: id, activeName: "4" },
+      // });
       // this.$refs.dueDiligenceLists.getProjectName(row.projectName);
-      // this.$refs.dueDiligenceLists.handleSurvey(type, row, this.dueForm);
+      this.$refs.dueDiligenceLists.handleSurvey(type, row, this.dueForm);
     },
     // 上传跟进记录
     handlefollowRecord(row) {
@@ -1102,7 +1071,7 @@ export default {
       // });
       this.$refs.followList.handleAdd(row.id);
     },
-    // 表单重置
+    // 设置项目状态表单重置
     reset() {
       this.form = {
         id: null,
@@ -1113,7 +1082,16 @@ export default {
       };
       this.resetForm("form");
     },
-    /** 删除按钮操作 */
+    // 设置上传评估意见表单重置
+    resetAssess() {
+      this.formAssess = {
+        id: null,
+        assess: null,
+        projectPoolId: this.selectRowList[0].id,
+      };
+      this.resetForm("formAssess");
+    },
+    /**终止按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
       const idsName = row.projectName ? row.projectName : this.idsName;
@@ -1138,7 +1116,7 @@ export default {
         `pool_${new Date().getTime()}.xlsx`
       );
     },
-    /** 提交按钮 */
+    /** 修改项目状态提交按钮 */
     submitForm() {
       let that = this;
       this.$refs["form"].validate((valid) => {
@@ -1151,6 +1129,18 @@ export default {
         }
       });
     },
+    // 上传评估意见提交
+    submitAssessForm() {
+      let that = this;
+      this.$refs["formAssess"].validate((valid) => {
+        if (valid) {
+          // editStage(this.formAssess).then((response) => {
+          //   that.$modal.msgSuccess("提交成功");
+          //   that.openAssess = false;
+          // });
+        }
+      });
+    },
     // 取消按钮
     cancel() {
       this.open = false;

+ 17 - 14
ruoyi-ui/src/views/invest/components/selecDept.vue

@@ -128,11 +128,11 @@ export default {
       default: true,
     },
     // 回显数据传值
-    // selectValues: {
-    //   type: Number | String | Array,
-    //   default: null,
-    //   required: false,
-    // },
+    selectValues: {
+      type: Number | String | Array,
+      default: null,
+      required: false,
+    },
   },
   data() {
     return {
@@ -158,6 +158,7 @@ export default {
       },
     };
   },
+  watch: {},
   methods: {
     // 显示弹框
     show(type, promoterId) {
@@ -198,16 +199,18 @@ export default {
         this.total = res.total;
         if (promoterId) {
           promoterId = parseInt(promoterId);
-          this.$nextTick(() => {
-            this.$refs.table.toggleRowSelection(
-              this.userList.find((item) => {
-                if (promoterId == item.userId) {
-                  return item;
-                }
-              }),
-              true
-            );
+          let userItem = this.userList.find((item) => {
+            if (promoterId == item.userId) {
+              return item;
+            } else {
+              return;
+            }
           });
+          if (userItem) {
+            this.$nextTick(() => {
+              this.$refs.table.toggleRowSelection(userItem, true);
+            });
+          }
         }
       });
     },

+ 4 - 5
ruoyi-ui/src/views/invest/components/tableForm.vue

@@ -2066,6 +2066,7 @@ import {
   getScoring,
   selectMeetingId,
 } from "@/api/invest/meeting";
+import { mapGetters } from 'vuex'
 export default {
   props: {
     formType: {
@@ -2187,10 +2188,6 @@ export default {
         valuationAvg: null,
         valuationSum: null,
       },
-      user: {
-        userId: null,
-        nickName: null,
-      },
       rules: {
         industryAdvantage: [
           { required: true, trigger: "blur", message: "请打分" },
@@ -2218,8 +2215,10 @@ export default {
       },
     };
   },
+  computed: {
+    ...mapGetters(["user"]),
+  },
   mounted() {
-    this.user = this.$store.getters.user;
     if (this.id && this.id != "0") {
       this.initialize(this.id);
     }

+ 53 - 39
ruoyi-ui/src/views/invest/pool/detail.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="detailWrapper">
-    <section class="section1 public-flex-col-end">
+    <section class="section1 public-flex">
       <div class="public-margin-r-20">
         <h4>
           投资项目
@@ -10,7 +10,7 @@
         </h4>
         <p class="projectNameTit">{{ detailInfo.projectName }}</p>
       </div>
-      <div class="btnList">
+      <!-- <div class="btnList">
         <el-button
           type="primary"
           icon="el-icon-upload2"
@@ -47,7 +47,7 @@
           @click="handleTab('6', 'meetingList')"
           >新增会议</el-button
         >
-      </div>
+      </div> -->
     </section>
     <el-divider></el-divider>
     <section>
@@ -100,15 +100,16 @@
     <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-tab-pane label="项目报备" name="1"></el-tab-pane>
+        <el-tab-pane label="评估考察" name="9"></el-tab-pane>
+        <el-tab-pane label="项目立项" name="3"></el-tab-pane>
+        <el-tab-pane label="尽职背调" name="4"></el-tab-pane>
+        <el-tab-pane label="项目投决" name="5"></el-tab-pane>
         <el-tab-pane label="跟进记录" name="2"></el-tab-pane>
-        <el-tab-pane label="立项汇总表" name="3"></el-tab-pane>
-        <el-tab-pane label="尽调报告" name="4"></el-tab-pane>
-        <el-tab-pane label="投决汇总表" name="5"></el-tab-pane>
-        <el-tab-pane label="会议记录" name="6"></el-tab-pane>
-        <el-tab-pane label="文件资料" name="7"></el-tab-pane>
+        <el-tab-pane label="会议" name="6"></el-tab-pane>
+        <!-- <el-tab-pane label="文件资料" name="7"></el-tab-pane> -->
         <el-tab-pane label="合同" name="8"></el-tab-pane>
-        <el-tab-pane label="附件" name="9"></el-tab-pane>
+        <!-- <el-tab-pane label="附件" name="9"></el-tab-pane> -->
       </el-tabs>
       <section>
         <div v-if="activeName === '0'">
@@ -129,22 +130,20 @@
           <followList :type="'2'" ref="followList" :projectId="id"></followList>
         </div>
         <div v-if="activeName === '3'">
-          <tableForm
-            :formType="2"
-            ref="approvalTableForm"
-            :readonly="true"
-            :showBack="false"
-          ></tableForm>
+          <el-tabs type="border-card">
+            <el-tab-pane label="项目立项申请表">项目立项申请表</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-if="activeName === '4'">
           <!-- 尽职调查 -->
-          <!-- <projectList
-            :type="'2'"
-            :stage="'4'"
-            ref="projectList"
-            :projectId="id"
-          ></projectList> -->
-          <!-- /:projectName="detailInfo.projectName" -->
           <dueDiligenceList
             :type="1"
             ref="dueDiligenceLists"
@@ -154,12 +153,17 @@
           ></dueDiligenceList>
         </div>
         <div v-if="activeName === '5'">
-          <tableForm
-            :formType="4"
-            ref="voteTableForm"
-            :readonly="true"
-            :showBack="false"
-          ></tableForm>
+          <el-tabs type="border-card">
+            <el-tab-pane label="项目投决申请表">项目投决申请表</el-tab-pane>
+            <el-tab-pane label="项目投决评估评审汇总表">
+              <tableForm
+                :formType="4"
+                ref="voteTableForm"
+                :readonly="true"
+                :showBack="false"
+              ></tableForm>
+            </el-tab-pane>
+          </el-tabs>
         </div>
         <div v-if="activeName === '6'">
           <meetingList
@@ -168,9 +172,9 @@
             :projectId="id"
           ></meetingList>
         </div>
-        <div v-if="activeName === '7'">
+        <!-- <div v-if="activeName === '7'">
           <fileList :type="'2'" ref="fileList" :projectId="id"></fileList>
-        </div>
+        </div> -->
         <div v-if="activeName === '8'">
           <contractList
             :type="'2'"
@@ -179,7 +183,18 @@
           ></contractList>
         </div>
         <div v-if="activeName === '9'">
-          <listAllfile :projectId="id"></listAllfile>
+          考察评估评审内容---样式类似这样
+          <el-timeline :reverse="false" class="public-padded-20">
+            <el-timeline-item
+              v-for="(activity, index) in activeTimeList"
+              :key="index"
+              :timestamp="activity.createTime"
+            >
+              {{ activity.createBy }}:{{ activity.stageName }}
+            </el-timeline-item>
+          </el-timeline>
+          <!-- 附件 -->
+          <!-- <listAllfile :projectId="id"></listAllfile> -->
         </div>
       </section>
     </section>
@@ -202,6 +217,7 @@ import {
   getInvestigatelist,
 } from "@/api/invest/pool";
 import { listMeeting } from "@/api/invest/meeting";
+import { mapGetters } from "vuex";
 
 export default {
   name: "investPoolDetail",
@@ -226,10 +242,6 @@ export default {
       active: 0,
       detailInfo: {},
       activeName: "0",
-      user: {
-        userId: null,
-        nickName: null,
-      },
       activities: [
         {
           content: "活动按期开始",
@@ -246,9 +258,10 @@ export default {
       ],
     };
   },
+  computed: {
+    ...mapGetters(["user"]),
+  },
   created() {
-    this.user = this.$store.getters.user;
-    this.user.userId = this.user.userId.toString();
     this.id = this.$route.query.id;
     this.getDetail();
     this.getListProjectPoolId();
@@ -367,7 +380,8 @@ export default {
       margin: 0;
     }
     > div:first-child {
-      width: calc(100% - 700px);
+      // width: calc(100% - 700px);
+      width: 100%;
     }
     .btnList {
       width: 700px;

+ 755 - 7
ruoyi-ui/src/views/invest/pool/index2.vue

@@ -1,21 +1,769 @@
 <template>
-  <div>
-    <!-- 评估考察 -->
-    <projectList ref="projectList2" type="1" stage="2"></projectList>
+  <!-- 评估考察 -->
+  <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-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
+          :disabled="multiple"
+          plain
+          type="primary"
+          size="mini"
+          icon="el-icon-edit"
+          @click="handleSelectData(5)"
+          v-hasPermi="['invest:pool:assess']"
+          >上传评估意见</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="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>
+    </el-table>
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+    <!-- 设置项目状态对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-form-item label="项目阶段" prop="projectStage">
+          <el-select
+            v-model="form.projectStage"
+            ref="selectLable"
+            placeholder="请选择项目阶段"
+          >
+            <el-option
+              @click.native="handleProjectSelect(index, dict)"
+              v-for="(dict, index) in dict.type.project_stage"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="项目状态" prop="projectState">
+          <el-select
+            ref="selectState"
+            v-model="form.projectState"
+            placeholder="请选择项目状态"
+          >
+            <el-option
+              @click.native="handleProjectStateSelect(dict)"
+              v-for="dict in project_state"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item
+          v-if="form.projectState == 'e'"
+          label="立项通过日期"
+          prop="projectDate"
+          :rules="[
+            { required: verifyProjectDate, trigger: 'blur', message: '请选择' },
+          ]"
+        >
+          <el-date-picker
+            clearable
+            v-model="form.projectDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择立项通过日期"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item
+          v-if="form.projectState == 'i'"
+          label="投决通过日期"
+          prop="decisionDate"
+          :rules="[
+            {
+              required: verifyDecisionDate,
+              trigger: 'blur',
+              message: '请选择',
+            },
+          ]"
+        >
+          <el-date-picker
+            clearable
+            v-model="form.decisionDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择投决通过日期"
+          >
+          </el-date-picker>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm" v-preventReClick
+          >确 定</el-button
+        >
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!-- 上传评估意见对话框 -->
+    <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="context">
+          <el-input
+            maxlength="200"
+            rows="4"
+            type="textarea"
+            v-model="formAssess.context"
+            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>
   </div>
 </template>
 
 <script>
-import projectList from "../components/projectList";
+import {
+  listReviewList,
+  delPool,
+  editStage,
+  addInvestReview,
+} from "@/api/invest/pool";
+import { listChannel } from "@/api/invest/channel";
+import { mapGetters } from "vuex";
 export default {
   name: "Pool2",
-  components: { projectList },
+  dicts: ["project_group", "project_stage", "project_state", "CUSTOMER_TRADE"],
+  components: {},
   data() {
     return {
+      project_state: [],
+      rules: {
+        projectStage: [
+          { required: true, trigger: "change", message: "请选择项目阶段" },
+        ],
+        projectState: [
+          { required: true, trigger: "change", message: "请选择项目状态" },
+        ],
+      },
+      // 遮罩层
+      loading: false,
+      // 选中id数组
+      ids: [],
+      idsName: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 选中数组
+      selectRowList: [],
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // 项目池表格数据
+      poolList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      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,
+      },
+      form: {
+        id: null,
+        projectStage: "",
+        projectState: "",
+        stageName: "",
+        stateName: "",
+      },
+      channelList: [],
+      verifyProjectDate: false,
+      verifyDecisionDate: false,
+      // 上传评估意见
+      formAssess: {
+        id: null,
+        context: null,
+        projectPoolId: null,
+      },
+      openAssess: false,
+      titleAssess: "",
+      rulesAssess: {
+        context: [{ required: true, trigger: "blur", message: "请输入" }],
+      },
     };
   },
-  created() {
+  computed: {
+    ...mapGetters(["user", "projectState"]),
+  },
+  watch: {
+    "form.projectState": function (newValue, oldValue) {
+      // 项目立项通过
+      if (newValue == "e") {
+        this.verifyProjectDate = true;
+      } else {
+        this.verifyProjectDate = false;
+      }
+      // 项目投决通过
+      if (newValue == "i") {
+        this.verifyDecisionDate = true;
+      } else {
+        this.verifyDecisionDate = false;
+      }
+    },
+  },
+  created() {},
+  mounted() {
+    this.getList();
+    // 渠道
+    listChannel({
+      pageNum: 1,
+      pageSize: 100,
+    }).then((response) => {
+      this.channelList = response.rows;
+    });
+  },
+  methods: {
+    // 下拉框改变
+    handleProjectSelect(index, dict) {
+      this.form.projectState = null;
+      this.project_state = this.projectState[index];
+      // 给个默认值
+      this.form.projectState = this.project_state[0].dictValue;
+      this.form.stateName = this.project_state[0].dictLabel;
+      if (dict && dict.label) {
+        this.form.stageName = dict.label;
+      }
+    },
+    handleProjectStateSelect(dict) {
+      if (dict && dict.dictLabel) {
+        this.form.stateName = dict.dictLabel;
+      }
+    },
+
+    /** 查询项目池列表 */
+    getList() {
+      this.loading = true;
+      listReviewList(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);
+    },
+    // 上传评估意见
+    handleAssessPop(row) {
+      this.resetAssess();
+      this.openAssess = true;
+      this.titleAssess = "上传评估意见";
+    },
+    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 === 2) {
+              // 详情
+              this.handleDetail(row);
+            } else if (type === 3) {
+              // 设置项目阶段
+              this.handleBusinessUpdate(row);
+              //
+            } else if (type === 5) {
+              if (row.tProjectReview && row.tProjectReview.context) {
+                this.$message({
+                  message: "您已上传,无需重复操作",
+                  duration: 1200,
+                  type: "warning",
+                });
+              } else {
+                // 上传评估意见
+                this.handleAssessPop(row);
+              }
+            }
+          } 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 } });
+    },
+    // 修改业务节点
+    handleBusinessUpdate(row) {
+      this.reset();
+      let index = parseInt(row.projectStage) - 1;
+      this.handleProjectSelect(index, row);
+      this.form = row;
+      this.open = true;
+      this.title = "设置项目阶段";
+      setTimeout(() => {
+        this.form.stageName = this.$refs.selectLable.selected.label;
+        this.form.stateName = this.$refs.selectState.selected.label;
+      }, 300);
+    },
+    // 设置项目状态表单重置
+    reset() {
+      this.form = {
+        id: null,
+        projectStage: null,
+        projectState: null,
+        stageName: null,
+        stateName: null,
+      };
+      this.resetForm("form");
+    },
+    // 设置上传评估意见表单重置
+    resetAssess() {
+      this.formAssess = {
+        id: null,
+        context: null,
+        projectPoolId: this.selectRowList[0].id,
+      };
+      this.resetForm("formAssess");
+    },
+    /**终止按钮操作 */
+    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`
+      );
+    },
+    /** 修改项目状态提交按钮 */
+    submitForm() {
+      let that = this;
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          editStage(this.form).then((response) => {
+            that.$modal.msgSuccess("修改成功");
+            that.open = false;
+            that.getList();
+          });
+        }
+      });
+    },
+    // 上传评估意见提交
+    submitAssessForm() {
+      let that = this;
+      this.$refs["formAssess"].validate((valid) => {
+        if (valid) {
+          addInvestReview(this.formAssess).then((response) => {
+            that.$modal.msgSuccess("提交成功");
+            that.openAssess = false;
+            that.getList();
+          });
+        }
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
   },
-  methods: {},
 };
 </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>

+ 725 - 7
ruoyi-ui/src/views/invest/pool/index3.vue

@@ -1,21 +1,739 @@
 <template>
-  <div>
-    <!-- 项目立项 -->
-    <projectList ref="projectList3" type="1" stage="3"></projectList>
+  <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-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="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>
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+    <!-- 设置项目状态对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-form-item label="项目阶段" prop="projectStage">
+          <el-select
+            v-model="form.projectStage"
+            ref="selectLable"
+            placeholder="请选择项目阶段"
+          >
+            <el-option
+              @click.native="handleProjectSelect(index, dict)"
+              v-for="(dict, index) in dict.type.project_stage"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="项目状态" prop="projectState">
+          <el-select
+            ref="selectState"
+            v-model="form.projectState"
+            placeholder="请选择项目状态"
+          >
+            <el-option
+              @click.native="handleProjectStateSelect(dict)"
+              v-for="dict in project_state"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item
+          v-if="form.projectState == 'e'"
+          label="立项通过日期"
+          prop="projectDate"
+          :rules="[
+            { required: verifyProjectDate, trigger: 'blur', message: '请选择' },
+          ]"
+        >
+          <el-date-picker
+            clearable
+            v-model="form.projectDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择立项通过日期"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item
+          v-if="form.projectState == 'i'"
+          label="投决通过日期"
+          prop="decisionDate"
+          :rules="[
+            {
+              required: verifyDecisionDate,
+              trigger: 'blur',
+              message: '请选择',
+            },
+          ]"
+        >
+          <el-date-picker
+            clearable
+            v-model="form.decisionDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择投决通过日期"
+          >
+          </el-date-picker>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm" v-preventReClick
+          >确 定</el-button
+        >
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!-- 会议管理组件 -->
+    <meetingList
+      :type="'3'"
+      ref="meetingList"
+      :projectId="projectId"
+    ></meetingList>
   </div>
 </template>
 
 <script>
-import projectList from "../components/projectList";
+import { listApprovalList, delPool, editStage } from "@/api/invest/pool";
+import { selectByFlowKey } from "@/api/flowable/definition";
+import { listChannel } from "@/api/invest/channel";
+import meetingList from "../components/meetingList";
+import { mapGetters } from "vuex";
 export default {
   name: "Pool3",
-  components: { projectList },
+  dicts: ["project_group", "project_stage", "project_state", "CUSTOMER_TRADE"],
+  components: {
+    meetingList,
+  },
   data() {
     return {
+      project_state: [],
+      rules: {
+        projectStage: [
+          { required: true, trigger: "change", message: "请选择项目阶段" },
+        ],
+        projectState: [
+          { required: true, trigger: "change", message: "请选择项目状态" },
+        ],
+      },
+      // 遮罩层
+      loading: false,
+
+      // 选中id数组
+      ids: [],
+      idsName: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 选中数组
+      selectRowList: [],
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // 项目池表格数据
+      poolList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      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,
+      },
+      form: {
+        id: null,
+        projectStage: "",
+        projectState: "",
+        stageName: "",
+        stateName: "",
+      },
+      channelList: [],
+
+      verifyProjectDate: false,
+      verifyDecisionDate: false,
+      projectId: "",
     };
   },
-  created() {
+  computed: {
+    ...mapGetters(["user","projectState"]),
+  },
+  watch: {
+    "form.projectState": function (newValue, oldValue) {
+      // 项目立项通过
+      if (newValue == "e") {
+        this.verifyProjectDate = true;
+      } else {
+        this.verifyProjectDate = false;
+      }
+      // 项目投决通过
+      if (newValue == "i") {
+        this.verifyDecisionDate = true;
+      } else {
+        this.verifyDecisionDate = false;
+      }
+    },
+  },
+  created() {},
+  mounted() {
+    this.getList();
+    // 渠道
+    listChannel({
+      pageNum: 1,
+      pageSize: 100,
+    }).then((response) => {
+      this.channelList = response.rows;
+    });
+  },
+  methods: {
+    // 下拉框改变
+    handleProjectSelect(index, dict) {
+      this.form.projectState = null;
+      this.project_state = this.projectState[index];
+      // 给个默认值
+      this.form.projectState = this.project_state[0].dictValue;
+      this.form.stateName = this.project_state[0].dictLabel;
+      if (dict && dict.label) {
+        this.form.stageName = dict.label;
+      }
+    },
+    handleProjectStateSelect(dict) {
+      if (dict && dict.dictLabel) {
+        this.form.stateName = dict.dictLabel;
+      }
+    },
+
+    /** 查询项目池列表 */
+    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);
+      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 === 2) {
+              // 详情
+              this.handleDetail(row);
+            } else if (type === 3) {
+              // 设置项目阶段
+              this.handleBusinessUpdate(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 {
+            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 } });
+    },
+    // 修改业务节点
+    handleBusinessUpdate(row) {
+      this.reset();
+      let index = parseInt(row.projectStage) - 1;
+      this.handleProjectSelect(index, row);
+      this.form = row;
+      this.open = true;
+      this.title = "设置项目阶段";
+      setTimeout(() => {
+        this.form.stageName = this.$refs.selectLable.selected.label;
+        this.form.stateName = this.$refs.selectState.selected.label;
+      }, 300);
+    },
+    // 发起会议
+    handleMeeting(row, meetingType) {
+      this.$store.commit("SET_PROJECTITEMMESSAGE", row);
+      this.$refs.meetingList.handleAdd(row.id, meetingType);
+    },
+    // 设置项目状态表单重置
+    reset() {
+      this.form = {
+        id: null,
+        projectStage: null,
+        projectState: null,
+        stageName: null,
+        stateName: null,
+      };
+      this.resetForm("form");
+    },
+
+    /**终止按钮操作 */
+    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`
+      );
+    },
+    /** 修改项目状态提交按钮 */
+    submitForm() {
+      let that = this;
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          editStage(this.form).then((response) => {
+            that.$modal.msgSuccess("修改成功");
+            that.open = false;
+            that.getList();
+          });
+        }
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
   },
-  methods: {},
 };
 </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>

+ 719 - 6
ruoyi-ui/src/views/invest/pool/index4.vue

@@ -1,20 +1,733 @@
 <template>
-  <div>
-    <!-- 尽职背调 -->
-    <projectList ref="projectList4" type="1" stage="4"></projectList>
+  <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-select>
+      </el-form-item>
+      <el-form-item label="所属组别" prop="projectGroup">
+        <el-select
+          v-model="queryParams.projectGroup"
+          placeholder="全部"
+          clearable
+        >
+          <el-option
+            v-for="dict in dict.type.project_group"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+
+      <el-form-item label="项目公司" prop="company">
+        <el-input
+          v-model.trim="queryParams.company"
+          placeholder="请输入项目所属公司"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item class="searchWrapper">
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+          >重置</el-button
+        >
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          plain
+          :disabled="multiple"
+          type="warning"
+          size="mini"
+          icon="el-icon-tickets"
+          @click="handleSelectData(9)"
+          v-hasPermi="['invest:pool:due']"
+          >尽调申请</el-button
+        >
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          plain
+          :disabled="multiple"
+          type="primary"
+          size="mini"
+          icon="el-icon-document-checked"
+          @click="handleSelectData(10)"
+          >上传尽调报告</el-button
+        >
+      </el-col>
+
+      <el-col :span="1.5">
+        <el-button
+          :disabled="multiple"
+          plain
+          type="success"
+          size="mini"
+          icon="el-icon-setting"
+          v-hasPermi="['invest:pool:stage']"
+          @click="handleSelectData(3)"
+          >设置项目阶段</el-button
+        >
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          @click="handleSelectData(4)"
+          type="danger"
+          plain
+          icon="el-icon-switch-button"
+          size="mini"
+          :disabled="multiple"
+          v-hasPermi="['invest:pool:remove']"
+          >终止</el-button
+        >
+      </el-col>
+
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
+    </el-row>
+    <el-table
+      ref="dataTable"
+      @row-click="clickRow"
+      class="tableWrapper"
+      v-loading="loading"
+      border
+      :data="poolList"
+      @selection-change="handleSelectionChange"
+    >
+      <el-table-column type="selection" width="40" align="center" />
+      <el-table-column
+        type="index"
+        label="序号"
+        width="50"
+        align="center"
+      ></el-table-column>
+      <!-- <el-table-column label="主键id" align="center" prop="id" /> -->
+      <el-table-column label="项目名称" align="center" prop="projectName">
+        <template slot-scope="scope">
+          <div
+            :title="scope.row.projectName"
+            class="public-text-blue public-cursor"
+            @click="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>
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+    <!-- 设置项目状态对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-form-item label="项目阶段" prop="projectStage">
+          <el-select
+            v-model="form.projectStage"
+            ref="selectLable"
+            placeholder="请选择项目阶段"
+          >
+            <el-option
+              @click.native="handleProjectSelect(index, dict)"
+              v-for="(dict, index) in dict.type.project_stage"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="项目状态" prop="projectState">
+          <el-select
+            ref="selectState"
+            v-model="form.projectState"
+            placeholder="请选择项目状态"
+          >
+            <el-option
+              @click.native="handleProjectStateSelect(dict)"
+              v-for="dict in project_state"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item
+          v-if="form.projectState == 'e'"
+          label="立项通过日期"
+          prop="projectDate"
+          :rules="[
+            { required: verifyProjectDate, trigger: 'blur', message: '请选择' },
+          ]"
+        >
+          <el-date-picker
+            clearable
+            v-model="form.projectDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择立项通过日期"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item
+          v-if="form.projectState == 'i'"
+          label="投决通过日期"
+          prop="decisionDate"
+          :rules="[
+            {
+              required: verifyDecisionDate,
+              trigger: 'blur',
+              message: '请选择',
+            },
+          ]"
+        >
+          <el-date-picker
+            clearable
+            v-model="form.decisionDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择投决通过日期"
+          >
+          </el-date-picker>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm" v-preventReClick
+          >确 定</el-button
+        >
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <!-- 尽调组件 -->
+    <dueDiligenceList
+      :type="2"
+      ref="dueDiligenceLists"
+      :projectId="projectId"
+      :projectName="form.projectName"
+    ></dueDiligenceList>
   </div>
 </template>
 
 <script>
-import projectList from "../components/projectList";
+import { listInvestigateList, delPool, editStage,addInvestigate } from "@/api/invest/pool";
+import { selectByFlowKey } from "@/api/flowable/definition";
+import { listChannel } from "@/api/invest/channel";
+import dueDiligenceList from "../components/dueDiligenceList";
+import { mapGetters } from "vuex";
 export default {
   name: "Pool4",
-  components: { projectList },
+  dicts: ["project_group", "project_stage", "project_state", "CUSTOMER_TRADE"],
+  components: {
+    dueDiligenceList,
+  },
   data() {
     return {
+      projectId: "",
+      project_state: [],
+      rules: {
+        projectStage: [
+          { required: true, trigger: "change", message: "请选择项目阶段" },
+        ],
+        projectState: [
+          { required: true, trigger: "change", message: "请选择项目状态" },
+        ],
+      },
+      // 遮罩层
+      loading: false,
+
+      // 选中id数组
+      ids: [],
+      idsName: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 选中数组
+      selectRowList: [],
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // 项目池表格数据
+      poolList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      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,
+      },
+      form: {
+        id: null,
+        projectStage: "",
+        projectState: "",
+        stageName: "",
+        stateName: "",
+      },
+      channelList: [],
+      verifyProjectDate: false,
+      verifyDecisionDate: false,
     };
   },
+  computed: {
+    ...mapGetters(["user","projectState"]),
+  },
+  watch: {
+    "form.projectState": function (newValue, oldValue) {
+      // 项目立项通过
+      if (newValue == "e") {
+        this.verifyProjectDate = true;
+      } else {
+        this.verifyProjectDate = false;
+      }
+      // 项目投决通过
+      if (newValue == "i") {
+        this.verifyDecisionDate = true;
+      } else {
+        this.verifyDecisionDate = false;
+      }
+    },
+  },
   created() {},
-  methods: {},
+  mounted() {
+    selectByFlowKey("flow_4aimqsfe").then((response) => {
+      this.surveyForm = response.data;
+    });
+    this.getList();
+    // 渠道
+    listChannel({
+      pageNum: 1,
+      pageSize: 100,
+    }).then((response) => {
+      this.channelList = response.rows;
+    });
+  },
+  methods: {
+    // 下拉框改变
+    handleProjectSelect(index, dict) {
+      this.form.projectState = null;
+      this.project_state = this.projectState[index];
+      // 给个默认值
+      this.form.projectState = this.project_state[0].dictValue;
+      this.form.stateName = this.project_state[0].dictLabel;
+      if (dict && dict.label) {
+        this.form.stageName = dict.label;
+      }
+    },
+    handleProjectStateSelect(dict) {
+      if (dict && dict.dictLabel) {
+        this.form.stateName = dict.dictLabel;
+      }
+    },
+
+    /** 查询项目池列表 */
+    getList() {
+      this.loading = true;
+      listInvestigateList(this.queryParams).then((response) => {
+        this.poolList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.queryParams.orderByColumn = "createTime";
+      this.queryParams.isAsc = "desc";
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.id);
+      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 === 2) {
+              // 详情
+              this.handleDetail(row);
+            } else if (type === 3) {
+              // 设置项目阶段
+              this.handleBusinessUpdate(row);
+            } else if (type === 9) {
+              // 尽调申请
+              this.handleDropdown("1", row);
+            } else if (type === 10) {
+              // 上传尽调报告
+              this.handleDropdown("3", row);
+            }
+          } 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 } });
+    },
+    // 修改业务节点
+    handleBusinessUpdate(row) {
+      this.reset();
+      let index = parseInt(row.projectStage) - 1;
+      this.handleProjectSelect(index, row);
+      this.form = row;
+      this.open = true;
+      this.title = "设置项目阶段";
+      setTimeout(() => {
+        this.form.stageName = this.$refs.selectLable.selected.label;
+        this.form.stateName = this.$refs.selectState.selected.label;
+      }, 300);
+    },
+    // 发起尽调申请
+    handleDropdown(type, row) {
+      const id = row.id || this.ids;
+      // this.$router.push({
+      //   path: "/invest/pool/detail",
+      //   query: { id: id, activeName: "4" },
+      // });
+      // this.$refs.dueDiligenceLists.getProjectName(row.projectName);
+      this.$refs.dueDiligenceLists.handleSurvey(type, row, this.dueForm);
+    },
+    // 设置项目状态表单重置
+    reset() {
+      this.form = {
+        id: null,
+        projectStage: null,
+        projectState: null,
+        stageName: null,
+        stateName: null,
+      };
+      this.resetForm("form");
+    },
+    /**终止按钮操作 */
+    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`
+      );
+    },
+    /** 修改项目状态提交按钮 */
+    submitForm() {
+      let that = this;
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          editStage(this.form).then((response) => {
+            that.$modal.msgSuccess("修改成功");
+            that.open = false;
+            that.getList();
+          });
+        }
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+  },
 };
 </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>

+ 716 - 6
ruoyi-ui/src/views/invest/pool/index5.vue

@@ -1,20 +1,730 @@
 <template>
-  <div>
-    <!-- 项目投决 -->
-    <projectList ref="projectList5" type="1" stage="5"></projectList>
+  <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-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(11)"
+          v-hasPermi="['invest:pool:tj:apply']"
+          >投决申请</el-button
+        >
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          plain
+          :disabled="multiple"
+          type="warning"
+          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"
+          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"
+          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="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>
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+    <!-- 设置项目状态对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-form-item label="项目阶段" prop="projectStage">
+          <el-select
+            v-model="form.projectStage"
+            ref="selectLable"
+            placeholder="请选择项目阶段"
+          >
+            <el-option
+              @click.native="handleProjectSelect(index, dict)"
+              v-for="(dict, index) in dict.type.project_stage"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="项目状态" prop="projectState">
+          <el-select
+            ref="selectState"
+            v-model="form.projectState"
+            placeholder="请选择项目状态"
+          >
+            <el-option
+              @click.native="handleProjectStateSelect(dict)"
+              v-for="dict in project_state"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item
+          v-if="form.projectState == 'e'"
+          label="立项通过日期"
+          prop="projectDate"
+          :rules="[
+            { required: verifyProjectDate, trigger: 'blur', message: '请选择' },
+          ]"
+        >
+          <el-date-picker
+            clearable
+            v-model="form.projectDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择立项通过日期"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item
+          v-if="form.projectState == 'i'"
+          label="投决通过日期"
+          prop="decisionDate"
+          :rules="[
+            {
+              required: verifyDecisionDate,
+              trigger: 'blur',
+              message: '请选择',
+            },
+          ]"
+        >
+          <el-date-picker
+            clearable
+            v-model="form.decisionDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择投决通过日期"
+          >
+          </el-date-picker>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm" v-preventReClick
+          >确 定</el-button
+        >
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!-- 会议管理组件 -->
+    <meetingList
+      :type="'3'"
+      ref="meetingList"
+      :projectId="projectId"
+    ></meetingList>
   </div>
 </template>
 
 <script>
-import projectList from "../components/projectList";
+import { listDecisionList, delPool, editStage ,addDecision} from "@/api/invest/pool";
+import { listChannel } from "@/api/invest/channel";
+import meetingList from "../components/meetingList";
+import { mapGetters } from "vuex";
 export default {
   name: "Pool5",
-  components: { projectList },
+  dicts: ["project_group", "project_stage", "project_state", "CUSTOMER_TRADE"],
+  components: {
+    meetingList,
+  },
   data() {
     return {
+      project_state: [],
+      rules: {
+        projectStage: [
+          { required: true, trigger: "change", message: "请选择项目阶段" },
+        ],
+        projectState: [
+          { required: true, trigger: "change", message: "请选择项目状态" },
+        ],
+      },
+      // 遮罩层
+      loading: false,
+
+      // 选中id数组
+      ids: [],
+      idsName: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 选中数组
+      selectRowList: [],
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // 项目池表格数据
+      poolList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      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,
+      },
+      form: {
+        id: null,
+        projectStage: "",
+        projectState: "",
+        stageName: "",
+        stateName: "",
+      },
+      channelList: [],
+      verifyProjectDate: false,
+      verifyDecisionDate: false,
+      projectId: "",
     };
   },
+  computed: {
+    ...mapGetters(["user","projectState"]),
+  },
+  watch: {
+    "form.projectState": function (newValue, oldValue) {
+      // 项目立项通过
+      if (newValue == "e") {
+        this.verifyProjectDate = true;
+      } else {
+        this.verifyProjectDate = false;
+      }
+      // 项目投决通过
+      if (newValue == "i") {
+        this.verifyDecisionDate = true;
+      } else {
+        this.verifyDecisionDate = false;
+      }
+    },
+  },
   created() {},
-  methods: {},
+  mounted() {
+    this.getList();
+    // 渠道
+    listChannel({
+      pageNum: 1,
+      pageSize: 100,
+    }).then((response) => {
+      this.channelList = response.rows;
+    });
+  },
+  methods: {
+    // 下拉框改变
+    handleProjectSelect(index, dict) {
+      this.form.projectState = null;
+      this.project_state = this.projectState[index];
+      // 给个默认值
+      this.form.projectState = this.project_state[0].dictValue;
+      this.form.stateName = this.project_state[0].dictLabel;
+      if (dict && dict.label) {
+        this.form.stageName = dict.label;
+      }
+    },
+    handleProjectStateSelect(dict) {
+      if (dict && dict.dictLabel) {
+        this.form.stateName = dict.dictLabel;
+      }
+    },
+
+    /** 查询项目池列表 */
+    getList() {
+      this.loading = true;
+      listDecisionList(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 === 2) {
+              // 详情
+              this.handleDetail(row);
+            } else if (type === 3) {
+              // 设置项目阶段
+              this.handleBusinessUpdate(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",
+        });
+      }
+    },
+    // 发起会议
+    handleMeeting(row, meetingType) {
+      this.$store.commit("SET_PROJECTITEMMESSAGE", row);
+      this.$refs.meetingList.handleAdd(row.id, meetingType);
+    },
+    handleDetail(row) {
+      const id = row.id || this.ids;
+      this.$router.push({ path: "/invest/pool/detail", query: { id: id } });
+    },
+    // 修改业务节点
+    handleBusinessUpdate(row) {
+      this.reset();
+      let index = parseInt(row.projectStage) - 1;
+      this.handleProjectSelect(index, row);
+      this.form = row;
+      this.open = true;
+      this.title = "设置项目阶段";
+      setTimeout(() => {
+        this.form.stageName = this.$refs.selectLable.selected.label;
+        this.form.stateName = this.$refs.selectState.selected.label;
+      }, 300);
+    },
+    // 设置项目状态表单重置
+    reset() {
+      this.form = {
+        id: null,
+        projectStage: null,
+        projectState: null,
+        stageName: null,
+        stateName: null,
+      };
+      this.resetForm("form");
+    },
+    /**终止按钮操作 */
+    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`
+      );
+    },
+    /** 修改项目状态提交按钮 */
+    submitForm() {
+      let that = this;
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          editStage(this.form).then((response) => {
+            that.$modal.msgSuccess("修改成功");
+            that.open = false;
+            that.getList();
+          });
+        }
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+  },
 };
 </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>

+ 20 - 0
ruoyi-ui/src/views/invest/pool/index6.vue

@@ -0,0 +1,20 @@
+<template>
+  <div>
+    <!-- 签约 -->
+    <projectList ref="projectList5" type="1" stage="6"></projectList>
+  </div>
+</template>
+
+<script>
+import projectList from "../components/projectList";
+export default {
+  name: "Pool6",
+  components: { projectList },
+  data() {
+    return {
+    };
+  },
+  created() {},
+  methods: {},
+};
+</script>

+ 22 - 0
ruoyi-ui/src/views/invest/pool/index7.vue

@@ -0,0 +1,22 @@
+<template>
+  <div>
+    <!-- 投后 -->
+    <projectList ref="projectList5" type="1" stage="7"></projectList>
+ 
+  </div>
+</template>
+
+<script>
+import projectList from "../components/projectList";
+export default {
+  name: "Pool7",
+  components: { projectList },
+  data() {
+    return {
+      
+    };
+  },
+  created() {},
+  methods: {},
+};
+</script>

+ 12 - 1
ruoyi-ui/src/views/login.vue

@@ -181,9 +181,20 @@ export default {
             .then(() => {
               this.$router.push({
                 path: this.redirect || "/",
-                query: { type: "admin", title: "爱思系统" },
+                query: { type: "admin", title: "投资系统" },
               });
             })
+            .then(() => {
+              let inspectNum = 0, //评估考察
+                projectLXNum = 0, //项目立项
+                dueNum = 0, //尽职背调
+                projectTJNum = 0; //项目投决
+              // 获取代办任务数量
+              this.$store.commit("SET_INSPECTNUM", inspectNum);
+              this.$store.commit("SET_PROJECTLXNUM", projectLXNum);
+              this.$store.commit("SET_DUENUM", dueNum);
+              this.$store.commit("SET_PROJECTTJNUM", projectTJNum);
+            })
             .catch(() => {
               this.loading = false;
               if (this.captchaEnabled) {

+ 129 - 15
ruoyi-ui/src/views/study/gen/index.vue

@@ -56,14 +56,14 @@
           >新增</el-button
         >
       </el-col>
-      <!-- <el-col :span="1.5">
+      <el-col :span="1.5">
         <el-button
           type="success"
           plain
           icon="el-icon-edit"
           size="mini"
           :disabled="single"
-          @click="handleUpdate"
+          @click="handleSelectData(1)"
           v-hasPermi="['study:gen:edit']"
           >修改</el-button
         >
@@ -75,11 +75,11 @@
           icon="el-icon-delete"
           size="mini"
           :disabled="multiple"
-          @click="handleDelete"
+          @click="handleSelectData(2)"
           v-hasPermi="['study:gen:remove']"
           >删除</el-button
         >
-      </el-col> -->
+      </el-col>
       <el-col :span="1.5">
         <el-button
           type="warning"
@@ -98,6 +98,8 @@
     </el-row>
 
     <el-table
+      ref="dataTable"
+      @row-click="clickRow"
       class="tableWrapper"
       v-loading="loading"
       border
@@ -105,10 +107,21 @@
       @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="55" 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="contractName">
         <template slot-scope="scope">
-          <div :title="scope.row.contractName">
+          <div
+            :title="scope.row.contractName"
+            class="public-text-blue public-cursor"
+            @click="handleDetail(scope.row)"
+          >
             {{ scope.row.contractName }}
           </div>
         </template>
@@ -163,15 +176,15 @@
             v-hasPermi="['study:gen:edit']"
             >修改</el-button
           >
-          <el-button
+          <!-- <el-button
             v-if="user.nickName !== scope.row.createBy"
             class="custom-blue-color"
             size="mini"
             type="text"
             icon="el-icon-search"
-            @click="handleUpdate(scope.row)"
+            @click="handleDetail(scope.row)"
             >详情</el-button
-          >
+          > -->
           <el-button
             v-if="user.nickName === scope.row.createBy"
             class="custom-red-color"
@@ -195,7 +208,12 @@
     />
 
     <!-- 添加或修改研究资料管理对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
+    <el-dialog
+      :title="title"
+      :visible.sync="open"
+      width="1250px"
+      append-to-body
+    >
       <el-form
         class="special-el-form"
         ref="form"
@@ -246,12 +264,60 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+    <!-- 研究资料详情 -->
+    <el-dialog
+      title="研究资料详情"
+      :visible.sync="openDetail"
+      width="1250px"
+      append-to-body
+    >
+      <el-form
+        class="special-el-form"
+        ref="form"
+        :model="form"
+        label-width="80px"
+      >
+        <el-form-item label="资料名称" prop="contractName">
+          <el-input maxlength="100" v-model="form.contractName" disabled />
+        </el-form-item>
+        <el-form-item label="资料类别" prop="contractType">
+          <el-select v-model="form.contractType" disabled style="width: 100%">
+            <el-option
+              v-for="dict in dict.type.file_type"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="文件" prop="listFile" class="special-el-form-item">
+          <fileItem
+            ref="fileItemsDet"
+            :id="form.id"
+            @getFileList="getFileList"
+          ></fileItem>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark" class="special-el-form-item">
+          <el-input
+            maxlength="200"
+            rows="4"
+            type="textarea"
+            v-model="form.remark"
+            disabled
+          />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="openDetail = false">关 闭</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 import { listGen, getGen, delGen, addGen, updateGen } from "@/api/study/gen";
 
+import { mapGetters } from "vuex";
 import fileItem from "../../invest/components/fileItem";
 export default {
   name: "Gen",
@@ -275,8 +341,10 @@ export default {
       single: true,
       // 非多个禁用
       multiple: true,
+      // 选中数组
+      selectRowList: [],
       // 显示搜索条件
-      showSearch: true,
+      showSearch: false,
       // 总条数
       total: 0,
       // 研究资料管理表格数据
@@ -317,13 +385,12 @@ export default {
         ],
         listFile: [{ required: true, validator: validateLogo }],
       },
-      user: {
-        userId: "",
-        nickName: "",
-      },
-      popType: 2, //弹窗类型 1=修改 2=详情
+      openDetail: false,
     };
   },
+  computed: {
+    ...mapGetters(["user"]),
+  },
   created() {
     this.getList();
   },
@@ -385,6 +452,7 @@ export default {
       this.idsName = selection.map((item) => item.contractName);
       this.single = selection.length !== 1;
       this.multiple = !selection.length;
+      this.selectRowList = selection;
     },
     /** 新增按钮操作 */
     handleAdd() {
@@ -411,6 +479,20 @@ export default {
         }, 300);
       });
     },
+    // 详情
+    handleDetail(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      getGen(id).then((response) => {
+        this.form = response.data;
+        this.openDetail = true;
+        setTimeout(() => {
+          this.$refs.fileItemsDet.fileList = [];
+          this.$refs.fileItemsDet.getListFileBusinessId(id);
+          this.$refs.fileItemsDet.handleButton();
+        }, 300);
+      });
+    },
     /** 提交按钮 */
     submitForm() {
       this.$refs["form"].validate((valid) => {
@@ -457,6 +539,38 @@ export default {
         `gen_${new Date().getTime()}.xlsx`
       );
     },
+
+    clickRow(row) {
+      this.$refs.dataTable.toggleRowSelection(row);
+    },
+    handleSelectData(type) {
+      // type 1=修改 2=删除
+      if (this.selectRowList.length == 1) {
+        const row = this.selectRowList[0];
+        // 创建人
+        if (row.createBy === this.user.nickName) {
+          if (type === 1) {
+            // 修改
+            this.handleUpdate(row);
+          } else if (type === 2) {
+            // 删除
+            this.handleDelete(row);
+          }
+        } else {
+          this.$message({
+            message: "无权限",
+            duration: 1200,
+            type: "error",
+          });
+        }
+      } else {
+        this.$message({
+          message: "只能选择一条数据",
+          duration: 1200,
+          type: "warning",
+        });
+      }
+    },
   },
 };
 </script>

+ 2 - 2
ruoyi-ui/vue.config.js

@@ -35,8 +35,8 @@ module.exports = {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
         // target: `http://localhost:8080`,
-        // target: `http://192.168.100.234:8091`,
-        target: `http://47.103.79.143:8091`,
+        target: `http://192.168.100.234:8091`,
+        // target: `http://47.103.79.143:8091`,
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''