Browse Source

前端-投资

armg 1 year ago
parent
commit
067aee8d09

+ 1 - 1
ruoyi-ui/src/api/invest/pool.js

@@ -51,7 +51,7 @@ export function delPool(id) {
 // 修改项目池状态
 export function editStage(data) {
   return request({
-    url: '/invest/editStage',
+    url: '/invest/pool/editStage',
     method: 'put',
     data: data
   })

+ 22 - 0
ruoyi-ui/src/assets/styles/public.scss

@@ -415,4 +415,26 @@
       color: white;
     }
   }
+}
+
+.special-el-form {
+  margin-left: 30px;
+  display: flex;
+  flex-flow: wrap;
+  width: 95%;
+  h3 {
+    width: 100%;
+    margin-bottom: -10px;
+    font-weight: bold;
+  }
+  .el-form-item {
+    width: 50%;
+  }
+  .el-date-editor.el-input,
+  .el-select {
+    width: 100%;
+  }
+  .special-el-form-item {
+    width: 100% !important;
+  }
 }

+ 33 - 7
ruoyi-ui/src/layout/components/AppMain.vue

@@ -10,20 +10,46 @@
 </template>
 
 <script>
-import iframeToggle from "./IframeToggle/index"
+import iframeToggle from "./IframeToggle/index";
 
 export default {
-  name: 'AppMain',
+  name: "AppMain",
   components: { iframeToggle },
   computed: {
     cachedViews() {
-      return this.$store.state.tagsView.cachedViews
+      let cachedViews = this.$store.state.tagsView.cachedViews;
+      let index = cachedViews.indexOf("investPoolAdd");
+      if (index !== -1) {
+        cachedViews.splice(index, 1);
+      }
+      if (cachedViews.indexOf("investPoolDetail") !== -1) {
+        cachedViews.splice(cachedViews.indexOf("investPoolDetail"), 1);
+      }
+      if (cachedViews.indexOf("investRecordIndex") !== -1) {
+        cachedViews.splice(cachedViews.indexOf("investRecordIndex"), 1);
+      }
+      if (cachedViews.indexOf("investChannelIndex") !== -1) {
+        cachedViews.splice(cachedViews.indexOf("investChannelIndex"), 1);
+      }
+      if (cachedViews.indexOf("investContactsIndex") !== -1) {
+        cachedViews.splice(cachedViews.indexOf("investContactsIndex"), 1);
+      }
+      if (cachedViews.indexOf("investMeetingmpanyctsIndex") !== -1) {
+        cachedViews.splice(cachedViews.indexOf("investMeetingmpanyctsIndex"), 1);
+      }
+      if (cachedViews.indexOf("investMeetingmpanyctsMark") !== -1) {
+        cachedViews.splice(cachedViews.indexOf("investMeetingmpanyctsMark"), 1);
+      }
+      if (cachedViews.indexOf("investInformationIndex") !== -1) {
+        cachedViews.splice(cachedViews.indexOf("investInformationIndex"), 1);
+      }
+      return cachedViews;
     },
     key() {
-      return this.$route.path
-    }
-  }
-}
+      return this.$route.path;
+    },
+  },
+};
 </script>
 
 <style lang="scss" scoped>

+ 5 - 10
ruoyi-ui/src/router/index.js

@@ -105,11 +105,11 @@ export const constantRoutes = [
         name: 'investContactsIndex',
         component: () => import('@/views/invest/contacts/index')
       },
-      {
-        path: "company/index",
-        name: 'investCompanyctsIndex',
-        component: () => import('@/views/invest/company/index')
-      },
+      // {
+      //   path: "company/index",
+      //   name: 'investCompanyctsIndex',
+      //   component: () => import('@/views/invest/company/index')
+      // },
       {
         path: "meeting/index",
         name: 'investMeetingmpanyctsIndex',
@@ -125,11 +125,6 @@ export const constantRoutes = [
         path: 'information/index',
         component: () => import('@/views/invest/information/index'),
         name: 'investInformationIndex',
-      },
-      {
-        path: 'contract/index',
-        component: () => import('@/views/invest/contract/index'),
-        name: 'investContractIndex',
       }
     ]
   },

+ 20 - 7
ruoyi-ui/src/views/invest/components/contractList.vue

@@ -173,13 +173,14 @@
           <el-input v-model="form.delFlag" placeholder="请输入状态" />
         </el-form-item> -->
         <el-form-item label="文件" prop="files">
-          <el-input
-            v-model="form.files"
-            placeholder=""
-          />
+          <fileItem :id="id" @getFileList="getFileList"></fileItem>
         </el-form-item>
         <el-form-item label="备注" prop="remark">
-          <el-input type="textarea" v-model="form.remark" placeholder="请输入备注" />
+          <el-input
+            type="textarea"
+            v-model="form.remark"
+            placeholder="请输入备注"
+          />
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -191,6 +192,7 @@
 </template>
 
 <script>
+import fileItem from "./fileItem";
 import {
   listContract,
   getContract,
@@ -206,8 +208,10 @@ export default {
       default: "1", //1=显示全部列表  2=显示某项目下的详情列表
     },
   },
+  components: { fileItem },
   data() {
     return {
+      fileList: [],
       // 遮罩层
       loading: true,
       // 选中数组
@@ -237,12 +241,16 @@ export default {
         meetingCode: null,
       },
       // 表单参数
-      form: {},
+      form: {
+        contractName: "",
+        projectPoolId: "",
+        files: "",
+      },
       // 表单校验
       rules: {
         contractName: [{ required: true, trigger: "blur", message: "请输入" }],
         projectPoolId: [{ required: true, trigger: "blur", message: "请输入" }],
-        files: [{ required: true,  message: "请上传" }]
+        files: [{ required: true, message: "请上传" }],
       },
     };
   },
@@ -250,6 +258,10 @@ export default {
     this.getList();
   },
   methods: {
+    // 获取fileList
+    getFileList(fileList) {
+      this.fileList = fileList;
+    },
     /** 查询合同管理列表 */
     getList() {
       this.loading = true;
@@ -319,6 +331,7 @@ export default {
     submitForm() {
       this.$refs["form"].validate((valid) => {
         if (valid) {
+          this.form.listFile = this.fileList;
           if (this.form.id != null) {
             updateContract(this.form).then((response) => {
               this.$modal.msgSuccess("修改成功");

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

@@ -0,0 +1,88 @@
+<template>
+  <div>
+    <el-upload
+      ref="upload"
+      class="upload"
+      multiple
+      :file-list="fileList"
+      :action="uploadFileUrl"
+      :headers="headers"
+      :on-change="handleChange"
+      :on-remove="handleRemove"
+      :before-remove="beforeRemove"
+      :on-success="handleUploadSuccess"
+    >
+      <!-- :auto-upload="false" -->
+      <el-button size="small" type="primary">点击上传</el-button>
+    </el-upload>
+  </div>
+</template>
+<script>
+import { getToken } from "@/utils/auth";
+import { listFileBusinessId, delFile } from "@/api/system/file";
+export default {
+  props: {
+    id: {
+      type: String,
+      default: "0",
+    },
+  },
+  data() {
+    return {
+      fileList: [],
+      uploadFileUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传文件服务器地址
+      headers: {
+        Authorization: "Bearer " + getToken(),
+      },
+    };
+  },
+  mounted() {
+    console.log("附件组件", this.id);
+    if (this.id) {
+      this.getListFileBusinessId(this.id);
+    }
+  },
+  methods: {
+    // 根据附件业务ID()获取附件详情信息列表
+    getListFileBusinessId(id) {
+      listFileBusinessId(id).then((response) => {
+        if (response.data.length > 0) {
+          let list = response.data;
+          for (let i in list) {
+            list[i].name = list[i].newUploadName;
+          }
+          this.fileList = list;
+        }
+      });
+    },
+    handleChange(file, fileList) {
+      //   console.log("----", file, fileList);
+    },
+    handleRemove(file, fileList) {
+      this.fileList = fileList;
+      const id = file.id;
+      if (file.id) {
+        delFile(id).then((response) => {
+          // 给父组件传值
+          this.$emit("getFileList", this.fileList);
+        });
+      }
+    },
+    beforeRemove(file, fileList) {
+      return this.$confirm(`确定移除 ${file.name}?`);
+    },
+    handleUploadSuccess(res, file, fileList) {
+      let that = this;
+      if (fileList.every((item) => item.status == "success")) {
+        fileList.map((item) => {
+          if (item.response) {
+            item.response.file.name = item.response.file.newUploadName;
+            this.fileList.push(item.response.file);
+            that.$emit("getFileList", this.fileList);
+          }
+        });
+      }
+    },
+  },
+};
+</script>

+ 15 - 6
ruoyi-ui/src/views/invest/components/fileList.vue

@@ -171,16 +171,17 @@
           <el-input v-model="form.meetingCode" placeholder="请输入会议编号" />
         </el-form-item>
         <el-form-item label="文件" prop="files">
-          <el-input
-            v-model="form.files"
-            placeholder="文件"
-          />
+          <fileItem :id="id" @getFileList="getFileList"></fileItem>
         </el-form-item>
         <!-- <el-form-item label="状态" prop="delFlag">
           <el-input v-model="form.delFlag" placeholder="请输入状态" />
         </el-form-item> -->
         <el-form-item label="备注" prop="remark">
-          <el-input type="teatarea" v-model="form.remark" placeholder="请输入备注" />
+          <el-input
+            type="teatarea"
+            v-model="form.remark"
+            placeholder="请输入备注"
+          />
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -192,6 +193,7 @@
 </template>
 
 <script>
+import fileItem from "./fileItem";
 import {
   listInformation,
   getInformation,
@@ -204,12 +206,14 @@ export default {
   props: {
     type: {
       type: String,
-      default: "1",//1=显示全部列表  2=显示某项目下的详情列表
+      default: "1", //1=显示全部列表  2=显示某项目下的详情列表
     },
   },
+  components: { fileItem },
   dicts: ["file_type"],
   data() {
     return {
+      fileList: [],
       // 遮罩层
       loading: true,
       // 选中数组
@@ -247,6 +251,10 @@ export default {
     this.getList();
   },
   methods: {
+    // 获取fileList
+    getFileList(fileList) {
+      this.fileList = fileList;
+    },
     /** 查询文件资料列表 */
     getList() {
       this.loading = true;
@@ -316,6 +324,7 @@ export default {
     submitForm() {
       this.$refs["form"].validate((valid) => {
         if (valid) {
+          this.form.listFile = this.fileList;
           if (this.form.id != null) {
             updateInformation(this.form).then((response) => {
               this.$modal.msgSuccess("修改成功");

+ 127 - 50
ruoyi-ui/src/views/invest/components/followList.vue

@@ -93,8 +93,8 @@
     >
       <el-table-column type="selection" width="55" align="center" />
       <!-- <el-table-column label="主键ID" align="center" prop="id" /> -->
-      <el-table-column label="项目编号" align="center" prop="porjectId" />
-      <el-table-column label="项目名称" align="center" prop="porjectName" />
+      <el-table-column label="项目编号" align="center" prop="projectId" />
+      <el-table-column label="项目名称" align="center" prop="projectName" />
       <el-table-column label="跟进人" align="center" prop="upPerson" />
       <el-table-column label="跟进方式" align="center" prop="upWay" />
       <el-table-column label="跟进内容" align="center" prop="upContent" />
@@ -108,7 +108,7 @@
           <span>{{ parseTime(scope.row.realityUpDate, "{y}-{m}-{d}") }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="创建时间" align="center" prop="creatTime" />
+      <el-table-column label="创建时间" align="center" prop="createTime" />
       <el-table-column
         label="操作"
         align="center"
@@ -144,17 +144,43 @@
     />
 
     <!-- 添加或修改跟进记录对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="项目名称">
-          <el-input
-            readonly
-            v-model="form.id"
-            placeholder="请选择"
-            @click="showProjectItem = true"
-          />
-          <!-- <div @click="showProjectItem = true">请选择</div> -->
-          <projectItem :showProjectItem="showProjectItem"></projectItem>
+    <el-dialog
+      :title="title"
+      :visible.sync="open"
+      width="1000px"
+      append-to-body
+    >
+      <el-form
+        class="special-el-form"
+        ref="form"
+        :model="form"
+        :rules="rules"
+        label-width="120px"
+      >
+        <el-form-item label="项目名称" prop="projectName">
+          <div
+            class="el-input__inner inputSimulation"
+            @click="handleProjectItem"
+          >
+            {{ 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="contacts">
+          <el-input disabled v-model="form.contacts" />
         </el-form-item>
         <el-form-item label="跟进日期" prop="realityUpDate">
           <el-date-picker
@@ -166,9 +192,18 @@
           >
           </el-date-picker>
         </el-form-item>
-        <el-form-item label="跟进人" prop=""> </el-form-item>
-        <el-form-item label="跟进方式" prop="">
-          <el-select v-model="form.porjectGroup" placeholder="请选择跟进方式">
+        <el-form-item label="跟进人" prop="upPerson">
+          <div class="el-input__inner inputSimulation" @click="openSelectDept">
+            {{ form.upPerson ? form.upPerson : "请选择 " }}
+          </div>
+          <selecDept
+            ref="selecDepts"
+            @getDeptUserInfo="getDeptUserInfo"
+            :deptId="deptId"
+          ></selecDept>
+        </el-form-item>
+        <el-form-item label="跟进方式" prop="upWay">
+          <el-select v-model="form.upWay" placeholder="请选择跟进方式">
             <el-option
               v-for="dict in dict.type.up_way"
               :key="dict.value"
@@ -177,7 +212,14 @@
             ></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="跟进内容">
+        <el-form-item label="附件" prop="file">
+          <fileItem :id="form.id" @getFileList="getFileList"></fileItem>
+        </el-form-item>
+        <el-form-item
+          label="跟进内容"
+          prop="upContent"
+          class="special-el-form-item"
+        >
           <el-input
             rows="4"
             type="textarea"
@@ -185,20 +227,8 @@
             placeholder="请输入跟进内容"
           />
         </el-form-item>
-        <el-form-item label="附件" prop="file">
-          <el-upload
-            class="upload-demo"
-            action=""
-            :on-preview="handlePreview"
-            :on-remove="handleRemove"
-            :before-remove="beforeRemove"
-            multiple
-            :file-list="fileList"
-          >
-            <el-button size="small" type="primary">点击上传</el-button>
-          </el-upload>
-        </el-form-item>
-        <el-form-item label="备注">
+
+        <el-form-item label="备注" prop="mark" class="special-el-form-item">
           <el-input
             rows="4"
             type="textarea"
@@ -206,9 +236,6 @@
             placeholder="请输入备注"
           />
         </el-form-item>
-        <!-- <el-form-item label="状态" prop="delFlag">
-          <el-input v-model="form.delFlag" placeholder="请输入状态" />
-        </el-form-item> -->
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -227,6 +254,8 @@ import {
   updateRecord,
 } from "@/api/invest/record";
 import projectItem from "./projectItem";
+import fileItem from "./fileItem";
+import selecDept from "./selecDept";
 
 export default {
   props: {
@@ -235,10 +264,11 @@ export default {
       default: "1", //1=显示全部列表  2=显示某项目下的详情列表
     },
   },
-  dicts: ["up_way"],
-  components: { projectItem },
+  dicts: ["up_way", "project_stage"],
+  components: { projectItem, fileItem, selecDept },
   data() {
     return {
+      deptId: "",
       fileList: [],
       showProjectItem: false,
       // 遮罩层
@@ -263,22 +293,71 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        porjectId: null,
+        projectId: null,
         contacts: null,
         realityUpDate: null,
         upPerson: null,
         upWay: null,
       },
       // 表单参数
-      form: {},
+      form: {
+        id: null,
+        projectId: null,
+        projectName: null,
+        projectStage: null,
+        contacts: null,
+        realityUpDate: null,
+        upPerson: null,
+        upWay: null,
+        upContent: null,
+        mark: null,
+        delFlag: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+      },
       // 表单校验
-      rules: {},
+      rules: {
+        projectName: [{ required: true, trigger: "blur", message: "请选择" }],
+        //  contacts: [{ required: true, trigger: "blur", message: "请输入" }],
+        realityUpDate: [{ required: true, trigger: "blur", message: "请选择" }],
+        upWay: [{ required: true, trigger: "change", message: "请选择" }],
+        upContent: [{ required: true, trigger: "blur", message: "请输入" }],
+        upPerson: [{ required: true, trigger: "blur", message: "请选择" }],
+      },
     };
   },
   created() {
     this.getList();
   },
   methods: {
+    // 选择部门人
+    openSelectDept() {
+      this.$refs.selecDepts.show();
+    },
+    getDeptUserInfo(info) {
+      this.form.upPerson = info[0].nickName;
+    },
+    // 获取公司信息
+    getProjectInfo(info) {
+      this.form.projectId = info[0].id;
+      this.form.projectName = info[0].projectName;
+      this.form.projectStage = info[0].projectStage;
+      this.form.projectState = info[0].projectState;
+      // 联系人
+      this.form.contacts = info[0].tProjectContacts.name;
+      // this.form.projectState = info[0].tProjectContacts;
+      console.log("this.form=", this.form);
+    },
+    //展示人员
+    handleProjectItem() {
+      this.$refs.projectItem.showProjectItem = true;
+    },
+    // 获取fileList
+    getFileList(fileList) {
+      this.fileList = fileList;
+    },
     /** 查询跟进记录列表 */
     getList() {
       this.loading = true;
@@ -297,7 +376,9 @@ export default {
     reset() {
       this.form = {
         id: null,
-        porjectId: null,
+        projectId: null,
+        projectName: null,
+        projectStage: null,
         contacts: null,
         realityUpDate: null,
         upPerson: null,
@@ -348,6 +429,7 @@ export default {
     submitForm() {
       this.$refs["form"].validate((valid) => {
         if (valid) {
+          this.form.listFile = this.fileList;
           if (this.form.id != null) {
             updateRecord(this.form).then((response) => {
               this.$modal.msgSuccess("修改成功");
@@ -388,15 +470,10 @@ export default {
         `record_${new Date().getTime()}.xlsx`
       );
     },
-    handleRemove(file, fileList) {
-      console.log(file, fileList);
-    },
-    handlePreview(file) {
-      console.log(file);
-    },
-    beforeRemove(file, fileList) {
-      return this.$confirm(`确定移除 ${file.name}?`);
-    },
   },
 };
 </script>
+<style lang="scss" scoped>
+.inputSimulation {
+}
+</style>

+ 26 - 75
ruoyi-ui/src/views/invest/components/poolForm.vue

@@ -5,11 +5,12 @@
       :model="form"
       :rules="type === '2' ? rules1 : rules"
       label-width="140px"
+      class="special-el-form"
     >
       <h3>项目基础信息</h3>
       <el-divider></el-divider>
-      <el-form-item label="项目名称" prop="porjectName">
-        <el-input v-model="form.porjectName" placeholder="请输入项目名称" />
+      <el-form-item label="项目名称" prop="projectName">
+        <el-input v-model="form.projectName" placeholder="请输入项目名称" />
       </el-form-item>
       <el-form-item label="渠道" prop="channel">
         <el-input v-model="form.channel" placeholder="请输入渠道" />
@@ -24,10 +25,10 @@
         >
         </el-date-picker>
       </el-form-item>
-      <el-form-item label="所属组别" prop="porjectGroup">
-        <el-select v-model="form.porjectGroup" placeholder="请选择所属组别">
+      <el-form-item label="所属组别" prop="projectGroup">
+        <el-select v-model="form.projectGroup" placeholder="请选择所属组别">
           <el-option
-            v-for="dict in dict.type.porject_group"
+            v-for="dict in dict.type.project_group"
             :key="dict.value"
             :label="dict.label"
             :value="dict.value"
@@ -138,20 +139,7 @@
         />
       </el-form-item>
       <el-form-item label="附件" prop="listFile">
-        <el-upload
-          ref="upload"
-          class="upload"
-          multiple
-          :file-list="fileList"
-          :action="uploadFileUrl"
-          :headers="headers"
-          :on-remove="handleRemove"
-          :before-remove="beforeRemove"
-          :on-success="handleUploadSuccess"
-        >
-          <!-- :auto-upload="false" -->
-          <el-button size="small" type="primary">点击上传</el-button>
-        </el-upload>
+        <fileItem :id="id" @getFileList="getFileList"></fileItem>
       </el-form-item>
       <h3>项目公司联系人信息</h3>
       <el-divider></el-divider>
@@ -269,9 +257,7 @@ import {
   addPool,
   updatePool,
 } from "@/api/invest/pool";
-import { getToken } from "@/utils/auth";
-import { listFileBusinessId } from "@/api/system/file";
-
+import fileItem from "./fileItem";
 export default {
   props: {
     id: {
@@ -282,24 +268,21 @@ export default {
       default: "1", //1可编辑  2不可编辑
     },
   },
-  dicts: ["CUSTOMER_TRADE", "porject_group"],
+  components: { fileItem },
+  dicts: ["CUSTOMER_TRADE", "project_group"],
   data() {
     return {
       title: "新增项目",
-      fileList: [],
       baseUrl: process.env.VUE_APP_BASE_API,
-      uploadFileUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传文件服务器地址
-      headers: {
-        Authorization: "Bearer " + getToken(),
-      },
+
       // 表单参数
       form: {
         id: null,
-        porjectName: null,
-        porjectGroup: null,
+        projectName: null,
+        projectGroup: null,
         industry: null,
         recordDate: null,
-        porjectCode: null,
+        projectCode: null,
         channel: null,
         contactDate: null,
         projectDate: null,
@@ -348,13 +331,14 @@ export default {
         updateTime: null,
         listFile: null,
       },
+      fileList: [],
       // 表单校验
       rules1: {},
       rules: {
-        porjectName: [{ required: true, trigger: "blur", message: "请输入" }],
+        projectName: [{ required: true, trigger: "blur", message: "请输入" }],
         channel: [{ required: true, trigger: "blur", message: "请输入" }],
         contactDate: [{ required: true, trigger: "blur", message: "请输入" }],
-        porjectGroup: [
+        projectGroup: [
           { required: true, trigger: "change", message: "请选择" },
         ],
         industry: [{ required: true, trigger: "change", message: "请选择" }],
@@ -432,41 +416,20 @@ export default {
   mounted() {
     if (this.id) {
       this.getPoolDetail(this.id);
-      this.getListFileBusinessId(this.id);
     } else {
       this.reset();
     }
   },
   methods: {
-    // 根据附件业务ID()获取附件详情信息列表
-    getListFileBusinessId(id) {
-      listFileBusinessId(id).then((response) => {
-        if (response.data.length > 0) {
-          let list = response.data;
-          for (let i in list) {
-            list[i].name = list[i].newUploadName;
-          }
-          this.fileList = list;
-        }
-      });
-    },
     getPoolDetail(id) {
       getPool(id).then((response) => {
         this.form = response.data;
       });
     },
-    handleRemove(file, fileList) {
+    // 获取fileList
+    getFileList(fileList) {
       this.fileList = fileList;
     },
-    beforeRemove(file, fileList) {
-      return this.$confirm(`确定移除 ${file.name}?`);
-    },
-    handleUploadSuccess(res, file) {
-      if (res.file) {
-        res.file.name = res.file.newUploadName;
-        this.fileList.push(res.file);
-      }
-    },
     /** 提交按钮 */
     submitForm() {
       let that = this;
@@ -481,6 +444,8 @@ export default {
               }, 1500);
             });
           } else {
+            this.form.projectStage = "1";
+            this.form.projectState = "a";
             addPool(this.form).then((response) => {
               this.$modal.msgSuccess("新增成功");
               setTimeout(() => {
@@ -513,11 +478,11 @@ export default {
     reset() {
       this.form = {
         id: null,
-        porjectName: null,
-        porjectGroup: null,
+        projectName: null,
+        projectGroup: null,
         industry: null,
         recordDate: null,
-        porjectCode: null,
+        projectCode: null,
         channel: null,
         contactDate: null,
         projectDate: null,
@@ -567,7 +532,7 @@ export default {
         listFile: null,
       };
       this.resetForm("form");
-    }
+    },
   },
 };
 </script>
@@ -576,26 +541,12 @@ export default {
   h2 {
     margin-left: 30px;
   }
-  .el-form {
-    margin-left: 30px;
-    display: flex;
-    flex-flow: wrap;
-    width: 95%;
+  .special-el-form {
     h3 {
       width: 100%;
       margin-bottom: -10px;
       font-weight: bold;
     }
-    .el-form-item {
-      width: 50%;
-    }
-    .special-el-form-item {
-      width: 100% !important;
-    }
-    .el-date-editor.el-input,
-    .el-select {
-      width: 100%;
-    }
     .btnList {
       width: 100%;
       display: flex;

+ 37 - 18
ruoyi-ui/src/views/invest/components/projectItem.vue

@@ -4,22 +4,27 @@
     <el-dialog
       title="选择项目"
       :visible.sync="showProjectItem"
-      width="500px"
+      width="800px"
       append-to-body
     >
-      <el-table :data="poolList" @selection-change="handleSelectionChange">
+      <el-table
+        @row-click="clickRow"
+        ref="multipleTable"
+        :data="poolList"
+        @selection-change="handleSelectionChange"
+      >
         <el-table-column type="selection" width="55" align="center" />
         <!-- <el-table-column label="主键id" align="center" prop="id" /> -->
-        <el-table-column label="项目名称" align="center" prop="porjectName" />
-        <el-table-column label="所属组别" align="center" prop="porjectGroup">
+        <el-table-column label="项目名称" align="center" prop="projectName" />
+        <el-table-column label="所属组别" align="center" prop="projectGroup">
           <template slot-scope="scope">
             <dict-tag
-              :options="dict.type.porject_group"
-              :value="scope.row.porjectGroup"
+              :options="dict.type.project_group"
+              :value="scope.row.projectGroup"
             />
           </template>
         </el-table-column>
-        <el-table-column label="项目编号" align="center" prop="porjectCode" />
+        <el-table-column label="项目编号" align="center" prop="projectCode" />
         <el-table-column label="渠道" align="center" prop="channel" />
         <el-table-column label="投资负责人" align="center" prop="investHead" />
         <el-table-column label="项目阶段" align="center" prop="projectStage">
@@ -50,14 +55,15 @@
 import { listPool } from "@/api/invest/pool";
 export default {
   props: {
-    showProjectItem: {
-      type: Boolean,
-      default: false,
-    },
+    // showProjectItem: {
+    //   type: Boolean,
+    //   default: false,
+    // },
   },
-  dicts: ["porject_group", "project_stage"],
+  dicts: ["project_group", "project_stage"],
   data() {
     return {
+      showProjectItem: false,
       // 总条数
       projectItemTotal: 0,
       poolList: [],
@@ -77,13 +83,24 @@ export default {
     this.getList();
   },
   methods: {
+    clickRow(row) {
+      this.$refs.multipleTable.toggleRowSelection(row);
+    },
     // 多选框选中数据
     handleSelectionChange(selection) {
-      console.log("selection=", selection);
-      this.ids = selection.map((item) => item.id);
-      this.projectItem = selection;
-      this.single = selection.length !== 1;
-      this.multiple = !selection.length;
+      if (selection.length > 1) {
+        this.$modal.msg("只能选择一个项目");
+        this.$refs.multipleTable.clearSelection();
+        return;
+      }
+      if (this.ids.length == 0) {
+        this.ids = selection;
+      } else {
+        this.$modal.msg("只能选择一个项目");
+        this.ids = [];
+        // multipleTable与table的ref绑定的一样
+        this.$refs.multipleTable.clearSelection();
+      }
     },
     /** 查询项目池列表 */
     getList() {
@@ -94,9 +111,11 @@ export default {
     },
     submit() {
       console.log("确定", this.ids);
+      this.$emit("getProjectInfo", this.ids);
+      this.showProjectItem = false;
     },
     cancel() {
-      this.open = false;
+      this.showProjectItem = false;
     },
   },
 };

+ 28 - 27
ruoyi-ui/src/views/invest/components/projectList.vue

@@ -9,9 +9,9 @@
       v-show="showSearch"
       label-width="90px"
     >
-      <el-form-item label="项目名称" prop="porjectName">
+      <el-form-item label="项目名称" prop="projectName">
         <el-input
-          v-model="queryParams.porjectName"
+          v-model="queryParams.projectName"
           placeholder="请输入项目名称"
           clearable
           @keyup.enter.native="handleQuery"
@@ -25,14 +25,14 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="所属组别" prop="porjectGroup">
+      <el-form-item label="所属组别" prop="projectGroup">
         <el-select
-          v-model="queryParams.porjectGroup"
+          v-model="queryParams.projectGroup"
           placeholder="请选择所属组别"
           clearable
         >
           <el-option
-            v-for="dict in dict.type.porject_group"
+            v-for="dict in dict.type.project_group"
             :key="dict.value"
             :label="dict.label"
             :value="dict.value"
@@ -94,9 +94,9 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="项目编号" prop="porjectCode">
+      <el-form-item label="项目编号" prop="projectCode">
         <el-input
-          v-model="queryParams.porjectCode"
+          v-model="queryParams.projectCode"
           placeholder="请输入项目编号"
           clearable
           @keyup.enter.native="handleQuery"
@@ -229,16 +229,16 @@
     >
       <el-table-column type="selection" width="55" align="center" />
       <!-- <el-table-column label="主键id" align="center" prop="id" /> -->
-      <el-table-column label="项目名称" align="center" prop="porjectName" />
-      <el-table-column label="所属组别" align="center" prop="porjectGroup">
+      <el-table-column label="项目名称" align="center" prop="projectName" />
+      <el-table-column label="所属组别" align="center" prop="projectGroup">
         <template slot-scope="scope">
           <dict-tag
-            :options="dict.type.porject_group"
-            :value="scope.row.porjectGroup"
+            :options="dict.type.project_group"
+            :value="scope.row.projectGroup"
           />
         </template>
       </el-table-column>
-      <el-table-column label="项目编号" align="center" prop="porjectCode" />
+      <el-table-column label="项目编号" align="center" prop="projectCode" />
       <el-table-column label="渠道" align="center" prop="channel" />
       <el-table-column label="投资负责人" align="center" prop="investHead" />
       <el-table-column label="项目阶段" align="center" prop="projectStage" />
@@ -275,11 +275,11 @@
         </template>
       </el-table-column>
       <el-table-column label="项目所属行业" align="center" prop="industry" />
-      <el-table-column label="项目所属公司" align="center" prop="company" />
+      <el-table-column label="项目所属公司" align="center" prop="tProjectCompany.companyName" />
       <el-table-column
         label="项目联系人"
         align="center"
-        prop="projectContacts"
+        prop="tProjectContacts.name"
       />
 
       <el-table-column
@@ -416,7 +416,7 @@ export default {
       default: "0", //0=全部 1=项目报备  2=评估考察 3=项目立项 4=尽职背调 5=项目投决
     },
   },
-  dicts: ["porject_group", "project_stage"],
+  dicts: ["project_group", "project_stage"],
   data() {
     return {
       project_state: [],
@@ -522,9 +522,9 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        porjectName: null,
-        porjectGroup: null,
-        porjectCode: null,
+        projectName: null,
+        projectGroup: null,
+        projectCode: null,
         channel: null,
         contactDate: null,
         projectDate: null,
@@ -551,8 +551,7 @@ export default {
       },
     };
   },
-  created() {
-    console.log("========created=======");
+  mounted() {
     // 项目阶段
     if (this.stage != "0") {
       this.queryParams.projectStage = this.stage;
@@ -560,7 +559,10 @@ export default {
     this.getList();
   },
   activated() {
-    console.log("========activated=");
+    // 项目阶段
+    if (this.stage != "0") {
+      this.queryParams.projectStage = this.stage;
+    }
     this.getList();
   },
   methods: {
@@ -573,7 +575,6 @@ export default {
     /** 查询项目池列表 */
     getList() {
       this.loading = true;
-      console.log("this.queryParams=", this.queryParams);
       listPool(this.queryParams).then((response) => {
         this.poolList = response.rows;
         this.total = response.total;
@@ -598,7 +599,6 @@ export default {
     },
     /** 新增按钮操作 */
     handleAdd() {
-      // this.title = "添加项目池";
       this.$router.push({ path: "/invest/pool/add" });
     },
     handleDetail(row) {
@@ -612,9 +612,10 @@ export default {
     },
     // 修改业务节点
     handleBusinessUpdate(row) {
-      //   const ids = row.id || this.ids;
-      this.form = row;
       this.reset();
+      let index = parseInt(row.projectStage) - 1;
+      this.handleProjectSelect(index);
+      this.form = row;
       this.open = true;
       this.title = "设置项目阶段";
     },
@@ -631,13 +632,13 @@ export default {
     handleDelete(row) {
       const ids = row.id || this.ids;
       this.$modal
-        .confirm('是否终止项目池编号为"' + ids + '"的数据项?')
+        .confirm('是否终止"' + row.projectName + '"项目?')
         .then(function () {
           return delPool(ids);
         })
         .then(() => {
           this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess("已终止");
         })
         .catch(() => {});
     },

+ 158 - 0
ruoyi-ui/src/views/invest/components/selecDept.vue

@@ -0,0 +1,158 @@
+<template>
+  <!-- 授权用户 -->
+  <el-dialog
+    title="选择用户"
+    :visible.sync="visible"
+    width="800px"
+    top="5vh"
+    append-to-body
+  >
+    <el-row>
+      <el-table
+        @row-click="clickRow"
+        ref="table"
+        :data="userList"
+        @selection-change="handleSelectionChange"
+        height="260px"
+      >
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column
+          label="用户名称"
+          prop="userName"
+          :show-overflow-tooltip="true"
+        />
+        <el-table-column
+          label="用户昵称"
+          prop="nickName"
+          :show-overflow-tooltip="true"
+        />
+        <el-table-column
+          label="部门"
+          prop="deptId"
+          :show-overflow-tooltip="true"
+        />
+        <el-table-column
+          label="邮箱"
+          prop="email"
+          :show-overflow-tooltip="true"
+        />
+        <el-table-column
+          label="手机"
+          prop="phonenumber"
+          :show-overflow-tooltip="true"
+        />
+        <el-table-column label="状态" align="center" prop="status">
+          <template slot-scope="scope">
+            <dict-tag
+              :options="dict.type.sys_normal_disable"
+              :value="scope.row.status"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="创建时间"
+          align="center"
+          prop="createTime"
+          width="180"
+        >
+          <template slot-scope="scope">
+            <span>{{ parseTime(scope.row.createTime) }}</span>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        v-show="total > 0"
+        :total="total"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
+      />
+    </el-row>
+    <div slot="footer" class="dialog-footer">
+      <el-button type="primary" @click="handleSelectUser">确 定</el-button>
+      <el-button @click="visible = false">取 消</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+import { listUser } from "@/api/system/user";
+export default {
+  dicts: ["sys_normal_disable"],
+  props: {
+    deptId: {
+      type: String,
+      default: "",
+    },
+  },
+  data() {
+    return {
+      // 遮罩层
+      visible: false,
+      // 选中数组值
+      ids: [],
+      // 总条数
+      total: 0,
+      // 未授权用户数据
+      userList: [],
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        deptId: "",
+      },
+    };
+  },
+  methods: {
+    // 显示弹框
+    show() {
+      this.queryParams.deptId = this.deptId;
+      this.getList();
+      this.visible = true;
+    },
+    clickRow(row) {
+      this.$refs.table.toggleRowSelection(row);
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      if (selection.length > 1) {
+        this.$modal.msg("只能选择一个跟进人");
+        this.$refs.table.clearSelection();
+        return;
+      }
+      if (this.ids.length == 0) {
+        this.ids = selection;
+      } else {
+        this.$modal.msg("只能选择一个跟进人");
+        this.ids = [];
+        // table与table的ref绑定的一样
+        this.$refs.table.clearSelection();
+      }
+    },
+    // 查询表数据
+    getList() {
+      listUser(this.queryParams).then((res) => {
+        this.userList = res.rows;
+        this.total = res.total;
+      });
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    /** 选择授权用户操作 */
+    handleSelectUser() {
+      const deptId = this.queryParams.deptId;
+      console.log(this.ids)
+      this.$emit("getDeptUserInfo", this.ids);
+      this.visible = false;
+    },
+  },
+};
+</script>

+ 4 - 6
ruoyi-ui/src/views/invest/pool/add.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="poolAdd">
     <h2>{{ title }}</h2>
-    <poolForm :type="type" :id="id"></poolForm>
+    <poolForm ref="poolForm" :type="type" :id="id"></poolForm>
   </div>
 </template>
 <script>
@@ -16,17 +16,16 @@ import {
 
 export default {
   name: "investPoolAdd",
-  dicts: ["porject_group"],
+  dicts: ["project_group"],
   components: { poolForm },
   data() {
     return {
       type: "1",
-      id: "",
+      id: this.$route.query.id,
       title: "新增项目",
     };
   },
-  // activated
-  created() {
+  mounted() {
     this.type = "1";
     if (this.$route.query.id) {
       this.id = this.$route.query.id;
@@ -35,7 +34,6 @@ export default {
       this.id = null;
       this.title = "新增项目";
     }
-    console.log("id=",this.id)
   },
   methods: {},
 };

+ 5 - 3
ruoyi-ui/src/views/invest/pool/detail.vue

@@ -3,7 +3,7 @@
     <section class="section1 public-flex-col-end">
       <div class="public-margin-r-20">
         <h4>投资项目</h4>
-        <p>{{ detailInfo.porjectName }}</p>
+        <p>{{ detailInfo.projectName }}</p>
       </div>
       <div>
         <el-button type="primary" icon="el-icon-upload2">上传资料</el-button>
@@ -16,7 +16,7 @@
     <section>
       <el-steps
         :space="200"
-        :active="1"
+        :active="active"
         finish-status="success"
         align-center
         style="margin-left: -60px"
@@ -33,7 +33,7 @@
       <div class="public-flex-between basicsInfo">
         <div class="public-flex-center-column">
           <div>项目公司名称</div>
-          <p>{{ detailInfo.porjectName }}</p>
+          <p>{{ detailInfo.projectName }}</p>
         </div>
         <div class="public-flex-center-column">
           <div>渠道</div>
@@ -130,6 +130,7 @@ export default {
     return {
       type: "2",
       id: "",
+      active: 0,
       detailInfo: {},
       activeName: "0",
       activities: [
@@ -159,6 +160,7 @@ export default {
     getDetail() {
       getPool(this.id).then((response) => {
         this.detailInfo = response.data;
+        this.active = parseInt(response.data.projectStage);
       });
     },
   },