armg 1 year ago
parent
commit
daccdc6b4f

+ 212 - 59
ruoyi-ui/src/views/invest/channel/index.vue

@@ -1,6 +1,13 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="100px"
+    >
       <el-form-item label="渠道名称" prop="channelName">
         <el-input
           v-model="queryParams.channelName"
@@ -17,16 +24,16 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-        <el-form-item label="渠道类别" prop="channelType">
-          <el-select v-model="form.channelType" placeholder="请选择渠道类别">
-            <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="channelType">
+        <el-select v-model="form.channelType" placeholder="请选择渠道类别">
+          <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
           v-model="queryParams.contacts"
@@ -52,8 +59,16 @@
         />
       </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-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>
 
@@ -66,7 +81,8 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['invest:channel:add']"
-        >新增</el-button>
+          >新增</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -77,7 +93,8 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['invest:channel:edit']"
-        >修改</el-button>
+          >修改</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -88,7 +105,8 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['invest:channel:remove']"
-        >删除</el-button>
+          >删除</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -98,12 +116,20 @@
           size="mini"
           @click="handleExport"
           v-hasPermi="['invest:channel:export']"
-        >导出</el-button>
+          >导出</el-button
+        >
       </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="channelList" @selection-change="handleSelectionChange">
+    <el-table
+      v-loading="loading"
+      :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" />
@@ -113,7 +139,11 @@
       <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-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+      >
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -121,20 +151,22 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['invest:channel:edit']"
-          >修改</el-button>
+            >修改</el-button
+          >
           <el-button
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['invest:channel:remove']"
-          >删除</el-button>
+            >删除</el-button
+          >
         </template>
       </el-table-column>
     </el-table>
-    
+
     <pagination
-      v-show="total>0"
+      v-show="total > 0"
       :total="total"
       :page.sync="queryParams.pageNum"
       :limit.sync="queryParams.pageSize"
@@ -142,13 +174,31 @@
     />
 
     <!-- 添加或修改渠道信息对话框 -->
-    <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="120px"
+      >
         <el-form-item label="渠道名称" prop="channelName">
           <el-input v-model="form.channelName" placeholder="请输入渠道名称" />
-        </el-form-item> 
-        <el-form-item label="简介" prop="channelBlurb">
-          <el-input v-model="form.channelBlurb" placeholder="请输入简介" />
+        </el-form-item>
+        <el-form-item label="类别" prop="channelType">
+          <el-select v-model="form.channelType" placeholder="请选择类别">
+            <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 v-model="form.contacts" placeholder="请输入联系人" />
@@ -160,13 +210,51 @@
           <el-input v-model="form.address" placeholder="请输入地址" />
         </el-form-item>
         <el-form-item label="渠道负责人" prop="channelHead">
-          <el-input v-model="form.channelHead" placeholder="请输入渠道负责人" />
+          <div class="el-input__inner inputSimulation" @click="openSelectDept">
+            {{ form.channelHead ? form.channelHead : "请选择渠道负责人" }}
+          </div>
+          <selecDept
+            ref="selecDepts"
+            @getDeptUserInfo="getDeptUserInfo"
+            :deptId="deptId"
+          ></selecDept>
         </el-form-item>
-        <el-form-item label="备注" prop="mark">
-          <el-input v-model="form.mark" placeholder="请输入备注" />
+        <el-form-item label="状态" prop="status">
+          <el-select v-model="form.status" placeholder="请选择状态">
+            <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="delFlag">
-          <el-input v-model="form.delFlag" placeholder="请输入是否删除" />
+        <el-form-item label="附件" prop="file">
+          <fileItem
+            ref="fileItems"
+            :id="form.id"
+            @getFileList="getFileList"
+          ></fileItem>
+        </el-form-item>
+        <el-form-item
+          label="简介"
+          prop="channelBlurb"
+          class="special-el-form-item"
+        >
+          <el-input
+            rows="4"
+            type="textarea"
+            v-model="form.channelBlurb"
+            placeholder="请输入简介"
+          />
+        </el-form-item>
+        <el-form-item label="备注" prop="mark" class="special-el-form-item">
+          <el-input
+            rows="4"
+            type="textarea"
+            v-model="form.mark"
+            placeholder="请输入备注"
+          />
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -178,13 +266,24 @@
 </template>
 
 <script>
-import { listChannel, getChannel, delChannel, addChannel, updateChannel } from "@/api/invest/channel";
+import {
+  listChannel,
+  getChannel,
+  delChannel,
+  addChannel,
+  updateChannel,
+} from "@/api/invest/channel";
+import selecDept from "../components/selecDept";
+import fileItem from "../components/fileItem";
 
 export default {
   name: "Channel",
-  dicts: ["channel_type"],
+  components: { fileItem, selecDept },
+  dicts: ["channel_type", "channel_status"],
   data() {
     return {
+      fileList: [],
+      deptId: "",
       // 遮罩层
       loading: true,
       // 选中数组
@@ -210,26 +309,64 @@ export default {
         channelName: null,
         channelCode: null,
         channelType: null,
+        channelBlurb: null,
         contacts: null,
         telephone: null,
         channelHead: null,
         status: null,
       },
       // 表单参数
-      form: {},
+      form: {
+        id: null,
+        channelName: null,
+        channelCode: null,
+        channelType: null,
+        channelBlurb: null,
+        contacts: null,
+        telephone: null,
+        address: null,
+        channelHead: null,
+        status: null,
+        mark: null,
+        delFlag: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        listFile: null,
+      },
       // 表单校验
       rules: {
-      }
+        channelName: [{ required: true, trigger: "blur", 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: "请输入" }],
+        address: [{ required: true, trigger: "blur", message: "请输入" }],
+        channelHead: [{ required: true, trigger: "change", message: "请选择" }],
+        status: [{ required: true, trigger: "change", message: "请选择" }],
+      },
     };
   },
   created() {
     this.getList();
   },
   methods: {
+    // 选择部门人
+    openSelectDept() {
+      this.$refs.selecDepts.show();
+    },
+    getDeptUserInfo(info) {
+      this.form.channelHead = info[0].nickName;
+    },
+    // 获取fileList
+    getFileList(fileList) {
+      this.fileList = fileList;
+    },
     /** 查询渠道信息列表 */
     getList() {
       this.loading = true;
-      listChannel(this.queryParams).then(response => {
+      listChannel(this.queryParams).then((response) => {
         this.channelList = response.rows;
         this.total = response.total;
         this.loading = false;
@@ -258,7 +395,8 @@ export default {
         createBy: null,
         createTime: null,
         updateBy: null,
-        updateTime: null
+        updateTime: null,
+        listFile: null,
       };
       this.resetForm("form");
     },
@@ -274,38 +412,45 @@ export default {
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
+      this.ids = selection.map((item) => item.id);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
     },
     /** 新增按钮操作 */
     handleAdd() {
+      let that = this;
       this.reset();
       this.open = true;
       this.title = "添加渠道信息";
+      setTimeout(() => {
+        that.$refs.fileItems.fileList = [];
+      }, 200);
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
-      const id = row.id || this.ids
-      getChannel(id).then(response => {
+      const id = row.id || this.ids;
+      getChannel(id).then((response) => {
         this.form = response.data;
         this.open = true;
         this.title = "修改渠道信息";
+        this.$refs.fileItems.getListFileBusinessId(id);
       });
     },
     /** 提交按钮 */
     submitForm() {
-      this.$refs["form"].validate(valid => {
+      this.$refs["form"].validate((valid) => {
         if (valid) {
+          this.form.listFile = this.fileList;
+
           if (this.form.id != null) {
-            updateChannel(this.form).then(response => {
+            updateChannel(this.form).then((response) => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
           } else {
-            addChannel(this.form).then(response => {
+            addChannel(this.form).then((response) => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
@@ -317,19 +462,27 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除渠道信息编号为"' + ids + '"的数据项?').then(function() {
-        return delChannel(ids);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
+      this.$modal
+        .confirm('是否确认删除渠道信息编号为"' + ids + '"的数据项?')
+        .then(function () {
+          return delChannel(ids);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        })
+        .catch(() => {});
     },
     /** 导出按钮操作 */
     handleExport() {
-      this.download('invest/channel/export', {
-        ...this.queryParams
-      }, `channel_${new Date().getTime()}.xlsx`)
-    }
-  }
+      this.download(
+        "invest/channel/export",
+        {
+          ...this.queryParams,
+        },
+        `channel_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
 };
 </script>

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

@@ -173,7 +173,7 @@
           <el-input v-model="form.delFlag" placeholder="请输入状态" />
         </el-form-item> -->
         <el-form-item label="文件" prop="files">
-          <fileItem :id="id" @getFileList="getFileList"></fileItem>
+          <fileItem :id="form.id" @getFileList="getFileList"></fileItem>
         </el-form-item>
         <el-form-item label="备注" prop="remark">
           <el-input

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

@@ -37,7 +37,7 @@ export default {
     };
   },
   mounted() {
-    console.log("附件组件", this.id);
+    console.log("----附件组件", this.id);
     if (this.id) {
       this.getListFileBusinessId(this.id);
     }
@@ -45,23 +45,25 @@ export default {
   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;
+      if (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;
           }
-          this.fileList = list;
-        }
-      });
+        });
+      }
     },
     handleChange(file, fileList) {
       //   console.log("----", file, fileList);
     },
     handleRemove(file, fileList) {
       this.fileList = fileList;
-      const id = file.id;
       if (file.id) {
+        const id = file.id;
         delFile(id).then((response) => {
           // 给父组件传值
           this.$emit("getFileList", this.fileList);

+ 97 - 17
ruoyi-ui/src/views/invest/components/fileList.vue

@@ -7,7 +7,7 @@
       size="small"
       :inline="true"
       v-show="showSearch"
-      label-width="68px"
+      label-width="90px"
     >
       <el-form-item label="文件名称" prop="fileName">
         <el-input
@@ -146,17 +146,23 @@
     />
 
     <!-- 添加或修改文件资料对话框 -->
-    <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="90px"
+      >
         <el-form-item label="文件名称" prop="fileName">
           <el-input v-model="form.fileName" 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="fileType">
           <el-select v-model="form.fileType" placeholder="请选择文件类别">
             <el-option
@@ -167,18 +173,41 @@
             ></el-option>
           </el-select>
         </el-form-item>
+        <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="meetingCode">
           <el-input v-model="form.meetingCode" placeholder="请输入会议编号" />
         </el-form-item>
-        <el-form-item label="文件" prop="files">
-          <fileItem :id="id" @getFileList="getFileList"></fileItem>
+        <el-form-item label="文件" prop="listFile">
+          <fileItem :id="form.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-form-item label="备注" prop="remark" class="special-el-form-item">
           <el-input
-            type="teatarea"
+            rows="4"
+            type="textarea"
             v-model="form.remark"
             placeholder="请输入备注"
           />
@@ -193,7 +222,6 @@
 </template>
 
 <script>
-import fileItem from "./fileItem";
 import {
   listInformation,
   getInformation,
@@ -201,6 +229,8 @@ import {
   addInformation,
   updateInformation,
 } from "@/api/invest/information";
+import projectItem from "./projectItem";
+import fileItem from "./fileItem";
 
 export default {
   props: {
@@ -209,10 +239,11 @@ export default {
       default: "1", //1=显示全部列表  2=显示某项目下的详情列表
     },
   },
-  components: { fileItem },
+  components: { projectItem, fileItem },
   dicts: ["file_type"],
   data() {
     return {
+      id: "",
       fileList: [],
       // 遮罩层
       loading: true,
@@ -242,15 +273,55 @@ export default {
         meetingCode: null,
       },
       // 表单参数
-      form: {},
+      form: {
+        id: null,
+        fileName: null,
+        fileType: null,
+        projectPoolId: null,
+        projectName: null,
+        projectStage: null,
+        meetingCode: null,
+        fileBusinessId: null,
+        delFlag: null,
+        remark: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        listFile: null,
+      },
       // 表单校验
-      rules: {},
+      rules: {
+        fileName: [{ required: true, trigger: "blur", message: "请输入" }],
+        projectName: [{ required: true, trigger: "blur", message: "请选择" }],
+        fileType: [{ required: true, trigger: "change", message: "请选择" }],
+        listFile: [{ required: true, trigger: "change", message: "请选择" }],
+      },
     };
   },
   created() {
     this.getList();
   },
   methods: {
+    // 获取公司信息
+    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;
+    },
     // 获取fileList
     getFileList(fileList) {
       this.fileList = fileList;
@@ -276,6 +347,7 @@ export default {
         fileName: null,
         fileType: null,
         projectPoolId: null,
+        projectName: null,
         projectStage: null,
         meetingCode: null,
         fileBusinessId: null,
@@ -285,6 +357,7 @@ export default {
         createTime: null,
         updateBy: null,
         updateTime: null,
+        listFile: null,
       };
       this.resetForm("form");
     },
@@ -322,6 +395,13 @@ export default {
     },
     /** 提交按钮 */
     submitForm() {
+      //取消该项校验
+      // console.log(this.fileList.length > 0);
+      if (this.fileList.length > 0) {
+        this.$nextTick(() => {
+          this.$refs["form"].clearValidate("listFile");
+        });
+      }
       this.$refs["form"].validate((valid) => {
         if (valid) {
           this.form.listFile = this.fileList;

+ 66 - 9
ruoyi-ui/src/views/invest/components/followList.vue

@@ -7,15 +7,49 @@
       size="small"
       :inline="true"
       v-show="showSearch"
-      label-width="68px"
+      label-width="80px"
     >
-      <el-form-item label="实际跟进日期" prop="realityUpDate">
+      <el-form-item label="项目名称" prop="projectName">
+        <el-input
+          v-model="queryParams.projectName"
+          placeholder="请输入项目名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="联系人" prop="contacts">
+        <el-input
+          v-model="queryParams.contacts"
+          placeholder="请输入联系人"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="跟进人" prop="upPerson">
+        <el-input
+          v-model="queryParams.upPerson"
+          placeholder="请输入跟进人"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="跟进方式" prop="upWay">
+        <el-select v-model="queryParams.upWay" placeholder="全部" clearable>
+          <el-option
+            v-for="dict in dict.type.up_way"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="跟进日期" prop="realityUpDate">
         <el-date-picker
           clearable
           v-model="queryParams.realityUpDate"
           type="date"
           value-format="yyyy-MM-dd"
-          placeholder="请选择实际跟进日期"
+          placeholder="请选择跟进日期"
         >
         </el-date-picker>
       </el-form-item>
@@ -93,10 +127,19 @@
     >
       <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="projectId" />
-      <el-table-column label="项目名称" align="center" prop="projectName" />
+      <!-- <el-table-column label="项目编号" align="center" prop="projectId" /> -->
+      <el-table-column
+        label="项目名称"
+        align="center"
+        prop="tProjectPool.projectName"
+      />
       <el-table-column label="跟进人" align="center" prop="upPerson" />
-      <el-table-column label="跟进方式" align="center" prop="upWay" />
+      <el-table-column label="跟进方式" align="center" prop="upWay">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.up_way" :value="scope.row.upWay" />
+        </template>
+      </el-table-column>
+
       <el-table-column label="跟进内容" align="center" prop="upContent" />
       <el-table-column
         label="跟进日期"
@@ -213,7 +256,11 @@
           </el-select>
         </el-form-item>
         <el-form-item label="附件" prop="file">
-          <fileItem :id="form.id" @getFileList="getFileList"></fileItem>
+          <fileItem
+            ref="fileItems"
+            :id="form.id"
+            @getFileList="getFileList"
+          ></fileItem>
         </el-form-item>
         <el-form-item
           label="跟进内容"
@@ -293,11 +340,12 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
+        projectName: null,
         projectId: null,
         contacts: null,
-        realityUpDate: null,
         upPerson: null,
         upWay: null,
+        realityUpDate: null,
       },
       // 表单参数
       form: {
@@ -316,6 +364,7 @@ export default {
         createTime: null,
         updateBy: null,
         updateTime: null,
+        listFile: null,
       },
       // 表单校验
       rules: {
@@ -390,6 +439,7 @@ export default {
         createTime: null,
         updateBy: null,
         updateTime: null,
+        listFile: null,
       };
       this.resetForm("form");
     },
@@ -411,9 +461,13 @@ export default {
     },
     /** 新增按钮操作 */
     handleAdd() {
+      let that = this;
       this.reset();
       this.open = true;
       this.title = "添加跟进记录";
+      setTimeout(() => {
+        that.$refs.fileItems.fileList = [];
+      }, 200);
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -421,8 +475,11 @@ export default {
       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.open = true;
         this.title = "修改跟进记录";
+        this.$refs.fileItems.getListFileBusinessId(id);
       });
     },
     /** 提交按钮 */
@@ -450,7 +507,7 @@ export default {
     handleDelete(row) {
       const ids = row.id || this.ids;
       this.$modal
-        .confirm('是否确认删除跟进记录编号为"' + ids + '"的数据项?')
+        .confirm("是否确认删除该跟进记录?")
         .then(function () {
           return delRecord(ids);
         })

+ 154 - 21
ruoyi-ui/src/views/invest/components/meetingList.vue

@@ -7,7 +7,7 @@
       size="small"
       :inline="true"
       v-show="showSearch"
-      label-width="68px"
+      label-width="90px"
     >
       <el-form-item label="会议主题" prop="meetingTheme">
         <el-input
@@ -179,14 +179,25 @@
     />
 
     <!-- 添加或修改会议记录对话框 -->
-    <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="120px"
+      >
         <el-form-item label="会议主题" prop="meetingTheme">
           <el-input v-model="form.meetingTheme" placeholder="请输入会议主题" />
         </el-form-item>
-        <el-form-item label="会议编号" prop="meetingCode">
+        <!-- <el-form-item label="会议编号" prop="meetingCode">
           <el-input v-model="form.meetingCode" placeholder="请输入会议编号" />
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item label="会议类别" prop="meetingType">
           <el-select v-model="form.meetingType" placeholder="请选择会议类别">
             <el-option
@@ -197,8 +208,27 @@
             ></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="项目ID" prop="projectPoolId">
-          <el-input v-model="form.projectPoolId" placeholder="请输入项目ID" />
+        <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="startTime">
           <el-date-picker
@@ -224,18 +254,39 @@
           <el-input v-model="form.place" placeholder="请输入会议地点" />
         </el-form-item>
         <el-form-item label="会议发起人" prop="promoter">
-          <el-input v-model="form.promoter" placeholder="请输入会议发起人" />
+          <div
+            class="el-input__inner inputSimulation"
+            @click="openSelectDept(1)"
+          >
+            {{ form.promoter ? form.promoter : "请选择会议发起人" }}
+          </div>
+          <selecDept
+            ref="selecDepts"
+            @getDeptUserInfo="getDeptUserInfo"
+            :deptId="deptId"
+          ></selecDept>
         </el-form-item>
         <el-form-item label="会议参与人" prop="participants">
-          <el-input
-            v-model="form.participants"
-            type="textarea"
-            placeholder="请输入内容"
-          />
+          <div
+            class="el-input__inner inputSimulation"
+            @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">
+          <fileItem
+            ref="fileItems"
+            :id="form.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>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -253,18 +304,24 @@ import {
   addMeeting,
   updateMeeting,
 } from "@/api/invest/meeting";
+import projectItem from "./projectItem";
+import fileItem from "./fileItem";
+import selecDept from "./selecDept";
 
 export default {
   props: {
     type: {
       type: String,
-      default: "1",//1=显示全部列表  2=显示某项目下的详情列表
+      default: "1", //1=显示全部列表  2=显示某项目下的详情列表
     },
   },
-  dicts: ["meeting_type"],
-  
+  dicts: ["meeting_type", "project_stage"],
+  components: { projectItem, selecDept, fileItem },
   data() {
     return {
+      fileList: [],
+      showProjectItem: false,
+      deptId: "",
       // 遮罩层
       loading: true,
       // 选中数组
@@ -294,15 +351,81 @@ export default {
         endTime: null,
       },
       // 表单参数
-      form: {},
+      form: {
+        id: null,
+        meetingTheme: null,
+        meetingCode: null,
+        meetingType: null,
+        projectPoolId: null,
+        projectName: null,
+        projectStage: null,
+        startTime: null,
+        endTime: null,
+        place: null,
+        promoter: null,
+        participants: null,
+        delFlag: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+      },
       // 表单校验
-      rules: {},
+      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: "请选择" }],
+        startTime: [{ required: true, trigger: "change", message: "请选择" }],
+        endTime: [{ required: true, trigger: "blur", message: "请选择" }],
+        place: [{ required: true, trigger: "blur", message: "请输入" }],
+        promoter: [{ required: true, trigger: "blur", message: "请选择" }],
+        participants: [{ required: true, trigger: "blur", message: "请选择" }],
+      },
     };
   },
   created() {
     this.getList();
   },
   methods: {
+    // 选择部门人
+    openSelectDept(type) {
+      if (type == 2) {
+        this.$refs.selecDepts1.show(type);
+      } else {
+        this.$refs.selecDepts.show(type);
+      }
+    },
+    getDeptUserInfo(info) {
+      console.log("会议发起人", info);
+      this.form.promoter = info[0].nickName;
+    },
+    // 多选人
+    getDeptMoreUserInfo(info) {
+      console.log("====会议参与人", info);
+      let peoList = [];
+      for (let i in info) {
+        peoList.push(info[i].nickName);
+      }
+      let peopleStr = peoList.join(",");
+      this.form.participants = peopleStr;
+    },
+    // 获取fileList
+    getFileList(fileList) {
+      this.fileList = fileList;
+    },
+    // 获取公司信息
+    getProjectInfo(info) {
+      this.form.projectPoolId = info[0].id;
+      this.form.projectName = info[0].projectName;
+      this.form.projectStage = info[0].projectStage;
+      this.form.projectState = info[0].projectState;
+      console.log("this.form=", this.form);
+    },
+    //展示人员
+    handleProjectItem() {
+      this.$refs.projectItem.showProjectItem = true;
+    },
     /** 查询会议记录列表 */
     getList() {
       this.loading = true;
@@ -325,6 +448,8 @@ export default {
         meetingCode: null,
         meetingType: null,
         projectPoolId: null,
+        projectName: null,
+        projectStage: null,
         startTime: null,
         endTime: null,
         place: null,
@@ -356,9 +481,13 @@ export default {
     },
     /** 新增按钮操作 */
     handleAdd() {
+      let that= this;
       this.reset();
       this.open = true;
       this.title = "添加会议记录";
+      setTimeout(() => {
+        that.$refs.fileItems.fileList = [];
+      }, 200);
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -366,14 +495,18 @@ export default {
       const id = row.id || this.ids;
       getMeeting(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);
       });
     },
     /** 提交按钮 */
     submitForm() {
       this.$refs["form"].validate((valid) => {
         if (valid) {
+          this.form.listFile = this.fileList;
           if (this.form.id != null) {
             updateMeeting(this.form).then((response) => {
               this.$modal.msgSuccess("修改成功");

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

@@ -139,7 +139,7 @@
         />
       </el-form-item>
       <el-form-item label="附件" prop="listFile">
-        <fileItem :id="id" @getFileList="getFileList"></fileItem>
+        <fileItem :id="form.id" @getFileList="getFileList"></fileItem>
       </el-form-item>
       <h3>项目公司联系人信息</h3>
       <el-divider></el-divider>

+ 14 - 4
ruoyi-ui/src/views/invest/components/projectList.vue

@@ -275,7 +275,11 @@
         </template>
       </el-table-column>
       <el-table-column label="项目所属行业" align="center" prop="industry" />
-      <el-table-column label="项目所属公司" align="center" prop="tProjectCompany.companyName" />
+      <el-table-column
+        label="项目所属公司"
+        align="center"
+        prop="tProjectCompany.companyName"
+      />
       <el-table-column
         label="项目联系人"
         align="center"
@@ -368,7 +372,7 @@
         <el-form-item label="项目阶段" prop="projectStage">
           <el-select v-model="form.projectStage" placeholder="请选择项目阶段">
             <el-option
-              @click.native="handleProjectSelect(index)"
+              @click.native="handleProjectSelect(index, dict)"
               v-for="(dict, index) in dict.type.project_stage"
               :key="dict.value"
               :label="dict.label"
@@ -548,6 +552,7 @@ export default {
       form: {
         projectStage: "",
         projectState: "",
+        stageName: "",
       },
     };
   },
@@ -567,9 +572,13 @@ export default {
   },
   methods: {
     // 下拉框改变
-    handleProjectSelect(index) {
+    handleProjectSelect(index, dict) {
+      console.log("dict=", dict);
       this.form.projectState = null;
       this.project_state = this.projectState[index];
+      if (dict && dict.label) {
+        this.form.stageName = dict.label;
+      }
     },
 
     /** 查询项目池列表 */
@@ -614,7 +623,7 @@ export default {
     handleBusinessUpdate(row) {
       this.reset();
       let index = parseInt(row.projectStage) - 1;
-      this.handleProjectSelect(index);
+      this.handleProjectSelect(index, row);
       this.form = row;
       this.open = true;
       this.title = "设置项目阶段";
@@ -625,6 +634,7 @@ export default {
         id: null,
         projectStage: null,
         projectState: null,
+        stageName: null,
       };
       this.resetForm("form");
     },

+ 72 - 15
ruoyi-ui/src/views/invest/components/selecDept.vue

@@ -7,6 +7,44 @@
     top="5vh"
     append-to-body
   >
+    <el-form
+      v-show="!isSolo"
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+    >
+      <el-form-item label="用户名称" prop="userName">
+        <el-input
+          v-model="queryParams.userName"
+          placeholder="请输入用户名称"
+          clearable
+          style="width: 240px"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="手机号码" prop="phonenumber">
+        <el-input
+          v-model="queryParams.phonenumber"
+          placeholder="请输入手机号码"
+          clearable
+          style="width: 240px"
+          @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>
       <el-table
         @row-click="clickRow"
@@ -77,6 +115,7 @@
 
 <script>
 import { listUser } from "@/api/system/user";
+import { number } from "echarts";
 export default {
   dicts: ["sys_normal_disable"],
   props: {
@@ -84,9 +123,14 @@ export default {
       type: String,
       default: "",
     },
+    isSolo: {
+      type: Boolean,
+      default: true,
+    }
   },
   data() {
     return {
+      type:1,
       // 遮罩层
       visible: false,
       // 选中数组值
@@ -99,14 +143,17 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
+        userName: "",
+        phonenumber: "",
         deptId: "",
       },
     };
   },
   methods: {
     // 显示弹框
-    show() {
+    show(type) {
       this.queryParams.deptId = this.deptId;
+      this.type = type;
       this.getList();
       this.visible = true;
     },
@@ -115,18 +162,23 @@ export default {
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
-      if (selection.length > 1) {
-        this.$modal.msg("只能选择一个跟进人");
-        this.$refs.table.clearSelection();
-        return;
-      }
-      if (this.ids.length == 0) {
-        this.ids = selection;
+      console.log("多选框选中数据",selection)
+      if (this.type == 1) {
+        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();
+        }
       } else {
-        this.$modal.msg("只能选择一个跟进人");
-        this.ids = [];
-        // table与table的ref绑定的一样
-        this.$refs.table.clearSelection();
+        this.ids = selection;
       }
     },
     // 查询表数据
@@ -146,11 +198,16 @@ export default {
       this.resetForm("queryForm");
       this.handleQuery();
     },
-    /** 选择授权用户操作 */
+    /** 选择用户操作 */
     handleSelectUser() {
+      console.log("handleSelectUser===this.type=",this.type)
       const deptId = this.queryParams.deptId;
-      console.log(this.ids)
-      this.$emit("getDeptUserInfo", this.ids);
+      if (this.type === 2) {
+        console.log("222222222")
+        this.$emit("getDeptMoreUserInfo", this.ids);
+      } else {
+        this.$emit("getDeptUserInfo", this.ids);
+      }
       this.visible = false;
     },
   },