armg преди 1 година
родител
ревизия
ce569a6ba3

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

@@ -73,6 +73,7 @@
   align-items: center;
   justify-content: flex-end;
 }
+
 .public-flex-col-end {
   display: flex;
   align-items: flex-end;
@@ -407,8 +408,10 @@
   top: 0;
   left: 0;
   background: #f4f4f4;
+
   .van-nav-bar {
     background: #3f9dfc;
+
     .van-nav-bar__title,
     .van-nav-bar__text,
     .van-icon {
@@ -422,19 +425,31 @@
   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;
   }
+}
+
+.show_disabled {
+  cursor: not-allowed !important;
+  background-color: #F5F7FA !important;
+  border-color: #E4E7ED !important;
+  color: #C0C4CC !important;
+  pointer-events: none !important;
 }

+ 16 - 12
ruoyi-ui/src/layout/components/AppMain.vue

@@ -25,24 +25,28 @@ export default {
       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("Pool") !== -1) {
+        cachedViews.splice(cachedViews.indexOf("Pool"), 1);
       }
-      if (cachedViews.indexOf("investChannelIndex") !== -1) {
-        cachedViews.splice(cachedViews.indexOf("investChannelIndex"), 1);
+      if (cachedViews.indexOf("Record") !== -1) {
+        cachedViews.splice(cachedViews.indexOf("Record"), 1);
       }
-      if (cachedViews.indexOf("investContactsIndex") !== -1) {
-        cachedViews.splice(cachedViews.indexOf("investContactsIndex"), 1);
+      if (cachedViews.indexOf("Channel") !== -1) {
+        cachedViews.splice(cachedViews.indexOf("Channel"), 1);
       }
-      if (cachedViews.indexOf("investMeetingmpanyctsIndex") !== -1) {
-        cachedViews.splice(cachedViews.indexOf("investMeetingmpanyctsIndex"), 1);
+      if (cachedViews.indexOf("Meeting") !== -1) {
+        cachedViews.splice(cachedViews.indexOf("Meeting"), 1);
       }
-      if (cachedViews.indexOf("investMeetingmpanyctsMark") !== -1) {
-        cachedViews.splice(cachedViews.indexOf("investMeetingmpanyctsMark"), 1);
+      if (cachedViews.indexOf("Information") !== -1) {
+        cachedViews.splice(cachedViews.indexOf("Information"), 1);
       }
-      if (cachedViews.indexOf("investInformationIndex") !== -1) {
-        cachedViews.splice(cachedViews.indexOf("investInformationIndex"), 1);
+      if (cachedViews.indexOf("Contract") !== -1) {
+        cachedViews.splice(cachedViews.indexOf("Contract"), 1);
       }
+      if (cachedViews.indexOf("Gen") !== -1) {
+        cachedViews.splice(cachedViews.indexOf("Gen"), 1);
+      }
+      // console.log("===cachedViews==",cachedViews)
       return cachedViews;
     },
     key() {

+ 28 - 33
ruoyi-ui/src/router/index.js

@@ -73,11 +73,11 @@ export const constantRoutes = [
     hidden: true,
     // redirect: 'noredirect',
     children: [
-      {
-        path: 'pool/index',
-        component: () => import('@/views/invest/pool/index'),
-        name: 'investPoolIndex',
-      },
+      // {
+      //   path: 'pool/index',
+      //   component: () => import('@/views/invest/pool/index'),
+      //   name: 'investPoolIndex',
+      // },
       {
         path: "pool/add",
         name: 'investPoolAdd',
@@ -90,42 +90,37 @@ export const constantRoutes = [
         name: 'investPoolDetail',
         meta: { title: '项目详情' }
       },
-      {
-        path: "record/index",
-        name: 'investRecordIndex',
-        component: () => import('@/views/invest/record/index')
-      },
-      {
-        path: "channel/index",
-        name: 'investChannelIndex',
-        component: () => import('@/views/invest/channel/index')
-      },
-      {
-        path: "contacts/index",
-        name: 'investContactsIndex',
-        component: () => import('@/views/invest/contacts/index')
-      },
       // {
-      //   path: "company/index",
-      //   name: 'investCompanyctsIndex',
-      //   component: () => import('@/views/invest/company/index')
+      //   path: "record/index",
+      //   name: 'investRecordIndex',
+      //   component: () => import('@/views/invest/record/index')
+      // },
+      // {
+      //   path: "channel/index",
+      //   name: 'investChannelIndex',
+      //   component: () => import('@/views/invest/channel/index')
+      // },
+      // {
+      //   path: "contract/index",
+      //   name: 'investContractIndex',
+      //   component: () => import('@/views/invest/contract/index')
+      // },
+      // {
+      //   path: "meeting/index",
+      //   name: 'investMeetingmpanyctsIndex',
+      //   component: () => import('@/views/invest/meeting/index')
       // },
-      {
-        path: "meeting/index",
-        name: 'investMeetingmpanyctsIndex',
-        component: () => import('@/views/invest/meeting/index')
-      },
       {
         path: "meeting/mark",
         name: 'investMeetingmpanyctsMark',
         component: () => import('@/views/invest/meeting/mark'),
         meta: { title: '会议数据' }
       },
-      {
-        path: 'information/index',
-        component: () => import('@/views/invest/information/index'),
-        name: 'investInformationIndex',
-      }
+      // {
+      //   path: 'information/index',
+      //   component: () => import('@/views/invest/information/index'),
+      //   name: 'investInformationIndex',
+      // }
     ]
   },
   {

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

@@ -15,6 +15,7 @@ const getters = {
   user: state => state.user.user,
   dept: state => state.user.dept,
   dhrmCompany: state => state.user.dhrmCompany,
+  projectItemMessage:state => state.user.projectItemMessage,
   permission_routes: state => state.permission.routes,
   topbarRouters:state => state.permission.topbarRouters,
   defaultRoutes:state => state.permission.defaultRoutes,

+ 6 - 3
ruoyi-ui/src/store/modules/user.js

@@ -10,7 +10,8 @@ const user = {
     permissions: [],
     user: {},
     dept: {},
-    dhrmCompany: {}
+    dhrmCompany: {},
+    projectItemMessage:{}
   },
 
   mutations: {
@@ -37,8 +38,10 @@ const user = {
     },
     SET_DHRMCOMPANY: (state, dhrmCompany) => {
       state.dhrmCompany = dhrmCompany
-
-    }
+    },
+    SET_PROJECTITEMMESSAGE: (state, projectItemMessage) => {
+      state.projectItemMessage = projectItemMessage
+    },
   },
 
   actions: {

+ 27 - 3
ruoyi-ui/src/views/invest/channel/index.vue

@@ -47,6 +47,7 @@
           v-model="queryParams.telephone"
           placeholder="请输入联系电话"
           clearable
+          maxlength="11"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
@@ -131,7 +132,7 @@
       @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="主键ID" align="center" prop="id" /> -->
       <el-table-column label="渠道名称" align="center" prop="channelName" />
       <el-table-column label="渠道编号" align="center" prop="channelCode" />
       <el-table-column label="渠道类别" align="center" prop="channelType" />
@@ -190,6 +191,16 @@
         <el-form-item label="渠道名称" prop="channelName">
           <el-input v-model="form.channelName" placeholder="请输入渠道名称" />
         </el-form-item>
+        <el-form-item label="组别" prop="channelGroup">
+          <el-select v-model="form.channelGroup" 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="channelType">
           <el-select v-model="form.channelType" placeholder="请选择类别">
             <el-option
@@ -279,7 +290,7 @@ import fileItem from "../components/fileItem";
 export default {
   name: "Channel",
   components: { fileItem, selecDept },
-  dicts: ["channel_type", "channel_status"],
+  dicts: ["channel_type", "channel_status","project_group"],
   data() {
     return {
       fileList: [],
@@ -314,6 +325,7 @@ export default {
         telephone: null,
         channelHead: null,
         status: null,
+        channelGroup: null,
       },
       // 表单参数
       form: {
@@ -334,14 +346,25 @@ export default {
         updateBy: null,
         updateTime: null,
         listFile: null,
+        channelGroup: null,
       },
       // 表单校验
       rules: {
         channelName: [{ required: true, trigger: "blur", message: "请输入" }],
+        channelGroup: [
+          { required: true, trigger: "change", message: "请选择" },
+        ],
         channelType: [{ required: true, trigger: "change", message: "请选择" }],
         channelBlurb: [{ required: true, trigger: "blur", message: "请输入" }],
         contacts: [{ required: true, trigger: "blur", message: "请输入" }],
-        telephone: [{ required: true, trigger: "blur", message: "请输入" }],
+        telephone: [
+          { required: true, trigger: "blur", message: "请输入" },
+          {
+            pattern: /^1[3456789]\d{9}$/,
+            message: "请输入正确的手机号",
+            trigger: "blur",
+          },
+        ],
         address: [{ required: true, trigger: "blur", message: "请输入" }],
         channelHead: [{ required: true, trigger: "change", message: "请选择" }],
         status: [{ required: true, trigger: "change", message: "请选择" }],
@@ -397,6 +420,7 @@ export default {
         updateBy: null,
         updateTime: null,
         listFile: null,
+        channelGroup: null,
       };
       this.resetForm("form");
     },

+ 103 - 0
ruoyi-ui/src/views/invest/components/channelItem.vue

@@ -0,0 +1,103 @@
+<template>
+  <div>
+    <!-- 选择项目 -->
+    <el-dialog
+      title="选择渠道"
+      :visible.sync="showChannelItem"
+      width="800px"
+      append-to-body
+    >
+      <el-table
+        ref="channelTable"
+        @row-click="clickRow"
+        :data="channelList"
+        @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="channelName" />
+        <el-table-column label="渠道编号" align="center" prop="channelCode" />
+        <el-table-column label="渠道类别" align="center" prop="channelType" />
+        <el-table-column label="联系人" align="center" prop="contacts" />
+        <el-table-column label="联系电话" align="center" prop="telephone" />
+        <el-table-column label="渠道负责人" align="center" prop="channelHead" />
+        <el-table-column label="状态" align="center" prop="status" />
+      </el-table>
+      <pagination
+        v-show="channelItemTotal > 0"
+        :total="channelItemTotal"
+        :page.sync="channelQueryParams.pageNum"
+        :limit.sync="channelQueryParams.pageSize"
+        @pagination="getList"
+      />
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submit">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import { listChannel } from "@/api/invest/channel";
+export default {
+  props: {},
+  dicts: ["channel_type", "channel_status"],
+  data() {
+    return {
+      showChannelItem: false,
+      // 总条数
+      channelItemTotal: 0,
+      channelList: [],
+      channelQueryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+    };
+  },
+  mounted() {
+    this.getList();
+  },
+  methods: {
+    clickRow(row) {
+      this.$refs.channelTable.toggleRowSelection(row);
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      if (selection.length > 1) {
+        this.$modal.msg("只能选择一个渠道");
+        this.$refs.channelTable.clearSelection();
+        return;
+      }
+      if (this.ids.length == 0) {
+        this.ids = selection;
+      } else {
+        this.$modal.msg("只能选择一个渠道");
+        this.ids = [];
+        // channelTable与table的ref绑定的一样
+        this.$refs.channelTable.clearSelection();
+      }
+    },
+    /** 查询会议列表 */
+    getList() {
+      listChannel(this.channelQueryParams).then((response) => {
+        this.channelList = response.rows;
+        this.channelItemTotal = response.total;
+      });
+    },
+    submit() {
+      console.log("确定", this.ids);
+      this.$emit("getChannelInfo", this.ids);
+      this.showChannelItem = false;
+    },
+    cancel() {
+      this.showChannelItem = false;
+    },
+  },
+};
+</script>

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

@@ -114,7 +114,7 @@
       @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="主键ID" align="center" prop="id" /> -->
       <el-table-column label="合同名称" align="center" prop="contractName" />
       <el-table-column label="合同类别" align="center" prop="contractType" />
       <el-table-column label="项目ID" align="center" prop="projectPoolId" />
@@ -155,8 +155,19 @@
     />
 
     <!-- 添加或修改合同管理对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+    <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="80px"
+      >
         <el-form-item label="合同名称" prop="contractName">
           <el-input v-model="form.contractName" placeholder="请输入合同名称" />
         </el-form-item>
@@ -173,7 +184,12 @@
           ></projectItem>
         </el-form-item>
         <el-form-item label="项目阶段" prop="projectStage">
-          <el-select v-model="form.projectStage" disabled placeholder="">
+          <el-select
+            v-model="form.projectStage"
+            disabled
+            placeholder=""
+            style="width: 100%"
+          >
             <el-option
               v-for="dict in dict.type.project_stage"
               :key="dict.value"
@@ -194,15 +210,16 @@
             @getMeetingInfo="getMeetingInfo"
           ></meetingItem>
         </el-form-item>
-        <el-form-item label="文件" prop="files">
+        <el-form-item label="文件" prop="listFile">
           <fileItem
             ref="fileItems"
             :id="form.id"
             @getFileList="getFileList"
           ></fileItem>
         </el-form-item>
-        <el-form-item label="备注" prop="remark">
+        <el-form-item label="备注" prop="remark" class="special-el-form-item">
           <el-input
+            rows="4"
             type="textarea"
             v-model="form.remark"
             placeholder="请输入备注"
@@ -236,6 +253,7 @@ export default {
       default: "1", //1=显示全部列表  2=显示某项目下的详情列表
     },
   },
+  dicts: ["project_stage"],
   components: { projectItem, fileItem, meetingItem },
   data() {
     const validateLogo = (rule, value, callback) => {
@@ -402,7 +420,6 @@ export default {
         this.form = response.data;
         this.open = true;
         this.title = "修改合同管理";
-        this.$refs.fileItems.getListFileBusinessId(id);
       });
     },
     /** 提交按钮 */

+ 4 - 11
ruoyi-ui/src/views/invest/components/fileList.vue

@@ -25,14 +25,7 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="会议编号" prop="meetingCode">
-        <el-input
-          v-model="queryParams.meetingCode"
-          placeholder="请输入会议编号"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
+      
       <el-form-item>
         <el-button
           type="primary"
@@ -327,6 +320,7 @@ export default {
       this.form.projectName = info[0].projectName;
       this.form.projectStage = info[0].projectStage;
       this.form.projectState = info[0].projectState;
+      console.log("获取公司信息",this.form)
     },
     //展示人员
     handleProjectItem() {
@@ -334,9 +328,9 @@ export default {
     },
     // 获取会议信息
     getMeetingInfo(info) {
+      console.log("会议info=", info);
       this.form.meetingCode = info[0].meetingCode;
       this.form.meetingTheme = info[0].meetingTheme;
-      // console.log("会议this.form=", this.form);
     },
     handleMeetingItem() {
       this.$refs.meetingItem.showMeetingItem = true;
@@ -409,16 +403,15 @@ export default {
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
+      let that = this;
       this.reset();
       const id = row.id || this.ids;
       getInformation(id).then((response) => {
         this.form = response.data;
         this.form.projectName = response.data.tProjectPool.projectName;
         this.form.projectStage = response.data.tProjectPool.projectStage;
-
         this.open = true;
         this.title = "修改文件资料";
-        this.$refs.fileItems.getListFileBusinessId(id);
       });
     },
     /** 提交按钮 */

+ 28 - 1
ruoyi-ui/src/views/invest/components/followList.vue

@@ -204,6 +204,7 @@
           <div
             class="el-input__inner inputSimulation"
             @click="handleProjectItem"
+            :class="{ show_disabled: pageType === '1' }"
           >
             {{ form.projectName ? form.projectName : "请选择 " }}
           </div>
@@ -313,8 +314,17 @@ export default {
   },
   dicts: ["up_way", "project_stage"],
   components: { projectItem, fileItem, selecDept },
+  watch: {
+    open: function (newValue, oldValue) {
+      if (newValue === false) {
+        this.queryParams.projectId = null;
+        this.pageType = null;
+      }
+    },
+  },
   data() {
     return {
+      pageType: null, //1=新增表单
       deptId: "",
       fileList: [],
       showProjectItem: false,
@@ -378,6 +388,15 @@ export default {
     };
   },
   created() {
+    // 查询该id下的列表信息
+    if (this.$route.query.id) {
+      this.queryParams.projectId = this.$route.query.id;
+    }
+    // 直接弹出新增
+    if (this.$route.query.type === "1") {
+      this.pageType = this.$route.query.type;
+      this.handleAdd();
+    }
     this.getList();
   },
   methods: {
@@ -463,6 +482,15 @@ export default {
     handleAdd() {
       let that = this;
       this.reset();
+      // 直接绑定好项目
+      if (this.pageType === "1") {
+        let projectItemMessage = this.$store.getters.projectItemMessage;
+        console.log("projectItemMessage==", projectItemMessage);
+        this.form.projectId = projectItemMessage.id;
+        this.form.projectName = projectItemMessage.projectName;
+        this.form.projectStage = projectItemMessage.projectStage;
+        this.form.contacts = projectItemMessage.tProjectContacts.name;
+      }
       this.open = true;
       this.title = "添加跟进记录";
       setTimeout(() => {
@@ -479,7 +507,6 @@ export default {
         this.form.projectStage = response.data.tProjectPool.projectStage;
         this.open = true;
         this.title = "修改跟进记录";
-        this.$refs.fileItems.getListFileBusinessId(id);
       });
     },
     /** 提交按钮 */

+ 76 - 7
ruoyi-ui/src/views/invest/components/meetingList.vue

@@ -195,11 +195,16 @@
         <el-form-item label="会议主题" prop="meetingTheme">
           <el-input v-model="form.meetingTheme" placeholder="请输入会议主题" />
         </el-form-item>
+
         <!-- <el-form-item label="会议编号" prop="meetingCode">
           <el-input v-model="form.meetingCode" placeholder="请输入会议编号" />
         </el-form-item> -->
         <el-form-item label="会议类别" prop="meetingType">
-          <el-select v-model="form.meetingType" placeholder="请选择会议类别">
+          <el-select
+            v-model="form.meetingType"
+            placeholder="请选择会议类别"
+            :disabled="pageType === '1'"
+          >
             <el-option
               v-for="dict in dict.type.meeting_type"
               :key="dict.value"
@@ -208,10 +213,18 @@
             ></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="项目名称" prop="projectName">
+
+        <el-form-item
+          label="项目名称"
+          prop="projectName"
+          :rules="[
+            { required: verifyProjectName, trigger: 'blur', message: '请选择' },
+          ]"
+        >
           <div
             class="el-input__inner inputSimulation"
             @click="handleProjectItem"
+            :class="{ show_disabled: pageType === '1' }"
           >
             {{ form.projectName ? form.projectName : "请选择 " }}
           </div>
@@ -230,6 +243,16 @@
             />
           </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
             clearable
@@ -315,10 +338,30 @@ export default {
       default: "1", //1=显示全部列表  2=显示某项目下的详情列表
     },
   },
-  dicts: ["meeting_type", "project_stage"],
+  dicts: ["meeting_type", "project_stage", "project_group"],
   components: { projectItem, selecDept, fileItem },
+  watch: {
+    "form.meetingType": function (newValue, oldValue) {
+      // console.log(newValue,"this.form.meetingType", this.form.meetingType);
+      if (this.form.meetingType == "LX" || this.form.meetingType == "TJ") {
+        this.verifyProjectName = true;
+      } else {
+        this.verifyProjectName = false;
+      }
+    },
+    open: function (newValue, oldValue) {
+      if (newValue === false) {
+        this.queryParams.projectPoolId = null;
+        this.meetingType = null;
+        this.pageType = null;
+      }
+    },
+  },
   data() {
     return {
+      pageType: null,
+      meetingType: null,
+      verifyProjectName: false,
       fileList: [],
       showProjectItem: false,
       deptId: "",
@@ -359,6 +402,7 @@ export default {
         projectPoolId: null,
         projectName: null,
         projectStage: null,
+        projectGroup: null,
         startTime: null,
         endTime: null,
         place: null,
@@ -369,13 +413,14 @@ export default {
         createTime: null,
         updateBy: null,
         updateTime: null,
+        projectGroup: null,
       },
       // 表单校验
       rules: {
         meetingTheme: [{ required: true, trigger: "blur", message: "请输入" }],
         meetingType: [{ required: true, trigger: "change", message: "请选择" }],
-        // projectPoolId: [{ required: true, trigger: "blur", message: "请选择" }],
-        projectName: [{ required: true, trigger: "blur", message: "请选择" }],
+        // projectGroup: [{ required: true, trigger: "change", message: "请选择" }],
+        // projectName: [{ required: true, trigger: "blur", message: "请选择" }],
         startTime: [{ required: true, trigger: "change", message: "请选择" }],
         endTime: [{ required: true, trigger: "blur", message: "请选择" }],
         place: [{ required: true, trigger: "blur", message: "请输入" }],
@@ -385,6 +430,19 @@ export default {
     };
   },
   created() {
+    // 查询该id下的列表信息
+    if (this.$route.query.id) {
+      this.queryParams.projectPoolId = this.$route.query.id;
+    }
+    // 会议类型
+    if (this.$route.query.meetingType) {
+      this.meetingType = this.$route.query.meetingType;
+    }
+    // 直接弹出新增
+    if (this.$route.query.type === "1") {
+      this.pageType = this.$route.query.type;
+      this.handleAdd();
+    }
     this.getList();
   },
   methods: {
@@ -419,6 +477,7 @@ export default {
       this.form.projectPoolId = info[0].id;
       this.form.projectName = info[0].projectName;
       this.form.projectStage = info[0].projectStage;
+      this.form.projectGroup = info[0].projectGroup;
       this.form.projectState = info[0].projectState;
       console.log("this.form=", this.form);
     },
@@ -450,6 +509,7 @@ export default {
         projectPoolId: null,
         projectName: null,
         projectStage: null,
+        projectGroup: null,
         startTime: null,
         endTime: null,
         place: null,
@@ -460,6 +520,7 @@ export default {
         createTime: null,
         updateBy: null,
         updateTime: null,
+        projectGroup: null,
       };
       this.resetForm("form");
     },
@@ -481,8 +542,16 @@ export default {
     },
     /** 新增按钮操作 */
     handleAdd() {
-      let that= this;
+      let that = this;
       this.reset();
+      // 直接绑定好项目
+      if (this.pageType === "1") {
+        let projectItemMessage = this.$store.getters.projectItemMessage;
+        this.form.projectPoolId = projectItemMessage.id;
+        this.form.projectName = projectItemMessage.projectName;
+        this.form.projectStage = projectItemMessage.projectStage;
+        this.form.meetingType = this.meetingType;
+      }
       this.open = true;
       this.title = "添加会议记录";
       setTimeout(() => {
@@ -497,9 +566,9 @@ export default {
         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.open = true;
         this.title = "修改会议记录";
-        this.$refs.fileItems.getListFileBusinessId(id);
       });
     },
     /** 提交按钮 */

+ 43 - 8
ruoyi-ui/src/views/invest/components/poolForm.vue

@@ -12,8 +12,20 @@
       <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="请输入渠道" />
+        <div class="el-input__inner inputSimulation" @click="handleChannelItem">
+          {{
+            form.tProjectChannel && form.tProjectChannel.channelName
+              ? form.tProjectChannel.channelName
+              : "请选择渠道"
+          }}
+        </div>
+        <channelItem
+          ref="channelItem"
+          @getChannelInfo="getChannelInfo"
+        ></channelItem>
+        <!-- <el-input v-model="form.channel" placeholder="请输入渠道" /> -->
       </el-form-item>
       <el-form-item label="初次接触日期" prop="contactDate">
         <el-date-picker
@@ -25,8 +37,12 @@
         >
         </el-date-picker>
       </el-form-item>
-      <el-form-item label="所属组别" prop="projectGroup">
-        <el-select v-model="form.projectGroup" placeholder="请选择所属组别">
+      <el-form-item label="所属组别">
+        <el-select
+          v-model="form.tProjectChannel.channelGroup"
+          disabled
+          placeholder="请选择所属组别"
+        >
           <el-option
             v-for="dict in dict.type.project_group"
             :key="dict.value"
@@ -258,6 +274,7 @@ import {
   updatePool,
 } from "@/api/invest/pool";
 import fileItem from "./fileItem";
+import channelItem from "./channelItem";
 export default {
   props: {
     id: {
@@ -268,7 +285,7 @@ export default {
       default: "1", //1可编辑  2不可编辑
     },
   },
-  components: { fileItem },
+  components: { fileItem, channelItem },
   dicts: ["CUSTOMER_TRADE", "project_group"],
   data() {
     return {
@@ -305,6 +322,10 @@ export default {
           position: null,
           contact: null,
         },
+        tProjectChannel: {
+          channelName: null,
+          channelGroup: null,
+        },
 
         description: null,
         projectContacts: null,
@@ -338,9 +359,9 @@ export default {
         projectName: [{ required: true, trigger: "blur", message: "请输入" }],
         channel: [{ required: true, trigger: "blur", message: "请输入" }],
         contactDate: [{ required: true, trigger: "blur", message: "请输入" }],
-        projectGroup: [
-          { required: true, trigger: "change", message: "请选择" },
-        ],
+        // projectGroup: [
+        //   { required: true, trigger: "change", message: "请选择" },
+        // ],
         industry: [{ required: true, trigger: "change", message: "请选择" }],
         investHead: [{ required: true, trigger: "blur", message: "请输入" }],
         // description: [{ required: true, trigger: "blur", message: "请输入" }],
@@ -421,6 +442,17 @@ export default {
     }
   },
   methods: {
+    // 获取渠道信息
+    getChannelInfo(info) {
+      console.log("获取渠道信息", info);
+      this.form.channel = info[0].id;
+      this.form.tProjectChannel.channelName = info[0].channelName;
+      this.form.tProjectChannel.channelGroup = info[0].channelGroup;
+      console.log("选完后的form=", this.form);
+    },
+    handleChannelItem() {
+      this.$refs.channelItem.showChannelItem = true;
+    },
     getPoolDetail(id) {
       getPool(id).then((response) => {
         this.form = response.data;
@@ -505,7 +537,10 @@ export default {
           position: null,
           contact: null,
         },
-
+        tProjectChannel: {
+          channelName: null,
+          channelGroup: null,
+        },
         description: null,
         projectContacts: null,
         investHead: null,

+ 61 - 11
ruoyi-ui/src/views/invest/components/projectList.vue

@@ -17,10 +17,10 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="渠道" prop="channel">
+      <el-form-item label="渠道id" prop="channel">
         <el-input
           v-model="queryParams.channel"
-          placeholder="请输入渠道"
+          placeholder="请输入渠道id"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -94,14 +94,14 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="项目编号" prop="projectCode">
+      <!-- <el-form-item label="项目编号" prop="projectCode">
         <el-input
           v-model="queryParams.projectCode"
           placeholder="请输入项目编号"
           clearable
           @keyup.enter.native="handleQuery"
         />
-      </el-form-item>
+      </el-form-item> -->
       <!-- <el-form-item label="历次融资" prop="previousFinancing">
         <el-input
           v-model="queryParams.previousFinancing"
@@ -142,14 +142,16 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item> -->
-      <!-- <el-form-item label="投资价值" prop="investWorth">
-        <el-input
-          v-model="queryParams.investWorth"
-          placeholder="请输入投资价值"
+      <el-form-item label="创建日期" prop="createTime">
+        <el-date-picker
           clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item> -->
+          v-model="queryParams.createTime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择创建日期"
+        >
+        </el-date-picker>
+      </el-form-item>
       <el-form-item>
         <el-button
           type="primary"
@@ -324,6 +326,39 @@
         class-name="small-padding fixed-width"
       >
         <template slot-scope="scope">
+          <!-- stage//0=全部 1=项目报备  2=评估考察 3=项目立项 4=尽职背调 5=项目投决 -->
+          <el-button
+            v-if="stage == '1'"
+            size="mini"
+            type="text"
+            icon="el-icon-thumb"
+            @click="handlefollowRecord(scope.row)"
+            >上传跟进记录</el-button
+          >
+          <el-button
+            v-if="stage == '3'"
+            size="mini"
+            type="text"
+            icon="el-icon-chat-line-round"
+            @click="handleMeeting(scope.row,'LX')"
+            >发起立项会议</el-button
+          >
+          <el-button
+            v-if="stage == '4'"
+            size="mini"
+            type="text"
+            icon="el-icon-document"
+            @click="handleSurvey(scope.row)"
+            >发起尽调申请</el-button
+          >
+          <el-button
+            v-if="stage == '5'"
+            size="mini"
+            type="text"
+            icon="el-icon-chat-line-square"
+            @click="handleMeeting(scope.row,'TJ')"
+            >发起投决会议</el-button
+          >
           <el-button
             size="mini"
             type="text"
@@ -347,6 +382,7 @@
             @click="handleBusinessUpdate(scope.row)"
             >设置项目阶段</el-button
           >
+
           <el-button
             size="mini"
             type="text"
@@ -628,6 +664,20 @@ export default {
       this.open = true;
       this.title = "设置项目阶段";
     },
+    // 发起会议
+    handleMeeting(row,meetingType){
+      this.$store.commit("SET_PROJECTITEMMESSAGE", row);
+      this.$router.push({ path: "/resource/meeting", query: { id: row.id,type:'1',meetingType:meetingType} });
+    },
+    // 发起尽调申请
+    handleSurvey(row){
+
+    },
+    // 上传跟进记录
+    handlefollowRecord(row){
+      this.$store.commit("SET_PROJECTITEMMESSAGE", row);
+      this.$router.push({ path: "/resource/record", query: { id: row.id,type:'1' } });
+    },
     // 表单重置
     reset() {
       this.form = {

+ 1 - 4
ruoyi-ui/src/views/invest/contacts/index.vue

@@ -1,17 +1,14 @@
 <template>
   <div class="app-container">
-    <contractList :type="type"></contractList>
+    <!-- 联系人 -->
   </div>
 </template>
 
 <script>
-import contractList from "../components/contractList";
 export default {
   name: "Contacts",
-  components: { contractList },
   data() {
     return {
-      type: "1",
     };
   },
 };

+ 6 - 293
ruoyi-ui/src/views/invest/contract/index.vue

@@ -1,306 +1,19 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="合同名称" prop="contractName">
-        <el-input
-          v-model="queryParams.contractName"
-          placeholder="请输入合同名称"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="项目ID" prop="projectPoolId">
-        <el-input
-          v-model="queryParams.projectPoolId"
-          placeholder="请输入项目ID"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="项目阶段" prop="projectStage">
-        <el-input
-          v-model="queryParams.projectStage"
-          placeholder="请输入项目阶段"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="会议编号" prop="meetingCode">
-        <el-input
-          v-model="queryParams.meetingCode"
-          placeholder="请输入会议编号"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item>
-        <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
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['invest:contract:add']"
-        >新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['invest:contract:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['invest:contract:remove']"
-        >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['invest:contract:export']"
-        >导出</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
-    <el-table v-loading="loading" :data="contractList" @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="contractName" />
-      <el-table-column label="合同类别" align="center" prop="contractType" />
-      <el-table-column label="项目ID" align="center" prop="projectPoolId" />
-      <el-table-column label="项目阶段" align="center" prop="projectStage" />
-      <el-table-column label="会议编号" align="center" prop="meetingCode" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['invest:contract:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['invest:contract:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
-
-    <!-- 添加或修改合同管理对话框 -->
-    <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="合同名称" prop="contractName">
-          <el-input v-model="form.contractName" placeholder="请输入合同名称" />
-        </el-form-item>
-        <el-form-item label="项目ID" prop="projectPoolId">
-          <el-input v-model="form.projectPoolId" placeholder="请输入项目ID" />
-        </el-form-item>
-        <el-form-item label="项目阶段" prop="projectStage">
-          <el-input v-model="form.projectStage" placeholder="请输入项目阶段" />
-        </el-form-item>
-        <el-form-item label="会议编号" prop="meetingCode">
-          <el-input v-model="form.meetingCode" placeholder="请输入会议编号" />
-        </el-form-item>
-        <el-form-item label="状态" prop="delFlag">
-          <el-input v-model="form.delFlag" placeholder="请输入状态" />
-        </el-form-item>
-        <el-form-item label="附件业务ID" prop="fileBusinessId">
-          <el-input v-model="form.fileBusinessId" placeholder="请输入附件业务ID" />
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" placeholder="请输入备注" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
-      </div>
-    </el-dialog>
+    <!-- 合同 -->
+    <contractList :type="type"></contractList>
   </div>
 </template>
 
 <script>
-import { listContract, getContract, delContract, addContract, updateContract } from "@/api/invest/contract";
-
+import contractList from "../components/contractList";
 export default {
-  name: "Contract",
+  name: "investContractIndex",
+  components: { contractList },
   data() {
     return {
-      // 遮罩层
-      loading: true,
-      // 选中数组
-      ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 0,
-      // 合同管理表格数据
-      contractList: [],
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
-      // 查询参数
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        contractName: null,
-        contractType: null,
-        projectPoolId: null,
-        projectStage: null,
-        meetingCode: null,
-      },
-      // 表单参数
-      form: {},
-      // 表单校验
-      rules: {
-      }
+      type: "1",
     };
   },
-  created() {
-    this.getList();
-  },
-  methods: {
-    /** 查询合同管理列表 */
-    getList() {
-      this.loading = true;
-      listContract(this.queryParams).then(response => {
-        this.contractList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
-    // 表单重置
-    reset() {
-      this.form = {
-        id: null,
-        contractName: null,
-        contractType: null,
-        projectPoolId: null,
-        projectStage: null,
-        meetingCode: null,
-        delFlag: null,
-        fileBusinessId: null,
-        remark: null,
-        createBy: null,
-        createTime: null,
-        updateBy: null,
-        updateTime: null
-      };
-      this.resetForm("form");
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm("queryForm");
-      this.handleQuery();
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加合同管理";
-    },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.reset();
-      const id = row.id || this.ids
-      getContract(id).then(response => {
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改合同管理";
-      });
-    },
-    /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          if (this.form.id != null) {
-            updateContract(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addContract(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            });
-          }
-        }
-      });
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除合同管理编号为"' + ids + '"的数据项?').then(function() {
-        return delContract(ids);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('invest/contract/export', {
-        ...this.queryParams
-      }, `contract_${new Date().getTime()}.xlsx`)
-    }
-  }
 };
 </script>

+ 8 - 2
ruoyi-ui/src/views/study/gen/index.vue

@@ -156,7 +156,13 @@
 
     <!-- 添加或修改研究资料管理对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+      <el-form
+        class="special-el-form"
+        ref="form"
+        :model="form"
+        :rules="rules"
+        label-width="80px"
+      >
         <el-form-item label="资料名称" prop="contractName">
           <el-input v-model="form.contractName" placeholder="请输入资料名称" />
         </el-form-item>
@@ -181,7 +187,7 @@
             @getFileList="getFileList"
           ></fileItem>
         </el-form-item>
-        <el-form-item label="备注" prop="remark">
+        <el-form-item label="备注" prop="remark" class="special-el-form-item">
           <el-input
             rows="4"
             type="textarea"