浏览代码

11482-【CR】【投资系统】增加审批流程-尽职背调

hxy 3 月之前
父节点
当前提交
acb7b7e633

+ 120 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/InvestigateController.java

@@ -0,0 +1,120 @@
+package com.ruoyi.web.controller.project;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.flowable.service.IInvestigateService;
+import com.ruoyi.invest.domain.*;
+import com.ruoyi.invest.domain.dto.InvestigateDto;
+import com.ruoyi.invest.domain.vo.ProjectInvestigateVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * 尽职背调Controller
+ * 
+ * @author ruoyi
+ * @date 2025-08-08
+ */
+@Api(tags = "尽职背调")
+@RestController
+@RequestMapping("/project/investigate")
+public class InvestigateController extends BaseController {
+    @Autowired
+    private IInvestigateService investigateService;
+
+
+    //我的待办任务
+    @ApiOperation("我的待办任务列表")
+    @PreAuthorize("@ss.hasPermi('invest:pool:list')")
+    @GetMapping("/getMyTaskList")
+    public TableDataInfo getMyTaskList(TProjectInvestigate tProjectInvestigate)
+    {
+        startPage();
+        //tProjectPool.setProjectStage("1");
+        List<ProjectInvestigateVo> list=investigateService.getMyTaskList(getUserId().toString(),tProjectInvestigate);
+        return getDataTable(list);
+    }
+    //我的已办任务
+    @ApiOperation("我的已办任务列表")
+    @PreAuthorize("@ss.hasPermi('invest:pool:list')")
+    @GetMapping("/getMyDoneTaskList")
+    public TableDataInfo getMyDoneTaskList(TProjectInvestigate tProjectInvestigate)
+    {
+        startPage();
+        //tProjectPool.setProjectStage("1");
+        List<ProjectInvestigateVo> list=investigateService.getMyDoneTaskList(getUserId().toString(),tProjectInvestigate);
+        return getDataTable(list);
+    }
+    //我的待办任务
+    @ApiOperation("我的单据列表")
+    @PreAuthorize("@ss.hasPermi('invest:pool:list')")
+    @GetMapping("/getMyList")
+    public TableDataInfo getMyList(TProjectInvestigate tProjectInvestigate)
+    {
+        startPage();
+        //tProjectPool.setProjectStage("1");
+        List<ProjectInvestigateVo> list=investigateService.getMyList(getUserId().toString(),tProjectInvestigate);
+        return getDataTable(list);
+    }
+
+    /**
+     * 获取项目池详细信息
+     */
+    @ApiOperation("获取项目池详细信息")
+    @PreAuthorize("@ss.hasPermi('invest:pool:query')")
+    @GetMapping(value = "/{pInstId}")
+    public AjaxResult getInfo(@PathVariable("pInstId") String pInstId)
+    {
+        return success(investigateService.selectTProjectInvestigateByProcInstId(pInstId));
+    }
+    //发起流程
+    @ApiOperation(value = "投资机会申请发起流程")
+    @Log(title = "发起流程", businessType = BusinessType.INSERT)
+    @PostMapping("/start")
+    public AjaxResult start(@RequestBody TProjectInvestigate tProjectInvestigate) {
+
+       //return InvestigateService.set
+        return investigateService.start(tProjectInvestigate);
+    }
+    @ApiOperation(value = "审批任务")
+    @PutMapping(value = "/complete")
+    public AjaxResult complete(@RequestBody InvestigateDto dto, HttpServletRequest request) {
+        // 从 DTO 中拆分参数
+        TProjectInvestigate tProjectInvestigate= dto.getProjectInvestigate();
+        TProjectInvestigatePerson tProjectInvestigatePerson = dto.getProjectInvestigatePerson();
+        FlowBaseInfo flowBaseInfo= dto.getFlowBaseInfo();
+        return investigateService.complete(tProjectInvestigate,tProjectInvestigatePerson,flowBaseInfo,request);
+    }
+    /**
+     * 获取通过流程id会议记录详细信息 (会议投决)
+     */
+    @ApiOperation("获取会议记录详细信息")
+    @GetMapping(value = "/getMeetingInfo/{pInstId}")
+    public AjaxResult getMeetingInfo(@PathVariable("pInstId") String pInstId) {
+
+        return success(investigateService.selectTProjectMeetingByProcInstId(pInstId));
+    }
+    /**
+     * 根据流程Id查询汇总分数和平均分数 (总裁室)
+     */
+    @ApiOperation("根据会议ID查询汇总分数和平均分数")
+    @GetMapping(value = "/getSumScore/{pInstId}")
+    public AjaxResult getSumScore(@PathVariable("pInstId") String pInstId)
+    {
+        if (StringUtils.isEmpty(pInstId))
+        {
+            return error("查询打分数据'" + getNickName() + "'失败,请选择会议!");
+        }
+        return success(investigateService.selectSumScore(pInstId));
+    }
+}

+ 44 - 0
ruoyi-flowable/src/main/java/com/ruoyi/flowable/service/IInvestigateService.java

@@ -0,0 +1,44 @@
+package com.ruoyi.flowable.service;
+
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.invest.domain.*;
+import com.ruoyi.invest.domain.vo.ProjectInvestigateVo;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 项目池Service接口
+ * 
+ * @author ruoyi
+ * @date 2024-02-21
+ */
+public interface IInvestigateService
+{
+    List<ProjectInvestigateVo> getMyTaskList(String userId, TProjectInvestigate tProjectInvestigate);
+    List<ProjectInvestigateVo> getMyDoneTaskList(String userId, TProjectInvestigate tProjectInvestigate);
+    List<ProjectInvestigateVo> getMyList(String userId,TProjectInvestigate tProjectInvestigate);
+
+    TProjectInvestigate selectTProjectInvestigateByProcInstId(String pInstId);
+    /**
+     * 新增投决申请
+     *
+     * @param tProjectInvestigate 投决申请
+     * @return 结果
+     */
+
+    AjaxResult start(TProjectInvestigate tProjectInvestigate);
+    AjaxResult complete(TProjectInvestigate tProjectInvestigate, TProjectInvestigatePerson tProjectInvestigatePerson, FlowBaseInfo flow, HttpServletRequest request);
+
+    TProjectMeeting selectTProjectMeetingByProcInstId(String pInstId);
+
+    /**
+     * 根据pInstId查询汇总分数和平均分数
+     * @param pInstId
+     * @return
+     */
+    Map<String,String> selectSumScore(String pInstId);
+
+
+}

+ 339 - 0
ruoyi-flowable/src/main/java/com/ruoyi/flowable/service/impl/InvestigateServiceImpl.java

@@ -0,0 +1,339 @@
+package com.ruoyi.flowable.service.impl;
+
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.enums.FileType;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.sms.SmsSenderUtils;
+import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.flowable.common.constant.ProcessConstants;
+import com.ruoyi.flowable.common.constant.UUIDGenerator;
+import com.ruoyi.flowable.common.enums.FlowStatusEnum;
+import com.ruoyi.flowable.factory.FlowServiceFactory;
+import com.ruoyi.flowable.service.IFlowInstanceService;
+import com.ruoyi.flowable.service.IFlowService;
+import com.ruoyi.flowable.service.IInvestigateService;
+import com.ruoyi.invest.domain.*;
+import com.ruoyi.invest.domain.vo.ProjectInvestigateVo;
+import com.ruoyi.invest.mapper.InvestigateMapper;
+import com.ruoyi.invest.mapper.TProjectScoringMapper;
+import com.ruoyi.invest.service.*;
+import com.ruoyi.system.mapper.SysDeptMapper;
+import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.tool.service.ITUnifyFileService;
+import org.flowable.engine.repository.ProcessDefinition;
+import org.flowable.engine.runtime.ProcessInstance;
+import org.flowable.task.api.Task;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.util.*;
+
+/**
+ * 项目池Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2024-02-21
+ */
+@Service
+public class InvestigateServiceImpl extends FlowServiceFactory implements IInvestigateService
+{
+    @Autowired
+    private InvestigateMapper investigateMapper;
+    @Autowired
+    private ITProjectInvestigateService tProjectInvestigateService;
+    @Autowired
+    private ITProjectInvestigatePersonService tProjectInvestigatePersonService;
+    @Autowired
+    private ITProjectPoolService tProjectPoolService;
+    @Autowired
+    private ITProjectCirculationService tProjectCirculationService;
+
+    @Autowired
+    private ITUnifyFileService tUnifyFileService;
+
+    @Autowired
+    private IFlowBaseInfoService activitiBaseInfoService;
+    @Autowired
+    private IFlowInstanceService flowInstanceService;
+    @Autowired
+    private ISysUserService sysUserService;
+    @Autowired
+    private SysDeptMapper sysDeptMapper;
+    @Autowired
+    private IFlowService flowService;
+    @Autowired
+    private TProjectScoringMapper tProjectScoringMapper;
+    @Override
+    public List<ProjectInvestigateVo> getMyTaskList(String userId, TProjectInvestigate tProjectInvestigate){
+        return investigateMapper.getMyTaskList(userId, tProjectInvestigate);
+    }
+    @Override
+    public List<ProjectInvestigateVo> getMyDoneTaskList(String userId, TProjectInvestigate tProjectInvestigate){
+        return investigateMapper.getMyDoneTaskList(userId, tProjectInvestigate);
+    }
+    @Override
+    public List<ProjectInvestigateVo> getMyList(String userId,TProjectInvestigate tProjectInvestigate){
+        return investigateMapper.getMyList(userId, tProjectInvestigate);
+    }
+    /**
+     * 查询项目池
+     * 
+     * @param pInstId 流程实例Id
+     * @return 项目池
+     */
+    @Override
+    public TProjectInvestigate selectTProjectInvestigateByProcInstId(String pInstId)
+    {
+        return investigateMapper.selectTProjectInvestigateByProcInstId(pInstId);
+    }
+
+    @Override
+    public AjaxResult start(TProjectInvestigate tProjectInvestigate) {
+
+        // 根据key值获取最新的流程部署id
+        String pDefId = null;
+        ProcessInstance pInst = null;
+        try {
+            List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery()
+                    .processDefinitionKey("dgt-due-workflow")
+                    .orderByProcessDefinitionVersion().desc().list();
+            if(list.size()==0){
+                return AjaxResult.error("未找到该流程,无法开启流程!");
+            }
+            pDefId = list.get(0).getId();
+            ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(pDefId)
+                    .latestVersion().singleResult();
+            if (Objects.nonNull(processDefinition) && processDefinition.isSuspended()) {
+                return AjaxResult.error("流程已被挂起,请先激活流程");
+            }
+            if(StringUtils.isNotBlank(pDefId)){
+
+                //设置参数
+                Map<String, Object> formProperties = new HashMap<String, Object>();
+                // 设置流程发起人Id到流程中
+                SysUser sysUser = SecurityUtils.getLoginUser().getUser();
+                identityService.setAuthenticatedUserId(sysUser.getUserId().toString());
+                formProperties.put("auditPass",tProjectInvestigate.isFlag()?true:false);
+                //暂存
+                formProperties.put(ProcessConstants.PROCESS_INITIATOR, sysUser.getUserId());
+                //投资部负责人
+                String leader=sysDeptMapper.selectDeptLeader("投资部");
+                formProperties.put("MANAGER",sysUserService.selectUserByUserName(leader).getUserId());
+                //尽职背调上传人
+                List<String> userIds = Arrays.asList(tProjectInvestigate.getInvestigatePersonId().split(","));
+                formProperties.put("uploadList", userIds);
+                pInst = runtimeService.startProcessInstanceById(pDefId, formProperties);
+                if(pInst!=null){
+                    String nickName= SecurityUtils.getLoginUser().getUser().getNickName();
+                    String userId=SecurityUtils.getLoginUser().getUserId().toString();
+                    //保存信息
+                    tProjectInvestigate.setId(IdUtils.fastSimpleUUID());
+                    tProjectInvestigate.setProcInstId(pInst.getProcessInstanceId());
+                    tProjectInvestigate.setCreateBy(userId);
+                    if(tProjectInvestigate.isFlag()){
+                        //tProjectInvestigate.setStatus(1);//提交
+                    }else{
+                        //tProjectInvestigate.setStatus(0);//暂存
+                    }
+                    // todo 保存尽职背调附件信息
+                    tUnifyFileService.insertTUnifyFileList(tProjectInvestigate.getListFile(),
+                            tProjectInvestigate.getProjectPoolId(),
+                            tProjectInvestigate.getId(),//尽调ID
+                            String.valueOf(FileType.INVESTIGATE.ordinal()),//文件类型:尽调
+                            nickName);
+
+                    // todo 增加尽调创建记录
+                    tProjectCirculationService.insertTProjectCirculation(tProjectInvestigate.getProjectPoolId(),tProjectInvestigate.getInvestigateName()+"(尽职背调)",nickName);
+
+                    // todo 更改尽调状态
+                    tProjectPoolService.updateTProjectPoolByInvestigateFlag(tProjectInvestigate.getProjectPoolId(),"1");
+
+                    // todo 短信提醒
+                    /*if(StringUtils.isNotEmpty(tProjectInvestigate.getInvestigatePersonId())){
+                        StringUtils.str2List(tProjectInvestigate.getInvestigatePersonId(),",",true,true).stream().forEach(str -> {
+                            SysUser user = sysUserService.selectUserById(Long.valueOf(str));
+                            String contents = "您好,"+user.getNickName()+"," + tProjectInvestigate.getProjectName() + "已开启尽职背调。";
+                            try {
+                                SmsSenderUtils.sendSms(user.getPhonenumber(),contents);
+                            } catch (IOException e) {
+                                logger.error("短信发送失败"+e.getMessage());
+                            }
+                        });
+                    }*/
+                    tProjectInvestigateService.insertTProjectInvestigate(tProjectInvestigate);
+
+                    FlowBaseInfo flowBaseInfo = new FlowBaseInfo();
+                    flowBaseInfo.setCreateBy(userId);
+                    flowBaseInfo.setId(UUIDGenerator.uuid());
+                    flowBaseInfo.setFormProperties(flowInstanceService.getFormProperties(pInst));
+                    flowBaseInfo.setProcDefId(pDefId);
+                    flowBaseInfo.setProcInsId(pInst.getId());
+                    flowBaseInfo.setTaskName("申请人");
+                    flowBaseInfo.setFlag(true);
+                    flowBaseInfo.setComment(tProjectInvestigate.isFlag() ? "[提交]" : "[暂存]");
+                    flowBaseInfo.setStatus(FlowStatusEnum.STARTED.getName());
+                    activitiBaseInfoService.addActivitiBaseInfo(flowBaseInfo);
+
+                    TProjectPool tProjectPool=new TProjectPool();
+                    tProjectPool.setId(tProjectInvestigate.getProjectPoolId());
+                    tProjectPool.setProjectStage("4");//项目阶段-尽职背调
+                    tProjectPool.setProjectState("f");//项目状态-尽职背调
+                    tProjectPoolService.updateTProjectPool(tProjectPool);
+                    return AjaxResult.success();
+                }
+                return AjaxResult.error();
+            }
+            return AjaxResult.error();
+        } catch (Exception e) {
+            /*res.put("status",false);
+            res.put("msg", "流程定义id为空, 无法开启流程!");*/
+            e.printStackTrace();
+            return AjaxResult.error("msg", "流程定义id为空, 无法开启流程!");
+
+        }
+
+
+    }
+    @Override
+    public AjaxResult complete(TProjectInvestigate tProjectInvestigate, TProjectInvestigatePerson tProjectInvestigatePerson, FlowBaseInfo flow,HttpServletRequest request){
+        //Task task=taskService.createTaskQuery().processInstanceId(tProjectApproval.getProcInstId()).singleResult();
+        Task task = taskService.createTaskQuery().taskId(flow.getTaskId()).singleResult();
+        if (Objects.isNull(task)) {
+            return AjaxResult.error("任务不存在");
+        }
+        //当前你登录人
+        SysUser userInfo=SecurityUtils.getLoginUser().getUser();
+        Map<String, Object> rs = new HashMap<String, Object>();
+        rs.put("status",true);
+        Map<String, Object> formProperties = new HashMap<>();
+        formProperties.put("auditPass", tProjectInvestigate.isFlag());
+        //尽职背调上传人
+        if("modifyApply".equals(task.getTaskDefinitionKey())) {
+            //尽职背调上传人
+            List<String> userIds = Arrays.asList(tProjectInvestigate.getInvestigatePersonId().split(","));
+            formProperties.put("uploadList", userIds);
+        }
+
+        Map<String, Object> fpMap = flowService.getFormProperties(task.getProcessDefinitionId(), task.getId());
+        try {
+            rs = flowService.taskComplete( task.getId(), tProjectInvestigate.isFlag(), formProperties, userInfo.getUserId().toString());
+        } catch (Exception e) {
+            e.printStackTrace();
+            rs.put("status", false);
+            rs.put("msg", "流程审批失败");
+        }
+        boolean status = (boolean) rs.get("status");
+        // 审核成功, 则记录审核信息
+        if (status) {
+            TProjectPool tProjectPool=new TProjectPool();
+            tProjectPool.setId(tProjectInvestigate.getProjectPoolId());
+            // todo 保存尽职背调资料
+            tUnifyFileService.insertTUnifyFileList(tProjectInvestigate.getListFile(),
+                    tProjectInvestigate.getProjectPoolId(),
+                    tProjectInvestigate.getId(),
+                    String.valueOf(FileType.INVESTIGATE.ordinal()),
+                    userInfo.getNickName());
+            //上传尽职背调报告
+            if ("upload".equals(task.getTaskDefinitionKey())) {
+                if(StringUtils.isNull(tProjectInvestigatePerson.getId())){
+                    tProjectInvestigatePerson.setId(IdUtils.fastSimpleUUID());
+                }
+                tProjectInvestigatePerson.setInvestigatePerson(userInfo.getNickName());
+                tProjectInvestigatePerson.setInvestigatePersonId(userInfo.getUserId().toString());
+                tProjectInvestigatePerson.setDeptId(userInfo.getDeptId());
+                // todo 保存附件信息
+                tUnifyFileService.insertTUnifyFileList(tProjectInvestigatePerson.getListFile(),
+                        tProjectInvestigatePerson.getProjectPoolId(),
+                        tProjectInvestigatePerson.getId(),//尽调ID
+                        String.valueOf(FileType.INVESTIGATE.ordinal()),//文件类型:尽调
+                        userInfo.getNickName());
+
+                // todo 增加项目创建记录
+                tProjectCirculationService.insertTProjectCirculation(tProjectInvestigatePerson.getProjectPoolId(),"上传尽调报告", userInfo.getNickName());
+
+                tProjectInvestigatePersonService.insertTProjectInvestigatePerson(tProjectInvestigatePerson);
+            }
+
+            if("president".equals(task.getTaskDefinitionKey())){
+//                tProjectPool.setProjectStage("5");//项目阶段-项目投决
+//                tProjectPool.setProjectState("i");//项目状态-项目投决通过
+            }
+            //FlowBaseInfo flow = new FlowBaseInfo();
+            if(flow==null){
+                flow = new FlowBaseInfo();
+            }
+            flow.setId(UUIDGenerator.uuid());
+            flow.setFormProperties(flowService.getFormProperties(fpMap, request.getParameterMap()));
+            flow.setStatus(FlowStatusEnum.RUNNING.getName());
+            flow.setProcDefId(task.getProcessDefinitionId());
+            flow.setProcInsId(task.getProcessInstanceId());
+            flow.setTaskDefKey(task.getTaskDefinitionKey());
+            String isOk = tProjectInvestigate.isFlag() ? "[同意]" : "[驳回]";
+            if ("modifyApply".equals(task.getTaskDefinitionKey())) {
+                tProjectInvestigate.setStatus(tProjectInvestigate.isFlag() ? 1 : 4);
+                isOk = tProjectInvestigate.isFlag() ? "[提交]" : "[关闭]";
+            } else {
+                tProjectInvestigate.setStatus(tProjectInvestigate.isFlag() ? 2 : 0);
+            }
+            if (null != flow.getComment()) {
+                flow.setComment(isOk + flow.getComment());
+            } else {
+                flow.setComment(isOk);
+            }
+            flow.setTaskName(task.getName());
+            flow.setCreateBy(SecurityUtils.getLoginUser().getUserId().toString());
+
+            ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).active().singleResult();
+            // 表示流程已经审批结束了
+            if (processInstance == null) {
+                flow.setStatus(FlowStatusEnum.ENDED.getName());
+                if (!"modifyApply".equals(task.getTaskDefinitionKey())&&!"president".equals(task.getTaskDefinitionKey())) {
+                    tProjectInvestigate.setStatus(3);
+                    tProjectPool.setProjectStage("5");//项目阶段-项目投决
+                    tProjectPool.setProjectState("h");//项目状态-准备项目投决材料
+                    tProjectPool.setUpdateBy(userInfo.getNickName());
+                    //tProjectPool.setInvestigateDate(new Date());//投决通过日期
+                }else{
+                    tProjectPool.setProjectStage("4");//项目阶段-尽职背调
+                    tProjectPool.setProjectState("f");//项目状态-尽职背调
+                    tProjectPool.setInvestigateFlag("0");
+                    tProjectPool.setUpdateBy(userInfo.getNickName());
+                }
+                tProjectPoolService.updateTProjectPool(tProjectPool);
+            }
+
+            tProjectInvestigateService.updateTProjectInvestigate(tProjectInvestigate);
+            activitiBaseInfoService.addActivitiBaseInfo(flow);
+        }
+        return AjaxResult.success();
+    }
+    public TProjectMeeting selectTProjectMeetingByProcInstId(String pInstId){
+        TProjectInvestigate tProjectInvestigate=this.selectTProjectInvestigateByProcInstId(pInstId);
+        TProjectMeeting tProjectMeeting=null;
+        if(tProjectInvestigate!=null){
+            //tProjectMeeting=tProjectMeetingService.selectTProjectMeetingByProjectPoolId(tProjectInvestigate.getProjectPoolId());
+        }
+        return tProjectMeeting;
+    }
+    /**
+     * 根据流程Id查询汇总分数和平均分数
+     * @param pInstId
+     * @return
+     */
+    @Override
+    public Map<String, String> selectSumScore(String pInstId) {
+        TProjectInvestigate tProjectInvestigate=this.selectTProjectInvestigateByProcInstId(pInstId);
+        Map<String, String> sumScore=new HashMap<>();
+        if(tProjectInvestigate!=null){
+            //TProjectMeeting tProjectMeeting=tProjectMeetingService.selectTProjectMeetingByProjectPoolId(tProjectInvestigate.getProjectPoolId());
+            //sumScore=tProjectScoringMapper.selectMeetingId(tProjectMeeting.getId());
+        }
+        return sumScore;
+    }
+
+}

+ 5 - 5
ruoyi-flowable/src/main/java/com/ruoyi/flowable/service/impl/TProjectInvestigateServiceImpl.java

@@ -267,7 +267,7 @@ public class TProjectInvestigateServiceImpl extends FlowServiceFactory implement
 
                     activitiBaseInfoService.addActivitiBaseInfo(flowBaseInfo);
                     // todo 短信提醒
-                    if(StringUtils.isNotEmpty(tProjectInvestigate.getInvestigatePersonId())){
+                    /*if(StringUtils.isNotEmpty(tProjectInvestigate.getInvestigatePersonId())){
                         StringUtils.str2List(tProjectInvestigate.getInvestigatePersonId(),",",true,true).stream().forEach(str -> {
                             SysUser user = sysUserService.selectUserById(Long.valueOf(str));
                             String contents = "您好,"+user.getNickName()+"," + tProjectInvestigate.getProjectName() + "已开启尽职背调。";
@@ -277,7 +277,7 @@ public class TProjectInvestigateServiceImpl extends FlowServiceFactory implement
                                 logger.error("短信发送失败"+e.getMessage());
                             }
                         });
-                    }
+                    }*/
                     return AjaxResult.success();
 
                 }
@@ -335,10 +335,10 @@ public class TProjectInvestigateServiceImpl extends FlowServiceFactory implement
             flow.setTaskDefKey(task.getTaskDefinitionKey());
             String isOk = tProjectInvestigate.isFlag() ? "[同意]" : "[驳回]";
             if ("modifyApply".equals(task.getTaskDefinitionKey())) {
-                tProjectInvestigate.setStatus(tProjectInvestigate.isFlag() ? "1" : "4");
+                tProjectInvestigate.setStatus(tProjectInvestigate.isFlag() ? 1 : 4);
                 isOk = tProjectInvestigate.isFlag() ? "[提交]" : "[关闭]";
             } else {
-                tProjectInvestigate.setStatus(tProjectInvestigate.isFlag() ? "2" : "0");
+                tProjectInvestigate.setStatus(tProjectInvestigate.isFlag() ? 2 : 0);
             }
             if (null != flow.getComment()) {
                 flow.setComment(isOk + flow.getComment());
@@ -352,7 +352,7 @@ public class TProjectInvestigateServiceImpl extends FlowServiceFactory implement
             if (processInstance == null) {
                 flow.setStatus(FlowStatusEnum.ENDED.getName());
                 if (!"modifyApply".equals(task.getTaskDefinitionKey())) {
-                    tProjectInvestigate.setStatus("3");
+                    tProjectInvestigate.setStatus(3);
                 }
             }
             tProjectInvestigate.setUpdateBy(userInfo.getNickName());

+ 11 - 4
ruoyi-system/src/main/java/com/ruoyi/invest/domain/TProjectInvestigate.java

@@ -2,6 +2,8 @@ package com.ruoyi.invest.domain;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.tool.domain.TUnifyFile;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
@@ -16,6 +18,7 @@ import java.util.List;
  * @author zjc
  * @date 2024-03-13
  */
+@Data
 public class TProjectInvestigate extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
@@ -57,7 +60,7 @@ public class TProjectInvestigate extends BaseEntity
     private String delFlag;
 
     /** 状态 */
-    private String status;
+   /* private String status;*/
 
     /**
      * 附件信息
@@ -86,7 +89,11 @@ public class TProjectInvestigate extends BaseEntity
     private Date deadDate;
 
     private String procInstId;
-
+    /**
+     * 流程状态
+     */
+    @ApiModelProperty("流程状态")
+    private int status;//流程状态( //0暂存1已提交2审批中3审批通过4关闭)
     //表外
     private boolean flag;
 
@@ -182,13 +189,13 @@ public class TProjectInvestigate extends BaseEntity
         this.listFile = listFile;
     }
 
-    public String getStatus() {
+    /*public String getStatus() {
         return status;
     }
 
     public void setStatus(String status) {
         this.status = status;
-    }
+    }*/
 
     public String getInvestigatePlace() {
         return investigatePlace;

+ 12 - 0
ruoyi-system/src/main/java/com/ruoyi/invest/domain/dto/InvestigateDto.java

@@ -0,0 +1,12 @@
+package com.ruoyi.invest.domain.dto;
+
+import com.ruoyi.invest.domain.*;
+import lombok.Data;
+
+@Data
+public class InvestigateDto {
+    private TProjectPool projectPool;   // 嵌套对象
+    private TProjectInvestigate projectInvestigate;
+    private TProjectInvestigatePerson projectInvestigatePerson;
+    private FlowBaseInfo flowBaseInfo;
+}

+ 216 - 0
ruoyi-system/src/main/java/com/ruoyi/invest/domain/vo/ProjectInvestigateVo.java

@@ -0,0 +1,216 @@
+package com.ruoyi.invest.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import com.ruoyi.tool.domain.TUnifyFile;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 尽职背调对象 t_project_investigate
+ * 
+ * @author zjc
+ * @date 2024-04-02
+ */
+@Data
+public class ProjectInvestigateVo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private String id;
+
+    /** 尽调名称 */
+    @Excel(name = "尽调名称")
+    private String investigateName;
+
+    /** 尽调编号 */
+    @Excel(name = "尽调编号")
+    private String investigateCode;
+
+    /** 项目id */
+    @Excel(name = "项目id")
+    private String projectPoolId;
+
+    /** 项目名称 */
+    //private String projectName;
+
+    /** 尽调人员 */
+    @Excel(name = "尽调人员")
+    private String investigatePerson;
+
+    /** $column.columnComment */
+    private String investigatePersonId;
+
+    /** 尽调费用(元) */
+    @Excel(name = "尽调费用", readConverterExp = "元=")
+    private String investigateCost;
+
+    /** 描述 */
+    @Excel(name = "描述")
+    private String describe;
+
+    /** 删除状态 */
+    private String delFlag;
+
+    /** 状态 */
+    //private String status;
+
+    /**
+     * 附件信息
+     */
+    private List<TUnifyFile> listFile;
+
+    /** 尽调地点 */
+    private String investigatePlace;
+
+    /** 期望尽调开始时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date startTime;
+
+    /** 期望尽调结束时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date endTime;
+
+    /** 尽调资料是否齐全 */
+    private String readiness;
+
+    /** 是否有第三方投资机构 */
+    private String thirdParty;
+
+    /** 尽调财务数据截止日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date deadDate;
+    /**
+     * 流程状态
+     */
+    private Integer status;
+    //表外
+    /*private String procInstId;//流程实例Id
+    private String taskName;
+    private String taskDefKey;*/
+
+
+    //投资机会信息
+    /** 项目名称 */
+    @Excel(name = "项目名称")
+    private String projectName;
+    /** 项目所属行业 */
+    @Excel(name = "项目所属行业")
+    private String industry;
+    /** 项目阶段 */
+    @Excel(name = "项目阶段")
+    private String projectStage;
+    /** 项目状态 */
+    @Excel(name = "项目状态")
+    private String projectState;
+    /** 投资负责人 */
+    @Excel(name = "投资负责人")
+    private String investHead;
+
+
+    //流程信息
+    @ApiModelProperty("流程实例ID")
+    private String procInstId;
+    @ApiModelProperty("流程ID")
+    private String procDefId;
+    //private String processDefName;
+    @ApiModelProperty("流程部署编号")
+    private String deployId;
+    //流程任务信息
+    @ApiModelProperty("任务编号")
+    private String taskId;
+    @ApiModelProperty("任务执行编号")
+    private String executionId;// 运行id
+    @ApiModelProperty("任务名称")
+    private String taskName;
+    @ApiModelProperty("任务Key")
+    private String taskDefKey;
+    private String taskCreateTiem; // 当前节点创建时间
+    //private String taskUserId; // 当前处理人
+    //private String status; // 流程状态
+    @ApiModelProperty("任务执行人Id")
+    private String assignee; // 该值未空表示 可签收,不未空表示 可处理
+    @ApiModelProperty("任务执行人名称")
+    private String assigneeName;
+    //流程发起人信息
+    @ApiModelProperty("流程发起人Id")
+    private String startUserId;
+    @ApiModelProperty("流程发起人名称")
+    private String startUserName;
+    @ApiModelProperty("流程发起人部门名称")
+    private String startDeptName;
+
+    private boolean flag; // true - 同意; false - 驳回
+
+    public void setId(String id) 
+    {
+        this.id = id;
+    }
+
+    public String getId() 
+    {
+        return id;
+    }
+    public void setProjectPoolId(String projectPoolId) 
+    {
+        this.projectPoolId = projectPoolId;
+    }
+
+    public String getProjectPoolId() 
+    {
+        return projectPoolId;
+    }
+
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+
+    public List<TUnifyFile> getListFile() {
+        return listFile;
+    }
+
+    public void setListFile(List<TUnifyFile> listFile) {
+        this.listFile = listFile;
+    }
+
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("investigateName", getInvestigateName())
+                .append("investigateCode", getInvestigateCode())
+                .append("projectPoolId", getProjectPoolId())
+                .append("investigatePerson", getInvestigatePerson())
+                .append("investigatePersonId", getInvestigatePersonId())
+                .append("investigateCost", getInvestigateCost())
+                .append("describe", getDescribe())
+                .append("remark", getRemark())
+                .append("delFlag", getDelFlag())
+                .append("createBy", getCreateBy())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateTime", getUpdateTime())
+                .toString();
+    }
+}

+ 27 - 0
ruoyi-system/src/main/java/com/ruoyi/invest/mapper/InvestigateMapper.java

@@ -0,0 +1,27 @@
+package com.ruoyi.invest.mapper;
+
+import com.ruoyi.invest.domain.TProjectInvestigate;
+import com.ruoyi.invest.domain.vo.ProjectInvestigateVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 项目池Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2024-02-21
+ */
+public interface InvestigateMapper {
+
+    /*待办任务*/
+    List<ProjectInvestigateVo> getMyTaskList(@Param("userId") String userId, @Param("projectInvestigate") TProjectInvestigate tProjectInvestigate);
+    /*已办任务*/
+    List<ProjectInvestigateVo> getMyDoneTaskList(@Param("userId") String userId, @Param("projectInvestigate")TProjectInvestigate tProjectInvestigate);
+    /*我的单据*/
+    List<ProjectInvestigateVo> getMyList(@Param("userId") String userId, @Param("projectInvestigate")TProjectInvestigate tProjectInvestigate);
+    /*详情*/
+    public TProjectInvestigate selectTProjectInvestigateByProcInstId(String ProcInstId);
+
+
+}

+ 218 - 0
ruoyi-system/src/main/resources/mapper/invest/InvestigateMapper.xml

@@ -0,0 +1,218 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.invest.mapper.InvestigateMapper">
+
+    <resultMap type="TProjectInvestigate" id="TProjectInvestigateResult">
+        <result property="id"    column="id"    />
+        <result property="investigateName"    column="investigate_name"    />
+        <result property="investigateCode"    column="investigate_code"    />
+        <result property="projectPoolId"    column="project_pool_id"    />
+        <result property="investigatePerson"    column="investigate_person"    />
+        <result property="investigatePersonId"    column="investigate_person_id"    />
+        <result property="investigateCost"    column="investigate_cost"    />
+        <result property="describe"    column="describe_"    />
+        <result property="investigatePlace"    column="investigate_place"    />
+        <result property="startTime"    column="start_time"    />
+        <result property="endTime"    column="end_time"    />
+        <result property="readiness"    column="readiness"    />
+        <result property="thirdParty"    column="third_party"    />
+        <result property="deadDate"    column="dead_date"    />
+        <result property="remark"    column="remark"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="status"    column="status"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="projectName" column="project_name" />
+        <result property="procInstId" column="proc_inst_id" />
+    </resultMap>
+    <resultMap type="ProjectInvestigateVo" id="ProjectInvestigateVoResult">
+        <result property="id"    column="id"    />
+        <result property="procInstId"    column="proc_inst_id"    />
+        <result property="projectPoolId"    column="project_pool_id"    />
+        <result property="investigateName"    column="investigate_name"    />
+        <result property="investigateCode"    column="investigate_code"    />
+        <result property="investigatePerson"    column="investigate_person"    />
+        <result property="investigatePersonId"    column="investigate_person_id"    />
+        <result property="investigateCost"    column="investigate_cost"    />
+        <result property="describe"    column="describe_"    />
+        <result property="investigatePlace"    column="investigate_place"    />
+        <result property="startTime"    column="start_time"    />
+        <result property="endTime"    column="end_time"    />
+        <result property="readiness"    column="readiness"    />
+        <result property="thirdParty"    column="third_party"    />
+        <result property="deadDate"    column="dead_date"    />
+        <result property="remark"    column="remark"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="status"    column="status"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="status"     column="status"  />
+
+        <result property="projectName"    column="project_name"    />
+        <result property="industry"    column="industry"    />
+        <result property="investHead"    column="invest_head"    />
+        <result property="projectStage"    column="project_stage"    />
+        <result property="projectState"    column="project_state"    />
+
+        <result property="taskName" column="taskName"/>
+        <result property="taskId" column="taskId"/>
+        <result property="taskCreateTiem" column="taskCreateTiem"/>
+        <result property="assignee" column="assignee"/>
+        <result property="assigneeName" column="assigneeName"/>
+        <result property="taskDefKey" column="taskDefKey"/>
+        <result property="procDefId" column="procDefId"/>
+        <result property="procInstId" column="procInstId"/>
+        <result property="startUserId" column="startUserId"/>
+        <result property="startUserName" column="startUserName"/>
+        <result property="startDeptName" column="startDeptName"/>
+        <result property="executionId" column="executionId"/>
+        <result property="deployId" column="deployId"/>
+    </resultMap>
+    <sql id="selectTProjectInvestigateVo">
+        select id, proc_inst_id, investigate_name, investigate_code, project_pool_id, investigate_place, start_time, end_time, readiness, third_party, dead_date, investigate_person, investigate_person_id, investigate_cost, describe_, remark, status, del_flag, create_by, create_time, update_by, update_time from t_project_investigate
+    </sql>
+    <sql id="where_sql">
+        <if test="projectInvestigate.projectPoolId != null  and projectInvestigate.projectPoolId != ''"> and a.project_pool_id = #{projectInvestigate.projectPoolId}</if>
+        <if test="projectInvestigate.projectName != null  and projectInvestigate.projectName != ''"> and tp.project_name like concat('%', #{projectInvestigate.projectName}, '%')</if>
+        <if test="projectInvestigate.investigateName != null  and projectInvestigate.investigateName != ''"> and a.investigate_name like concat('%', #{projectInvestigate.investigateName}, '%')</if>
+        <if test="projectInvestigate.investigatePlace != null  and projectInvestigate.investigatePlace != ''"> and a.investigate_place like concat('%', #{projectInvestigate.investigatePlace}, '%')</if>
+    </sql>
+    <select id="getMyTaskList" resultMap="ProjectInvestigateVoResult">
+        select a.id,a.proc_inst_id, a.project_pool_id,tp.project_name, tp.industry,tp.project_stage,tp.project_state,tp.invest_head,
+        a.investigate_name, a.investigate_code,a.investigate_place, a.start_time, a.end_time, a.readiness, a.third_party, a.dead_date,
+        a.investigate_person, a.investigate_person_id, a.investigate_cost, a.describe_,
+        a.remark, a.del_flag, a.create_by, a.create_time, a.update_by, a.update_time ,a.status,
+        p.PROC_INST_ID_ as 'procInsId',
+        p.PROC_DEF_ID_ as 'procDefId',
+        date_format(p.START_TIME_, '%Y-%m-%d %H:%i:%s') as 'applyTime',
+        date_format(p.END_TIME_, '%Y-%m-%d %H:%i:%s') as 'endTime',
+        p.START_USER_ID_ AS 'startUserId',
+        uu.nick_name AS 'startUserName',
+        dd.dept_name AS 'startDeptName',
+        t.NAME_ as 'taskName',
+        t.TASK_DEF_KEY_ as 'taskDefKey',
+        DATE_FORMAT(t.CREATE_TIME_ ,'%Y-%m-%d %H:%i') as 'taskCreateTiem',
+        t.ASSIGNEE_ AS 'assignee',
+        ui.nick_name AS 'assigneeName',
+        t.ID_ as 'taskId',
+        t.EXECUTION_ID_ AS 'executionId',
+        rp.DEPLOYMENT_ID_ AS 'deployId'
+        from t_project_investigate a
+        left join t_project_pool tp on tp.id=a.project_pool_id
+        left join ACT_HI_PROCINST p on a.proc_inst_id = p.PROC_INST_ID_
+        LEFT JOIN (SELECT * FROM sys_user LIMIT 100000) uu ON p.START_USER_ID_ = uu.user_id
+        LEFT JOIN (SELECT * FROM sys_dept LIMIT 100000) dd ON uu.dept_id = dd.dept_id
+        left join ACT_RU_TASK t on a.proc_inst_id = t.PROC_INST_ID_
+        left join (select * from sys_user limit 100000) ui on t.ASSIGNEE_ = ui.user_id
+        left join ACT_RU_IDENTITYLINK ru on ru.TASK_ID_ = t.ID_
+        left join ACT_ID_MEMBERSHIP m on m.GROUP_ID_ = ru.GROUP_ID_ and m.USER_ID_ = #{userId}
+        LEFT JOIN act_re_procdef rp ON t.PROC_DEF_ID_ = rp.ID_
+        where
+        (t.ASSIGNEE_ = #{userId}
+        or (t.ASSIGNEE_ is null AND ru.TYPE_ = 'candidate'
+        AND (ru.USER_ID_ = #{userId}
+        OR ru.GROUP_ID_ IN (
+        select g.ID_ from ACT_ID_GROUP g, ACT_ID_MEMBERSHIP membership where g.ID_ = membership.GROUP_ID_ AND
+        membership.USER_ID_ = #{userId} )
+        )
+        )
+        )
+        and a.del_flag="0"
+        <include refid="where_sql"></include>
+        order by a.create_time desc
+    </select>
+    <select id="getMyDoneTaskList" resultMap="ProjectInvestigateVoResult">
+        select a.id,a.proc_inst_id, a.project_pool_id,tp.project_name, tp.industry,tp.project_stage,tp.project_state,tp.invest_head,
+        a.investigate_name, a.investigate_code,a.investigate_place, a.start_time, a.end_time, a.readiness, a.third_party, a.dead_date,
+        a.investigate_person, a.investigate_person_id, a.investigate_cost, a.describe_,
+        a.remark, a.del_flag, a.create_by, a.create_time, a.update_by, a.update_time ,a.status,
+        p.PROC_INST_ID_ as 'procInsId',
+        p.PROC_DEF_ID_ as 'procDefId',
+        date_format(p.START_TIME_, '%Y-%m-%d %H:%i:%s') as 'applyTime',
+        date_format(p.END_TIME_, '%Y-%m-%d %H:%i:%s') as 'endTime',
+        p.START_USER_ID_ AS 'startUserId',
+        uu.nick_name AS 'startUserName',
+        dd.dept_name AS 'startDeptName',
+        t.ID_ AS 'taskId',
+        t.NAME_ AS 'taskName',
+        t.ASSIGNEE_ AS 'assignee',
+        ui.nick_name AS 'assigneeName',
+        t.TASK_DEF_KEY_ as 'taskDefKey',
+        rp.DEPLOYMENT_ID_ AS 'deployId'
+        from t_project_investigate a
+        LEFT JOIN t_project_pool tp on tp.id=a.project_pool_id
+        LEFT JOIN (select * from ACT_HI_PROCINST limit 10000000) p on a.proc_inst_id = p.PROC_INST_ID_
+        LEFT JOIN ACT_RU_TASK t on a.proc_inst_id = t.PROC_INST_ID_
+        LEFT JOIN ACT_RU_IDENTITYLINK ru on a.proc_inst_id = ru.PROC_INST_ID_
+        LEFT JOIN (SELECT * FROM sys_user LIMIT 100000) uu ON p.START_USER_ID_ = uu.user_id
+        LEFT JOIN (SELECT * FROM sys_dept LIMIT 100000) dd ON uu.dept_id = dd.dept_id
+        LEFT JOIN (select * from sys_user limit 100000) ui on t.ASSIGNEE_ = ui.user_id
+        LEFT JOIN act_re_procdef rp ON t.PROC_DEF_ID_ = rp.ID_
+        where ru.USER_ID_ = #{userId} and a.del_flag="0"
+        <include refid="where_sql"></include>
+        GROUP BY a.id
+        order by a.create_time desc
+    </select>
+    <select id="getMyList" resultMap="ProjectInvestigateVoResult">
+        select a.id,a.proc_inst_id, a.project_pool_id,tp.project_name, tp.industry,tp.project_stage, tp.project_state,tp.invest_head,
+        a.investigate_name, a.investigate_code,a.investigate_place, a.start_time, a.end_time, a.readiness, a.third_party, a.dead_date,
+        a.investigate_person, a.investigate_person_id, a.investigate_cost, a.describe_,
+        a.remark, a.del_flag, a.create_by, a.create_time, a.update_by, a.update_time ,a.status,
+        u.nick_name as 'applyUserName',
+        p.PROC_INST_ID_ as 'procInsId',
+        p.PROC_DEF_ID_ as 'procDefId',
+        date_format(p.START_TIME_, '%Y-%m-%d %H:%i:%s') as 'applyTime',
+        date_format(p.END_TIME_, '%Y-%m-%d %H:%i:%s') as 'endTime',
+        p.START_USER_ID_ AS 'startUserId',
+        uu.nick_name AS 'startUserName',
+        dd.dept_name AS 'startDeptName',
+        t.NAME_ as 'taskName',
+        t.TASK_DEF_KEY_ as 'taskDefKey',
+        DATE_FORMAT(t.CREATE_TIME_ ,'%Y-%m-%d %H:%i') as 'taskCreateTiem',
+        t.ASSIGNEE_ as 'assignee',
+        GROUP_CONCAT(DISTINCT ui.nick_name SEPARATOR '\r\n') as 'assigneeName',
+        t.ID_ as 'taskId',
+        t.EXECUTION_ID_ AS 'executionId',
+        rp.DEPLOYMENT_ID_ AS 'deployId'
+        from t_project_investigate a
+        left join t_project_pool tp on tp.id=a.project_pool_id
+        left join ACT_HI_PROCINST p on a.proc_inst_id = p.PROC_INST_ID_
+        LEFT JOIN (SELECT * FROM sys_user LIMIT 100000) uu ON p.START_USER_ID_ = uu.user_id
+        LEFT JOIN (SELECT * FROM sys_dept LIMIT 100000) dd ON uu.dept_id = dd.dept_id
+        left join sys_user u on a.create_by = u.user_id
+        left join ACT_RU_TASK t on a.proc_inst_id = t.PROC_INST_ID_
+        left join (select * from sys_user limit 100000) ui on t.ASSIGNEE_ = ui.user_id
+        left join ACT_RU_IDENTITYLINK ru on ru.TASK_ID_ = t.ID_
+        left join ACT_ID_MEMBERSHIP m on m.GROUP_ID_ = ru.GROUP_ID_ and m.USER_ID_ = #{userId}
+        left join act_re_procdef rp ON t.PROC_DEF_ID_ = rp.ID_
+        where a.create_by = #{userId} and a.proc_inst_id is not null and a.proc_inst_id != ''
+        and a.del_flag="0"
+        <include refid="where_sql"></include>
+        GROUP BY a.id
+        order by a.create_time desc
+    </select>
+    <!--<select id="selectTProjectPoolById" parameterType="String" resultMap="TProjectPoolResult">
+        <include refid="selectTProjectPoolVo"/>
+        where a.id = #{id}
+    </select>-->
+    <select id="selectTProjectInvestigateByProcInstId" parameterType="java.lang.String" resultMap="TProjectInvestigateResult">
+        select a.id,a.proc_inst_id, a.project_pool_id, a.investigate_name, a.investigate_code,a.investigate_place, a.start_time, a.end_time, a.readiness, a.third_party, a.dead_date,
+               a.investigate_person, a.investigate_person_id, a.investigate_cost, a.describe_,
+               a.remark, a.del_flag, a.create_by, a.create_time, a.update_by, a.update_time ,a.status,
+               tp.project_name,t.TASK_DEF_KEY_ as 'taskDefKey'
+        from t_project_investigate a
+        left join t_project_pool tp on tp.id=a.project_pool_id
+        left join ACT_RU_TASK t on a.proc_inst_id = t.PROC_INST_ID_
+        left join (select * from sys_user limit 100000) ui on t.ASSIGNEE_ = ui.user_id
+        left join sys_user u on a.create_by = u.user_id
+        where a.proc_inst_id = #{procInstId,jdbcType=VARCHAR}
+        GROUP BY a.id
+    </select>
+
+</mapper>

+ 9 - 28
ruoyi-ui/src/api/project/investigate/pool.js

@@ -2,7 +2,7 @@ import request from '@/utils/request'
 // 我的待办任务列表
 export function getMyTaskList(query) {
   return request({
-    url: '/invest/investigate/getMyTaskList',
+    url: '/project/investigate/getMyTaskList',
     method: 'get',
     params: query
   })
@@ -10,7 +10,7 @@ export function getMyTaskList(query) {
 //我的已办任务列表
 export function getMyDoneTaskList(query) {
   return request({
-    url: '/invest/investigate/getMyDoneTaskList',
+    url: '/project/investigate/getMyDoneTaskList',
     method: 'get',
     params: query
   })
@@ -18,24 +18,24 @@ export function getMyDoneTaskList(query) {
 //我的单据列表
 export function getMyList(query) {
   return request({
-    url: '/invest/investigate/getMyList',
+    url: '/project/investigate/getMyList',
     method: 'get',
     params: query
   })
 }
 //启动流程
-export function investmentOpportunityStart(data) {
+export function investigateStart(data) {
   return request({
     //url: '/invest/pool',
-    url:'/project/investmentOpportunity/start',
+    url:'/project/investigate/start',
     method: 'post',
     data: data
   })
 }
 //审批流程
-export function investmentOpportunityComplete(data) {
+export function investigateComplete(data) {
   return request({
-    url:'/project/investmentOpportunity/complete',
+    url:'/project/investigate/complete',
     method: 'put',
     data: data,
   })
@@ -47,32 +47,13 @@ export function getPool(id) {
     method: 'get'
   })
 }
-export function getInvestInfo(pInstId) {
+export function getInvestigateInfo(pInstId) {
   return request({
-    url: '/project/investmentOpportunity/' + pInstId,
+    url: '/project/investigate/' + pInstId,
     method: 'get'
   })
 }
 
-// 新增项目池
-
-
-// 修改项目池
-/*export function updatePool(data) {
-  return request({
-    url: '/invest/pool',
-    method: 'put',
-    data: data
-  })
-}*/
-
-// 删除项目池
-/*export function delPool(id) {
-  return request({
-    url: '/invest/pool/' + id,
-    method: 'delete'
-  })
-}*/
 // 查询尽职背调待办任务列表数量
 export function getMyTaskInvestigateNumber() {
   return request({

+ 19 - 0
ruoyi-ui/src/router/index.js

@@ -111,6 +111,25 @@ export const constantRoutes = [
         component: () => import('@/views/project/approval/detail'),
         meta: { title: '项目立项详情' }
       },
+      //尽职背调
+      {
+        path: "investigate/edit",
+        name: 'investigateEdit',
+        component: () => import('@/views/project/investigate/edit'),
+        meta: { title: '修改尽职背调' }
+      },
+      {
+        path: "investigate/audit",
+        name: 'investigateAudit',
+        component: () => import('@/views/project/investigate/audit'),
+        meta: { title: '审批尽职背调' }
+      },
+      {
+        path: "investigate/detail",
+        name: 'investigateDetail',
+        component: () => import('@/views/project/investigate/detail'),
+        meta: { title: '尽职背调详情' }
+      },
       //项目投决
       {
         path: "decision/edit",

+ 59 - 150
ruoyi-ui/src/views/project/investigate/list.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <!-- 项目立项 -->
+    <!-- 尽职背调 -->
     <el-form
       :model="queryParams"
       ref="queryForm"
@@ -92,60 +92,12 @@
           :disabled="multiple"
           type="warning"
           size="mini"
-          icon="el-icon-document"
-          @click="handleSelectData(6)"
-          v-hasPermi="['invest:pool:lx:apply']"
-          >立项申请</el-button
+          icon="el-icon-tickets"
+          @click="handleSelectData(9)"
+          v-hasPermi="['invest:pool:due']"
+          >尽调申请</el-button
         >
       </el-col>
-<!--      <el-col :span="1.5">
-        <el-button
-          plain
-          :disabled="multiple"
-          type="warning"
-          size="mini"
-          icon="el-icon-chat-line-round"
-          @click="handleSelectData(7, 'LX')"
-          v-hasPermi="['invest:pool:lx:meeting']"
-          >发起立项会议</el-button
-        >
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          plain
-          :disabled="multiple"
-          type="primary"
-          size="mini"
-          icon="el-icon-document-checked"
-          @click="handleSelectData(8)"
-          >上传打分表</el-button
-        >
-      </el-col>
-
-      <el-col :span="1.5">
-        <el-button
-          :disabled="multiple"
-          plain
-          type="success"
-          size="mini"
-          icon="el-icon-setting"
-          v-hasPermi="['invest:pool:stage']"
-          @click="handleSelectData(3)"
-          >设置项目阶段</el-button
-        >
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          @click="handleSelectData(4)"
-          type="danger"
-          plain
-          icon="el-icon-switch-button"
-          size="mini"
-          :disabled="multiple"
-          v-hasPermi="['invest:pool:remove']"
-          >终止</el-button
-        >
-      </el-col>-->
       <right-toolbar
         :showSearch.sync="showSearch"
         @queryTable="getList"
@@ -190,7 +142,7 @@
           </div>
         </template>
       </el-table-column>
-      <!-- <el-table-column
+      <el-table-column
         label="项目所属城市"
         align="center"
         prop="tProjectCompany.registeredAddress"
@@ -200,7 +152,7 @@
             {{ scope.row.tProjectCompany.registeredAddress }}
           </div>
         </template>
-      </el-table-column> -->
+      </el-table-column>
       <el-table-column label="所属行业" align="center" prop="industry"
         ><template slot-scope="scope">
           <dict-tag
@@ -217,19 +169,14 @@
           />
         </template>
       </el-table-column>
-      <el-table-column
-        label="项目状态"
-        align="center"
-        prop="projectState"
-        width="120"
-      >
+      <!-- <el-table-column label="项目状态" align="center" prop="projectState">
         <template slot-scope="scope">
           <dict-tag
             :options="dict.type.project_state"
             :value="scope.row.projectState"
           />
         </template>
-      </el-table-column>
+      </el-table-column> -->
       <el-table-column
         label="备案时间"
         align="center"
@@ -247,13 +194,13 @@
         </template>
       </el-table-column>
       <el-table-column
-        label="已发起立项申请"
+        label="已发起尽调申请"
         align="center"
-        prop="approvalFlag"
+        prop="investigateFlag"
       >
         <template slot-scope="scope">
           <div>
-            {{ scope.row.approvalFlag === "1" ? "是" : "否" }}
+            {{ scope.row.investigateFlag === "1" ? "是" : "否" }}
           </div>
         </template>
       </el-table-column>
@@ -287,43 +234,6 @@
           </div>
         </template>
       </el-table-column>
-      <!-- <el-table-column
-        label="所属组别"
-        align="center"
-        prop="tProjectChannel.channelGroup"
-      >
-        <template slot-scope="scope">
-          <dict-tag
-            :options="dict.type.project_group"
-            :value="scope.row.tProjectChannel.channelGroup"
-          />
-        </template>
-      </el-table-column> -->
-
-      <!-- <el-table-column
-        label="项目联系人"
-        align="center"
-        prop="tProjectContacts.name"
-      >
-        <template slot-scope="scope">
-          <div :title="scope.row.tProjectContacts.name">
-            {{ scope.row.tProjectContacts.name }}
-          </div>
-        </template>
-      </el-table-column> -->
-
-      <!--<el-table-column
-        label="创建人"
-        width="120"
-        align="center"
-        prop="createBy"
-      />
-      <el-table-column
-        label="创建时间"
-        align="center"
-        prop="createTime"
-        width="160"
-      /> -->
       <!-- delFlag -->
       <el-table-column
         label="状态"
@@ -346,33 +256,36 @@
       :limit.sync="queryParams.pageSize"
       @pagination="getList"
     />
-    <!-- 会议管理组件 -->
-    <meetingList
-      :type="'3'"
-      ref="meetingList"
+    <!-- 尽调组件 -->
+    <dueDiligenceList
+      ref="dueDiligenceLists"
       :projectId="projectId"
       @getList="getList"
-    ></meetingList>
+    ></dueDiligenceList>
     <!-- 设置项目状态对话框 -->
     <businessUpdate @getList="getList" ref="businessUpdate"></businessUpdate>
   </div>
 </template>
 
 <script>
-import { listApprovalList, delPool, editStage } from "@/api/invest/pool";
+import {
+  listInvestigateList,
+  delPool,
+} from "@/api/invest/pool";
 import { listChannel } from "@/api/invest/channel";
-import meetingList from "./meetingList";
+import dueDiligenceList from "../investigate/dueDiligenceList";
 import businessUpdate from "../../invest/components/businessUpdate";
 import { mapGetters } from "vuex";
 export default {
-  name: "Pool3",
+  name: "Pool4",
   dicts: ["project_group", "project_stage", "project_state", "CUSTOMER_TRADE"],
   components: {
-    meetingList,
+    dueDiligenceList,
     businessUpdate,
   },
   data() {
     return {
+      projectId: "",
       // 遮罩层
       loading: false,
 
@@ -423,16 +336,15 @@ export default {
         createTime: null,
       },
       channelList: [],
-
-      projectId: "",
     };
   },
   computed: {
     ...mapGetters(["user"]),
   },
-  created() {},
-  mounted() {
+  created() {
     this.getList();
+  },
+  mounted() {
     // 渠道
     listChannel({
       pageNum: 1,
@@ -445,7 +357,7 @@ export default {
     /** 查询项目池列表 */
     getList() {
       this.loading = true;
-      listApprovalList(this.queryParams).then((response) => {
+      listInvestigateList(this.queryParams).then((response) => {
         this.poolList = response.rows;
         this.total = response.total;
         this.loading = false;
@@ -463,6 +375,7 @@ export default {
       this.queryParams.isAsc = "desc";
       this.handleQuery();
     },
+
     // 多选框选中数据
     handleSelectionChange(selection) {
       this.ids = selection.map((item) => item.id);
@@ -501,27 +414,38 @@ export default {
             duration: 1500,
             type: "error",
           });
-        } else if (type === 8) {
-          // 有立项会议
-          if (row.tProjectMeeting) {
-            // 参与人
+        } else if (type === 10) {
+          // 是否有尽调申请
+          if (row.investigateFlag === "1") {
+            // 是否被选为参与人
             if (
-              row.tProjectMeeting.participants.indexOf(this.user.nickName) > -1
+              row.tProjectInvestigate &&
+              row.tProjectInvestigate.investigatePerson.indexOf(
+                this.user.nickName
+              ) > -1
             ) {
-              // 是否打过分
-              if (row.tProjectScoring) {
-                this.$message.warning("您已打分,无需重复操作");
+              //是否上传了尽调报告
+              if (!row.tProjectInvestigatePerson) {
+                // 上传尽调报告
+                this.$refs.dueDiligenceLists.handleShowReportPop(row);
               } else {
-                // 立项-去打分
-                this.$refs.meetingList.handleMark(row.tProjectMeeting, "1", false);
+                this.$message({
+                  message: "您已上传尽调报告,无需重复操作",
+                  duration: 1500,
+                  type: "warning",
+                });
               }
             } else {
-              this.$message.warning("无权限");
+              this.$message({
+                message: "无权限",
+                duration: 1500,
+                type: "error",
+              });
             }
           } else {
             if (row.investHead === this.user.nickName) {
               this.$message({
-                message: "请先发起立项会议",
+                message: "请先尽调申请",
                 duration: 1500,
                 type: "warning",
               });
@@ -530,7 +454,7 @@ export default {
             }
           }
         } else if (row.investHead === this.user.nickName) {
-          // 项目负责人
+          // 未终止
           if (type === 2) {
             // 详情
             this.handleDetail(row);
@@ -539,24 +463,14 @@ export default {
             this.$refs.businessUpdate.handleBusinessUpdate(row);
           } else if (type === 4) {
             this.handleDelete(row);
-          } else if (type === 6) {
-            if (row.approvalFlag === "0") {
-              // 立项申请
-              this.$refs.meetingList.showLXApplyPop(row);
+          } else if (type === 9) {
+            // 是否有尽调申请
+            if (row.investigateFlag === "0") {
+              // 尽调申请
+              this.$refs.dueDiligenceLists.handleShowApplyPop(row);
             } else {
               this.$message({
-                message: "您已发起立项申请,无需重复操作",
-                duration: 1500,
-                type: "warning",
-              });
-            }
-          } else if (type === 7) {
-            if (row.approvalFlag === "1") {
-              // 发起立项会议
-              this.handleMeeting(row, otherData);
-            } else {
-              this.$message({
-                message: "请先立项申请",
+                message: "您已发起尽调申请,无需重复操作",
                 duration: 1500,
                 type: "warning",
               });
@@ -586,11 +500,6 @@ export default {
       const id = row.id;
       this.$router.push({ path: "/invest/pool/add", query: { id: id } });
     },
-    // 发起会议
-    handleMeeting(row, meetingType) {
-      this.$store.commit("SET_PROJECTITEMMESSAGE", row);
-      this.$refs.meetingList.handleAdd(row.id, meetingType);
-    },
     /**终止按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;

文件差异内容过多而无法显示
+ 268 - 1657
ruoyi-ui/src/views/project/investigate/audit.vue


+ 283 - 143
ruoyi-ui/src/views/project/investigate/detail.vue

@@ -10,9 +10,11 @@
         </h4>
         <p class="projectNameTit">{{ detailInfo.projectName }}</p>
       </div>
+
     </section>
     <el-divider></el-divider>
     <section>
+      <!-- :space="200" -->
       <el-divider></el-divider>
       <div
         class="public-flex-between basicsInfo"
@@ -67,66 +69,112 @@
     </section>
     <section class="section3">
       <el-tabs v-model="activeName" @tab-click="handleClick">
-        <el-tab-pane label="立项信息" name="0"></el-tab-pane>
+        <el-tab-pane label="尽职背调信息" name="0"></el-tab-pane>
         <el-tab-pane label="项目基本信息" name="1"></el-tab-pane>
       </el-tabs>
       <section>
         <div v-if="activeName === '0'" class="public-padded-20 detail-meeting">
-          <el-tabs type="border-card">
-            <el-tab-pane label="项目立项申请表">
+          <el-tabs type="border-card" >
+            <el-tab-pane label="尽职背调申请表">
               <el-form
-                v-if="formLXApply.id"
+                v-if="dueForm.id"
+                ref="dueForm"
                 class="special-el-form public-padded-t-20"
-                ref="formLXApply"
-                :model="formLXApply"
-                label-width="120px"
+                :model="dueForm"
+                label-width="170px"
               >
-                <el-form-item
-                  label="项目概况"
-                  prop="projectOverview"
-                  class="special-el-form-item"
-                >
+                <el-form-item label="尽调名称" class="special-el-form-item">
                   <el-input
-                    rows="4"
-                    type="textarea"
-                    maxlength="200"
-                    v-model="formLXApply.projectOverview"
                     disabled
+                    v-model="dueForm.investigateName"
+                    placeholder="请输入尽调名称"
                   />
                 </el-form-item>
                 <el-form-item
-                  label="项目亮点"
-                  prop="projectSparkle"
+                  label="尽调地点"
+                  prop="investigatePlace"
                   class="special-el-form-item"
                 >
                   <el-input
-                    rows="4"
+                    disabled
+                    maxlength="100"
+                    v-model="dueForm.investigatePlace"
+                  />
+                </el-form-item>
+                <el-form-item label="期望尽调开始时间" prop="startTime">
+                  <el-date-picker
+                    disabled
+                    clearable
+                    v-model="dueForm.startTime"
+                    type="date"
+                    value-format="yyyy-MM-dd"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+                <el-form-item label="期望尽调结束时间" prop="endTime">
+                  <el-date-picker
+                    disabled
+                    clearable
+                    v-model="dueForm.endTime"
+                    type="date"
+                    value-format="yyyy-MM-dd"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+                <el-form-item label="尽调资料是否齐全" prop="readiness">
+                  <el-radio-group v-model="dueForm.readiness" disabled>
+                    <el-radio label="1">是</el-radio>
+                    <el-radio label="0">否</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+                <el-form-item label="是否有第三方投资机构" prop="thirdParty">
+                  <el-radio-group v-model="dueForm.thirdParty" disabled>
+                    <el-radio label="1">是</el-radio>
+                    <el-radio label="0">否</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+                <el-form-item label="尽调费用(元)">
+                  <el-input disabled v-model="dueForm.investigateCost" />
+                </el-form-item>
+
+                <el-form-item label="尽调财务数据截止日期" prop="deadDate">
+                  <el-date-picker
+                    disabled
+                    clearable
+                    v-model="dueForm.deadDate"
+                    type="date"
+                    value-format="yyyy-MM-dd"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+                <el-form-item label="尽调人员" class="special-el-form-item">
+                  <el-input
                     type="textarea"
-                    maxlength="200"
-                    v-model="formLXApply.projectSparkle"
+                    rows="2"
                     disabled
+                    v-model="dueForm.investigatePerson"
                   />
                 </el-form-item>
-                <el-form-item
-                  label="立项资料"
-                  prop="listFile"
-                  class="special-el-form-item"
-                >
+                <el-form-item label="尽调资料" class="special-el-form-item">
                   <fileItem
-                    ref="fileItemLXApply"
-                    :id="formLXApply.id"
+                    ref="fileItems1"
+                    :id="dueForm.id"
                   ></fileItem>
                 </el-form-item>
-                <el-form-item
-                  label="通知名单"
-                  prop="participants"
-                  class="special-el-form-item"
-                >
+                <el-form-item label="描述" class="special-el-form-item">
                   <el-input
+                    disabled
                     rows="4"
+                    v-model="dueForm.describe"
                     type="textarea"
-                    v-model="formLXApply.participants"
+                  />
+                </el-form-item>
+                <el-form-item label="备注" class="special-el-form-item">
+                  <el-input
                     disabled
+                    rows="4"
+                    type="textarea"
+                    v-model="dueForm.remark"
                   />
                 </el-form-item>
               </el-form>
@@ -138,55 +186,80 @@
                 暂无数据
               </div>
             </el-tab-pane>
-<!--            <el-tab-pane label="项目立项评估评审汇总表">
-              <tableForm
-                :formType="2"
-                ref="approvalTableForm"
-                :readonly="true"
-                :showBack="false"
-              ></tableForm>
-            </el-tab-pane>-->
+            <el-tab-pane label="尽职背调报告汇总表" v-if="dueAllPeportList.length > 0&&dueForm.taskDefKey!='modifyApply'&&dueForm.taskDefKey!='deptLeader'&&dueForm.taskDefKey!='upload'">
+              <div v-if="dueAllPeportList.length > 0">
+                <el-form
+                  v-for="(item, index) in dueAllPeportList"
+                  :key="index"
+                  class="special-el-form public-padded-t-20"
+                  :model="item"
+                  label-width="100px"
+                >
+                  <el-form-item label="尽调人员" class="special-el-form-item">
+                    <el-input disabled v-model="item.investigatePerson" />
+                  </el-form-item>
+                  <el-form-item label="报告" class="special-el-form-item">
+                    <fileItem
+                      ref="dueAllreportFileItems"
+                      :id="item.id"
+                    ></fileItem>
+                  </el-form-item>
+<!--                  <el-form-item label="备注" class="special-el-form-item">
+                    <el-input
+                      disabled
+                      rows="4"
+                      type="textarea"
+                      v-model="item.remark"
+                      placeholder="请输入备注"
+                    />
+                  </el-form-item>-->
+                  <el-divider></el-divider>
+                </el-form>
+              </div>
+              <div
+                v-else
+                class="public-flex-center public-padded-20"
+                style="color: #909399"
+              >
+                暂无数据
+              </div>
+            </el-tab-pane>
           </el-tabs>
         </div>
         <div v-show="activeName === '1'">
           <poolForm :type="type" :id="id"></poolForm>
         </div>
-        <div v-if="activeName === '3'" class="public-padded-20 detail-meeting">
-
-        </div>
       </section>
     </section>
+    <section>
+      <flowBase :procInstId="pInstId" v-if="pInstId"></flowBase>
+    </section>
   </div>
 </template>
 <script>
 import poolForm from "../../invest/components/poolForm";
-import tableForm from "../../invest/components/tableForm";
 import fileItem from "../../invest/components/fileItem";
+import flowBase from "../flowBase.vue";
 
 import {
   getPool,
-  listProjectPoolId,
-  getInvestigatelist,
-  getInvestReviewList,
+  getDueAllPeportList,
 } from "@/api/invest/pool";
-import {
-  listMeeting,
-  listProjectPoolIdNewApproval,
-  listProjectPoolIdNewDecision,
-} from "@/api/invest/meeting";
+import{
+  getInvestigateInfo,
+} from "@/api/project/investigate/pool"
 
 import { mapGetters } from "vuex";
 
 export default {
-  name: "approvalDetail",
+  name: "decisionDetail",
   components: {
     poolForm,
-    tableForm,
     fileItem,
+    flowBase
   },
   data() {
     return {
-      showDueApply: false,
       meetingId: "0",
       type: "2",
       id: "",
@@ -195,40 +268,35 @@ export default {
         projectName: "",
       },
       activeName: "0",
-      /*activities: [
-        {
-          content: "活动按期开始",
-          timestamp: "2018-04-15",
-        },
-        {
-          content: "通过审核",
-          timestamp: "2018-04-13",
-        },
-        {
-          content: "创建成功",
-          timestamp: "2018-04-11",
-        },
-      ],*/
-
-      formLXApply: {
+      pInstId: null,
+      dueForm: {
         id: null,
+        investigateName: null,
+        investigateCode: null,
         projectPoolId: null,
+        investigatePerson: null,
+        investigatePersonId: null,
+        investigateCost: null,
+        //
+        startTime: null,
+        endTime: null,
+        investigatePlace: null,
+        readiness: null,
+        thirdParty: null,
+        deadDate: null,
+        //
+        describe: null,
+        remark: null,
+        delFlag: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
         projectName: null,
-        projectOverview: null,
-        projectSparkle: null,
-        listFile: null,
-        participants: null,
-        participantsId: null,
+        flag:null,
+        taskDefKey:null,
       },
-      /*formTJApply: {
-        id: null,
-        projectPoolId: null,
-        projectName: null,
-        provision: null,
-        listFile: null,
-        participants: null,
-        participantsId: null,
-      },*/
+      dueAllPeportList:[]
     };
   },
   computed: {
@@ -236,83 +304,59 @@ export default {
   },
   created() {
     this.id = this.$route.query.id;
+    this.pInstId=this.$route.query.pInstId;
     this.getDetail();
-    this.getlistProjectPoolIdNewApproval();
-    //this.getListProjectPoolId();
-    //this.getDueList();
+    this.getInvestigateListProjectPoolIdNew();
     if (this.$route.query.activeName) {
       this.activeName = this.$route.query.activeName;
     }
   },
   methods: {
-    /** 查询列表 */
-   /* changeShowDueApply(showDueApply) {
-      this.showDueApply = showDueApply === "1";
-    },*/
-    /*getDueList() {
-      //   this.loading = true;
-      let queryParams = {
-        orderByColumn: "createTime",
-        isAsc: "desc",
-        projectPoolId: this.id,
-      };
 
-    },*/
-    getMettingId(type) {
-      let queryParams = {
-        pageNum: 1,
-        pageSize: 10,
-        meetingType: type,
-        orderByColumn: "createTime",
-        isAsc: "desc",
-        projectPoolId: this.id,
-      };
-      listMeeting(queryParams).then((response) => {
-        let meetingList = response.rows;
-        if (meetingList.length > 0) {
-          let meetingId = meetingList[0].id;
-          if (type === "LX") {
-            this.$refs.approvalTableForm.initialize(meetingId);
-          } else if (type === "TJ") {
-            this.$refs.voteTableForm.initialize(meetingId);
-          }
-        } else {
-          if (type === "LX") {
-            this.$refs.approvalTableForm.showNodata();
-          } else if (type === "TJ") {
-            this.$refs.voteTableForm.showNodata();
-          }
-        }
-      });
-    },
     handleClick(tab, event) {
       let that = this;
       if (this.activeName === "0") {
-        // 项目立项
-        this.getMettingId("LX");
-        this.getlistProjectPoolIdNewApproval();
+        // 尽职背调
+        this.getInvestigateListProjectPoolIdNew();
       } else if (this.activeName === "1") {
         // 项目报备
         this.getDetail();
       }
     },
-    // 获取立项申请
-    getlistProjectPoolIdNewApproval() {
+// 根据项目ID获取最新尽调申请
+    getInvestigateListProjectPoolIdNew() {
       let that = this;
-      listProjectPoolIdNewApproval(this.id).then((response) => {
+      getInvestigateInfo(this.$route.query.pInstId).then((response) => {
         if (response && response.data) {
-          that.formLXApply = response.data;
+          that.dueForm = response.data;
           setTimeout(() => {
-            that.$refs.fileItemLXApply.handleButton();
-            that.$refs.fileItemLXApply.fileList = [];
-            that.$refs.fileItemLXApply.getListFileBusinessId(
-              that.formLXApply.id
-            );
+            that.$refs.fileItems1.listFile = [];
+            that.$refs.fileItems1.handleButton();
+            that.$refs.fileItems1.getListFileBusinessId(this.dueForm.id);
+          }, 300);
+          this.handleLook(response.data);
+        }
+      });
+    },
+    // 根据尽调申请id查下面所有的报告
+    handleLook(row) {
+      let that = this;
+      getDueAllPeportList(row.id).then((response) => {
+        let rows = response.rows;
+        this.dueAllPeportList = rows;
+        this.dueDiligenceOpen2 = true;
+        if (rows && rows.length > 0) {
+          setTimeout(() => {
+            for (let i in rows) {
+              this.$refs.dueAllreportFileItems[i].handleButton();
+              this.$refs.dueAllreportFileItems[i].getListFileBusinessId(
+                rows[i].id
+              );
+            }
           }, 300);
         }
       });
     },
-    //项目报备
     getDetail() {
       getPool(this.id).then((response) => {
         this.detailInfo = response.data;
@@ -380,5 +424,101 @@ export default {
   padding: 5px 10px;
   margin-left: 10px;
 }
-
+/*表格样式开始*/
+.ss_scoreTable {
+  padding-bottom: 50px;
+  ::v-deep .el-input.is-disabled .el-input__inner {
+    background-color: #fff !important;
+    color: #606266;
+  }
+  ::v-deep .el-input__inner {
+    border: 1px solid transparent;
+    text-align: center;
+  }
+  ::v-deep.el-textarea__inner {
+    border: none;
+    height: 50px;
+    resize: none;
+  }
+  ::v-deep .el-textarea.is-disabled .el-textarea__inner {
+    background-color: #fff !important;
+  }
+  textarea:disabled,
+  input:disabled {
+    background-color: #fff !important;
+  }
+  // ::v-deep .el-textarea__inner {
+  //   // border: 1px solid transparent!important;
+  // }
+  table {
+    // width:80%;
+    // width: 600px;
+    margin: 0 30px;
+    -moz-user-select: none;
+    -webkit-user-select: none;
+    -ms-user-select: none;
+    -khtml-user-selece: none;
+    /*上面都是兼容性问题,具体看浏览器版本或什么浏览器*/
+    user-select: none; /*内容禁止选中*/
+  }
+  tbody td {
+    font-size: 14px;
+  }
+  thead th,
+  .big-font {
+    font-size: 16px !important;
+    font-weight: bold;
+  }
+  .public-pedded-0 {
+    padding: 0;
+  }
+  .text-center {
+    text-align: center;
+  }
+  .text-left {
+    text-align: left;
+  }
+  .table-textarea {
+    width: 100%;
+    // width: 180px;
+    border: none;
+    height: 50px;
+    resize: none;
+  }
+  .table-input {
+    width: 100%;
+    // width: 100%;
+    // height: 80px;
+    border: none;
+    font-size: 20px;
+    font-weight: bold;
+    text-align: center;
+    margin-top: 20px;
+  }
+  .bg-blue,
+  .specificTr > th:nth-child(2n-1) {
+    background-color: #9bc2e6;
+  }
+  .specificTr > th:nth-child(2n-1) {
+    white-space: nowrap;
+    padding: 0 15px;
+  }
+  .specificTr .table-textarea {
+    padding-top: 16px;
+    background-color: #fff;
+  }
+  tr > th {
+    height: 50px;
+  }
+  input:disabled {
+    // background-color: #fff !important;
+  }
+  .btnList {
+    width: 100%;
+    display: flex;
+    justify-content: center;
+    padding-bottom: 40px;
+    margin-top: 30px;
+  }
+}
 </style>

文件差异内容过多而无法显示
+ 1057 - 0
ruoyi-ui/src/views/project/investigate/dueDiligenceList.vue


+ 268 - 195
ruoyi-ui/src/views/project/investigate/edit.vue

@@ -61,93 +61,159 @@
     </section>
     <section class="section3">
       <el-tabs v-model="activeName" @tab-click="handleClick">
-        <el-tab-pane label="立项信息" name="0"></el-tab-pane>
+        <el-tab-pane label="尽职背调信息" name="0"></el-tab-pane>
         <el-tab-pane label="项目基本信息" name="1"></el-tab-pane>
       </el-tabs>
       <section>
         <div v-if="activeName === '0'" >
           <el-tabs type="border-card">
-            <el-tab-pane label="项目立项申请表">
+            <el-tab-pane label="尽职背调申请表">
               <el-form
-                v-if="formLXApply.id"
-                class="special-el-form public-padded-t-20"
-                ref="formLXApply"
-                :model="formLXApply"
-                label-width="120px"
+                ref="dueForm"
+                class="special-el-form"
+                :model="dueForm"
+                :rules="dueRules"
+                label-width="170px"
               >
                 <el-form-item
-                  label="项目概况"
-                  prop="projectOverview"
+                  label="项目名称"
+                  prop="projectName"
                   class="special-el-form-item"
                 >
                   <el-input
-                    rows="4"
+                    rows="2"
                     type="textarea"
-                    maxlength="200"
-                    v-model="formLXApply.projectOverview"
+                    disabled
+                    v-model="dueForm.projectName"
                   />
                 </el-form-item>
                 <el-form-item
-                  label="项目亮点"
-                  prop="projectSparkle"
+                  label="尽调名称"
+                  prop="investigateName"
                   class="special-el-form-item"
                 >
                   <el-input
-                    rows="4"
-                    type="textarea"
-                    maxlength="200"
-                    v-model="formLXApply.projectSparkle"
+                    maxlength="100"
+                    v-model="dueForm.investigateName"
+                    placeholder="请输入尽调名称"
                   />
                 </el-form-item>
                 <el-form-item
-                  label="立项资料"
-                  prop="listFile"
+                  label="尽调地点"
+                  prop="investigatePlace"
                   class="special-el-form-item"
                 >
-                  <fileItem
-                    ref="fileItemLXApply"
-                    :id="formLXApply.id"
-                    @getFileList="getFileListLXApply"
-                  ></fileItem>
+                  <el-input
+                    maxlength="100"
+                    v-model="dueForm.investigatePlace"
+                    placeholder="请输入尽调地点"
+                  />
+                </el-form-item>
+
+                <el-form-item label="期望尽调开始时间" prop="startTime">
+                  <el-date-picker
+                    clearable
+                    v-model="dueForm.startTime"
+                    type="date"
+                    value-format="yyyy-MM-dd"
+                    placeholder="请选择期望尽调开始时间"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+                <el-form-item label="期望尽调结束时间" prop="endTime">
+                  <el-date-picker
+                    clearable
+                    v-model="dueForm.endTime"
+                    type="date"
+                    value-format="yyyy-MM-dd"
+                    placeholder="请选择期望尽调结束时间"
+                  >
+                  </el-date-picker>
                 </el-form-item>
-<!--                <el-form-item
-                  label="立项资料"
-                  prop="listFile"
+                <el-form-item label="尽调资料是否齐全" prop="readiness">
+                  <el-radio-group v-model="dueForm.readiness">
+                    <el-radio label="1">是</el-radio>
+                    <el-radio label="0">否</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+                <el-form-item label="是否有第三方投资机构" prop="thirdParty">
+                  <el-radio-group v-model="dueForm.thirdParty">
+                    <el-radio label="1">是</el-radio>
+                    <el-radio label="0">否</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+                <el-form-item label="尽调费用(元)" prop="investigateCost">
+                  <el-input
+                    maxlength="20"
+                    v-model="dueForm.investigateCost"
+                    placeholder="请输入尽调费用"
+                    @input="
+              (value) =>
+                (dueForm.investigateCost = value
+                  .replace(/[^0-9.]/g, '')
+                  .replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3')
+                  .replace(/-/g, ''))
+            "
+                  />
+                </el-form-item>
+                <el-form-item label="尽调财务数据截止日期" prop="deadDate">
+                  <el-date-picker
+                    clearable
+                    v-model="dueForm.deadDate"
+                    type="date"
+                    value-format="yyyy-MM-dd"
+                    placeholder="请选择尽调财务数据截止日期"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+
+                <el-form-item
+                  label="尽调人员"
+                  prop="investigatePerson"
+                  class="special-el-form-item public-input-height-2"
+                >
+                  <div
+                    class="el-input__inner inputSimulation"
+                    @click="handleSelectPeople"
+                  >
+                    {{
+                      dueForm.investigatePerson
+                        ? dueForm.investigatePerson
+                        : "请选择尽调人员"
+                    }}
+                  </div>
+                </el-form-item>
+                <el-form-item
+                  label="尽调背调资料"
+                  prop="file"
                   class="special-el-form-item"
                 >
                   <fileItem
-                    ref="fileItemLXApply"
-                    :id="formLXApply.id"
+                    ref="fileItems"
+                    :id="dueForm.id"
+                    @getFileList="getFileList"
                   ></fileItem>
-                </el-form-item>-->
-<!--                <el-form-item
-                  label="通知名单"
-                  prop="participants"
-                  class="special-el-form-item"
-                >
+                </el-form-item>
+                <el-form-item label="描述" prop="describe" class="special-el-form-item">
+                  <el-input
+                    rows="4"
+                    maxlength="200"
+                    v-model="dueForm.describe"
+                    type="textarea"
+                    placeholder="请输入内容"
+                  />
+                </el-form-item>
+                <el-form-item label="备注" prop="remark" class="special-el-form-item">
                   <el-input
                     rows="4"
+                    maxlength="200"
                     type="textarea"
-                    v-model="formLXApply.participants"
+                    v-model="dueForm.remark"
+                    placeholder="请输入备注"
                   />
-                </el-form-item>-->
+                </el-form-item>
               </el-form>
-              <div
-                v-else
-                class="public-flex-center public-padded-20"
-                style="color: #909399"
-              >
-                暂无数据
-              </div>
             </el-tab-pane>
-<!--            <el-tab-pane label="项目立项评估评审汇总表">
-              <tableForm
-                :formType="2"
-                ref="approvalTableForm"
-                :readonly="true"
-                :showBack="false"
-              ></tableForm>
-            </el-tab-pane>-->
           </el-tabs>
         </div>
         <div v-show="activeName === '1'">
@@ -170,51 +236,52 @@
         </el-form-item>
       </el-form>
     </section>
+    <!--选择人员-->
+    <selecUser
+      ref="flowUser"
+      :checkType="checkType"
+      :selectValues="selectValues"
+      :selectNameValues="selectNameValues"
+      @handleUserSelect="handleUserSelect"
+    ></selecUser>
   </div>
 </template>
 <script>
 import poolForm from "../../invest/components/poolForm";
-/*import poolForm from "../components/poolForm";
-import contractList from "../components/contractList";
-import fileList from "../components/fileList";
-import followList from "../components/followList";
-import meetingList from "../components/meetingList";
-import projectList from "../components/projectList";
-import tableForm from "../components/tableForm";
-import listAllfile from "../components/listAllfile";
-import dueDiligenceList from "../components/dueDiligenceList";*/
 import fileItem from "../../invest/components/fileItem";
 
 import {
-  getPool
+  getPool,
 } from "@/api/invest/pool";
-import {
-  listMeeting,
-  listProjectPoolIdNewApproval
-} from "@/api/invest/meeting";
 import{
-  approvalComplete
-} from "@/api/project/approval/pool"
+  investigateComplete,
+  getInvestigateInfo,
+} from "@/api/project/investigate/pool"
 
 import { mapGetters } from "vuex";
+import selecUser from "../../invest/components/selecUser.vue";
 
 export default {
-  name: "approvalEdit",
+  name: "investigateEdit",
   components: {
+    selecUser,
     poolForm,
-    /*  contractList,
-      fileList,
-      followList,
-      meetingList,
-      projectList,
-      tableForm,
-      listAllfile,
-      dueDiligenceList,
-      fileItem,*/
     fileItem
   },
   data() {
+    const validateLogo = (rule, value, callback) => {
+      if (this.reportFileList.length <= 0) {
+        callback(new Error("请上传文件"));
+      } else {
+        callback();
+      }
+    };
     return {
+      // 人员选择器
+      checkType: "multiple",
+      // 数据回显
+      selectValues: null,
+      selectNameValues: null,
       showDueApply: false,
       meetingId: "0",
       type: "2",
@@ -224,30 +291,53 @@ export default {
         projectName: "",
       },
       activeName: "0",
-      /*activities: [
-        {
-          content: "活动按期开始",
-          timestamp: "2018-04-15",
-        },
-        {
-          content: "通过审核",
-          timestamp: "2018-04-13",
-        },
-        {
-          content: "创建成功",
-          timestamp: "2018-04-11",
-        },
-      ],*/
-      formLXApply: {
+      dueForm: {
         id: null,
-        procInstId:null,
+        investigateName: null,
+        investigateCode: null,
         projectPoolId: null,
+        investigatePerson: null,
+        investigatePersonId: null,
+        investigateCost: null,
+        //
+        startTime: null,
+        endTime: null,
+        investigatePlace: null,
+        readiness: null,
+        thirdParty: null,
+        deadDate: null,
+        //
+        describe: null,
+        remark: null,
+        delFlag: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
         projectName: null,
-        projectOverview: null,
-        projectSparkle: null,
-        listFile: null,
-        participants: null,
-        participantsId: null,
+        flag:null,
+      },
+      dueRules: {
+        investigateName: [
+          { required: true, trigger: "blur", message: "请输入" },
+        ],
+        projectName: [{ required: true, trigger: "blur", message: "请输入" }],
+        investigatePerson: [
+          { required: true, trigger: "blur", message: "请选择" },
+        ],
+        investigateCost: [
+          { required: true, trigger: "blur", message: "请输入" },
+        ],
+        describe: [{ required: true, trigger: "blur", message: "请输入" }],
+
+        startTime: { required: true, trigger: "blur", message: "请选择" },
+        endTime: { required: true, trigger: "blur", message: "请选择" },
+        investigatePlace: [
+          { required: true, trigger: "blur", message: "请输入" },
+        ],
+        readiness: [{ required: true, trigger: "change", message: "请选择" }],
+        thirdParty: [{ required: true, trigger: "change", message: "请选择" }],
+        deadDate: { required: true, trigger: "blur", message: "请选择" },
       },
       flowBaseInfo:{
         comment:null,
@@ -263,102 +353,45 @@ export default {
   },
   created() {
     this.id = this.$route.query.id;
-    this.getlistProjectPoolIdNewApproval();
+    this.getInvestigateListProjectPoolIdNew(this.id);
     this.getDetail();
     this.flowBaseInfo.taskId=this.$route.query.taskId;
-    //this.getListProjectPoolId();
-    //this.getDueList();
     if (this.$route.query.activeName) {
       this.activeName = this.$route.query.activeName;
     }
   },
   methods: {
-    /** 查询列表 */
-    /*changeShowDueApply(showDueApply) {
-      this.showDueApply = showDueApply === "1";
-    },*/
-    /*getDueList() {
-      //   this.loading = true;
-      let queryParams = {
-        orderByColumn: "createTime",
-        isAsc: "desc",
-        projectPoolId: this.id,
-      };
-      getInvestigatelist(queryParams).then((response) => {
-        let list = response.rows,
-          showDueApply;
-        // 如果尽调全部完成,才能显示发起尽调;
-        if (list && list.length > 0) {
-          showDueApply = list.every(function (item) {
-            return item.status === "1";
-          });
-        } else {
-          showDueApply = true;
-        }
-        this.showDueApply = showDueApply;
-      });
-    },*/
-    getMettingId(type) {
-      let queryParams = {
-        pageNum: 1,
-        pageSize: 10,
-        meetingType: type,
-        orderByColumn: "createTime",
-        isAsc: "desc",
-        projectPoolId: this.id,
-      };
-      listMeeting(queryParams).then((response) => {
-        let meetingList = response.rows;
-        if (meetingList.length > 0) {
-          let meetingId = meetingList[0].id;
-          if (type === "LX") {
-            this.$refs.approvalTableForm.initialize(meetingId);
-          } else if (type === "TJ") {
-            this.$refs.voteTableForm.initialize(meetingId);
-          }
-        } else {
-          if (type === "LX") {
-            this.$refs.approvalTableForm.showNodata();
-          } else if (type === "TJ") {
-            this.$refs.voteTableForm.showNodata();
-          }
-        }
-      });
-    },
     handleClick(tab, event) {
       let that = this;
       if (this.activeName === "0") {
-        // 项目立项
-        this.getMettingId("LX");
-        this.getlistProjectPoolIdNewApproval();
+        // 尽职背调
+        this.getInvestigateListProjectPoolIdNew(this.id);
       } else if (this.activeName === "1") {
         // 项目报备
         this.getDetail();
       }
     },
-    // 获取立项申请
-    getlistProjectPoolIdNewApproval() {
+    // 根据项目ID获取最新尽调申请
+    getInvestigateListProjectPoolIdNew(id) {
       let that = this;
-      listProjectPoolIdNewApproval(this.id).then((response) => {
-        if (response && response.data) {
-          that.formLXApply = response.data;
+      getInvestigateInfo(this.$route.query.pInstId).then((response) => {
+        if (response.data) {
+          this.dueForm = response.data;
           setTimeout(() => {
-            //that.$refs.fileItemLXApply.handleButton();
-            that.$refs.fileItemLXApply.fileList = [];
-            that.$refs.fileItemLXApply.getListFileBusinessId(
-              that.formLXApply.id
-            );
+            that.$refs.fileItems.listFile = [];
+            //that.$refs.fileItems.handleButton();
+            that.$refs.fileItems.getListFileBusinessId(this.dueForm.id);
           }, 300);
+          //this.handleLook(response.data);
         }
       });
     },
-    // 立项申请附件回显
-    getFileListLXApply(fileList) {
-      this.fileListLXApply = fileList;
+    // 获取fileList
+    getFileList(fileList) {
       if (fileList && fileList.length > 0) {
-        this.$refs.formLXApply.clearValidate(["listFile"]);
+        this.fileList = fileList;
       } else {
-        this.fileListLXApply = [];
+        this.fileList = [];
       }
     },
     //项目报备
@@ -373,38 +406,78 @@ export default {
         }
       });
     },
+    //尽职背调人员展示
+    handleSelectPeople() {
+      this.$refs.flowUser.handleUserVisible(true);
+    },
+    // 用户选中数据
+    handleUserSelect(selection) {
+      const that = this;
+      if (selection) {
+        if (selection instanceof Array) {
+          const userIds = selection.map((item) => item.userId);
+          const nickName = selection.map((item) => item.nickName);
+          this.dueForm.investigatePerson = nickName.join(",");
+          this.dueForm.investigatePersonId = userIds.join(",");
+          this.selectNameValues = nickName.join(",");
+          this.selectValues = userIds.join(",");
+        } else {
+          this.dueForm.investigatePerson = selection.nickName;
+          this.dueForm.investigatePersonId = selection.userId;
+          this.selectNameValues = selection.nickName;
+          this.selectValues = selection.userId;
+        }
+        this.$refs.dueForm.clearValidate(["investigatePerson"]);
+      }
+    },
 
     /** 加载审批任务弹框 */
     handleComplete(flag) {
-      /*this.completeOpen = true;
-      this.completeTitle = "流程审批";*/
-      ///his.submitForm(flag);
-
       this.taskComplete(flag);
     },
     /** 用户审批任务 */
     taskComplete(flag) {
-      /*if (!this.flowBaseInfo.comment) {
-        this.$modal.msgError("请输入审批意见!");
-        return;
+      this.dueForm.flag = flag;
+      this.dueForm.listFile = this.fileList;
+      this.dueForm.investigateCost = this.dueForm.investigateCost
+        .replace(/[^0-9.]/g, "")
+        .replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3")
+        .replace(/-/g, "");
+      if (
+        new Date(this.dueForm.endTime).getTime() <
+        new Date(this.dueForm.startTime).getTime()
+      ) {
+        this.$confirm(
+          "期望尽调结束时间不能小于期望尽调开始时间,请重新选择!",
+          "提示",
+          {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning",
+          }
+        )
+          .then(() => {})
+          .catch(() => {});
+        return false;
       }
-      if (this.form.taskDefKey=='softwareDept'&&!this.formAssess.context) {
-        this.$modal.msgError("请输入评估意见!");
-        return;
-      }*/
-      this.formLXApply.flag=flag;
       const params={
-        /*projectPool: this.form,  // 拆分明确字段
-        projectReview: this.formAssess,
-        flowBaseInfo: this.flowBaseInfo*/
-        projectApproval:this.formLXApply,
+        projectInvestigate:this.dueForm,
         flowBaseInfo: this.flowBaseInfo
       }
-
-      approvalComplete(params).then(response => {
-        this.$modal.msgSuccess(response.msg);
-        this.goMyTask();
-      });
+      this.$refs["dueForm"].validate((valid) => {
+        if (valid) {
+          try{
+            investigateComplete(params).then(response => {
+              this.$modal.msgSuccess(response.msg);
+              this.$store.dispatch("getMyTaskInvestigateNumber"); //更新代办数量
+              this.goMyTask();
+            });
+          } catch (err) {
+            // 捕获重复提交错误
+            this.$message.error(err.message);
+          }
+        }
+      })
     },
     /*返回*/
     goBack() {
@@ -414,7 +487,7 @@ export default {
     goMyTask(){
       //this.$router.push({ path: "/myTask/project/approval/myTask"});
       // 关闭当前标签页并返回指定页面
-      const obj = { path: "/myTask/project/approval/myTask", query: { t: Date.now()} };
+      const obj = { path: "/myTask/project/investigate/myTask", query: { t: Date.now()} };
       this.$tab.closeOpenPage(obj);
     },
   },

+ 197 - 215
ruoyi-ui/src/views/project/investigate/myTask.vue

@@ -12,60 +12,31 @@
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
-        <el-form-item label="投资经理" prop="investHead">
+        <el-form-item label="尽调名称" prop="investigateName">
           <el-input
-            v-model.trim="queryParams.investHead"
-            placeholder="请输入投资经理"
-            clearable
+            v-model.trim="queryParams.investigateName"
+            placeholder="请输入尽调名称"
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
-        <el-form-item label="公司联系人" prop="projectContacts">
+        <el-form-item label="尽调地点" prop="investigatePlace">
           <el-input
-            v-model.trim="queryParams.projectContacts"
-            placeholder="请输入公司联系人"
+            v-model.trim="queryParams.investigatePlace"
+            placeholder="请输入尽调地址"
             clearable
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
-        <el-form-item label="渠道" prop="channel">
-          <el-select v-model="queryParams.channel" placeholder="全部" clearable>
-            <el-option
-              v-for="item in channelList"
-              :key="item.id"
-              :label="item.channelName"
-              :value="item.id"
-            />
-            <el-option label="无" value="-1" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="所属组别" prop="projectGroup">
-          <el-select
-            v-model="queryParams.projectGroup"
-            placeholder="全部"
-            clearable
-          >
-            <el-option
-              v-for="dict in dict.type.project_group"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            />
-          </el-select>
-        </el-form-item>
-
-        <el-form-item label="项目公司" prop="company">
+<!--        <el-form-item label="股权/其他合作商务条款" prop="provision">
           <el-input
-            v-model.trim="queryParams.company"
-            placeholder="请输入项目所属公司"
+            v-model.trim="queryParams.provision"
+            placeholder="请输入股权/其他合作商务条款"
             clearable
             @keyup.enter.native="handleQuery"
           />
-        </el-form-item>
+        </el-form-item>-->
         <!-- 可继续扩展其他查询表单项目,比如项目编号、负责人等 -->
         <el-form-item>
-<!--          <el-button type="primary" @click="handleQuery">查询</el-button>
-          <el-button @click="handleReset">重置</el-button>-->
           <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
           <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
         </el-form-item>
@@ -93,67 +64,70 @@
             <el-table-column label="项目名称" align="center" prop="projectName">
               <template slot-scope="scope">
                 <div
-                  :title="scope.row.tProjectPool.projectName"
+                  :title="scope.row.projectName"
                   class="public-text-blue public-cursor"
-                  @click.stop="handleDetail(scope.row)"
+                  @click.stop="handleInvestOppDetail(scope.row)"
                 >
-                  {{ scope.row.tProjectPool.projectName }}
+                  {{ scope.row.projectName }}
                 </div>
               </template>
             </el-table-column>
-           <el-table-column
-              label="公司名称"
-              align="center"
-              prop="tProjectCompany.companyName"
-            >
+            <el-table-column label="所属行业" align="center" prop="industry"
+            ><template slot-scope="scope">
+              <dict-tag
+                :options="dict.type.CUSTOMER_TRADE"
+                :value="scope.row.industry"
+              />
+            </template>
+            </el-table-column>
+            <el-table-column label="项目阶段" align="center" prop="projectStage">
               <template slot-scope="scope">
-                <div :title="scope.row.tProjectCompany.companyName">
-                  {{ scope.row.tProjectCompany.companyName }}
+                <dict-tag
+                  :options="dict.type.project_stage"
+                  :value="scope.row.projectStage"
+                />
+              </template>
+            </el-table-column>
+            <el-table-column label="项目负责人" align="center" prop="investHead">
+              <template slot-scope="scope">
+                <div :title="scope.row.investHead">
+                  {{ scope.row.investHead }}
                 </div>
               </template>
             </el-table-column>
-            <el-table-column
-              label="所在城市"
-              align="center"
-              prop="tProjectCompany.registeredAddress"
-            >
+            <el-table-column label="尽调名称" align="center" prop="investigateName">
               <template slot-scope="scope">
-                <div :title="scope.row.tProjectCompany.registeredAddress">
-                  {{ scope.row.tProjectCompany.registeredAddress }}
+                <div :title="scope.row.investigateName">
+                  {{ scope.row.investigateName }}
                 </div>
               </template>
             </el-table-column>
-
-            <el-table-column label="所属行业" align="center" prop="industry"
-            ><template slot-scope="scope">
-              <dict-tag
-                :options="dict.type.CUSTOMER_TRADE"
-                :value="scope.row.tProjectPool.industry"
-              />
-            </template>
+            <el-table-column label="尽调地点" align="center" prop="investigatePlace">
+              <template slot-scope="scope">
+                <div :title="scope.row.investigatePlace">
+                  {{ scope.row.investigatePlace }}
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column label="状态" align="center" prop="delFlag">
+              <template slot-scope="scope">
+                <div :title="scope.row.delFlag === '1' ? '终止' : '正常'">
+                  {{ scope.row.delFlag === "1" ? "终止" : "正常" }}
+                </div>
+              </template>
             </el-table-column>
-          <el-table-column label="申请人" align="center" prop="startUserName">
+            <el-table-column label="申请人" align="center" prop="startUserName">
               <template slot-scope="scope">
                 <div :title="scope.row.startUserName">
                   {{ scope.row.startUserName }}
                 </div>
               </template>
             </el-table-column>
-            <el-table-column
-              label="备案时间"
-              align="center"
-              prop="tProjectCompany.filingTime"
-            >
+            <el-table-column label="申请日期" align="center" prop="createTime">
               <template slot-scope="scope">
-          <span>{{
-              parseTime(scope.row.tProjectCompany.filingTime, "{y}-{m}-{d}")
-            }}</span>
+                <span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d}") }}</span>
               </template>
             </el-table-column>
-
-
-
-
             <el-table-column label="当前节点" align="center" prop="taskName">
               <template slot-scope="scope">
                 <div :title="scope.row.taskName"  class="public-text-blue public-cursor" @click="handleReadImage(scope.row)">
@@ -168,25 +142,32 @@
                 </div>
               </template>
             </el-table-column>
+            <el-table-column label="流程状态" align="center" prop="status">
+              <template slot-scope="scope">
+                <div :title="scope.row.status">
+                  <span v-if="scope.row.status === 0">暂存</span>
+                  <span v-else-if="scope.row.status === 1">已提交</span>
+                  <span v-else-if="scope.row.status === 2">审批中</span>
+                  <span v-else-if="scope.row.status === 3">审批完成</span>
+                  <span v-else-if="scope.row.status === 4">关闭</span>
+                </div>
+              </template>
+            </el-table-column>
             <!-- fixed="right" -->
             <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
               <template slot-scope="scope">
-<!--                <el-button  icon="el-icon-edit-outline" type="primary" size="mini" @click="handleDelegate">签收</el-button>&ndash;&gt;
-                <el-button size="mini" type="text" icon="el-icon-edit-outline" @click="handleProcess(scope.row)">处理</el-button>
-                <el-button  type="text" size="small" @click="handleFlowRecord(scope.row)">详情</el-button>-->
-
                 <el-button v-if="scope.row.taskDefKey=='modifyApply'" type="text" @click="handleEdit(scope.row)">处理</el-button>
                 <template v-else>
-                <!-- 1. 签收按钮:无签收人时显示 -->
-                  <el-button v-if="!scope.row.assignee" type="primary" size="mini" @click="handleSign(scope.row)">签收</el-button>
+                  <!-- 1. 签收按钮:无签收人时显示 -->
+                  <el-button v-if="!scope.row.assignee" type="primary"  @click="handleSign(scope.row)">签收</el-button>
                   <!-- 2. 处理按钮:有签收人时显示 -->
-                  <el-button v-else size="mini" type="text" @click="handleProcess(scope.row)">处理</el-button>
-                <!-- 3. 撤回按钮:需补充逻辑(比如仅未签收可撤回,可结合 signPerson 判断) -->
-<!--                <el-button v-if="!scope.row.assignee" size="mini" type="text" icon="el-icon-refresh-right" @click="handleWithdraw(scope.row)">撤回</el-button>-->
-                <!-- 4. 详情按钮:一直显示 -->
+                  <el-button v-else  type="text" @click="handleProcess(scope.row)">处理</el-button>
+                  <!-- 3. 撤回按钮:需补充逻辑(比如仅未签收可撤回,可结合 signPerson 判断) -->
+                  <!--                <el-button v-if="!scope.row.assignee" size="mini" type="text" icon="el-icon-refresh-right" @click="handleWithdraw(scope.row)">撤回</el-button>-->
+                  <!-- 4. 详情按钮:一直显示 -->
 
                 </template>
-                <el-button type="text" size="small" @click="handleDetail(scope.row)">详情</el-button>
+                <el-button type="text"  @click="handleDetail(scope.row)">详情</el-button>
               </template>
             </el-table-column>
           </el-table>
@@ -223,70 +204,76 @@
             <el-table-column label="项目名称" align="center" prop="projectName">
               <template slot-scope="scope">
                 <div
-                  :title="scope.row.tProjectPool.projectName"
+                  :title="scope.row.projectName"
                   class="public-text-blue public-cursor"
-                  @click.stop="handleDetail(scope.row)"
+                  @click.stop="handleInvestOppDetail(scope.row)"
                 >
-                  {{ scope.row.tProjectPool.projectName }}
+                  {{ scope.row.projectName }}
                 </div>
               </template>
             </el-table-column>
-           <el-table-column
-              label="公司名称"
-              align="center"
-              prop="tProjectCompany.companyName"
-            >
+            <el-table-column label="所属行业" align="center" prop="industry"
+            ><template slot-scope="scope">
+              <dict-tag
+                :options="dict.type.CUSTOMER_TRADE"
+                :value="scope.row.industry"
+              />
+            </template>
+            </el-table-column>
+            <el-table-column label="项目阶段" align="center" prop="projectStage">
               <template slot-scope="scope">
-                <div :title="scope.row.tProjectCompany.companyName">
-                  {{ scope.row.tProjectCompany.companyName }}
+                <dict-tag
+                  :options="dict.type.project_stage"
+                  :value="scope.row.projectStage"
+                />
+              </template>
+            </el-table-column>
+            <el-table-column label="项目负责人" align="center" prop="investHead">
+              <template slot-scope="scope">
+                <div :title="scope.row.investHead">
+                  {{ scope.row.investHead }}
                 </div>
               </template>
             </el-table-column>
-            <el-table-column
-              label="所在城市"
-              align="center"
-              prop="tProjectCompany.registeredAddress"
-            >
+            <el-table-column label="尽调名称" align="center" prop="investigateName">
               <template slot-scope="scope">
-                <div :title="scope.row.tProjectCompany.registeredAddress">
-                  {{ scope.row.tProjectCompany.registeredAddress }}
+                <div :title="scope.row.investigateName">
+                  {{ scope.row.investigateName }}
                 </div>
               </template>
             </el-table-column>
-
-            <el-table-column label="所属行业" align="center" prop="industry"
-            ><template slot-scope="scope">
-              <dict-tag
-                :options="dict.type.CUSTOMER_TRADE"
-                :value="scope.row.tProjectPool.industry"
-              />
-            </template>
+            <el-table-column label="尽调地点" align="center" prop="investigatePlace">
+              <template slot-scope="scope">
+                <div :title="scope.row.investigatePlace">
+                  {{ scope.row.investigatePlace }}
+                </div>
+              </template>
             </el-table-column>
-          <el-table-column label="申请人" align="center" prop="startUserName">
+            <el-table-column label="状态" align="center" prop="delFlag">
+              <template slot-scope="scope">
+                <div :title="scope.row.delFlag === '1' ? '终止' : '正常'">
+                  {{ scope.row.delFlag === "1" ? "终止" : "正常" }}
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column label="申请人" align="center" prop="startUserName">
               <template slot-scope="scope">
                 <div :title="scope.row.startUserName">
                   {{ scope.row.startUserName }}
                 </div>
               </template>
             </el-table-column>
-            <el-table-column
-              label="备案时间"
-              align="center"
-              prop="tProjectCompany.filingTime"
-            >
+            <el-table-column label="申请日期" align="center" prop="createTime">
               <template slot-scope="scope">
-          <span>{{
-              parseTime(scope.row.tProjectCompany.filingTime, "{y}-{m}-{d}")
-            }}</span>
+                <span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d}") }}</span>
               </template>
             </el-table-column>
-
-
-
-
             <el-table-column label="当前节点" align="center" prop="taskName">
               <template slot-scope="scope">
-                <div :title="scope.row.taskName"  class="public-text-blue public-cursor" @click="handleReadImage(scope.row)">
+                <div  v-if="scope.row.deployId !== null && scope.row.deployId !== undefined && scope.row.deployId !== ''"  :title="scope.row.taskName" class="public-text-blue public-cursor" @click="handleReadImage(scope.row)">
+                  {{ scope.row.taskName}}
+                </div>
+                <div v-else :title="scope.row.taskName">
                   {{ scope.row.taskName}}
                 </div>
               </template>
@@ -298,27 +285,28 @@
                 </div>
               </template>
             </el-table-column>
+            <el-table-column label="流程状态" align="center" prop="status">
+              <template slot-scope="scope">
+                <div :title="scope.row.status">
+                  <span v-if="scope.row.status === 0">暂存</span>
+                  <span v-else-if="scope.row.status === 1">已提交</span>
+                  <span v-else-if="scope.row.status === 2">审批中</span>
+                  <span v-else-if="scope.row.status === 3">审批完成</span>
+                  <span v-else-if="scope.row.status === 4">关闭</span>
+                </div>
+              </template>
+            </el-table-column>
             <!-- fixed="right" -->
             <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
               <template slot-scope="scope">
-                <!--                <el-button  icon="el-icon-edit-outline" type="primary" size="mini" @click="handleDelegate">签收</el-button>&ndash;&gt;
-                                <el-button size="mini" type="text" icon="el-icon-edit-outline" @click="handleProcess(scope.row)">处理</el-button>
-                                <el-button  type="text" size="small" @click="handleFlowRecord(scope.row)">详情</el-button>-->
-                <!-- 1. 签收按钮:无签收人时显示 -->
-<!--                <el-button v-if="!scope.row.assignee" icon="el-icon-edit-outline" type="primary" size="mini" @click="handleSign(scope.row)">签收</el-button>
-                &lt;!&ndash; 2. 处理按钮:有签收人时显示 &ndash;&gt;
-                <el-button v-else size="mini" type="text" icon="el-icon-edit-outline" @click="handleProcess(scope.row)">处理</el-button>
-                &lt;!&ndash; 3. 撤回按钮:需补充逻辑(比如仅未签收可撤回,可结合 signPerson 判断) &ndash;&gt;
-                <el-button v-if="!scope.row.assignee" size="mini" type="text" icon="el-icon-refresh-right" @click="handleWithdraw(scope.row)">撤回</el-button>-->
-                <!-- 4. 详情按钮:一直显示 -->
                 <el-button type="text" size="small" @click="handleDetail(scope.row)">详情</el-button>
               </template>
             </el-table-column>
           </el-table>
           <!-- 分页 -->
           <pagination
-            v-show="myTotal > 0"
-            :total="myTotal"
+            v-show="myDoneTaskTotal > 0"
+            :total="myDoneTaskTotal"
             :page.sync="queryParams.pageNum"
             :limit.sync="queryParams.pageSize"
             @pagination="getMyDoneTaskList"
@@ -346,70 +334,73 @@
             <el-table-column label="项目名称" align="center" prop="projectName">
               <template slot-scope="scope">
                 <div
-                  :title="scope.row.tProjectPool.projectName"
+                  :title="scope.row.projectName"
                   class="public-text-blue public-cursor"
-                  @click.stop="handleDetail(scope.row)"
+                  @click.stop="handleInvestOppDetail(scope.row)"
                 >
-                  {{ scope.row.tProjectPool.projectName }}
+                  {{ scope.row.projectName }}
                 </div>
               </template>
             </el-table-column>
-           <el-table-column
-              label="公司名称"
-              align="center"
-              prop="tProjectCompany.companyName"
-            >
+            <el-table-column label="所属行业" align="center" prop="industry"
+            ><template slot-scope="scope">
+              <dict-tag
+                :options="dict.type.CUSTOMER_TRADE"
+                :value="scope.row.industry"
+              />
+            </template>
+            </el-table-column>
+            <el-table-column label="项目阶段" align="center" prop="projectStage">
+              <template slot-scope="scope">
+                <dict-tag
+                  :options="dict.type.project_stage"
+                  :value="scope.row.projectStage"
+                />
+              </template>
+            </el-table-column>
+            <el-table-column label="项目负责人" align="center" prop="investHead">
               <template slot-scope="scope">
-                <div :title="scope.row.tProjectCompany.companyName">
-                  {{ scope.row.tProjectCompany.companyName }}
+                <div :title="scope.row.investHead">
+                  {{ scope.row.investHead }}
                 </div>
               </template>
             </el-table-column>
-            <el-table-column
-              label="所在城市"
-              align="center"
-              prop="tProjectCompany.registeredAddress"
-            >
+            <el-table-column label="尽调名称" align="center" prop="investigateName">
               <template slot-scope="scope">
-                <div :title="scope.row.tProjectCompany.registeredAddress">
-                  {{ scope.row.tProjectCompany.registeredAddress }}
+                <div :title="scope.row.investigateName">
+                  {{ scope.row.investigateName }}
                 </div>
               </template>
             </el-table-column>
-
-            <el-table-column label="所属行业" align="center" prop="industry"
-            ><template slot-scope="scope">
-              <dict-tag
-                :options="dict.type.CUSTOMER_TRADE"
-                :value="scope.row.tProjectPool.industry"
-              />
-            </template>
+            <el-table-column label="尽调地点" align="center" prop="investigatePlace">
+              <template slot-scope="scope">
+                <div :title="scope.row.investigatePlace">
+                  {{ scope.row.investigatePlace }}
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column label="状态" align="center" prop="investHead">
+              <template slot-scope="scope">
+                <div :title="scope.row.delFlag === '1' ? '终止' : '正常'">
+                  {{ scope.row.delFlag === "1" ? "终止" : "正常" }}
+                </div>
+              </template>
             </el-table-column>
-          <el-table-column label="申请人" align="center" prop="startUserName">
+            <el-table-column label="申请人" align="center" prop="startUserName">
               <template slot-scope="scope">
                 <div :title="scope.row.startUserName">
                   {{ scope.row.startUserName }}
                 </div>
               </template>
             </el-table-column>
-            <el-table-column
-              label="备案时间"
-              align="center"
-              prop="tProjectCompany.filingTime"
-            >
+            <el-table-column label="申请日期" align="center" prop="createTime">
               <template slot-scope="scope">
-          <span>{{
-              parseTime(scope.row.tProjectCompany.filingTime, "{y}-{m}-{d}")
-            }}</span>
+                <span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d}") }}</span>
               </template>
             </el-table-column>
-
-
-
-
             <el-table-column label="当前节点" align="center" prop="taskName">
               <template slot-scope="scope">
-                <div :title="scope.row.taskName"  class="public-text-blue public-cursor" @click="handleReadImage(scope.row)">
+                <div :title="scope.row.taskName" class="public-text-blue public-cursor" @click="handleReadImage(scope.row)">
                   {{ scope.row.taskName}}
                 </div>
               </template>
@@ -421,19 +412,19 @@
                 </div>
               </template>
             </el-table-column>
-            <!-- fixed="right" -->
+            <el-table-column label="流程状态" align="center" prop="status">
+              <template slot-scope="scope">
+                <div :title="scope.row.status">
+                  <span v-if="scope.row.status === 0">暂存</span>
+                  <span v-else-if="scope.row.status === 1">已提交</span>
+                  <span v-else-if="scope.row.status === 2">审批中</span>
+                  <span v-else-if="scope.row.status === 3">审批完成</span>
+                  <span v-else-if="scope.row.status === 4">关闭</span>
+                </div>
+              </template>
+            </el-table-column>
             <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
               <template slot-scope="scope">
-                <!--                <el-button  icon="el-icon-edit-outline" type="primary" size="mini" @click="handleDelegate">签收</el-button>&ndash;&gt;
-                                <el-button size="mini" type="text" icon="el-icon-edit-outline" @click="handleProcess(scope.row)">处理</el-button>
-                                <el-button  type="text" size="small" @click="handleFlowRecord(scope.row)">详情</el-button>-->
-                <!-- 1. 签收按钮:无签收人时显示 -->
-                <!--                <el-button v-if="!scope.row.assignee" icon="el-icon-edit-outline" type="primary" size="mini" @click="handleSign(scope.row)">签收</el-button>
-                                &lt;!&ndash; 2. 处理按钮:有签收人时显示 &ndash;&gt;
-                                <el-button v-else size="mini" type="text" icon="el-icon-edit-outline" @click="handleProcess(scope.row)">处理</el-button>
-                                &lt;!&ndash; 3. 撤回按钮:需补充逻辑(比如仅未签收可撤回,可结合 signPerson 判断) &ndash;&gt;
-                                <el-button v-if="!scope.row.assignee" size="mini" type="text" icon="el-icon-refresh-right" @click="handleWithdraw(scope.row)">撤回</el-button>-->
-                <!-- 4. 详情按钮:一直显示 -->
                 <el-button type="text" size="small" @click="handleDetail(scope.row)">详情</el-button>
               </template>
             </el-table-column>
@@ -462,25 +453,14 @@
 
 <script>
 import { getMyTaskList,getMyDoneTaskList,getMyList } from "@/api/project/investigate/pool";
-import { selectByFlowKey,flowXmlAndNode } from "@/api/flowable/definition";
+import { flowXmlAndNode } from "@/api/flowable/definition";
 import { listChannel } from "@/api/invest/channel";
-import dueDiligenceList from "../../invest/components/dueDiligenceList.vue";
-import followList from "../../invest/components/followList.vue";
-import meetingList from "../../invest/components/meetingList.vue";
-import businessUpdate from "../../invest/components/businessUpdate.vue";
 import flow from '@/views/flowable/task/todo/detail/flow';
-
+import { getPool } from "@/api/invest/pool";
 import { mapGetters } from "vuex";
-import pool from "../../invest/pool/index.vue";
 export default {
   dicts: ["project_group", "project_stage", "project_state", "CUSTOMER_TRADE"],
-  components: {
-    dueDiligenceList,
-    followList,
-    meetingList,
-    businessUpdate,
-    flow
-  },
+  components: { flow },
   data() {
     return {
       // 当前激活的 Tab
@@ -517,6 +497,8 @@ export default {
         orderByColumn: "createTime",
         isAsc: "desc",
         createTime: null,
+        investigateName:null,
+        investigatePlace:null
       },
       // 数据列表(分开存储不同Tab的数据)
       myTaskList: [],       // 待办任务数据
@@ -638,13 +620,22 @@ export default {
     clickRow(row) {
       this.$refs.dataTable.toggleRowSelection(row);
     },
+    /*投资机会详情*/
+    handleInvestOppDetail(row) {
+      const projectPoolId = row.projectPoolId;
+      getPool(projectPoolId).then((response) => {
+        const pInstId=response.data.procInstId;
+        this.$router.push({ path: "/project/investOpp/detail", query: { id:
+            projectPoolId , pInstId: pInstId } });
+      });
+    },
     // 跳转到处理页面(暂存节点页面)
     handleEdit(row){
       const id = row.id || this.ids;
       const poolId=row.projectPoolId;
       const pInstId=row.procInstId;
       const taskId=row.taskId;
-      this.$router.push({ path: "/project/approval/edit", query: { id: poolId , pInstId: pInstId , taskId:taskId} });
+      this.$router.push({ path: "/project/investigate/edit", query: { id: poolId , pInstId: pInstId , taskId:taskId} });
     },
     // 签收操作
     handleSign(row) {
@@ -654,21 +645,12 @@ export default {
     },
     // 跳转到处理页面
     handleProcess(row){
-      /*this.$router.push({ path: '/flowable/task/todo/detail/index',
-        query: {
-          procInsId: row.procInsId,
-          executionId: row.executionId,
-          deployId: row.deployId,
-          taskId: row.taskId,
-          taskName: row.taskName,
-          startUser: row.startUserName + '-' + row.startDeptName,
-        }})*/
       const id = row.id || this.ids;
       const poolId=row.projectPoolId;
       const pInstId=row.procInstId;
       const taskId=row.taskId;
       this.$store.commit("SET_PROJECTITEMMESSAGE", row);
-      this.$router.push({ path: "/project/approval/audit", query: { id:poolId , pInstId: pInstId ,taskId:taskId} });
+      this.$router.push({ path: "/project/investigate/audit", query: { id:poolId , pInstId: pInstId ,taskId:taskId} });
 
     },
     // 撤回操作
@@ -687,7 +669,7 @@ export default {
       const id = row.id || this.ids;
       const poolId=row.projectPoolId;
       const pInstId=row.procInstId;
-      this.$router.push({ path: "/project/approval/detail", query: { id: poolId , pInstId: pInstId } });
+      this.$router.push({ path: "/project/investigate/detail", query: { id: poolId , pInstId: pInstId } });
     },
     /** 修改按钮操作 */
     handleUpdate(row) {