6 Revīzijas 66e825a022 ... daa6163939

Autors SHA1 Ziņojums Datums
  hxy daa6163939 11482-【CR】【投资系统】增加审批流程-动态侧边菜单显示 3 nedēļas atpakaļ
  hxy fe2003a47a 11482-【CR】【投资系统】增加审批流程-我的任务列表中增加项目名称的宽度 3 nedēļas atpakaļ
  hxy 8f309aba34 11482-【CR】【投资系统】增加审批流程-项目机会审批去掉观望 3 nedēļas atpakaļ
  hxy c26d7ed082 11482-【CR】【投资系统】增加审批流程-侧边(我的任务)菜单默认展开的方式 3 nedēļas atpakaļ
  hxy a6240a8823 11482-【CR】【投资系统】增加审批流程-项目机会去掉一些必填 3 nedēļas atpakaļ
  hxy 0bebc12af9 11482-【CR】【投资系统】增加审批流程-短信 3 nedēļas atpakaļ
25 mainītis faili ar 652 papildinājumiem un 167 dzēšanām
  1. 99 0
      ruoyi-flowable/src/main/java/com/ruoyi/flowable/service/impl/ApprovalServiceImpl.java
  2. 100 16
      ruoyi-flowable/src/main/java/com/ruoyi/flowable/service/impl/DecisionServiceImpl.java
  3. 100 3
      ruoyi-flowable/src/main/java/com/ruoyi/flowable/service/impl/InvestigateServiceImpl.java
  4. 98 5
      ruoyi-flowable/src/main/java/com/ruoyi/flowable/service/impl/InvestmentOpportunityServiceImpl.java
  5. 83 21
      ruoyi-flowable/src/main/java/com/ruoyi/flowable/service/impl/TerminationServiceImpl.java
  6. 1 0
      ruoyi-system/src/main/java/com/ruoyi/invest/mapper/ApprovalMapper.java
  7. 1 1
      ruoyi-system/src/main/java/com/ruoyi/invest/mapper/DecisionMapper.java
  8. 1 0
      ruoyi-system/src/main/java/com/ruoyi/invest/mapper/InvestigateMapper.java
  9. 1 0
      ruoyi-system/src/main/java/com/ruoyi/invest/mapper/TerminationMapper.java
  10. 12 0
      ruoyi-system/src/main/resources/mapper/invest/ApprovalMapper.xml
  11. 12 1
      ruoyi-system/src/main/resources/mapper/invest/DecisionMapper.xml
  12. 13 1
      ruoyi-system/src/main/resources/mapper/invest/InvestigateMapper.xml
  13. 12 0
      ruoyi-system/src/main/resources/mapper/invest/TerminationMapper.xml
  14. 21 1
      ruoyi-ui/src/layout/components/Sidebar/index.vue
  15. 4 2
      ruoyi-ui/src/views/project/approval/audit.vue
  16. 6 6
      ruoyi-ui/src/views/project/approval/myTask.vue
  17. 6 6
      ruoyi-ui/src/views/project/decision/myTask.vue
  18. 29 25
      ruoyi-ui/src/views/project/investOpp/apply.vue
  19. 1 1
      ruoyi-ui/src/views/project/investOpp/audit.vue
  20. 29 25
      ruoyi-ui/src/views/project/investOpp/edit.vue
  21. 6 39
      ruoyi-ui/src/views/project/investOpp/myTask.vue
  22. 4 2
      ruoyi-ui/src/views/project/investigate/audit.vue
  23. 6 6
      ruoyi-ui/src/views/project/investigate/myTask.vue
  24. 1 0
      ruoyi-ui/src/views/project/meetingList.vue
  25. 6 6
      ruoyi-ui/src/views/project/termination/myTask.vue

+ 99 - 0
ruoyi-flowable/src/main/java/com/ruoyi/flowable/service/impl/ApprovalServiceImpl.java

@@ -26,6 +26,8 @@ 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.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -41,6 +43,7 @@ import java.util.*;
 @Service
 public class ApprovalServiceImpl extends FlowServiceFactory implements IApprovalService
 {
+    protected final Logger logger = LoggerFactory.getLogger(this.getClass());
     @Autowired
     private ApprovalMapper approvalMapper;
     @Autowired
@@ -190,6 +193,7 @@ public class ApprovalServiceImpl extends FlowServiceFactory implements IApproval
                     flowBaseInfo.setFlag(true);
                     flowBaseInfo.setComment(tProjectApproval.isFlag() ? "[提交]" : "[暂存]");
                     flowBaseInfo.setStatus(FlowStatusEnum.STARTED.getName());
+                    flowBaseInfo.setFlag(tProjectApproval.isFlag());
 
                     activitiBaseInfoService.addActivitiBaseInfo(flowBaseInfo);
                     TProjectPool tProjectPool=new TProjectPool();
@@ -198,6 +202,8 @@ public class ApprovalServiceImpl extends FlowServiceFactory implements IApproval
                     tProjectPool.setProjectState("d");//项目状态-项目立项
                     tProjectPool.setProjectStatus("0");//项目机会状态-正常
                     tProjectPoolService.updateTProjectPool(tProjectPool);
+                    //todo 短信
+                    //sendMessage(flowBaseInfo,"");
                     return AjaxResult.success();
                 }
                 return AjaxResult.error();
@@ -397,8 +403,10 @@ public class ApprovalServiceImpl extends FlowServiceFactory implements IApproval
             }
             flow.setTaskName(task.getName());
             flow.setCreateBy(SecurityUtils.getLoginUser().getUserId().toString());
+            flow.setFlag(tProjectApproval.isFlag());
 
             ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).active().singleResult();
+            String result="";
             // 表示流程已经审批结束了
             if (processInstance == null) {
                 flow.setStatus(FlowStatusEnum.ENDED.getName());
@@ -415,8 +423,10 @@ public class ApprovalServiceImpl extends FlowServiceFactory implements IApproval
                         if(StringUtils.isNotBlank(tProjectApproval.getIsTerminate())) {
                             tProjectApproval.setStatus(4);//流程状态为关闭
                             if ("1".equals(tProjectApproval.getIsTerminate())) {
+                                result="【终止】";
                                 tProjectPool.setProjectStatus("1");//终止
                             } else {
+                                result="【观望】";
                                 tProjectPool.setProjectStatus("2");//观望
                             }
                             tProjectPool.setProjectStage("3");//项目阶段-项目立项
@@ -435,6 +445,8 @@ public class ApprovalServiceImpl extends FlowServiceFactory implements IApproval
             }
             tProjectApprovalService.updateTProjectApproval(tProjectApproval);
             activitiBaseInfoService.addActivitiBaseInfo(flow);
+            // todo 短信提醒
+            //sendMessage(flow,result);
         }
         return AjaxResult.success();
     }
@@ -463,5 +475,92 @@ public class ApprovalServiceImpl extends FlowServiceFactory implements IApproval
         }
         return sumScore;
     }
+    // todo 短信
+    public void sendMessage(FlowBaseInfo flowBaseInfo,String result) {
+        boolean flag = flowBaseInfo.isFlag();
+        String procInsId = flowBaseInfo.getProcInsId();
+        // 待办任务
+        List<Task> tasks = taskService.createTaskQuery().processInstanceId(procInsId).list();
+        // 对应业务单据
+        ProjectApprovalVo projectApproval = approvalMapper.selectProjectApprovalByProcInstId(procInsId);
+        if (projectApproval == null) {
+            return;
+        }
+        // 申请人
+        SysUser applyUserInfo = sysUserService.selectUserById(Long.valueOf(projectApproval.getCreateBy()));
+        // 当前登录人
+        SysUser loginUser = SecurityUtils.getLoginUser().getUser();
+
+        if(tasks.size()>0) {
+            for (int i = 0; i < tasks.size(); i++) {
+                Task task = tasks.get(i);
+                if (task != null) {
+                    if (Objects.equals(applyUserInfo.getUserId(), loginUser.getUserId()) && !flag) {
+                        // 如果是申请人暂存或者关闭或者自己驳回,不用给自己发审批短信
+                    } else {
+                        // 申请人提交,给下一个审批人发短信
+                        // 审批人同意,给下一个审批人发短信
+                        if (flag) { //给审批人发送短信
+                            if (tasks.size()<2
+                                    &&("industryResearch".equals(task.getTaskDefinitionKey())||"technicalResearch".equals(task.getTaskDefinitionKey()))){
+                                continue;
+                            }
+                            String assignee = task.getAssignee();
+                            if (org.apache.commons.lang3.StringUtils.isNotBlank(assignee)) { // 给审批人发送短信
+                                SysUser auditUser = sysUserService.selectUserById(Long.valueOf(assignee));
+                                String auditContents = auditUser.getNickName() + ",您好。投资系统中" + projectApproval.getProjectName() + "的项目立项流程待处理";
+                                System.out.println(auditContents);
+                                if (auditUser != null && StringUtils.isNotBlank(auditUser.getPhonenumber())) {
+                                    /*try{
+                                        SmsSenderUtils.sendSms(auditUser.getPhonenumber(), auditContents);
+                                    } catch (IOException e) {
+                                        logger.error("短信发送失败"+e.getMessage());
+                                    }*/
+                                }
+                            }
+                        } else { // 审批人驳回,给申请人发短信
+                            String rejectContents = applyUserInfo.getNickName()+",您好。你在投资系统中提交" + projectApproval.getProjectName() + "的项目立项申请已审核,结果为【驳回】";
+                            System.out.println(rejectContents);
+                            if (applyUserInfo != null && StringUtils.isNotBlank(applyUserInfo.getPhonenumber())) {
+                                /*try{
+                                    SmsSenderUtils.sendSms(rejectUser.getPhonenumber(), rejectContents);
+                                } catch (IOException e) {
+                                    logger.error("短信发送失败"+e.getMessage());
+                                }*/
+                            }
+                        }
+                    }
+                }
+            }
+        }else{
+            String completeContents ="";
+            if(flag) {
+                // 审批完成,给申请人发短信
+                //XXX,您好。你在投资系统中提交“XXX”的项目立项申请已审核,结果为【通过】/【驳回】/【观望】!
+                completeContents = applyUserInfo.getNickName()+",您好。你在投资系统中提交" + projectApproval.getProjectName() + "的项目立项申请已审核,结果为【同意】";
+                System.out.println(completeContents);
+                if (applyUserInfo != null && StringUtils.isNotBlank(applyUserInfo.getPhonenumber())) {
+                    /*try{
+                        SmsSenderUtils.sendSms(completeUser.getPhonenumber(), completeContents);
+                    } catch (IOException e) {
+                        logger.error("短信发送失败"+e.getMessage());
+                    }*/
+                }
+
+            }else{
+                if(StringUtils.isNotEmpty(result)){//代表是终止或者观望
+                    completeContents = applyUserInfo.getNickName()+",您好。你在投资系统中提交" + projectApproval.getProjectName() + "的项目立项申请已审核,结果为"+result;
+                    System.out.println(completeContents);
+                    if (applyUserInfo != null && StringUtils.isNotBlank(applyUserInfo.getPhonenumber())) {
+                    /*try{
+                        SmsSenderUtils.sendSms(completeUser.getPhonenumber(), completeContents);
+                    } catch (IOException e) {
+                        logger.error("短信发送失败"+e.getMessage());
+                    }*/
+                    }
+                }
+            }
 
+        }
+    }
 }

+ 100 - 16
ruoyi-flowable/src/main/java/com/ruoyi/flowable/service/impl/DecisionServiceImpl.java

@@ -26,6 +26,8 @@ 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.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -42,27 +44,17 @@ import java.util.*;
 @Service
 public class DecisionServiceImpl extends FlowServiceFactory implements IDecisionService
 {
+    protected final Logger logger = LoggerFactory.getLogger(this.getClass());
     @Autowired
     private DecisionMapper decisionMapper;
     @Autowired
     private ITProjectDecisionService tProjectDecisionService;
     @Autowired
-    private TProjectPoolMapper tProjectPoolMapper;
-    @Autowired
     private ITProjectPoolService tProjectPoolService;
-
-    @Autowired
-    private ITProjectCompanyService tProjectCompanyService;
-
-    @Autowired
-    private ITProjectContactsService tProjectContactsService;
-
     @Autowired
     private ITProjectCirculationService tProjectCirculationService;
-
     @Autowired
     private ITUnifyFileService tUnifyFileService;
-
     @Autowired
     private IFlowBaseInfoService activitiBaseInfoService;
     @Autowired
@@ -71,9 +63,6 @@ public class DecisionServiceImpl extends FlowServiceFactory implements IDecision
     private ISysUserService sysUserService;
     @Autowired
     private SysDeptMapper sysDeptMapper;
-    @Autowired
-    private ITProjectReviewService tProjectReviewService;
-
     @Autowired
     private IFlowService flowService;
     @Autowired
@@ -203,13 +192,15 @@ public class DecisionServiceImpl extends FlowServiceFactory implements IDecision
                     flowBaseInfo.setFlag(true);
                     flowBaseInfo.setComment(tProjectDecision.isFlag() ? "[提交]" : "[暂存]");
                     flowBaseInfo.setStatus(FlowStatusEnum.STARTED.getName());
-
+                    flowBaseInfo.setFlag(tProjectDecision.isFlag());
                     activitiBaseInfoService.addActivitiBaseInfo(flowBaseInfo);
                     TProjectPool tProjectPool=new TProjectPool();
                     tProjectPool.setId(tProjectDecision.getProjectPoolId());
                     tProjectPool.setProjectStage("5");//项目阶段-项目投决
                     tProjectPool.setProjectState("h");//项目状态-准备项目投决材料
                     tProjectPoolService.updateTProjectPool(tProjectPool);
+                    // todo 短信
+                    //sendMessage(flowBaseInfo,"");
                     return AjaxResult.success();
                 }
                 return AjaxResult.error();
@@ -374,8 +365,9 @@ public class DecisionServiceImpl extends FlowServiceFactory implements IDecision
             }
             flow.setTaskName(task.getName());
             flow.setCreateBy(SecurityUtils.getLoginUser().getUserId().toString());
-
+            flow.setFlag(tProjectDecision.isFlag());
             ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).active().singleResult();
+            String result="";
             // 表示流程已经审批结束了
             if (processInstance == null) {
                 flow.setStatus(FlowStatusEnum.ENDED.getName());
@@ -396,8 +388,10 @@ public class DecisionServiceImpl extends FlowServiceFactory implements IDecision
                         if(StringUtils.isNotBlank(tProjectDecision.getIsTerminate())) {
                             tProjectDecision.setStatus(4);//流程状态为关闭
                             if ("1".equals(tProjectDecision.getIsTerminate())) {
+                                result="【终止】";
                                 tProjectPool.setProjectStatus("1");//终止
                             } else {
+                                result="【观望】";
                                 tProjectPool.setProjectStatus("2");//观望
                             }
                         }
@@ -408,6 +402,8 @@ public class DecisionServiceImpl extends FlowServiceFactory implements IDecision
 
             tProjectDecisionService.updateTProjectDecision(tProjectDecision);
             activitiBaseInfoService.addActivitiBaseInfo(flow);
+            //todo 短信
+            //sendMessage(flow,result);
         }
         return AjaxResult.success();
     }
@@ -434,5 +430,93 @@ public class DecisionServiceImpl extends FlowServiceFactory implements IDecision
         }
         return sumScore;
     }
+    // todo 短信
+    public void sendMessage(FlowBaseInfo flowBaseInfo,String result) {
+        boolean flag = flowBaseInfo.isFlag();
+        String procInsId = flowBaseInfo.getProcInsId();
+        // 待办任务
+        List<Task> tasks = taskService.createTaskQuery().processInstanceId(procInsId).list();
+        // 对应业务单据
+        ProjectDecisionVo projectDecision = decisionMapper.selectProjectDecisionByProcInstId(procInsId);
+        if (projectDecision == null) {
+            return;
+        }
+        // 申请人
+        SysUser applyUserInfo = sysUserService.selectUserById(Long.valueOf(projectDecision.getCreateBy()));
+        // 当前登录人
+        SysUser loginUser = SecurityUtils.getLoginUser().getUser();
+
+        if(tasks.size()>0) {
+            for (int i = 0; i < tasks.size(); i++) {
+                Task task = tasks.get(i);
+                if (task != null) {
+                    if (Objects.equals(applyUserInfo.getUserId(), loginUser.getUserId()) && !flag) {
+                        // 如果是申请人暂存或者关闭或者自己驳回,不用给自己发审批短信
+                        continue;
+                    } else {
+                        // 申请人提交,给下一个审批人发短信
+                        // 审批人同意,给下一个审批人发短信
+                        if (flag) { //给审批人发送短信
+                            if ("decision".equals(flowBaseInfo.getTaskDefKey())&&"decision".equals(task.getTaskDefinitionKey())){
+                                continue;
+                            }
+                            String assignee = task.getAssignee();
+                            if (org.apache.commons.lang3.StringUtils.isNotBlank(assignee)) { // 给审批人发送短信
+                                SysUser auditUser = sysUserService.selectUserById(Long.valueOf(assignee));
+                                String auditContents = auditUser.getNickName() + ",您好。投资系统中" + projectDecision.getProjectName() + "的项目投决流程待处理";
+                                System.out.println(auditContents);
+                                if (auditUser != null && StringUtils.isNotBlank(auditUser.getPhonenumber())) {
+                                    /*try{
+                                        SmsSenderUtils.sendSms(auditUser.getPhonenumber(), auditContents);
+                                    } catch (IOException e) {
+                                        logger.error("短信发送失败"+e.getMessage());
+                                    }*/
+                                }
+                            }
+                        } else { // 审批人驳回,给申请人发短信
+                            String rejectContents = applyUserInfo.getNickName()+",您好。你在投资系统中提交" + projectDecision.getProjectName() + "的项目投决申请已审核,结果为【驳回】";
+                            System.out.println(rejectContents);
+                            if (applyUserInfo != null && StringUtils.isNotBlank(applyUserInfo.getPhonenumber())) {
+                                /*try{
+                                    SmsSenderUtils.sendSms(rejectUser.getPhonenumber(), rejectContents);
+                                } catch (IOException e) {
+                                    logger.error("短信发送失败"+e.getMessage());
+                                }*/
+                            }
+                        }
+                    }
+                }
+            }
+        }else{
+            String completeContents ="";
+            if(flag) {
+                // 审批完成,给申请人发短信
+                //XXX,您好。你在投资系统中提交“XXX”的项目投决申请已审核,结果为【通过】/【驳回】/【观望】!
+                completeContents = applyUserInfo.getNickName()+",您好。你在投资系统中提交" + projectDecision.getProjectName() + "的项目投决申请已审核,结果为【同意】";
+                System.out.println(completeContents);
+                if (applyUserInfo != null && StringUtils.isNotBlank(applyUserInfo.getPhonenumber())) {
+                    /*try{
+                        SmsSenderUtils.sendSms(completeUser.getPhonenumber(), completeContents);
+                    } catch (IOException e) {
+                        logger.error("短信发送失败"+e.getMessage());
+                    }*/
+                }
+
+            }else{
+                if(StringUtils.isNotEmpty(result)){//代表是终止或者观望
+                    completeContents = applyUserInfo.getNickName()+",您好。你在投资系统中提交" + projectDecision.getProjectName() + "的项目投决申请已审核,结果为"+result;
+                    System.out.println(completeContents);
+                    if (applyUserInfo != null && StringUtils.isNotBlank(applyUserInfo.getPhonenumber())) {
+                    /*try{
+                        SmsSenderUtils.sendSms(completeUser.getPhonenumber(), completeContents);
+                    } catch (IOException e) {
+                        logger.error("短信发送失败"+e.getMessage());
+                    }*/
+                    }
+                }
+            }
+
+        }
+    }
 
 }

+ 100 - 3
ruoyi-flowable/src/main/java/com/ruoyi/flowable/service/impl/InvestigateServiceImpl.java

@@ -26,6 +26,8 @@ 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.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -42,6 +44,7 @@ import java.util.*;
 @Service
 public class InvestigateServiceImpl extends FlowServiceFactory implements IInvestigateService
 {
+    protected final Logger logger = LoggerFactory.getLogger(this.getClass());
     @Autowired
     private InvestigateMapper investigateMapper;
     @Autowired
@@ -66,8 +69,6 @@ public class InvestigateServiceImpl extends FlowServiceFactory implements IInves
     private SysDeptMapper sysDeptMapper;
     @Autowired
     private IFlowService flowService;
-    @Autowired
-    private TProjectScoringMapper tProjectScoringMapper;
     @Override
     public List<ProjectInvestigateVo> selectAllInvestigateList(TProjectInvestigate tProjectInvestigate){
         return investigateMapper.selectAllInvestigateList(tProjectInvestigate);
@@ -181,6 +182,7 @@ public class InvestigateServiceImpl extends FlowServiceFactory implements IInves
                     flowBaseInfo.setFlag(true);
                     flowBaseInfo.setComment(tProjectInvestigate.isFlag() ? "[提交]" : "[暂存]");
                     flowBaseInfo.setStatus(FlowStatusEnum.STARTED.getName());
+                    flowBaseInfo.setFlag(tProjectInvestigate.isFlag());
                     activitiBaseInfoService.addActivitiBaseInfo(flowBaseInfo);
 
                     TProjectPool tProjectPool=new TProjectPool();
@@ -188,6 +190,8 @@ public class InvestigateServiceImpl extends FlowServiceFactory implements IInves
                     tProjectPool.setProjectStage("4");//项目阶段-尽职背调
                     tProjectPool.setProjectState("f");//项目状态-尽职背调
                     tProjectPoolService.updateTProjectPool(tProjectPool);
+                    //todo 短信
+                    //sendMessage(flowBaseInfo,"");
                     return AjaxResult.success();
                 }
                 return AjaxResult.error();
@@ -324,8 +328,9 @@ public class InvestigateServiceImpl extends FlowServiceFactory implements IInves
             }
             flow.setTaskName(task.getName());
             flow.setCreateBy(SecurityUtils.getLoginUser().getUserId().toString());
-
+            flow.setFlag(tProjectInvestigate.isFlag());
             ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).active().singleResult();
+            String result="";
             // 表示流程已经审批结束了
             if (processInstance == null) {
                 flow.setStatus(FlowStatusEnum.ENDED.getName());
@@ -341,8 +346,10 @@ public class InvestigateServiceImpl extends FlowServiceFactory implements IInves
                         if(StringUtils.isNotBlank(tProjectInvestigate.getIsTerminate())) {
                             tProjectInvestigate.setStatus(4);//流程状态为关闭
                             if ("1".equals(tProjectInvestigate.getIsTerminate())) {
+                                result="【终止】";
                                 tProjectPool.setProjectStatus("1");//终止
                             } else {
+                                result="【观望】";
                                 tProjectPool.setProjectStatus("2");//观望
                             }
                             tProjectPool.setProjectStage("4");//项目阶段-尽职背调
@@ -362,6 +369,8 @@ public class InvestigateServiceImpl extends FlowServiceFactory implements IInves
 
             tProjectInvestigateService.updateTProjectInvestigate(tProjectInvestigate);
             activitiBaseInfoService.addActivitiBaseInfo(flow);
+            // todo 短信
+            //sendMessage(flow,result);
         }
         return AjaxResult.success();
     }
@@ -388,5 +397,93 @@ public class InvestigateServiceImpl extends FlowServiceFactory implements IInves
         }
         return sumScore;
     }
+    // todo 短信
+    public void sendMessage(FlowBaseInfo flowBaseInfo,String result) {
+        boolean flag = flowBaseInfo.isFlag();
+        String procInsId = flowBaseInfo.getProcInsId();
+        // 待办任务
+        List<Task> tasks = taskService.createTaskQuery().processInstanceId(procInsId).list();
+        // 对应业务单据
+        ProjectInvestigateVo projectInvestigate =investigateMapper.selectProjectInvestigateByProcInstId(procInsId);
+        if (projectInvestigate == null) {
+            return;
+        }
+        // 申请人
+        SysUser applyUserInfo = sysUserService.selectUserById(Long.valueOf(projectInvestigate.getCreateBy()));
+        // 当前登录人
+        SysUser loginUser = SecurityUtils.getLoginUser().getUser();
+
+        if(tasks.size()>0) {
+            for (int i = 0; i < tasks.size(); i++) {
+                Task task = tasks.get(i);
+                if (task != null) {
+                    if (Objects.equals(applyUserInfo.getUserId(), loginUser.getUserId()) && !flag) {
+                        // 如果是申请人暂存或者关闭或者自己驳回,不用给自己发审批短信
+                        continue;
+                    } else {
+                        // 申请人提交,给下一个审批人发短信
+                        // 审批人同意,给下一个审批人发短信
+                        if (flag) { //给审批人发送短信
+                            if ("approve".equals(flowBaseInfo.getTaskDefKey())&&("approve".equals(task.getTaskDefinitionKey()))){
+                                continue;
+                            }
+                            String assignee = task.getAssignee();
+                            if (org.apache.commons.lang3.StringUtils.isNotBlank(assignee)) { // 给审批人发送短信
+                                SysUser auditUser = sysUserService.selectUserById(Long.valueOf(assignee));
+                                String auditContents = auditUser.getNickName() + ",您好。投资系统中" + projectInvestigate.getProjectName() + "的项目背调流程待处理";
+                                System.out.println(auditContents);
+                                if (auditUser != null && StringUtils.isNotBlank(auditUser.getPhonenumber())) {
+                                    /*try{
+                                        SmsSenderUtils.sendSms(auditUser.getPhonenumber(), auditContents);
+                                    } catch (IOException e) {
+                                        logger.error("短信发送失败"+e.getMessage());
+                                    }*/
+                                }
+                            }
+                        } else { // 审批人驳回,给申请人发短信
+                            String rejectContents = applyUserInfo.getNickName()+",您好。你在投资系统中提交" + projectInvestigate.getProjectName() + "的项目背调申请已审核,结果为【驳回】";
+                            System.out.println(rejectContents);
+                            if (applyUserInfo != null && StringUtils.isNotBlank(applyUserInfo.getPhonenumber())) {
+                                /*try{
+                                    SmsSenderUtils.sendSms(rejectUser.getPhonenumber(), rejectContents);
+                                } catch (IOException e) {
+                                    logger.error("短信发送失败"+e.getMessage());
+                                }*/
+                            }
+                        }
+                    }
+                }
+            }
+        }else{
+            String completeContents ="";
+            if(flag) {
+                // 审批完成,给申请人发短信
+                //XXX,您好。你在投资系统中提交“XXX”的项目背调申请已审核,结果为【通过】/【驳回】/【观望】!
+                completeContents = applyUserInfo.getNickName()+",您好。你在投资系统中提交" + projectInvestigate.getProjectName() + "的项目背调申请已审核,结果为【同意】";
+                System.out.println(completeContents);
+                if (applyUserInfo != null && StringUtils.isNotBlank(applyUserInfo.getPhonenumber())) {
+                    /*try{
+                        SmsSenderUtils.sendSms(completeUser.getPhonenumber(), completeContents);
+                    } catch (IOException e) {
+                        logger.error("短信发送失败"+e.getMessage());
+                    }*/
+                }
+
+            }else{
+                if(StringUtils.isNotEmpty(result)){//代表是终止或者观望
+                    completeContents = applyUserInfo.getNickName()+",您好。你在投资系统中提交" + projectInvestigate.getProjectName() + "的项目背调申请已审核,结果为"+result;
+                    System.out.println(completeContents);
+                    if (applyUserInfo != null && StringUtils.isNotBlank(applyUserInfo.getPhonenumber())) {
+                    /*try{
+                        SmsSenderUtils.sendSms(completeUser.getPhonenumber(), completeContents);
+                    } catch (IOException e) {
+                        logger.error("短信发送失败"+e.getMessage());
+                    }*/
+                    }
+                }
+            }
+
+        }
+    }
 
 }

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

@@ -24,14 +24,13 @@ 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.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 
 /**
  * 项目池Service业务层处理
@@ -42,6 +41,7 @@ import java.util.Objects;
 @Service
 public class InvestmentOpportunityServiceImpl extends FlowServiceFactory implements IInvestmentOpportunityService
 {
+    protected final Logger logger = LoggerFactory.getLogger(this.getClass());
     @Autowired
     private InvestmentOpportunityMapper investmentOpportunityMapper;
 
@@ -215,8 +215,10 @@ public class InvestmentOpportunityServiceImpl extends FlowServiceFactory impleme
                     flowBaseInfo.setFlag(true);
                     flowBaseInfo.setComment(tProjectPool.isFlag() ? "[提交]" : "[暂存]");
                     flowBaseInfo.setStatus(FlowStatusEnum.STARTED.getName());
-
+                    flowBaseInfo.setFlag(tProjectPool.isFlag());
                     activitiBaseInfoService.addActivitiBaseInfo(flowBaseInfo);
+                    //todo 短信
+                    //sendMessage(flowBaseInfo,"");
                     return AjaxResult.success();
                 }
                 return AjaxResult.error();
@@ -352,7 +354,9 @@ public class InvestmentOpportunityServiceImpl extends FlowServiceFactory impleme
             }
             flow.setTaskName(task.getName());
             flow.setCreateBy(SecurityUtils.getLoginUser().getUserId().toString());
+            flow.setFlag(tProjectPool.isFlag());
             ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).active().singleResult();
+            String result="";
             // 表示流程已经审批结束了
             if (processInstance == null) {
                 flow.setStatus(FlowStatusEnum.ENDED.getName());
@@ -367,8 +371,10 @@ public class InvestmentOpportunityServiceImpl extends FlowServiceFactory impleme
                         if(StringUtils.isNotBlank(tProjectPool.getIsTerminate())) {
                             tProjectPool.setStatus(4);//流程状态为关闭
                             if ("1".equals(tProjectPool.getIsTerminate())) {
+                                result="【终止】";
                                 tProjectPool.setProjectStatus("1");//终止
                             } else {
+                                result="【观望】";
                                 tProjectPool.setProjectStatus("2");//观望
                             }
                         }
@@ -379,8 +385,95 @@ public class InvestmentOpportunityServiceImpl extends FlowServiceFactory impleme
 
             tProjectPoolService.updateTProjectPool(tProjectPool);
             activitiBaseInfoService.addActivitiBaseInfo(flow);
+            //todo 短信
+            //sendMessage(flow,result);
         }
         return AjaxResult.success();
     }
+    // todo 短信
+    public void sendMessage(FlowBaseInfo flowBaseInfo,String result) {
+        boolean flag = flowBaseInfo.isFlag();
+        String procInsId = flowBaseInfo.getProcInsId();
+        // 待办任务
+        List<Task> tasks = taskService.createTaskQuery().processInstanceId(procInsId).list();
+        // 对应业务单据
+        TProjectPool projectPool = investmentOpportunityMapper.selectTProjectPoolByProcInstId(procInsId);
+        if (projectPool == null) {
+            return;
+        }
+        // 申请人
+        SysUser applyUserInfo = sysUserService.selectUserById(Long.valueOf(projectPool.getCreateBy()));
+        // 当前登录人
+        SysUser loginUser = SecurityUtils.getLoginUser().getUser();
+
+        if(tasks.size()>0) {
+            for (int i = 0; i < tasks.size(); i++) {
+                Task task = tasks.get(i);
+                if (task != null) {
+                    if (Objects.equals(applyUserInfo.getUserId(), loginUser.getUserId()) && !flag) {
+                        // 如果是申请人暂存或者关闭或者自己驳回,不用给自己发审批短信
+                        continue;
+                    } else {
+                        // 申请人提交,给下一个审批人发短信
+                        // 审批人同意,给下一个审批人发短信
+                        if (flag) { //给审批人发送短信
+                            String assignee = task.getAssignee();
+                            if (org.apache.commons.lang3.StringUtils.isNotBlank(assignee)) { // 给审批人发送短信
+                                SysUser auditUser = sysUserService.selectUserById(Long.valueOf(assignee));
+                                String auditContents = auditUser.getNickName() + ",您好。投资系统中" + projectPool.getProjectName() + "的项目机会流程待处理";
+                                System.out.println(auditContents);
+                                if (auditUser != null && StringUtils.isNotBlank(auditUser.getPhonenumber())) {
+                                    /*try{
+                                        SmsSenderUtils.sendSms(auditUser.getPhonenumber(), auditContents);
+                                    } catch (IOException e) {
+                                        logger.error("短信发送失败"+e.getMessage());
+                                    }*/
+                                }
+                            }
+                        } else { // 审批人驳回,给申请人发短信
+                            String rejectContents = applyUserInfo.getNickName()+",您好。你在投资系统中提交" + projectPool.getProjectName() + "的项目机会申请已审核,结果为【驳回】";
+                            System.out.println(rejectContents);
+                            if (applyUserInfo != null && StringUtils.isNotBlank(applyUserInfo.getPhonenumber())) {
+                                /*try{
+                                    SmsSenderUtils.sendSms(rejectUser.getPhonenumber(), rejectContents);
+                                } catch (IOException e) {
+                                    logger.error("短信发送失败"+e.getMessage());
+                                }*/
+                            }
+                        }
+                    }
+                }
+            }
+        }else{
+            String completeContents ="";
+            if(flag) {
+                // 审批完成,给申请人发短信
+                //XXX,您好。你在投资系统中提交“XXX”的项目立项申请已审核,结果为【通过】/【驳回】/【观望】!
+                completeContents = applyUserInfo.getNickName()+",您好。你在投资系统中提交" +projectPool.getProjectName() + "的项目机会申请已审核,结果为【同意】";
+                System.out.println(completeContents);
+                if (applyUserInfo != null && StringUtils.isNotBlank(applyUserInfo.getPhonenumber())) {
+                    /*try{
+                        SmsSenderUtils.sendSms(completeUser.getPhonenumber(), completeContents);
+                    } catch (IOException e) {
+                        logger.error("短信发送失败"+e.getMessage());
+                    }*/
+                }
+
+            }else{
+                if(StringUtils.isNotEmpty(result)){//代表是终止或者观望
+                    completeContents = applyUserInfo.getNickName()+",您好。你在投资系统中提交" +projectPool.getProjectName() + "的项目机会申请已审核,结果为"+result;
+                    System.out.println(completeContents);
+                    if (applyUserInfo != null && StringUtils.isNotBlank(applyUserInfo.getPhonenumber())) {
+                    /*try{
+                        SmsSenderUtils.sendSms(completeUser.getPhonenumber(), completeContents);
+                    } catch (IOException e) {
+                        logger.error("短信发送失败"+e.getMessage());
+                    }*/
+                    }
+                }
+            }
+
+        }
+    }
 
 }

+ 83 - 21
ruoyi-flowable/src/main/java/com/ruoyi/flowable/service/impl/TerminationServiceImpl.java

@@ -23,6 +23,8 @@ 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.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -38,15 +40,13 @@ import java.util.*;
 @Service
 public class TerminationServiceImpl extends FlowServiceFactory implements ITerminationService
 {
+    protected final Logger logger = LoggerFactory.getLogger(this.getClass());
     @Autowired
     private TerminationMapper terminationMapper;
     @Autowired
     private ITProjectPoolService tProjectPoolService;
-
     @Autowired
     private ITProjectCirculationService tProjectCirculationService;
-
-
     @Autowired
     private IFlowBaseInfoService activitiBaseInfoService;
     @Autowired
@@ -55,14 +55,11 @@ public class TerminationServiceImpl extends FlowServiceFactory implements ITermi
     private ISysUserService sysUserService;
     @Autowired
     private SysDeptMapper sysDeptMapper;
-
     @Autowired
     private IFlowService flowService;
     @Autowired
     private ITProjectMeetingService tProjectMeetingService;
     @Autowired
-    private ITProjectScoringService tProjectScoringService;
-    @Autowired
     private TProjectScoringMapper tProjectScoringMapper;
     @Override
     public List<ProjectTerminationVo> selectAllTerminationList(TProjectTermination tProjectTermination){
@@ -173,13 +170,15 @@ public class TerminationServiceImpl extends FlowServiceFactory implements ITermi
                     flowBaseInfo.setFlag(true);
                     flowBaseInfo.setComment(tProjectTermination.isFlag() ? "[提交]" : "[暂存]");
                     flowBaseInfo.setStatus(FlowStatusEnum.STARTED.getName());
-
+                    flowBaseInfo.setFlag(tProjectTermination.isFlag());
                     activitiBaseInfoService.addActivitiBaseInfo(flowBaseInfo);
                     TProjectPool tProjectPool=new TProjectPool();
                     tProjectPool.setId(tProjectTermination.getProjectPoolId());
                     tProjectPool.setProjectStage("8");//项目阶段-项目终止
                     tProjectPool.setProjectState("o");//项目状态-项目终止
                     tProjectPoolService.updateTProjectPool(tProjectPool);
+                    // todo 短信
+                    //sendMessage(flowBaseInfo);
                     return AjaxResult.success();
                 }
                 return AjaxResult.error();
@@ -247,34 +246,25 @@ public class TerminationServiceImpl extends FlowServiceFactory implements ITermi
             }
             flow.setTaskName(task.getName());
             flow.setCreateBy(SecurityUtils.getLoginUser().getUserId().toString());
-
+            flow.setFlag(tProjectTermination.isFlag());
             ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).active().singleResult();
             // 表示流程已经审批结束了
             if (processInstance == null) {
                 flow.setStatus(FlowStatusEnum.ENDED.getName());
                 if (!"modifyApply".equals(task.getTaskDefinitionKey())) {
                     //关闭该项目存在的流程(投资机会、项目立项、尽职背调、项目投决)
-
                     tProjectTermination.setStatus(3);
-                    /*tProjectPool.setProjectStage("8");//项目阶段-项目终止
-                    tProjectPool.setProjectState("p");//项目状态-终止通过*/
                     tProjectPool.setUpdateBy(userInfo.getNickName());
                     tProjectPool.setProjectStatus("1");//项目机会状态为终止
                     // todo 增加项目创建记录
                     tProjectCirculationService.insertTProjectCirculation(tProjectPool.getId(),"项目终止完成", userInfo.getNickName());
-
-                }/*else{
-                    tProjectPool.setProjectStage("6");//项目阶段-
-                    tProjectPool.setProjectState("o");//项目状态-
-                    tProjectPool.setDelFlag("0");
-                    tProjectPool.setUpdateBy(userInfo.getNickName());
-                }*/
-                tProjectPoolService.updateTProjectPool(tProjectPool);
+                }
             }
-
-            /*tProjectTerminationService.updateTProjectTermination(tProjectTermination);*/
+            tProjectPoolService.updateTProjectPool(tProjectPool);
             terminationMapper.updateTProjectTermination(tProjectTermination);
             activitiBaseInfoService.addActivitiBaseInfo(flow);
+            //todo 短信
+            //sendMessage(flow);
         }
         return AjaxResult.success();
     }
@@ -310,4 +300,76 @@ public class TerminationServiceImpl extends FlowServiceFactory implements ITermi
     public TProjectTermination listProjectPoolIdNew(String projectPoolId) {
         return terminationMapper.listProjectPoolIdNew(projectPoolId);
     }
+    // todo 短信
+    public void sendMessage(FlowBaseInfo flowBaseInfo) {
+        boolean flag = flowBaseInfo.isFlag();
+        String procInsId = flowBaseInfo.getProcInsId();
+        // 待办任务
+        List<Task> tasks = taskService.createTaskQuery().processInstanceId(procInsId).list();
+        // 对应业务单据
+        ProjectTerminationVo projectTermination =terminationMapper.selectProjectTerminationByProcInstId(procInsId);
+        if (projectTermination == null) {
+            return;
+        }
+        // 申请人
+        SysUser applyUserInfo = sysUserService.selectUserById(Long.valueOf(projectTermination.getCreateBy()));
+        // 当前登录人
+        SysUser loginUser = SecurityUtils.getLoginUser().getUser();
+
+        if(tasks.size()>0) {
+            for (int i = 0; i < tasks.size(); i++) {
+                Task task = tasks.get(i);
+                if (task != null) {
+                    if (Objects.equals(applyUserInfo.getUserId(), loginUser.getUserId()) && !flag) {
+                        // 如果是申请人暂存或者关闭或者自己驳回,不用给自己发审批短信
+                        continue;
+                    } else {
+                        // 申请人提交,给下一个审批人发短信
+                        // 审批人同意,给下一个审批人发短信
+                        if (flag) { //给审批人发送短信
+                            String assignee = task.getAssignee();
+                            if (org.apache.commons.lang3.StringUtils.isNotBlank(assignee)) { // 给审批人发送短信
+                                SysUser auditUser = sysUserService.selectUserById(Long.valueOf(assignee));
+                                String auditContents = auditUser.getNickName() + ",您好。投资系统中" + projectTermination.getProjectName() + "的项目终止流程待处理";
+                                System.out.println(auditContents);
+                                if (auditUser != null && StringUtils.isNotBlank(auditUser.getPhonenumber())) {
+                                    /*try{
+                                        SmsSenderUtils.sendSms(auditUser.getPhonenumber(), auditContents);
+                                    } catch (IOException e) {
+                                        logger.error("短信发送失败"+e.getMessage());
+                                    }*/
+                                }
+                            }
+                        } else { // 审批人驳回,给申请人发短信
+                            String rejectContents = applyUserInfo.getNickName()+",您好。你在投资系统中提交" + projectTermination.getProjectName() + "的项目终止申请已审核,结果为【驳回】";
+                            System.out.println(rejectContents);
+                            if (applyUserInfo != null && StringUtils.isNotBlank(applyUserInfo.getPhonenumber())) {
+                                /*try{
+                                    SmsSenderUtils.sendSms(rejectUser.getPhonenumber(), rejectContents);
+                                } catch (IOException e) {
+                                    logger.error("短信发送失败"+e.getMessage());
+                                }*/
+                            }
+                        }
+                    }
+                }
+            }
+        }else{
+            String completeContents ="";
+            if(flag) {
+                // 审批完成,给申请人发短信
+                //XXX,您好。你在投资系统中提交“XXX”的项目终止申请已审核,结果为【通过】/【驳回】/【观望】!
+                completeContents = applyUserInfo.getNickName()+",您好。你在投资系统中提交" + projectTermination.getProjectName() + "的项目终止申请已审核,结果为【同意】";
+                System.out.println(completeContents);
+                if (applyUserInfo != null && StringUtils.isNotBlank(applyUserInfo.getPhonenumber())) {
+                    /*try{
+                        SmsSenderUtils.sendSms(completeUser.getPhonenumber(), completeContents);
+                    } catch (IOException e) {
+                        logger.error("短信发送失败"+e.getMessage());
+                    }*/
+                }
+
+            }
+        }
+    }
 }

+ 1 - 0
ruoyi-system/src/main/java/com/ruoyi/invest/mapper/ApprovalMapper.java

@@ -24,6 +24,7 @@ public interface ApprovalMapper {
     List<ProjectApprovalVo> getMyList(@Param("userId") String userId, @Param("projectApproval")TProjectApproval tProjectApproval);
     /*详情*/
     public TProjectApproval selectTProjectApprovalByProcInstId(String ProcInstId);
+    public ProjectApprovalVo selectProjectApprovalByProcInstId(String ProcInstId);
 
 
 }

+ 1 - 1
ruoyi-system/src/main/java/com/ruoyi/invest/mapper/DecisionMapper.java

@@ -26,6 +26,6 @@ public interface DecisionMapper {
     List<ProjectDecisionVo> getMyList(@Param("userId") String userId, @Param("projectDecision")TProjectDecision tProjectDecision);
     /*详情*/
     public TProjectDecision selectTProjectDecisionByProcInstId(String ProcInstId);
-
+    public ProjectDecisionVo selectProjectDecisionByProcInstId(String ProcInstId);
 
 }

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

@@ -24,6 +24,7 @@ public interface InvestigateMapper {
     List<ProjectInvestigateVo> getMyList(@Param("userId") String userId, @Param("projectInvestigate")TProjectInvestigate tProjectInvestigate);
     /*详情*/
     public TProjectInvestigate selectTProjectInvestigateByProcInstId(String ProcInstId);
+    public ProjectInvestigateVo selectProjectInvestigateByProcInstId(String ProcInstId);
 
 
 }

+ 1 - 0
ruoyi-system/src/main/java/com/ruoyi/invest/mapper/TerminationMapper.java

@@ -39,6 +39,7 @@ public interface TerminationMapper {
     List<ProjectTerminationVo> getMyList(@Param("userId") String userId, @Param("projectTermination")TProjectTermination tProjectTermination);
     /*详情*/
     public TProjectTermination selectTProjectTerminationByProcInstId(String ProcInstId);
+    public ProjectTerminationVo selectProjectTerminationByProcInstId(String ProcInstId);
 
     /**
      * 根据项目ID获取最新终止申请

+ 12 - 0
ruoyi-system/src/main/resources/mapper/invest/ApprovalMapper.xml

@@ -225,5 +225,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where a.proc_inst_id = #{procInstId,jdbcType=VARCHAR}
         GROUP BY a.id
     </select>
+    <select id="selectProjectApprovalByProcInstId" parameterType="java.lang.String" resultMap="ProjectApprovalVoResult">
+        select a.id,a.proc_inst_id, a.project_pool_id, a.project_overview, a.project_sparkle, a.participants_id,
+               a.participants, a.remark, a.del_flag, a.create_by, a.create_time, a.update_by, a.update_time ,a.need_meeting,
+               t.TASK_DEF_KEY_ as 'taskDefKey',tp.project_name
+        from t_project_approval 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>

+ 12 - 1
ruoyi-system/src/main/resources/mapper/invest/DecisionMapper.xml

@@ -222,5 +222,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where a.proc_inst_id = #{procInstId,jdbcType=VARCHAR}
         GROUP BY a.id
     </select>
-
+    <select id="selectProjectDecisionByProcInstId" parameterType="java.lang.String" resultMap="ProjectDecisionVoResult">
+        select a.id,a.proc_inst_id, a.project_pool_id, a.participants_id,a.participants,
+               a.provision, a.remark, a.del_flag, a.create_by, a.create_time, a.update_by, a.update_time ,a.need_meeting,
+               t.TASK_DEF_KEY_ as 'taskDefKey',tp.project_name
+        from t_project_decision 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>

+ 13 - 1
ruoyi-system/src/main/resources/mapper/invest/InvestigateMapper.xml

@@ -250,5 +250,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where a.proc_inst_id = #{procInstId,jdbcType=VARCHAR}
         GROUP BY a.id
     </select>
-
+    <select id="selectProjectInvestigateByProcInstId" parameterType="java.lang.String" resultMap="ProjectInvestigateVoResult">
+        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,tp.project_status, 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>

+ 12 - 0
ruoyi-system/src/main/resources/mapper/invest/TerminationMapper.xml

@@ -258,6 +258,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where a.proc_inst_id = #{procInstId,jdbcType=VARCHAR}
         GROUP BY a.id
     </select>
+    <select id="selectProjectTerminationByProcInstId" parameterType="java.lang.String" resultMap="ProjectTerminationVoResult">
+        select a.id,a.proc_inst_id, a.project_pool_id, a.reason,
+               a.del_flag, a.create_by, a.create_time, a.update_by, a.update_time ,
+               t.TASK_DEF_KEY_ as 'taskDefKey',tp.project_name
+        from t_project_termination 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>
 
     <select id="listProjectPoolIdNew" parameterType="String" resultMap="TProjectTerminationResult">
         <include refid="selectTProjectTerminationVo"/>

+ 21 - 1
ruoyi-ui/src/layout/components/Sidebar/index.vue

@@ -11,6 +11,7 @@
     <logo v-if="showLogo" :collapse="isCollapse" />
     <el-scrollbar :class="settings.sideTheme" wrap-class="scrollbar-wrapper">
       <el-menu
+        :default-openeds="getDefaultOpeneds"
         :default-active="activeMenu"
         :collapse="isCollapse"
         :background-color="
@@ -75,6 +76,25 @@ export default {
     isCollapse() {
       return !this.sidebar.opened;
     },
+    // 新增:动态判断默认展开的菜单
+    getDefaultOpeneds() {
+      if(!this.$route.path.startsWith('/index')){
+        const currentPath = this.$route.path;
+        // 否则,解析当前路径的所有父级菜单并展开
+        const parentPaths = [];
+        let tempPath = currentPath;
+        while (tempPath.lastIndexOf('/') > 0) {
+          tempPath = tempPath.substring(0, tempPath.lastIndexOf('/'));
+          if (tempPath) { // 排除根路径
+            parentPaths.push(tempPath);
+          }
+        }
+        // 去重并返回(确保父菜单层级展开)
+        return [...new Set(parentPaths)];
+      }else{
+        return ['/myTask'];
+      }
+    }
   },
 };
 </script>
@@ -95,4 +115,4 @@ export default {
     color:#fff;
   }
 }
-</style>
+</style>

+ 4 - 2
ruoyi-ui/src/views/project/approval/audit.vue

@@ -1698,11 +1698,13 @@ export default {
             this.$refs.fileItemLXApply.fileList = [];
             this.$refs.fileItemLXApply.getListFileBusinessId(that.formLXApply.id,"10");
             //项目行研报告
-            this.$refs.industryFileItem.handleButton();
+            if(response.data.taskDefKey==='president') {
+              this.$refs.industryFileItem.handleButton();
+              this.$refs.technicalFileItem.handleButton();
+            }
             this.$refs.industryFileItem.fileList = [];
             this.$refs.industryFileItem.getListFileBusinessId(that.formLXApply.id, "12");
             //项目技术报告
-            this.$refs.technicalFileItem.handleButton();
             this.$refs.technicalFileItem.fileList = [];
             this.$refs.technicalFileItem.getListFileBusinessId(that.formLXApply.id, "13");
             //其他附件

+ 6 - 6
ruoyi-ui/src/views/project/approval/myTask.vue

@@ -55,7 +55,7 @@
               align="center"
             ></el-table-column>
 
-            <el-table-column label="项目名称" align="center" prop="projectName">
+            <el-table-column label="项目名称" align="center" prop="projectName" width="200">
               <template slot-scope="scope">
                 <div
                   :title="scope.row.projectName"
@@ -180,7 +180,7 @@
               </template>
             </el-table-column>
             <!-- fixed="right" -->
-            <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
+            <el-table-column label="操作" align="center" width="90" class-name="small-padding fixed-width">
               <template slot-scope="scope">
 
                 <el-button v-if="scope.row.taskDefKey=='modifyApply'" size="mini" type="text" @click="handleEdit(scope.row)">处理</el-button>
@@ -228,7 +228,7 @@
               align="center"
             ></el-table-column>
             <!-- <el-table-column label="主键id" align="center" prop="id" /> -->
-            <el-table-column label="项目名称" align="center" prop="projectName">
+            <el-table-column label="项目名称" align="center" prop="projectName" width="200">
               <template slot-scope="scope">
                 <div
                   :title="scope.row.projectName"
@@ -358,7 +358,7 @@
               </template>
             </el-table-column>
             <!-- fixed="right" -->
-            <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
+            <el-table-column label="操作" align="center" width="70" class-name="small-padding fixed-width">
               <template slot-scope="scope">
                 <el-button type="text" size="mini" @click="handleDetail(scope.row)">详情</el-button>
               </template>
@@ -391,7 +391,7 @@
               width="50"
               align="center"
             ></el-table-column>
-            <el-table-column label="项目名称" align="center" prop="projectName">
+            <el-table-column label="项目名称" align="center" prop="projectName" width="200">
               <template slot-scope="scope">
                 <div
                   :title="scope.row.projectName"
@@ -517,7 +517,7 @@
               </template>
             </el-table-column>
             <!-- fixed="right" -->
-            <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
+            <el-table-column label="操作" align="center" width="70" class-name="small-padding fixed-width">
               <template slot-scope="scope">
                 <el-button type="text" size="mini" @click="handleDetail(scope.row)">详情</el-button>
               </template>

+ 6 - 6
ruoyi-ui/src/views/project/decision/myTask.vue

@@ -47,7 +47,7 @@
               align="center"
             ></el-table-column>
             <!-- <el-table-column label="主键id" align="center" prop="id" /> -->
-            <el-table-column label="项目名称" align="center" prop="projectName">
+            <el-table-column label="项目名称" align="center" prop="projectName" width="200">
               <template slot-scope="scope">
                 <div
                   :title="scope.row.projectName"
@@ -165,7 +165,7 @@
               </template>
             </el-table-column>
             <!-- fixed="right" -->
-            <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
+            <el-table-column label="操作" align="center" width="90" class-name="small-padding fixed-width">
               <template slot-scope="scope">
                 <el-button v-if="scope.row.taskDefKey=='modifyApply'" type="text" @click="handleEdit(scope.row)">处理</el-button>
                 <template v-else>
@@ -212,7 +212,7 @@
               align="center"
             ></el-table-column>
             <!-- <el-table-column label="主键id" align="center" prop="id" /> -->
-            <el-table-column label="项目名称" align="center" prop="projectName">
+            <el-table-column label="项目名称" align="center" prop="projectName" width="200">
               <template slot-scope="scope">
                 <div
                   :title="scope.row.projectName"
@@ -334,7 +334,7 @@
               </template>
             </el-table-column>
             <!-- fixed="right" -->
-            <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
+            <el-table-column label="操作" align="center" width="70" class-name="small-padding fixed-width">
               <template slot-scope="scope">
                 <el-button type="text" size="small" @click="handleDetail(scope.row)">详情</el-button>
               </template>
@@ -368,7 +368,7 @@
               align="center"
             ></el-table-column>
             <!-- <el-table-column label="主键id" align="center" prop="id" /> -->
-            <el-table-column label="项目名称" align="center" prop="projectName">
+            <el-table-column label="项目名称" align="center" prop="projectName" width="200">
               <template slot-scope="scope">
                 <div
                   :title="scope.row.projectName"
@@ -486,7 +486,7 @@
                 </div>
               </template>
             </el-table-column>
-            <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
+            <el-table-column label="操作" align="center" width="70" class-name="small-padding fixed-width">
               <template slot-scope="scope">
                 <el-button type="text" size="small" @click="handleDetail(scope.row)">详情</el-button>
               </template>

+ 29 - 25
ruoyi-ui/src/views/project/investOpp/apply.vue

@@ -609,24 +609,24 @@ export default {
         "tProjectCompany.companyName": [
           { required: true, trigger: "blur", message: "请输入" },
         ],
-        "tProjectCompany.companyCode": [
-          { required: true, trigger: "blur", message: "请输入" },
-        ],
-        "tProjectCompany.startTime": [
-          { required: true, trigger: "blur", message: "请选择" },
-        ],
-        "tProjectCompany.endTime": [
-          { required: true, trigger: "blur", message: "请选择" },
-        ],
-        "tProjectCompany.registeredCapital": [
-          { required: true, trigger: "blur", message: "请输入" },
-        ],
+        // "tProjectCompany.companyCode": [
+        //   { required: true, trigger: "blur", message: "请输入" },
+        // ],
+        // "tProjectCompany.startTime": [
+        //   { required: true, trigger: "blur", message: "请选择" },
+        // ],
+        // "tProjectCompany.endTime": [
+        //   { required: true, trigger: "blur", message: "请选择" },
+        // ],
+        // "tProjectCompany.registeredCapital": [
+        //   { required: true, trigger: "blur", message: "请输入" },
+        // ],
         "tProjectCompany.registeredAddress": [
           { required: true, trigger: "blur", message: "请输入" },
         ],
-        "tProjectCompany.paidCapital": [
-          { required: true, trigger: "blur", message: "请输入" },
-        ],
+        // "tProjectCompany.paidCapital": [
+        //   { required: true, trigger: "blur", message: "请输入" },
+        // ],
         "tProjectCompany.businessAddress": [
           { required: true, trigger: "blur", message: "请输入" },
         ],
@@ -851,16 +851,20 @@ export default {
             this.form.listFile = this.fileList;
             this.form.bpFile = this.fileListBP;
             this.form.otherFile = this.fileListOther;
-            this.form.tProjectCompany.registeredCapital =
-              this.form.tProjectCompany.registeredCapital
-                .replace(/[^0-9.]/g, "")
-                .replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/, "$1$2.$3")
-                .replace(/-/g, "");
-            this.form.tProjectCompany.paidCapital =
-              this.form.tProjectCompany.paidCapital
-                .replace(/[^0-9.]/g, "")
-                .replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/, "$1$2.$3")
-                .replace(/-/g, "");
+            if (this.form.tProjectCompany.registeredCapital!=null) {
+              this.form.tProjectCompany.registeredCapital =
+                this.form.tProjectCompany.registeredCapital
+                  .replace(/[^0-9.]/g, "")
+                  .replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/, "$1$2.$3")
+                  .replace(/-/g, "");
+            }
+            if (this.form.tProjectCompany.paidCapital!=null) {
+              this.form.tProjectCompany.paidCapital =
+                this.form.tProjectCompany.paidCapital
+                  .replace(/[^0-9.]/g, "")
+                  .replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/, "$1$2.$3")
+                  .replace(/-/g, "");
+            }
             this.form.investValuation = this.form.investValuation
               .replace(/[^0-9.]/g, "")
               .replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3")

+ 1 - 1
ruoyi-ui/src/views/project/investOpp/audit.vue

@@ -601,7 +601,7 @@
             <el-button v-if="form.taskDefKey!='presidents'" type="warning" @click="handleComplete(false)">驳回</el-button>
             <el-button v-if="form.taskDefKey=='presidents'" type="warning" @click="handleComplete(false)">驳回(修改)</el-button>
             <el-button v-if="form.taskDefKey=='presidents'" type="danger" @click="handleComplete(false,1)">驳回(终止)</el-button>
-            <el-button v-if="form.taskDefKey=='presidents'" type="warning" @click="handleComplete(false,0)">观望</el-button>
+<!--            <el-button v-if="form.taskDefKey=='presidents'" type="warning" @click="handleComplete(false,0)">观望</el-button>-->
 <!--          </div>-->
         </el-form-item>
       </el-form>

+ 29 - 25
ruoyi-ui/src/views/project/investOpp/edit.vue

@@ -610,24 +610,24 @@ export default {
         "tProjectCompany.companyName": [
           { required: true, trigger: "blur", message: "请输入" },
         ],
-        "tProjectCompany.companyCode": [
-          { required: true, trigger: "blur", message: "请输入" },
-        ],
-        "tProjectCompany.startTime": [
-          { required: true, trigger: "blur", message: "请选择" },
-        ],
-        "tProjectCompany.endTime": [
-          { required: true, trigger: "blur", message: "请选择" },
-        ],
-        "tProjectCompany.registeredCapital": [
-          { required: true, trigger: "blur", message: "请输入" },
-        ],
+        // "tProjectCompany.companyCode": [
+        //   { required: true, trigger: "blur", message: "请输入" },
+        // ],
+        // "tProjectCompany.startTime": [
+        //   { required: true, trigger: "blur", message: "请选择" },
+        // ],
+        // "tProjectCompany.endTime": [
+        //   { required: true, trigger: "blur", message: "请选择" },
+        // ],
+        // "tProjectCompany.registeredCapital": [
+        //   { required: true, trigger: "blur", message: "请输入" },
+        // ],
         "tProjectCompany.registeredAddress": [
           { required: true, trigger: "blur", message: "请输入" },
         ],
-        "tProjectCompany.paidCapital": [
-          { required: true, trigger: "blur", message: "请输入" },
-        ],
+        // "tProjectCompany.paidCapital": [
+        //   { required: true, trigger: "blur", message: "请输入" },
+        // ],
         "tProjectCompany.businessAddress": [
           { required: true, trigger: "blur", message: "请输入" },
         ],
@@ -851,16 +851,20 @@ export default {
             this.form.listFile = this.fileList;
             this.form.bpFile = this.fileListBP;
             this.form.otherFile = this.fileListOther;
-            this.form.tProjectCompany.registeredCapital =
-              this.form.tProjectCompany.registeredCapital
-                .replace(/[^0-9.]/g, "")
-                .replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/, "$1$2.$3")
-                .replace(/-/g, "");
-            this.form.tProjectCompany.paidCapital =
-              this.form.tProjectCompany.paidCapital
-                .replace(/[^0-9.]/g, "")
-                .replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/, "$1$2.$3")
-                .replace(/-/g, "");
+            if (this.form.tProjectCompany.registeredCapital!=null) {
+              this.form.tProjectCompany.registeredCapital =
+                this.form.tProjectCompany.registeredCapital
+                  .replace(/[^0-9.]/g, "")
+                  .replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/, "$1$2.$3")
+                  .replace(/-/g, "");
+            }
+            if (this.form.tProjectCompany.paidCapital!=null) {
+              this.form.tProjectCompany.paidCapital =
+                this.form.tProjectCompany.paidCapital
+                  .replace(/[^0-9.]/g, "")
+                  .replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/, "$1$2.$3")
+                  .replace(/-/g, "");
+            }
             this.form.investValuation = this.form.investValuation
               .replace(/[^0-9.]/g, "")
               .replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3")

+ 6 - 39
ruoyi-ui/src/views/project/investOpp/myTask.vue

@@ -89,7 +89,7 @@
               align="center"
             ></el-table-column>
             <!-- <el-table-column label="主键id" align="center" prop="id" /> -->
-            <el-table-column label="项目名称" align="center" prop="projectName">
+            <el-table-column label="项目名称" align="center" prop="projectName" width="200">
               <template slot-scope="scope">
                 <div
                   :title="scope.row.projectName"
@@ -109,17 +109,6 @@
                 </div>
               </template>
             </el-table-column>
-            <el-table-column
-              label="项目所属城市"
-              align="center"
-              prop="tProjectCompany.registeredAddress"
-            >
-              <template slot-scope="scope">
-                <div :title="scope.row.tProjectCompany.registeredAddress">
-                  {{ scope.row.tProjectCompany.registeredAddress }}
-                </div>
-              </template>
-            </el-table-column>
             <el-table-column label="所属行业" align="center" prop="industry"
             ><template slot-scope="scope">
               <dict-tag
@@ -255,7 +244,7 @@
                 </div>
               </template>
             </el-table-column>
-            <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
+            <el-table-column label="操作" align="center" width="90" class-name="small-padding fixed-width">
               <template slot-scope="scope">
                 <el-button v-if="scope.row.taskDefKey=='modifyApply'" type="text" @click="handleEdit(scope.row)">处理</el-button>
                 <template v-else>
@@ -302,7 +291,7 @@
               align="center"
             ></el-table-column>
             <!-- <el-table-column label="主键id" align="center" prop="id" /> -->
-            <el-table-column label="项目名称" align="center" prop="projectName">
+            <el-table-column label="项目名称" align="center" prop="projectName" width="200">
               <template slot-scope="scope">
                 <div
                   :title="scope.row.projectName"
@@ -322,17 +311,6 @@
                 </div>
               </template>
             </el-table-column>
-            <el-table-column
-              label="项目所属城市"
-              align="center"
-              prop="tProjectCompany.registeredAddress"
-            >
-              <template slot-scope="scope">
-                <div :title="scope.row.tProjectCompany.registeredAddress">
-                  {{ scope.row.tProjectCompany.registeredAddress }}
-                </div>
-              </template>
-            </el-table-column>
             <el-table-column label="所属行业" align="center" prop="industry"
             ><template slot-scope="scope">
               <dict-tag
@@ -462,7 +440,7 @@
                 </div>
               </template>
             </el-table-column>
-            <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
+            <el-table-column label="操作" align="center" width="70" class-name="small-padding fixed-width">
               <template slot-scope="scope">
                 <el-button type="text" size="small" @click="handleDetail(scope.row)">详情</el-button>
               </template>
@@ -496,7 +474,7 @@
               align="center"
             ></el-table-column>
             <!-- <el-table-column label="主键id" align="center" prop="id" /> -->
-            <el-table-column label="项目名称" align="center" prop="projectName">
+            <el-table-column label="项目名称" align="center" prop="projectName" width="200">
               <template slot-scope="scope">
                 <div
                   :title="scope.row.projectName"
@@ -516,17 +494,6 @@
                 </div>
               </template>
             </el-table-column>
-            <el-table-column
-              label="项目所属城市"
-              align="center"
-              prop="tProjectCompany.registeredAddress"
-            >
-              <template slot-scope="scope">
-                <div :title="scope.row.tProjectCompany.registeredAddress">
-                  {{ scope.row.tProjectCompany.registeredAddress }}
-                </div>
-              </template>
-            </el-table-column>
             <el-table-column label="所属行业" align="center" prop="industry"
             ><template slot-scope="scope">
               <dict-tag
@@ -653,7 +620,7 @@
                 </div>
               </template>
             </el-table-column>
-            <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
+            <el-table-column label="操作" align="center" width="70" class-name="small-padding fixed-width">
               <template slot-scope="scope">
                 <el-button type="text" size="small" @click="handleDetail(scope.row)">详情</el-button>
               </template>

+ 4 - 2
ruoyi-ui/src/views/project/investigate/audit.vue

@@ -474,12 +474,14 @@ export default {
             this.$refs.fileItems1.listFile = [];
             this.$refs.fileItems1.handleButton();
             this.$refs.fileItems1.getListFileBusinessId(that.dueForm.id,"11");
+            if(response.data.taskDefKey==='president') {
+              this.$refs.financeFileItem.handleButton();
+              this.$refs.legalFileItem.handleButton();
+            }
             //项目行研报告
-            this.$refs.financeFileItem.handleButton();
             this.$refs.financeFileItem.fileList = [];
             this.$refs.financeFileItem.getListFileBusinessId(that.dueForm.id, "14");
             //项目技术报告
-            this.$refs.legalFileItem.handleButton();
             this.$refs.legalFileItem.fileList = [];
             this.$refs.legalFileItem.getListFileBusinessId(that.dueForm.id, "15");
             //其他

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

@@ -62,7 +62,7 @@
               align="center"
             ></el-table-column>
             <!-- <el-table-column label="主键id" align="center" prop="id" /> -->
-            <el-table-column label="项目名称" align="center" prop="projectName">
+            <el-table-column label="项目名称" align="center" prop="projectName" width="200">
               <template slot-scope="scope">
                 <div
                   :title="scope.row.projectName"
@@ -174,7 +174,7 @@
               </template>
             </el-table-column>
             <!-- fixed="right" -->
-            <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
+            <el-table-column label="操作" align="center" width="90" class-name="small-padding fixed-width">
               <template slot-scope="scope">
                 <el-button v-if="scope.row.taskDefKey=='modifyApply'" type="text" @click="handleEdit(scope.row)">处理</el-button>
                 <template v-else>
@@ -221,7 +221,7 @@
               align="center"
             ></el-table-column>
             <!-- <el-table-column label="主键id" align="center" prop="id" /> -->
-            <el-table-column label="项目名称" align="center" prop="projectName">
+            <el-table-column label="项目名称" align="center" prop="projectName" width="200">
               <template slot-scope="scope">
                 <div
                   :title="scope.row.projectName"
@@ -336,7 +336,7 @@
               </template>
             </el-table-column>
             <!-- fixed="right" -->
-            <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
+            <el-table-column label="操作" align="center" width="70" class-name="small-padding fixed-width">
               <template slot-scope="scope">
                 <el-button type="text" size="small" @click="handleDetail(scope.row)">详情</el-button>
               </template>
@@ -370,7 +370,7 @@
               align="center"
             ></el-table-column>
             <!-- <el-table-column label="主键id" align="center" prop="id" /> -->
-            <el-table-column label="项目名称" align="center" prop="projectName">
+            <el-table-column label="项目名称" align="center" prop="projectName" width="200">
               <template slot-scope="scope">
                 <div
                   :title="scope.row.projectName"
@@ -481,7 +481,7 @@
                 </div>
               </template>
             </el-table-column>
-            <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
+            <el-table-column label="操作" align="center" width="70" class-name="small-padding fixed-width">
               <template slot-scope="scope">
                 <el-button type="text" size="small" @click="handleDetail(scope.row)">详情</el-button>
               </template>

+ 1 - 0
ruoyi-ui/src/views/project/meetingList.vue

@@ -943,6 +943,7 @@ import {
 } from "@/api/invest/meeting";
 import {approvalStart} from "@/api/project/approval/pool";
 import {decisionStart} from "@/api/project/decision/pool";
+import {terminationStart} from "@/api/project/termination/pool";
 import projectItem from "../invest/components/projectItem";
 import projectItemLX from "./approval/projectItem";
 import projectItemTJ from "./decision/projectItem";

+ 6 - 6
ruoyi-ui/src/views/project/termination/myTask.vue

@@ -46,7 +46,7 @@
               width="50"
               align="center"
             ></el-table-column>
-            <el-table-column label="项目名称" align="center" prop="projectName">
+            <el-table-column label="项目名称" align="center" prop="projectName" width="200">
               <template slot-scope="scope">
                 <div
                   :title="scope.row.projectName"
@@ -163,7 +163,7 @@
                 </div>
               </template>
             </el-table-column>
-            <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
+            <el-table-column label="操作" align="center" width="90" class-name="small-padding fixed-width">
               <template slot-scope="scope">
 
                 <el-button v-if="scope.row.taskDefKey=='modifyApply'" type="text" @click="handleEdit(scope.row)">处理</el-button>
@@ -211,7 +211,7 @@
               align="center"
             ></el-table-column>
             <!-- <el-table-column label="主键id" align="center" prop="id" /> -->
-            <el-table-column label="项目名称" align="center" prop="projectName">
+            <el-table-column label="项目名称" align="center" prop="projectName" width="200">
               <template slot-scope="scope">
                 <div
                   :title="scope.row.projectName"
@@ -331,7 +331,7 @@
                 </div>
               </template>
             </el-table-column>
-            <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
+            <el-table-column label="操作" align="center" width="70" class-name="small-padding fixed-width">
               <template slot-scope="scope">
                 <el-button type="text" size="small" @click="handleDetail(scope.row)">详情</el-button>
               </template>
@@ -365,7 +365,7 @@
               align="center"
             ></el-table-column>
             <!-- <el-table-column label="主键id" align="center" prop="id" /> -->
-            <el-table-column label="项目名称" align="center" prop="projectName">
+            <el-table-column label="项目名称" align="center" prop="projectName" width="200">
               <template slot-scope="scope">
                 <div
                   :title="scope.row.projectName"
@@ -482,7 +482,7 @@
                 </div>
               </template>
             </el-table-column>
-            <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
+            <el-table-column label="操作" align="center" width="70" class-name="small-padding fixed-width">
               <template slot-scope="scope">
                 <el-button type="text" size="small" @click="handleDetail(scope.row)">详情</el-button>
               </template>