sangwenwei 7 mesiacov pred
rodič
commit
56b8504f1c

+ 4 - 1
src/main/java/com/jeeplus/modules/act/web/ActTaskController.java

@@ -260,6 +260,9 @@ public class ActTaskController extends BaseController {
 							}else if(r==null&&"yjfk".equals(role.getEnname())){
 								a.setRoleName("意见反馈人");
 								a.setAssigneeName(user.getName());
+							}else if(r==null&&("jfsh".equals(role.getEnname())||"jffh".equals(role.getEnname()))){
+								a.setRoleName("甲方审核");
+								a.setAssigneeName(user.getName());
 							}
 						}
 						a.setTaskName(activityProcess.getActivity().getName());
@@ -357,7 +360,7 @@ public class ActTaskController extends BaseController {
 							a.setAssigneeName(UserUtils.get(lists.get(lists.size() - 1).getCreateBy().getId()).getName());
 						}else if("wjbc".equals(role.getEnname()) && !activityProcess.getCreateBy().getId().equals(activityProcess.getUpdateBy().getId())){
 							a.setRoleName("提资需求补充人");
-							a.setAssigneeName(UserUtils.get(lists.get(lists.size() - 1).getUpdateBy().getId()).getName());
+							a.setAssigneeName(UserUtils.get(activityProcess.getUpdateBy().getId()).getName());
 						}else if("wjbc".equals(role.getEnname()) && activityProcess.getCreateBy().getId().equals(activityProcess.getUpdateBy().getId())){
 							a.setRoleName("提资需求补充人");
 						}else if("yjfk".equals(role.getEnname())){

+ 2 - 0
src/main/java/com/jeeplus/modules/externalUnit/dao/ExternalUnitCapitalDemandDao.java

@@ -12,4 +12,6 @@ public interface ExternalUnitCapitalDemandDao extends CrudDao<ExternalUnitCapita
     List<ExternalUnitCapitalDemand> findByProId(ExternalUnitCapitalDemand externalUnitCapitalDemand);
 
     void updateProcessInstanceId(ExternalUnitCapitalDemand capitalDemand);
+
+    List<ExternalUnitCapitalDemand> findByProjectId(@Param("projectId") String projectId);
 }

+ 1 - 0
src/main/java/com/jeeplus/modules/externalUnit/dao/ExternalUnitProjectRecordsDao.java

@@ -11,5 +11,6 @@ import java.util.List;
 @MyBatisDao
 public interface ExternalUnitProjectRecordsDao extends CrudDao<ExternalUnitProjectRecords> {
     public List<User> isDelFalg(@Param("projectId") String projectId, @Param("delFlag")String delFlag );
+    public List<User> findJf(@Param("projectId") String projectId, @Param("delFlag")String delFlag );
 
 }

+ 10 - 0
src/main/java/com/jeeplus/modules/externalUnit/entity/ExternalUnitCapitalDemand.java

@@ -33,6 +33,16 @@ public class ExternalUnitCapitalDemand extends ActEntity<ExternalUnitCapitalDema
 
     private String ext; //是否转办
 
+    private String canDel; //驳回且流程结束的数据可以删除
+
+    public String getCanDel() {
+        return canDel;
+    }
+
+    public void setCanDel(String canDel) {
+        this.canDel = canDel;
+    }
+
     public String getExt() {
         return ext;
     }

+ 190 - 36
src/main/java/com/jeeplus/modules/externalUnit/service/ExternalUnitCapitalDemandService.java

@@ -8,6 +8,7 @@ import com.jeeplus.common.utils.StringUtils;
 import com.jeeplus.modules.act.entity.Act;
 import com.jeeplus.modules.act.service.ActTaskService;
 import com.jeeplus.modules.externalUnit.dao.ExternalUnitCapitalDemandDao;
+import com.jeeplus.modules.externalUnit.dao.ExternalUnitProjectRecordsDao;
 import com.jeeplus.modules.externalUnit.entity.ExternalUnitCapitalDemand;
 import com.jeeplus.modules.externalUnit.entity.ExternalUnitProjectRecords;
 import com.jeeplus.modules.externalUnit.entity.ExternalUnitWorkClientAttachment;
@@ -84,6 +85,9 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
     @Autowired
     private WorkActivityProcessDao workActivityProcessDao;
 
+    @Autowired
+    private ExternalUnitProjectRecordsDao unitProjectRecordsDao;
+
 
 
     public ExternalUnitCapitalDemand get(String id) {
@@ -142,16 +146,23 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
                 );
         long s6=System.currentTimeMillis();
         List<User> users = new ArrayList<>();
+        List<User> jfsh = new ArrayList<>();
         List<User> wjbc = new ArrayList<>();
+        List<User> jffh = new ArrayList<>();
         if (StringUtils.isNotBlank(capitalDemand.getId())){
             //通知添加流程实例ID
             WorkProjectNotify notify = new WorkProjectNotify();
             notify.setNotifyId(capitalDemand.getId());
             workProjectNotifyService.readByNotifyId(notify);
         }
-        //文件补充审核
+        //甲方审核
+        List<User> members = unitProjectRecordsDao.findJf(capitalDemand.getProject().getId(), "");
+        jfsh.addAll(members);
+        //文件补充
         User user1 = UserUtils.get(capitalDemand.getExaminer());
         wjbc.add(user1);
+        //甲方复核
+        jffh.addAll(members);
         long s7=System.currentTimeMillis();
         if (StringUtils.isNotBlank(workActivityMenu.getId())) {
             workProjectNotify.setNotifyRole("");
@@ -187,21 +198,22 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
             }
             workProjectNotify.setId("");
         } else {
-            if (wjbc.size()==0 ){
+            if (jfsh.size()==0 ){
                 capitalDemand.setStatus("1");//暂存
                 this.save(capitalDemand);
             }
-            if (wjbc.size()==0){
+            if (jfsh.size()==0){
                 return "流程审批人不能为空,请联系管理员!";
             }
-            variables.put("wjbcCount",wjbc.size());
-            variables.put("wjbcList",wjbc);
+            variables.put("jfshCount",jfsh.size());
+            variables.put("jfshList",jfsh);
             processType = "capitalDemand";
-            users.addAll(wjbc);
+            users.addAll(jfsh);
         }
         for (User user : users){
             workProjectNotify.setUser(user);
             workProjectNotify.setId("");
+            workProjectNotify.setNotifyRole("甲方审核");
             workProjectNotifyService
                     .save(workProjectNotify);
             Map<String,Object> extras = new HashMap<>();
@@ -242,11 +254,15 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
             workActivityProcess.setProcessInstanceId(processInstance.getId());
             workActivityProcess.setIsApproval("0");
             workActivityProcessService.save(workActivityProcess);
-				/*workActivityProcess.setCount(2);
+				workActivityProcess.setCount(2);
 				workActivityProcess.setId("");
-				workActivityProcessService.save(workActivityProcess);*/
-            workActivityProcessService.insertAuditsByType(wjbc,processInstance.getId(),1,1);
-            //workActivityProcessService.insertAuditsByType(fpglys,processInstance.getId(),2,0);
+				workActivityProcessService.save(workActivityProcess);
+            workActivityProcess.setCount(3);
+            workActivityProcess.setId("");
+            workActivityProcessService.save(workActivityProcess);
+            workActivityProcessService.insertAuditsByType(jfsh,processInstance.getId(),1,1);
+            workActivityProcessService.insertAuditsByType(wjbc,processInstance.getId(),2,1);
+            workActivityProcessService.insertAuditsByType(jffh,processInstance.getId(),3,1);
         }
         return "";
 
@@ -259,7 +275,7 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
      * @return
      */
     @Transactional(readOnly = false)
-    public String auditSaveBranch(ExternalUnitCapitalDemand capitalDemand, List<User> auditUsers) {
+    public String auditSaveBranch(ExternalUnitCapitalDemand capitalDemand, List<User> auditUsers) throws Exception {
 
         String userName = UserUtils.get(capitalDemand.getCreateBy().getId()).getName();
         Office office = officeService.get(capitalDemand.getOfficeId());
@@ -354,24 +370,59 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
                     workActivityProcess.setId("");
                 }
                 // 审核环节
-                if ("wjbc".equals(taskDefKey) && count.contains("1")) {
+                if ("jfsh".equals(taskDefKey) && count.contains("1")) {
                     taskCount = "1";
                     exp = "pass";
                     if ("yes".equals(capitalDemand.getAct().getFlag())) {
                         //审核通过处理
-                        notifyRole = "项目-"+capitalDemand.getProject().getName()+"提资需求审核完成";
+                        workActivityProcessService.insertAuditsByType(auditUsers,capitalDemand.getProcessInstanceId(),2,1);
+                        notifyRole = "文件补充";
+                        workActivityProcess.setIsApproval("1");
+                        enname = "wjbc";
+                        vars.put("wjbcList", auditUsers);
+                        vars.put("wjbcCount",auditUsers.size());
+
+                    }
+//                    else {
+//                        notifyRole = "项目-"+capitalDemand.getProject().getName()+"提资需求调整申请";
+//                        workActivityProcess.setIsApproval("2");
+//                    }
+                    break;
+                } else if ("wjbc".equals(taskDefKey) && count.contains("2")) {
+                    taskCount = "2";
+                    exp = "pass";
+                    if ("yes".equals(capitalDemand.getAct().getFlag())) {
+                        //审核通过处理
+                        workActivityProcessService.insertAuditsByType(auditUsers,capitalDemand.getProcessInstanceId(),3,1);
+                        notifyRole = "甲方复核";
                         workActivityProcess.setIsApproval("1");
+                        enname = "jffh";
+                        vars.put("jffhList", auditUsers);
+                        vars.put("jffhCount",auditUsers.size());
                     } else {
                         notifyRole = "项目-"+capitalDemand.getProject().getName()+"提资需求调整申请";
                         workActivityProcess.setIsApproval("2");
                     }
                     break;
+                } else if ("jffh".equals(taskDefKey) && count.contains("3")) {
+                    taskCount = "3";
+                    exp = "pass";
+                    if ("yes".equals(capitalDemand.getAct().getFlag())) {
+                        //审核通过处理
+                        notifyRole = "项目-"+capitalDemand.getProject().getName()+"提资需求审核完成";
+                        workActivityProcess.setIsApproval("1");
+                    }
+//                    else {
+//                        notifyRole = "项目-"+capitalDemand.getProject().getName()+"提资需求调整申请";
+//                        workActivityProcess.setIsApproval("2");
+//                    }
+                    break;
                 } else if ("modifyApply".equals(taskDefKey)&& count.contains("0")) {
-                    notifyRole = "文件补充审批";
+                    notifyRole = "甲方审批";
                     taskCount = "0";
                     exp = "pass";
                     workActivityProcess.setCount(0);
-                    enname ="wjbc";
+                    enname ="jfsh";
                     if (!"yes".equals(capitalDemand.getAct().getFlag())) {
                         capitalDemand.setStatus("3");
                     }
@@ -421,6 +472,8 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
                                             capitalDemand.getProcessInstanceId(),new Date()));
 
                 } else {
+                    str =  "项目-"+capitalDemand.getProject().getName()+"提资需求被驳回" ;
+                    title = "项目-"+capitalDemand.getProject().getName()+"提资需求被驳回";
                     WorkProjectNotify notify = new WorkProjectNotify();
                     notify.setNotifyId(capitalDemand.getId());
                     userList = workProjectNotifyService.readByNotifyId(notify);
@@ -441,6 +494,7 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
                     }
                 }
                 workActivityProcessService.deleteProcessIdAuditUsers(capitalDemand.getProcessInstanceId());
+                endInvalidate(capitalDemand);
             }else{
                 if (StringUtils.isNotBlank(workActivityMenu.getProcessType()) && !workActivityMenu.getProcessType().equals("capitalDemand")) {
                     WorkProjectNotify notify = new WorkProjectNotify();
@@ -474,7 +528,7 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
                                 .save(workProjectNotify1);
                         if (!"modifyApply".equals(taskDefKey)){
                             Map<String,Object> extras = new HashMap<>();
-                            if ("wjbc".equals(taskDefKey) ){
+                            if ("wjbc".equals(taskDefKey) || "jffh".equals(taskDefKey)){
                                 extras.put("type","7001");
                             }else {
                                 extras.put("type","7002");
@@ -508,8 +562,8 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
                         users.add( capitalDemand.getCreateBy());
                     } else {
                         if (StringUtils.isNotBlank(enname)) {//驳回重新申请待办
-                            title = "项目-"+capitalDemand.getProject().getName()+"提资需求重新申请,待审批";
-                            str = "项目-"+capitalDemand.getProject().getName()+"提资需求重新申请,待审批";
+                            title = "项目-"+capitalDemand.getProject().getName()+"提资需求待审批";
+                            str = "项目-"+capitalDemand.getProject().getName()+"提资需求待审批";
                             WorkProjectNotify notify = new WorkProjectNotify();
                             notify.setNotifyId(capitalDemand.getId());
                             userList = workProjectNotifyService.readByNotifyId(notify);
@@ -533,7 +587,7 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
                                         .save(workProjectNotify);
                                 if (!"modifyApply".equals(taskDefKey)){
                                     Map<String,Object> extras = new HashMap<>();
-                                    if ("wjbc".equals(taskDefKey)){
+                                    if ("jfsh".equals(taskDefKey)){
                                         extras.put("type","7001");
                                     }else {
                                         extras.put("type","7002");
@@ -668,6 +722,64 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
     }
 
     /**
+     * 驳回流程终止
+     */
+    @Transactional(readOnly = false)
+    public void endInvalidate(ExternalUnitCapitalDemand capitalDemand) {
+        try {
+            String invalidateProcessInstanceId = capitalDemand.getProcessInstanceId();
+            //将流程图中尚未走到的task的流程追踪信息逻辑删除,添加一条"终止"流程追踪信息
+            WorkActivityProcess process = new WorkActivityProcess();
+            process.setProcessInstanceId(capitalDemand.getProcessInstanceId());
+            process.setIsApproval("0");
+            WorkActivityProcess workActivityProcess = new WorkActivityProcess();
+            workActivityProcess.setProcessInstanceId(capitalDemand.getProcessInstanceId());
+            List<WorkActivityProcess> processList = workActivityProcessService.findList(workActivityProcess);
+            WorkProjectNotify notify = new WorkProjectNotify();
+            notify.setNotifyId(capitalDemand.getId());
+            List<User> userList = workProjectNotifyService.readByNotifyId(notify);
+            if (userList!=null && userList.size()!=0) {
+                for (User u : userList) {
+                    User user = UserUtils.get(u.getId());
+                    UserUtils.pushMeIm(user.getId());
+                }
+            }
+            if(processList!=null && processList.size()>0){
+                for (int i =0;i<processList.size();i++) {
+                    WorkActivityProcess p = processList.get(i);
+                    if(com.jeeplus.common.utils.StringUtils.isNotBlank(p.getIsApproval()) && "0".equals(p.getIsApproval())){
+                        p.setDelFlag("1");
+                        p.setIsApproval("-1");
+                        workActivityProcessDao.updateDelFlagAndIsApproval(p);
+                    }
+                }
+                WorkActivityProcess pro = new WorkActivityProcess();
+                pro.setId("");
+                pro.preInsert();
+                pro.setDelFlag("0");
+                pro.setRemarks("[流程终止]");
+                pro.setProcessKey(processList.get(0).getProcessKey());
+                pro.setIsApproval("1");
+                pro.setProcessInstanceId(processList.get(0).getProcessInstanceId());
+                pro.setCount(0);
+                workActivityProcessDao.insert(pro);
+            }
+
+            //结束该流程,设为"撤销"状态
+//            actTaskService.endProcessInstance(invalidateProcessInstanceId,"提资需求申请-流程终止");
+
+        }catch (ActivitiObjectNotFoundException e){
+            System.err.println("提资需求驳回异常,因为这个流程已不存在!");
+            e.printStackTrace();
+            logger.error("Exception e:"+e);
+        }
+        catch (Exception e) {
+            e.printStackTrace();
+            logger.error("Exception e:"+e);
+        }
+    }
+
+    /**
      * 删除操作
      * @param capitalDemand
      * @return
@@ -775,8 +887,8 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
                     workActivityProcess.setId("");
                 }
                 // 审核环节
-                if ("wjbc".equals(taskDefKey) && count.contains("1")) {
-                    taskCount = "1";
+                if ("wjbc".equals(taskDefKey) && count.contains("2")) {
+                    taskCount = "2";
                     exp = "pass";
                     if ("yes".equals(capitalDemand.getAct().getFlag())) {
                         //审核通过处理
@@ -786,11 +898,11 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
                     }
                     break;
                 } else if ("modifyApply".equals(taskDefKey)&& count.contains("0")) {
-                    notifyRole = "文件补充审批";
+                    notifyRole = "甲方审批";
                     taskCount = "0";
                     exp = "pass";
                     workActivityProcess.setCount(0);
-                    enname ="wjbc";
+                    enname ="jfsh";
                     if (!"yes".equals(capitalDemand.getAct().getFlag())) {
                         capitalDemand.setStatus("3");
                     }
@@ -849,7 +961,7 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
         WorkActivityProcess workActivityProcess1 = new WorkActivityProcess();
         workActivityProcess1.setId(IdGen.uuid());
         workActivityProcess1.setProcessKey("capitalDemand");
-        workActivityProcess1.setCount(1);
+        workActivityProcess1.setCount(2);
         workActivityProcess1.setProcessInstanceId(capitalDemand.getProcessInstanceId());
         workActivityProcess1.setIsApproval("0");
         workActivityProcess1.setCreateBy(createUser);
@@ -909,7 +1021,7 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
 
         dao.update(capitalDemand);
         //上传附件
-        if (CollectionUtils.isNotEmpty(capitalDemand.getWorkAttachments())){
+         if (CollectionUtils.isNotEmpty(capitalDemand.getWorkAttachments())){
             for (ExternalUnitWorkClientAttachment workClientAttachment : capitalDemand.getWorkAttachments()){
                 if (workClientAttachment.getId() == null){
                     continue;
@@ -1033,24 +1145,59 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
                     workActivityProcess.setId("");
                 }
                 // 审核环节
-                if ("wjbc".equals(taskDefKey) && count.contains("1")) {
+                if ("jfsh".equals(taskDefKey) && count.contains("1")) {
                     taskCount = "1";
                     exp = "pass";
                     if ("yes".equals(capitalDemand.getAct().getFlag())) {
                         //审核通过处理
-                        notifyRole = "项目-"+capitalDemand.getProject().getName()+"提资需求审核完成";
+                        workActivityProcessService.insertAuditsByType(auditUsers,capitalDemand.getProcessInstanceId(),2,1);
+                        notifyRole = "文件补充";
+                        workActivityProcess.setIsApproval("1");
+                        enname = "wjbc";
+                        vars.put("wjbcList", auditUsers);
+                        vars.put("wjbcCount",auditUsers.size());
+
+                    }
+//                    else {
+//                        notifyRole = "项目-"+capitalDemand.getProject().getName()+"提资需求调整申请";
+//                        workActivityProcess.setIsApproval("2");
+//                    }
+                    break;
+                } else if ("wjbc".equals(taskDefKey) && count.contains("2")) {
+                    taskCount = "2";
+                    exp = "pass";
+                    if ("yes".equals(capitalDemand.getAct().getFlag())) {
+                        //审核通过处理
+                        workActivityProcessService.insertAuditsByType(auditUsers,capitalDemand.getProcessInstanceId(),3,1);
+                        notifyRole = "甲方复核";
                         workActivityProcess.setIsApproval("1");
+                        enname = "jffh";
+                        vars.put("jffhList", auditUsers);
+                        vars.put("jffhCount",auditUsers.size());
                     } else {
                         notifyRole = "项目-"+capitalDemand.getProject().getName()+"提资需求调整申请";
                         workActivityProcess.setIsApproval("2");
                     }
                     break;
+                } else if ("jffh".equals(taskDefKey) && count.contains("3")) {
+                    taskCount = "3";
+                    exp = "pass";
+                    if ("yes".equals(capitalDemand.getAct().getFlag())) {
+                        //审核通过处理
+                        notifyRole = "项目-"+capitalDemand.getProject().getName()+"提资需求审核完成";
+                        workActivityProcess.setIsApproval("1");
+                    }
+//                    else {
+//                        notifyRole = "项目-"+capitalDemand.getProject().getName()+"提资需求调整申请";
+//                        workActivityProcess.setIsApproval("2");
+//                    }
+                    break;
                 } else if ("modifyApply".equals(taskDefKey)&& count.contains("0")) {
-                    notifyRole = "文件补充审批";
+                    notifyRole = "甲方审批";
                     taskCount = "0";
                     exp = "pass";
                     workActivityProcess.setCount(0);
-                    enname ="wjbc";
+                    enname ="jfsh";
                     if (!"yes".equals(capitalDemand.getAct().getFlag())) {
                         capitalDemand.setStatus("3");
                     }
@@ -1061,6 +1208,8 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
             }
         }
         Boolean state = null;
+        //审核
+        taskService.resolveTask(capitalDemand.getAct().getTaskId());
 
         WorkProjectNotify nowWorkProjectNotify = workProjectNotifyService.processingInfo(capitalDemand.getProcessInstanceId());
         // 设置意见
@@ -1072,12 +1221,14 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
         workActivityProcessService.updateProcess(workActivityProcess,workActivityMenu,key,taskCount,capitalDemand.getProcessInstanceId(),taskDefKey,"modifyApply",capitalDemand.getAct().getFlag(),comment, activities);
         List<User> users = new ArrayList<>();
         List<User> userList = new ArrayList<>();
-        //审核
-        taskService.resolveTask(capitalDemand.getAct().getTaskId());
+
+
+        actTaskService.complete(capitalDemand.getAct().getTaskId(), capitalDemand.getAct().getProcInsId(), capitalDemand.getAct().getComment(), vars);
+
 
         state = actTaskService.isProcessEnd(capitalDemand.getAct().getProcInsId());
 
-        if ("yes".equals(capitalDemand.getAct().getFlag())) {
+        if (!state) {
             str =  "项目-"+capitalDemand.getProject().getName()+"提资需求申请成功" ;
             title = "项目-"+capitalDemand.getProject().getName()+"提资需求申请成功";
             users.add(capitalDemand.getCreateBy());
@@ -1100,6 +1251,8 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
                                         capitalDemand.getProcessInstanceId(),new Date()));
 
             } else {
+                str =  "项目-"+capitalDemand.getProject().getName()+"提资需求被驳回" ;
+                title = "项目-"+capitalDemand.getProject().getName()+"提资需求被驳回";
                 WorkProjectNotify notify = new WorkProjectNotify();
                 notify.setNotifyId(capitalDemand.getId());
                 userList = workProjectNotifyService.readByNotifyId(notify);
@@ -1120,6 +1273,7 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
                 }
             }
             workActivityProcessService.deleteProcessIdAuditUsers(capitalDemand.getProcessInstanceId());
+            endInvalidate(capitalDemand);
         }else{
             if (StringUtils.isNotBlank(workActivityMenu.getProcessType()) && !workActivityMenu.getProcessType().equals("capitalDemand")) {
                 WorkProjectNotify notify = new WorkProjectNotify();
@@ -1153,7 +1307,7 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
                             .save(workProjectNotify1);
                     if (!"modifyApply".equals(taskDefKey)){
                         Map<String,Object> extras = new HashMap<>();
-                        if ("wjbc".equals(taskDefKey) ){
+                        if ("wjbc".equals(taskDefKey) || "jffh".equals(taskDefKey)){
                             extras.put("type","7001");
                         }else {
                             extras.put("type","7002");
@@ -1187,8 +1341,8 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
                     users.add( capitalDemand.getCreateBy());
                 } else {
                     if (StringUtils.isNotBlank(enname)) {//驳回重新申请待办
-                        title = "项目-"+capitalDemand.getProject().getName()+"提资需求重新申请,待审批";
-                        str = "项目-"+capitalDemand.getProject().getName()+"提资需求重新申请,待审批";
+                        title = "项目-"+capitalDemand.getProject().getName()+"提资需求待审批";
+                        str = "项目-"+capitalDemand.getProject().getName()+"提资需求待审批";
                         WorkProjectNotify notify = new WorkProjectNotify();
                         notify.setNotifyId(capitalDemand.getId());
                         userList = workProjectNotifyService.readByNotifyId(notify);
@@ -1212,7 +1366,7 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
                                     .save(workProjectNotify);
                             if (!"modifyApply".equals(taskDefKey)){
                                 Map<String,Object> extras = new HashMap<>();
-                                if ("wjbc".equals(taskDefKey)){
+                                if ("jfsh".equals(taskDefKey)){
                                     extras.put("type","7001");
                                 }else {
                                     extras.put("type","7002");

+ 64 - 11
src/main/java/com/jeeplus/modules/externalUnit/service/ExternalUnitProjectRecordsService.java

@@ -6,6 +6,7 @@ import com.jeeplus.common.utils.Collections3;
 import com.jeeplus.common.utils.IdGen;
 import com.jeeplus.common.utils.MenuStatusEnum;
 import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.modules.act.service.ActTaskService;
 import com.jeeplus.modules.examplesingle.entity.ExampleSingle;
 import com.jeeplus.modules.externalUnit.dao.ExternalUnitCapitalDemandDao;
 import com.jeeplus.modules.externalUnit.dao.ExternalUnitFeedbackDao;
@@ -19,12 +20,15 @@ import com.jeeplus.modules.sys.service.WorkattachmentService;
 import com.jeeplus.modules.sys.utils.UserUtils;
 import com.jeeplus.modules.workclientinfo.dao.WorkClientAttachmentDao;
 import com.jeeplus.modules.workclientinfo.entity.WorkClientAttachment;
+import org.activiti.engine.runtime.ProcessInstance;
+import org.activiti.engine.task.Task;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
 @Service
@@ -49,6 +53,9 @@ public class ExternalUnitProjectRecordsService extends CrudService<ExternalUnitP
     @Autowired
     private WorkClientAttachmentDao workClientAttachmentDao;
 
+    @Autowired
+    private ActTaskService actTaskService;
+
 
     public ExternalUnitProjectRecords get(String id) {
         return super.get(id);
@@ -104,11 +111,11 @@ public class ExternalUnitProjectRecordsService extends CrudService<ExternalUnitP
         projectRecords.setCompany(company);
         projectRecords.setOffice(office);
         if (StringUtils.isNotBlank(projectRecords.getMemberIds())){
-            if (projectRecords.getMemberIds().contains(",")){
-                projectRecords.setProjectMember(projectRecords.getMemberIds().substring(0,projectRecords.getMemberIds().lastIndexOf(",")));
-            }else {
+//            if (projectRecords.getMemberIds().contains(",")){
+//                projectRecords.setProjectMember(projectRecords.getMemberIds().substring(0,projectRecords.getMemberIds().lastIndexOf(",")));
+//            }else {
                 projectRecords.setProjectMember(projectRecords.getMemberIds());
-            }
+//            }
         }else {
             projectRecords.setProjectMember("");
         }
@@ -125,8 +132,8 @@ public class ExternalUnitProjectRecordsService extends CrudService<ExternalUnitP
             //保存项目组成员
             ExternalUnitProjectUser externalUnitProjectUser = new ExternalUnitProjectUser();
             if (projectRecords.getMemberIds().contains(",")){
-                String substring = projectRecords.getMemberIds().substring(0, projectRecords.getMemberIds().lastIndexOf(","));
-                String[] split = substring.split(",");
+//                String substring = projectRecords.getMemberIds().substring(0, projectRecords.getMemberIds().lastIndexOf(","));
+                String[] split = projectRecords.getMemberIds().split(",");
                 for (String s : split) {
                     externalUnitProjectUser.setProjectId(projectRecords.getId());
                     externalUnitProjectUser.setUserId(s);
@@ -177,15 +184,48 @@ public class ExternalUnitProjectRecordsService extends CrudService<ExternalUnitP
         workClientAttachment.setAttachmentName(projectRecords.getFileName());
         workClientAttachment.setBeginDate(projectRecords.getFileBeginDate());
         workClientAttachment.setEndDate(projectRecords.getFileEndDate());
-        int count = workClientAttachmentDao.queryFileCount(workClientAttachment);
-        page.setCount(count);
-        page.setCountFlag(false);
-        workClientAttachment.setPage(page);
+//        int count = workClientAttachmentDao.queryFileCount(workClientAttachment);
+//        page.setCount(count);
+//        page.setCountFlag(false);
+//        workClientAttachment.setPage(page);
         List<ExternalUnitWorkClientAttachment> attachmentList = workattachmentService.getAttachmentListExter(workClientAttachment);
+        //获取项目下审核未完成的提资需求信息
+        List<ExternalUnitCapitalDemand> capitalDemandList = capitalDemandDao.findByProjectId(projectRecords.getId());
+        ArrayList<String> ids = new ArrayList<>();
+        if (capitalDemandList != null && capitalDemandList.size() > 0){
+            for (ExternalUnitCapitalDemand capitalDemand : capitalDemandList) {
+                ids.add(capitalDemand.getId());
+            }
+        }
+        //把查询出来的文件信息中包含这些id的文件给去除掉
+        for (Iterator<ExternalUnitWorkClientAttachment> iterator = attachmentList.iterator(); iterator.hasNext(); ) {
+            ExternalUnitWorkClientAttachment attachment = iterator.next();
+            if (ids.contains(attachment.getAttachmentId())) {
+                iterator.remove();  // 删除符合条件的文件
+            }
+        }
 
         workattachmentService.exterunitAttachmentManageOnUrl(attachmentList);
 
-        page.setList(attachmentList);
+        attachmentList.sort((a, b) -> b.getCreateDate().compareTo(a.getCreateDate()));
+        // 处理分页逻辑
+        int totalRecords = attachmentList.size(); // 总记录数
+        page.setCount(totalRecords);  // 设置总记录数
+
+        // 计算分页偏移量
+        int startRow = (page.getPageNo() - 1) * page.getPageSize();
+        int endRow = Math.min(startRow + page.getPageSize(), totalRecords);
+
+        // 对数据进行分页切割
+        List<ExternalUnitWorkClientAttachment> pagedList = attachmentList.subList(startRow, endRow);
+
+        // 设置分页后的数据
+        page.setList(pagedList);
+
+        // 你还可以根据需要设置分页的其他信息,如是否有下一页、上一页等
+        page.setCountFlag(false);
+
+        workClientAttachment.setPage(page);
 
         return page;
     }
@@ -246,6 +286,19 @@ public class ExternalUnitProjectRecordsService extends CrudService<ExternalUnitP
         page.setCountFlag(false);
         externalUnitCapitalDemand.setPage(page);
         List<ExternalUnitCapitalDemand> capitalDemandList = capitalDemandDao.findByProId(externalUnitCapitalDemand);
+        //遍历集合,查看被驳回的流程是否流程结束, canDel = "1",表示可以删除
+        for (ExternalUnitCapitalDemand capitalDemand : capitalDemandList) {
+            capitalDemand.setCanDel("0");
+            if (StringUtils.isNotBlank(capitalDemand.getStatus()) && StringUtils.isNotBlank(capitalDemand.getProcessInstanceId())){
+                if (capitalDemand.getStatus().equals("4")){
+                    ProcessInstance processInstance = actTaskService.getProcIns(capitalDemand.getProcessInstanceId());
+                    List<Task> taskList = actTaskService.getCurrentTaskList(processInstance);
+                    if (taskList != null && taskList.size()==0){
+                        capitalDemand.setCanDel("1");
+                    }
+                }
+            }
+        }
         page.setList(capitalDemandList);
 
         return page;

+ 28 - 5
src/main/java/com/jeeplus/modules/externalUnit/web/ExternalUnitCapitalDemandController.java

@@ -16,6 +16,7 @@ import com.jeeplus.modules.externalUnit.service.ExternalUnitCapitalDemandService
 import com.jeeplus.modules.externalUnit.service.ExternalUnitProjectRecordsService;
 import com.jeeplus.modules.signatureManagement.electronicSignature.entity.DistrictDirectorApplication;
 import com.jeeplus.modules.sys.entity.Office;
+import com.jeeplus.modules.sys.entity.Role;
 import com.jeeplus.modules.sys.entity.User;
 import com.jeeplus.modules.sys.service.OfficeService;
 import com.jeeplus.modules.sys.utils.UserUtils;
@@ -126,11 +127,24 @@ public class ExternalUnitCapitalDemandController extends BaseController {
                 String[] split = externalUnitProjectRecords.getProjectMember().split(",");
                 for (String s : split) {
                     User user = UserUtils.get(s);
-                    users.add(user);
+                    if (user.getRoleList() != null){
+                        for (Role role : user.getRoleList()) {
+                            if (role.getEnname().equals("sgf")){
+                                users.add(user);
+                            }
+                        }
+                    }
+
                 }
             }else {
                 User user = UserUtils.get(externalUnitProjectRecords.getProjectMember());
-                users.add(user);
+                if (user.getRoleList() != null){
+                    for (Role role : user.getRoleList()) {
+                        if (role.getEnname().equals("sgf")){
+                            users.add(user);
+                        }
+                    }
+                }
             }
         }
 
@@ -249,10 +263,19 @@ public class ExternalUnitCapitalDemandController extends BaseController {
             List<User> users = null;
             //所属部门
             Office office = officeService.get(capitalDemand.getOfficeId());
-            if ("wjbc".equals(taskDefKey)){
-                users = UserUtils.getByProssType(capitalDemand.getProcessInstanceId(), 1);
+            if ("jfsh".equals(taskDefKey)){
+                users = UserUtils.getByProssType(capitalDemand.getProcessInstanceId(), 2);
+                if (users == null)
+                    users = UserUtils.getByRoleActivityEnname("wjbc", 3, office.getId(), "5", capitalDemand.getCreateBy());
+
+            }else if ("wjbc".equals(taskDefKey)){
+                users = UserUtils.getByProssType(capitalDemand.getProcessInstanceId(), 3);
+                if (users == null)
+                    users = UserUtils.getByRoleActivityEnname("jffh", 3, office.getId(), "5", capitalDemand.getCreateBy());
+            }else if ("jffh".equals(taskDefKey)){
+                users = UserUtils.getByProssType(capitalDemand.getProcessInstanceId(), 3);
                 if (users == null)
-                    users = UserUtils.getByRoleActivityEnname("wjbc", 2, office.getId(), "5", capitalDemand.getCreateBy());
+                    users = UserUtils.getByProssType(capitalDemand.getProcessInstanceId(), 1);
 
             }else if ("modifyApply".equals(taskDefKey)){
                 users = UserUtils.getByProssType(capitalDemand.getProcessInstanceId(), 1);

+ 34 - 3
src/main/java/com/jeeplus/modules/workprojectnotify/web/WorkProjectNotifyController.java

@@ -110,6 +110,8 @@ import com.jeeplus.modules.szCenterservice.service.szCloud.SzFlowRequest;
 import com.jeeplus.modules.szCenterservice.task.SzTaskFlowService;
 import com.jeeplus.modules.szCenterservice.utils.SzConvertServiceUtil;
 import com.jeeplus.modules.test.service.act.ActTestService;
+import com.jeeplus.modules.workactivity.entity.WorkActivityProcess;
+import com.jeeplus.modules.workactivity.service.WorkActivityProcessService;
 import com.jeeplus.modules.workadministrativeatamp.entity.WorkAdministrativeAtamp;
 import com.jeeplus.modules.workadministrativeatamp.service.WorkAdministrativeAtampService;
 import com.jeeplus.modules.workaskcheckprice.entity.WorkAskCheckPrice;
@@ -600,6 +602,9 @@ public class WorkProjectNotifyController extends BaseController {
 	private ExternalUnitFeedbackService feedbackService;
 
 	@Autowired
+	private WorkActivityProcessService workActivityProcessService;
+
+	@Autowired
 	private SzFlowRequest flowRequest;
 
 	@ModelAttribute
@@ -8290,19 +8295,45 @@ public class WorkProjectNotifyController extends BaseController {
 					String[] split = members.split(",");
 					for (String s : split) {
 						User user = UserUtils.get(s);
-						users.add(user);
+						if (user.getRoleList() != null){
+							for (Role role : user.getRoleList()) {
+								if (role.getEnname().equals("sgf")){
+									users.add(user);
+								}
+							}
+						}
 					}
 				} else {
 					User user = UserUtils.get(members);
-					users.add(user);
+					if (user.getRoleList() != null){
+						for (Role role : user.getRoleList()) {
+							if (role.getEnname().equals("sgf")){
+								users.add(user);
+							}
+						}
+					}
 				}
 			}
 			model.addAttribute("projectMembers", users);
 			model.addAttribute("processInstanceId", capitalDemand.getProcessInstanceId());
+			//获取当前的流程节点
+			ProcessInstance processInstance = actTaskService.getProcIns(capitalDemand.getProcessInstanceId());
+			List<Task> taskList = actTaskService.getCurrentTaskList(processInstance);
+			String taskName = "";
+			if (taskList != null && taskList.size()>0){
+				for (Task task : taskList) {
+					taskName = task.getName();
+
+				}
+			}
 			if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
 				return "modules/externalUnit/capitalDemandFormView";
-			} else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
+			} else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus()) && taskName.equals("甲方审核")) {
+				return "modules/externalUnit/capitalDemandFormAuditJfsh";
+			}else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())&& taskName.equals("文件补充")) {
 				return "modules/externalUnit/capitalDemandFormAudit";
+			}else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus()) && taskName.equals("甲方复核")) {
+				return "modules/externalUnit/capitalDemandFormAuditJffh";
 			} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
 				return "modules/externalUnit/capitalDemandFormModify";
 			}

+ 11 - 0
src/main/resources/mappings/modules/externalUnit/ExternalUnitCapitalDemandDao.xml

@@ -51,6 +51,17 @@
         </choose>
     </select>
 
+    <select id="findByProjectId" resultType="ExternalUnitCapitalDemand">
+    select
+    <include refid="capitalDemandColumns"/>,
+    su.name as "createBy.name",
+    pr.name as "project.name"
+    from external_unit_capital_demand a
+    left join sys_user su on a.create_by = su.id
+    left join external_unit_project_records pr on a.project_id = pr.id
+    where a.project_id = #{projectId} and a.del_flag ='0' and status != '5'
+    </select>
+
     <update id="updateProcessInstanceId">
 		UPDATE external_unit_capital_demand SET
 			process_instance_id = #{processInstanceId}

+ 25 - 0
src/main/resources/mappings/modules/externalUnit/ExternalUnitProjectRecordsDao.xml

@@ -143,6 +143,31 @@
 	</select>
 
 
+	<select id="findJf" resultType="com.jeeplus.modules.sys.entity.User">
+		SELECT u.id AS "id",
+		u.no,
+		u.name,
+		u.email,
+		u.phone,
+		u.mobile,
+		u.office_id AS "office.id",
+		o.top_company AS "office.name",
+		a.del_flag AS "delFlag",
+		j.name as "basicInfo.jobGrade.name"
+		from external_unit_project_user a
+		LEFT JOIN sys_user u ON u.id = a.user_id
+		LEFT JOIN work_staff_achives w ON w.user_id = a.user_id
+		LEFT JOIN work_job_grade j ON j.id = w.job_grade
+		LEFT JOIN sys_office o ON o.id = u.office_id
+		left join sys_user_role sur on u.id = sur.user_id
+		left join sys_role sr on sur.role_id = sr.id
+		WHERE /*a.is_master = '0' AND*/ a.project_id = #{projectId} and sr.enname = 'jf'
+		<if test="delFlag !=null and delFlag !=''">
+			AND a.del_flag = #{delFlag}
+		</if>
+	</select>
+
+
 	<insert id="insert">
 		insert into external_unit_project_records(
 			id,

+ 408 - 0
src/main/webapp/webpage/modules/externalUnit/capitalDemandFormAuditJffh.jsp

@@ -0,0 +1,408 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript" src="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.js"></script>
+	<script type="text/javascript" src="${ctxStatic}/iCheck/icheck.min.js"></script>
+	<script type="text/javascript" src="${ctxStatic}/layui/layui.js"></script>
+	<script src="${ctxStatic}/common/html/js/script.js"></script>
+
+	<link rel='stylesheet' type="text/css" href="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.css"/>
+	<link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/css/layui.css"/>
+
+	<script src="${ctxStatic}/bootstrap-select-1.12.4/js/bootstrap-select.min.js"></script>
+	<link href="${ctxStatic}/bootstrap-select-1.12.4/css/bootstrap-select.min.css" rel="stylesheet" />
+	<script src="${ctxStatic}/layer-v2.3/layui/xmSelect.js" charset="utf-8"></script>
+
+
+
+
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+			console.log('obj',obj)
+		  if(validateForm.form()){
+			  if(obj == 1) {
+				  $("#flag").val("yes");
+			  }else {
+				  $("#flag").val("no");
+			  }
+			  $("#inputForm").submit();
+			  return true;
+		  }
+		  return false;
+		}
+		$(document).ready(function() {
+
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+
+			layui.use(['form', 'layer'], function () {
+				var form = layui.form;
+				//是否转办监听器
+				form.on('radio(ext)', function(data){
+					console.log('da',data.value)
+					var span=data.value;
+					if(span== '0'){
+						$("#zbr").show();
+					}else{
+						$("#zbr").hide();
+					}
+				});
+			});
+			$('input[name="ext"]').on('ifChecked', function(event){
+				disUscc(event.target.defaultValue);
+			});
+			disUscc($('input[name="ext"]:checked').val());
+
+
+			$("#attachment_btn_conciliationRecords").click(function () {
+				$("#attachment_file_conciliationRecords").click();
+			});
+
+			$("input[name='ext']").on('ifChecked',function(event){
+				radioVal = $(this).val();
+				console.log('radioVal',radioVal)
+				if(radioVal == '0'){
+					$("#zbr").show();
+				}else{
+					$("#zbr").hide();
+				}
+			});
+		});
+		function disUscc(hasUscc) {
+			if("0"==hasUscc){
+				$("#zbr").show();
+			}else {
+				$("#zbr").hide();
+
+			}
+		}
+
+		function insertTitle(tValue){
+			console.log('insertTitle')
+			var projectId = $('#project_id').val();
+			console.log('projectId',projectId)
+			var list = "${capitalDemand.workAttachments}";
+			var size = (list.split('url')).length-1;
+			var files = $("#attachment_file_conciliationRecords")[0].files;
+			for(var i = 0;i<files.length;i++) {
+				var file = files[i];
+				var attachmentId = "";
+				var attachmentFlag = "160";
+				console.log(file);
+				var timestamp = new Date().getTime();
+				var remarks = ""
+				var storeAs = "externalUnit/"+projectId;
+				var uploadPath = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/" + storeAs;
+				/*将这段字符串存到数据库即可*/
+				var divId = "_exterProcess";
+				$("#addFile" + divId).show();
+				multipartUploadWithExter(storeAs, file, attachmentId, attachmentFlag, uploadPath, divId, size);
+			}
+			console.log('list',files)
+		}
+		function addFile() {
+			$("#attachment_file_conciliationRecords").click();
+		}
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="capitalDemand" action="${ctx}/externalUnit/capitalDemand/saveAuditDemand" method="post" class="form-horizontal">
+		<form:hidden path="project.id" id="project_id"/>
+		<form:hidden path="id"/>
+		<form:hidden path="home"/>
+		<form:hidden path="act.taskId"/>
+		<form:hidden path="act.taskName"/>
+		<form:hidden path="act.taskDefKey"/>
+		<form:hidden path="act.procInsId"/>
+		<form:hidden path="act.procDefId"/>
+		<form:hidden id="flag" path="act.flag"/>
+			<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>项目基本信息</h2></div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label"><span class="require-item">*</span>项目名称:</label>
+					<div class="layui-input-block">
+						<form:input readonly="true" path="project.name" placeholder="请输入项目名称" htmlEscape="false"  class="form-control layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label"><span class="require-item">*</span>建设方:</label>
+					<div class="layui-input-block">
+						<form:input readonly="true" path="project.projectBuilder" placeholder="请输入建设方" htmlEscape="false"  class="form-control layui-input required"/>
+
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label"><span class="require-item">*</span>建设地点:</label>
+					<div class="layui-input-block">
+						<form:input readonly="true" path="project.buildPlace" placeholder="请输入建设地点" htmlEscape="false"  class="form-control layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">创建人:</label>
+					<div class="layui-input-block">
+						<form:input path="project.createBy.name" htmlEscape="false"  readonly="true"  class="form-control  layui-input"/>
+						<form:hidden path="project.createBy.id" htmlEscape="false"   readonly="true"  class="form-control  layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 lw6 with-textarea">
+					<label class="layui-form-label ">项目备注:</label>
+					<div class="layui-input-block">
+						<form:textarea disabled="true" cssStyle="background: #f1f1f1" placeholder="请输入备注" readonly="true" path="project.remarks" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+					</div>
+				</div>
+
+			</div>
+			<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>基本信息</h2></div>
+				<div class="layui-item layui-col-sm12 lw6 with-textarea">
+					<label class="layui-form-label "><span class="require-item">*</span>备注:</label>
+					<div class="layui-input-block">
+						<form:textarea placeholder="请输入备注" readonly="true" path="remarks" htmlEscape="false" rows="4"  maxlength="255"  class="form-control required judgment"/>
+					</div>
+				</div>
+<%--				<div class="layui-item layui-col-sm6 lw6">--%>
+<%--					<label class="layui-form-label">是否转办:</label>--%>
+<%--					<div class="layui-input-block">--%>
+<%--						<form:radiobutton  class="i-checks" path="ext" value="0" label="转办"  />--%>
+<%--						<form:radiobutton  class="i-checks" path="ext" value="1" label="不转办" checked="true" />--%>
+<%--					</div>--%>
+<%--				</div>--%>
+<%--				<div id="zbr">--%>
+<%--					<div class="layui-item layui-col-sm6 lw6">--%>
+
+<%--						<label class="layui-form-label">转办人:</label>--%>
+<%--						<div class="layui-input-block">--%>
+<%--							<form:select path="turner" cssClass="form-control judgment simple-select">--%>
+<%--								<form:option value="" label=""/>--%>
+<%--								<c:forEach items="${projectMembers}" var="member">--%>
+<%--									<option value="${member.id}" <c:if test="${turner==member.id}">selected</c:if> >${member.name}</option>--%>
+<%--								</c:forEach>--%>
+<%--							</form:select>--%>
+<%--						</div>--%>
+<%--					</div>--%>
+<%--				</div>--%>
+			</div>
+			<div class="form-group-label"><h2>文件管理</h2></div>
+<%--			<div class="layui-item nav-btns">--%>
+<%--				<a id="attachment_btn_conciliationRecords" class="nav-btn nav-btn-add" title="上传文件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>--%>
+
+<%--			</div>--%>
+			<div id="addFile_exterProcess" style="display: none" class="upload-progress">
+				<span id="fileName_exterProcess"></span>
+				<b><span id="baifenbi_exterProcess"></span></b>
+				<div class="progress">
+						<%--进度条--%>
+					<div id="jindutiao_exterProcess" class="progress-bar" style="width: 0%" aria-valuenow="0">
+					</div>
+				</div>
+			</div>
+			<input id="attachment_file_conciliationRecords" type="file" multiple="multiple"
+				   style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+			<span id="attachment_title_conciliationRecords"></span>
+			<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+				<table id="upTable_conciliationRecords" class="table table-bordered table-condensed details">
+					<thead>
+					<tr>
+							<%-- <th>序号</th>--%>
+						<th>文件</th>
+						<th>上传人</th>
+						<th>上传时间</th>
+						<th width="200px">操作</th>
+					</tr>
+					</thead>
+					<tbody id="file_exterProcess">
+					<c:forEach items="${capitalDemand.workAttachments}" var="workClientAttachment"
+							   varStatus="status">
+						<tr>
+								<%-- <td>${status.index + 1}</td>--%>
+							<c:choose>
+								<c:when test="${capitalDemand.uploadMode == 2}">
+									<c:choose>
+										<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+											<td><img src="${workClientAttachment.temporaryUrl}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.temporaryUrl}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+										</c:when>
+										<c:otherwise>
+											<c:choose>
+												<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+													<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',1)">${workClientAttachment.attachmentName}</a></td>
+												</c:when>
+												<c:otherwise>
+													<c:choose>
+														<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">
+															<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',3)">${workClientAttachment.attachmentName}</a></td>
+														</c:when>
+														<c:otherwise>
+															<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',2)">${workClientAttachment.attachmentName}</a></td>
+														</c:otherwise>
+													</c:choose>
+												</c:otherwise>
+											</c:choose>
+										</c:otherwise>
+									</c:choose>
+								</c:when>
+								<c:otherwise>
+									<c:choose>
+										<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+											<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+										</c:when>
+										<c:otherwise>
+											<c:choose>
+												<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+													<td><a class="attention-info" href="javascript:void(0)"
+														   onclick="openPreview('${workClientAttachment.url}',1)">${workClientAttachment.attachmentName}</a>
+													</td>
+												</c:when>
+												<c:otherwise>
+													<c:choose>
+														<c:when test="${capitalDemand.uploadMode == 2}">
+															<c:choose>
+																<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+																	<td><img src="${workClientAttachment.temporaryUrl}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.temporaryUrl}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+																</c:when>
+																<c:otherwise>
+																	<c:choose>
+																		<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+																			<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',1)">${workClientAttachment.attachmentName}</a></td>
+																		</c:when>
+																		<c:otherwise>
+																			<c:choose>
+																				<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">
+																					<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',3)">${workClientAttachment.attachmentName}</a></td>
+																				</c:when>
+																				<c:otherwise>
+																					<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',2)">${workClientAttachment.attachmentName}</a></td>
+																				</c:otherwise>
+																			</c:choose>
+																		</c:otherwise>
+																	</c:choose>
+																</c:otherwise>
+															</c:choose>
+														</c:when>
+														<c:otherwise>
+															<c:choose>
+																<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+																	<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+																</c:when>
+																<c:otherwise>
+																	<c:choose>
+																		<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+																			<td><a href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',1)">${workClientAttachment.attachmentName}</a></td>
+																		</c:when>
+																		<c:otherwise>
+																			<c:choose>
+																				<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">
+																					<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',3)">${workClientAttachment.attachmentName}</a></td>
+																				</c:when>
+																				<c:otherwise>
+																					<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',2)">${workClientAttachment.attachmentName}</a></td>
+																				</c:otherwise>
+																			</c:choose>
+																		</c:otherwise>
+																	</c:choose>
+																</c:otherwise>
+															</c:choose>
+														</c:otherwise>
+													</c:choose>
+												</c:otherwise>
+											</c:choose>
+										</c:otherwise>
+									</c:choose>
+								</c:otherwise>
+							</c:choose>
+
+
+
+							<td>${workClientAttachment.createBy.name}</td>
+							<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+							<td class="op-td">
+								<div class="op-btn-box">
+
+										<%--附件下载删除--%>
+									<c:choose>
+										<c:when test="${capitalDemand.uploadMode == 2}">
+											<c:choose>
+												<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+													<a href="${workClientAttachment.temporaryUrl}" target="_blank" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+												</c:when>
+												<c:otherwise>
+													<a href="${workClientAttachment.temporaryUrl}" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+												</c:otherwise>
+											</c:choose>
+										</c:when>
+										<c:otherwise>
+											<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${workClientAttachment.url}');" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+										</c:otherwise>
+									</c:choose>
+									<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+										<a href="javascript:void(0)"
+										   onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteExterFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')"
+										   class="op-btn op-btn-delete"><i class="fa fa-trash"></i>&nbsp;删除</a>
+									</c:if>
+<%--									<c:if test="${workClientAttachment.collectFlag != 1}">--%>
+<%--										<a href="javascript:void(0)" onclick="collectingAccessory(this,'${ctx}/projectAccessory/projectAccessory/saveCollectAccessory','${workClientAttachment.url}','${workClientAttachment.createBy.id}','${workClientAttachment.fileSize}')" class="op-btn layui-btn-warm" >&nbsp;收藏</a>--%>
+<%--									</c:if>--%>
+								</div>
+							</td>
+						</tr>
+					</c:forEach>
+					</tbody>
+				</table>
+			</div>
+			<div>
+				<div class="form-group layui-row">
+					<div class="form-group-label"><h2>${projectNotifyType}审批流程</h2></div>
+					<div class="layui-item layui-col-xs12 form-table-container" >
+						<act:flowChart procInsId="${processInstanceId}"/>
+						<act:histoicFlow procInsId="${processInstanceId}"/>
+					</div>
+				</div>
+			</div>
+	</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 408 - 0
src/main/webapp/webpage/modules/externalUnit/capitalDemandFormAuditJfsh.jsp

@@ -0,0 +1,408 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript" src="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.js"></script>
+	<script type="text/javascript" src="${ctxStatic}/iCheck/icheck.min.js"></script>
+	<script type="text/javascript" src="${ctxStatic}/layui/layui.js"></script>
+	<script src="${ctxStatic}/common/html/js/script.js"></script>
+
+	<link rel='stylesheet' type="text/css" href="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.css"/>
+	<link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/css/layui.css"/>
+
+	<script src="${ctxStatic}/bootstrap-select-1.12.4/js/bootstrap-select.min.js"></script>
+	<link href="${ctxStatic}/bootstrap-select-1.12.4/css/bootstrap-select.min.css" rel="stylesheet" />
+	<script src="${ctxStatic}/layer-v2.3/layui/xmSelect.js" charset="utf-8"></script>
+
+
+
+
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+			console.log('obj',obj)
+		  if(validateForm.form()){
+			  if(obj == 1) {
+				  $("#flag").val("yes");
+			  }else {
+				  $("#flag").val("no");
+			  }
+			  $("#inputForm").submit();
+			  return true;
+		  }
+		  return false;
+		}
+		$(document).ready(function() {
+
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+
+			layui.use(['form', 'layer'], function () {
+				var form = layui.form;
+				//是否转办监听器
+				form.on('radio(ext)', function(data){
+					console.log('da',data.value)
+					var span=data.value;
+					if(span== '0'){
+						$("#zbr").show();
+					}else{
+						$("#zbr").hide();
+					}
+				});
+			});
+			$('input[name="ext"]').on('ifChecked', function(event){
+				disUscc(event.target.defaultValue);
+			});
+			disUscc($('input[name="ext"]:checked').val());
+
+
+			$("#attachment_btn_conciliationRecords").click(function () {
+				$("#attachment_file_conciliationRecords").click();
+			});
+
+			$("input[name='ext']").on('ifChecked',function(event){
+				radioVal = $(this).val();
+				console.log('radioVal',radioVal)
+				if(radioVal == '0'){
+					$("#zbr").show();
+				}else{
+					$("#zbr").hide();
+				}
+			});
+		});
+		function disUscc(hasUscc) {
+			if("0"==hasUscc){
+				$("#zbr").show();
+			}else {
+				$("#zbr").hide();
+
+			}
+		}
+
+		function insertTitle(tValue){
+			console.log('insertTitle')
+			var projectId = $('#project_id').val();
+			console.log('projectId',projectId)
+			var list = "${capitalDemand.workAttachments}";
+			var size = (list.split('url')).length-1;
+			var files = $("#attachment_file_conciliationRecords")[0].files;
+			for(var i = 0;i<files.length;i++) {
+				var file = files[i];
+				var attachmentId = "";
+				var attachmentFlag = "160";
+				console.log(file);
+				var timestamp = new Date().getTime();
+				var remarks = ""
+				var storeAs = "externalUnit/"+projectId;
+				var uploadPath = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/" + storeAs;
+				/*将这段字符串存到数据库即可*/
+				var divId = "_exterProcess";
+				$("#addFile" + divId).show();
+				multipartUploadWithExter(storeAs, file, attachmentId, attachmentFlag, uploadPath, divId, size);
+			}
+			console.log('list',files)
+		}
+		function addFile() {
+			$("#attachment_file_conciliationRecords").click();
+		}
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="capitalDemand" action="${ctx}/externalUnit/capitalDemand/saveAuditDemand" method="post" class="form-horizontal">
+		<form:hidden path="project.id" id="project_id"/>
+		<form:hidden path="id"/>
+		<form:hidden path="home"/>
+		<form:hidden path="act.taskId"/>
+		<form:hidden path="act.taskName"/>
+		<form:hidden path="act.taskDefKey"/>
+		<form:hidden path="act.procInsId"/>
+		<form:hidden path="act.procDefId"/>
+		<form:hidden id="flag" path="act.flag"/>
+			<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>项目基本信息</h2></div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label"><span class="require-item">*</span>项目名称:</label>
+					<div class="layui-input-block">
+						<form:input readonly="true" path="project.name" placeholder="请输入项目名称" htmlEscape="false"  class="form-control layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label"><span class="require-item">*</span>建设方:</label>
+					<div class="layui-input-block">
+						<form:input readonly="true" path="project.projectBuilder" placeholder="请输入建设方" htmlEscape="false"  class="form-control layui-input required"/>
+
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label"><span class="require-item">*</span>建设地点:</label>
+					<div class="layui-input-block">
+						<form:input readonly="true" path="project.buildPlace" placeholder="请输入建设地点" htmlEscape="false"  class="form-control layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">创建人:</label>
+					<div class="layui-input-block">
+						<form:input path="project.createBy.name" htmlEscape="false"  readonly="true"  class="form-control  layui-input"/>
+						<form:hidden path="project.createBy.id" htmlEscape="false"   readonly="true"  class="form-control  layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 lw6 with-textarea">
+					<label class="layui-form-label ">项目备注:</label>
+					<div class="layui-input-block">
+						<form:textarea disabled="true" cssStyle="background: #f1f1f1" placeholder="请输入备注" readonly="true" path="project.remarks" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+					</div>
+				</div>
+
+			</div>
+			<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>基本信息</h2></div>
+				<div class="layui-item layui-col-sm12 lw6 with-textarea">
+					<label class="layui-form-label "><span class="require-item">*</span>备注:</label>
+					<div class="layui-input-block">
+						<form:textarea placeholder="请输入备注" readonly="true" path="remarks" htmlEscape="false" rows="4"  maxlength="255"  class="form-control required judgment"/>
+					</div>
+				</div>
+<%--				<div class="layui-item layui-col-sm6 lw6">--%>
+<%--					<label class="layui-form-label">是否转办:</label>--%>
+<%--					<div class="layui-input-block">--%>
+<%--						<form:radiobutton  class="i-checks" path="ext" value="0" label="转办"  />--%>
+<%--						<form:radiobutton  class="i-checks" path="ext" value="1" label="不转办" checked="true" />--%>
+<%--					</div>--%>
+<%--				</div>--%>
+<%--				<div id="zbr">--%>
+<%--					<div class="layui-item layui-col-sm6 lw6">--%>
+
+<%--						<label class="layui-form-label">转办人:</label>--%>
+<%--						<div class="layui-input-block">--%>
+<%--							<form:select path="turner" cssClass="form-control judgment simple-select">--%>
+<%--								<form:option value="" label=""/>--%>
+<%--								<c:forEach items="${projectMembers}" var="member">--%>
+<%--									<option value="${member.id}" <c:if test="${turner==member.id}">selected</c:if> >${member.name}</option>--%>
+<%--								</c:forEach>--%>
+<%--							</form:select>--%>
+<%--						</div>--%>
+<%--					</div>--%>
+<%--				</div>--%>
+			</div>
+<%--			<div class="form-group-label"><h2>文件管理</h2></div>--%>
+<%--			<div class="layui-item nav-btns">--%>
+<%--				<a id="attachment_btn_conciliationRecords" class="nav-btn nav-btn-add" title="上传文件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>--%>
+
+<%--			</div>--%>
+<%--			<div id="addFile_exterProcess" style="display: none" class="upload-progress">--%>
+<%--				<span id="fileName_exterProcess"></span>--%>
+<%--				<b><span id="baifenbi_exterProcess"></span></b>--%>
+<%--				<div class="progress">--%>
+<%--						&lt;%&ndash;进度条&ndash;%&gt;--%>
+<%--					<div id="jindutiao_exterProcess" class="progress-bar" style="width: 0%" aria-valuenow="0">--%>
+<%--					</div>--%>
+<%--				</div>--%>
+<%--			</div>--%>
+<%--			<input id="attachment_file_conciliationRecords" type="file" multiple="multiple"--%>
+<%--				   style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>--%>
+<%--			<span id="attachment_title_conciliationRecords"></span>--%>
+<%--			<div class="layui-item layui-col-xs12" style="padding:0 16px;">--%>
+<%--				<table id="upTable_conciliationRecords" class="table table-bordered table-condensed details">--%>
+<%--					<thead>--%>
+<%--					<tr>--%>
+<%--							&lt;%&ndash; <th>序号</th>&ndash;%&gt;--%>
+<%--						<th>文件</th>--%>
+<%--						<th>上传人</th>--%>
+<%--						<th>上传时间</th>--%>
+<%--						<th width="200px">操作</th>--%>
+<%--					</tr>--%>
+<%--					</thead>--%>
+<%--					<tbody id="file_exterProcess">--%>
+<%--					<c:forEach items="${capitalDemand.workAttachments}" var="workClientAttachment"--%>
+<%--							   varStatus="status">--%>
+<%--						<tr>--%>
+<%--								&lt;%&ndash; <td>${status.index + 1}</td>&ndash;%&gt;--%>
+<%--							<c:choose>--%>
+<%--								<c:when test="${capitalDemand.uploadMode == 2}">--%>
+<%--									<c:choose>--%>
+<%--										<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')--%>
+<%--                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')--%>
+<%--                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')--%>
+<%--                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')--%>
+<%--                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">--%>
+<%--											<td><img src="${workClientAttachment.temporaryUrl}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.temporaryUrl}','90%','90%')" alt="${workClientAttachment.attachmentName}">--%>
+<%--										</c:when>--%>
+<%--										<c:otherwise>--%>
+<%--											<c:choose>--%>
+<%--												<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">--%>
+<%--													<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',1)">${workClientAttachment.attachmentName}</a></td>--%>
+<%--												</c:when>--%>
+<%--												<c:otherwise>--%>
+<%--													<c:choose>--%>
+<%--														<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')--%>
+<%--                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')--%>
+<%--                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')--%>
+<%--                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">--%>
+<%--															<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',3)">${workClientAttachment.attachmentName}</a></td>--%>
+<%--														</c:when>--%>
+<%--														<c:otherwise>--%>
+<%--															<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',2)">${workClientAttachment.attachmentName}</a></td>--%>
+<%--														</c:otherwise>--%>
+<%--													</c:choose>--%>
+<%--												</c:otherwise>--%>
+<%--											</c:choose>--%>
+<%--										</c:otherwise>--%>
+<%--									</c:choose>--%>
+<%--								</c:when>--%>
+<%--								<c:otherwise>--%>
+<%--									<c:choose>--%>
+<%--										<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')--%>
+<%--                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')--%>
+<%--                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')--%>
+<%--                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')--%>
+<%--                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">--%>
+<%--											<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">--%>
+<%--										</c:when>--%>
+<%--										<c:otherwise>--%>
+<%--											<c:choose>--%>
+<%--												<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">--%>
+<%--													<td><a class="attention-info" href="javascript:void(0)"--%>
+<%--														   onclick="openPreview('${workClientAttachment.url}',1)">${workClientAttachment.attachmentName}</a>--%>
+<%--													</td>--%>
+<%--												</c:when>--%>
+<%--												<c:otherwise>--%>
+<%--													<c:choose>--%>
+<%--														<c:when test="${capitalDemand.uploadMode == 2}">--%>
+<%--															<c:choose>--%>
+<%--																<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')--%>
+<%--                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')--%>
+<%--                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')--%>
+<%--                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')--%>
+<%--                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">--%>
+<%--																	<td><img src="${workClientAttachment.temporaryUrl}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.temporaryUrl}','90%','90%')" alt="${workClientAttachment.attachmentName}">--%>
+<%--																</c:when>--%>
+<%--																<c:otherwise>--%>
+<%--																	<c:choose>--%>
+<%--																		<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">--%>
+<%--																			<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',1)">${workClientAttachment.attachmentName}</a></td>--%>
+<%--																		</c:when>--%>
+<%--																		<c:otherwise>--%>
+<%--																			<c:choose>--%>
+<%--																				<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')--%>
+<%--                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')--%>
+<%--                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')--%>
+<%--                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">--%>
+<%--																					<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',3)">${workClientAttachment.attachmentName}</a></td>--%>
+<%--																				</c:when>--%>
+<%--																				<c:otherwise>--%>
+<%--																					<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',2)">${workClientAttachment.attachmentName}</a></td>--%>
+<%--																				</c:otherwise>--%>
+<%--																			</c:choose>--%>
+<%--																		</c:otherwise>--%>
+<%--																	</c:choose>--%>
+<%--																</c:otherwise>--%>
+<%--															</c:choose>--%>
+<%--														</c:when>--%>
+<%--														<c:otherwise>--%>
+<%--															<c:choose>--%>
+<%--																<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')--%>
+<%--                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')--%>
+<%--                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')--%>
+<%--                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')--%>
+<%--                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">--%>
+<%--																	<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">--%>
+<%--																</c:when>--%>
+<%--																<c:otherwise>--%>
+<%--																	<c:choose>--%>
+<%--																		<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">--%>
+<%--																			<td><a href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',1)">${workClientAttachment.attachmentName}</a></td>--%>
+<%--																		</c:when>--%>
+<%--																		<c:otherwise>--%>
+<%--																			<c:choose>--%>
+<%--																				<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')--%>
+<%--                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')--%>
+<%--                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')--%>
+<%--                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">--%>
+<%--																					<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',3)">${workClientAttachment.attachmentName}</a></td>--%>
+<%--																				</c:when>--%>
+<%--																				<c:otherwise>--%>
+<%--																					<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',2)">${workClientAttachment.attachmentName}</a></td>--%>
+<%--																				</c:otherwise>--%>
+<%--																			</c:choose>--%>
+<%--																		</c:otherwise>--%>
+<%--																	</c:choose>--%>
+<%--																</c:otherwise>--%>
+<%--															</c:choose>--%>
+<%--														</c:otherwise>--%>
+<%--													</c:choose>--%>
+<%--												</c:otherwise>--%>
+<%--											</c:choose>--%>
+<%--										</c:otherwise>--%>
+<%--									</c:choose>--%>
+<%--								</c:otherwise>--%>
+<%--							</c:choose>--%>
+
+
+
+<%--							<td>${workClientAttachment.createBy.name}</td>--%>
+<%--							<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>--%>
+<%--							<td class="op-td">--%>
+<%--								<div class="op-btn-box">--%>
+
+<%--										&lt;%&ndash;附件下载删除&ndash;%&gt;--%>
+<%--									<c:choose>--%>
+<%--										<c:when test="${capitalDemand.uploadMode == 2}">--%>
+<%--											<c:choose>--%>
+<%--												<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">--%>
+<%--													<a href="${workClientAttachment.temporaryUrl}" target="_blank" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>--%>
+<%--												</c:when>--%>
+<%--												<c:otherwise>--%>
+<%--													<a href="${workClientAttachment.temporaryUrl}" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>--%>
+<%--												</c:otherwise>--%>
+<%--											</c:choose>--%>
+<%--										</c:when>--%>
+<%--										<c:otherwise>--%>
+<%--											<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${workClientAttachment.url}');" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>--%>
+<%--										</c:otherwise>--%>
+<%--									</c:choose>--%>
+<%--									<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">--%>
+<%--										<a href="javascript:void(0)"--%>
+<%--										   onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteExterFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')"--%>
+<%--										   class="op-btn op-btn-delete"><i class="fa fa-trash"></i>&nbsp;删除</a>--%>
+<%--									</c:if>--%>
+<%--&lt;%&ndash;									<c:if test="${workClientAttachment.collectFlag != 1}">&ndash;%&gt;--%>
+<%--&lt;%&ndash;										<a href="javascript:void(0)" onclick="collectingAccessory(this,'${ctx}/projectAccessory/projectAccessory/saveCollectAccessory','${workClientAttachment.url}','${workClientAttachment.createBy.id}','${workClientAttachment.fileSize}')" class="op-btn layui-btn-warm" >&nbsp;收藏</a>&ndash;%&gt;--%>
+<%--&lt;%&ndash;									</c:if>&ndash;%&gt;--%>
+<%--								</div>--%>
+<%--							</td>--%>
+<%--						</tr>--%>
+<%--					</c:forEach>--%>
+<%--					</tbody>--%>
+<%--				</table>--%>
+<%--			</div>--%>
+			<div>
+				<div class="form-group layui-row">
+					<div class="form-group-label"><h2>${projectNotifyType}审批流程</h2></div>
+					<div class="layui-item layui-col-xs12 form-table-container" >
+						<act:flowChart procInsId="${processInstanceId}"/>
+						<act:histoicFlow procInsId="${processInstanceId}"/>
+					</div>
+				</div>
+			</div>
+	</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 161 - 158
src/main/webapp/webpage/modules/externalUnit/capitalDemandFormView.jsp

@@ -182,197 +182,200 @@
 					</div>
 				</div>
 			</div>
-			<div class="form-group-label"><h2>文件管理</h2></div>
-			<div class="layui-item nav-btns">
-<%--				<a id="attachment_btn_conciliationRecords" class="nav-btn nav-btn-add" title="上传文件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>--%>
+			<c:if test="${capitalDemand.status == '5'}">
+				<div class="form-group-label"><h2>文件管理</h2></div>
+				<div class="layui-item nav-btns">
+						<%--				<a id="attachment_btn_conciliationRecords" class="nav-btn nav-btn-add" title="上传文件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>--%>
 
-			</div>
-			<div id="addFile_exterProcess" style="display: none" class="upload-progress">
-				<span id="fileName_exterProcess"></span>
-				<b><span id="baifenbi_exterProcess"></span></b>
-				<div class="progress">
-						<%--进度条--%>
-					<div id="jindutiao_exterProcess" class="progress-bar" style="width: 0%" aria-valuenow="0">
+				</div>
+				<div id="addFile_exterProcess" style="display: none" class="upload-progress">
+					<span id="fileName_exterProcess"></span>
+					<b><span id="baifenbi_exterProcess"></span></b>
+					<div class="progress">
+							<%--进度条--%>
+						<div id="jindutiao_exterProcess" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
 					</div>
 				</div>
-			</div>
-			<input id="attachment_file_conciliationRecords" type="file" multiple="multiple"
-				   style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
-			<span id="attachment_title_conciliationRecords"></span>
-			<div class="layui-item layui-col-xs12" style="padding:0 16px;">
-				<table id="upTable_conciliationRecords" class="table table-bordered table-condensed details">
-					<thead>
-					<tr>
-							<%-- <th>序号</th>--%>
-						<th>文件</th>
-						<th>上传人</th>
-						<th>上传时间</th>
-						<th width="200px">操作</th>
-					</tr>
-					</thead>
-					<tbody id="file_exterProcess">
-					<c:forEach items="${capitalDemand.workAttachments}" var="workClientAttachment"
-							   varStatus="status">
+				<input id="attachment_file_conciliationRecords" type="file" multiple="multiple"
+					   style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+				<span id="attachment_title_conciliationRecords"></span>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable_conciliationRecords" class="table table-bordered table-condensed details">
+						<thead>
 						<tr>
-								<%-- <td>${status.index + 1}</td>--%>
-							<c:choose>
-								<c:when test="${capitalDemand.uploadMode == 2}">
-									<c:choose>
-										<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+								<%-- <th>序号</th>--%>
+							<th>文件</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="200px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_exterProcess">
+						<c:forEach items="${capitalDemand.workAttachments}" var="workClientAttachment"
+								   varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${capitalDemand.uploadMode == 2}">
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
                                                    or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
                                                    or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
                                                    or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
                                                    or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
-											<td><img src="${workClientAttachment.temporaryUrl}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.temporaryUrl}','90%','90%')" alt="${workClientAttachment.attachmentName}">
-										</c:when>
-										<c:otherwise>
-											<c:choose>
-												<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
-													<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',1)">${workClientAttachment.attachmentName}</a></td>
-												</c:when>
-												<c:otherwise>
-													<c:choose>
-														<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
+												<td><img src="${workClientAttachment.temporaryUrl}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.temporaryUrl}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+											</c:when>
+											<c:otherwise>
+												<c:choose>
+													<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+														<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',1)">${workClientAttachment.attachmentName}</a></td>
+													</c:when>
+													<c:otherwise>
+														<c:choose>
+															<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
                                                        or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')
                                                        or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')
                                                        or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">
-															<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',3)">${workClientAttachment.attachmentName}</a></td>
-														</c:when>
-														<c:otherwise>
-															<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',2)">${workClientAttachment.attachmentName}</a></td>
-														</c:otherwise>
-													</c:choose>
-												</c:otherwise>
-											</c:choose>
-										</c:otherwise>
-									</c:choose>
-								</c:when>
-								<c:otherwise>
-									<c:choose>
-										<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',3)">${workClientAttachment.attachmentName}</a></td>
+															</c:when>
+															<c:otherwise>
+																<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',2)">${workClientAttachment.attachmentName}</a></td>
+															</c:otherwise>
+														</c:choose>
+													</c:otherwise>
+												</c:choose>
+											</c:otherwise>
+										</c:choose>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
                                              or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
                                              or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
                                              or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
                                              or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
-											<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
-										</c:when>
-										<c:otherwise>
-											<c:choose>
-												<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
-													<td><a class="attention-info" href="javascript:void(0)"
-														   onclick="openPreview('${workClientAttachment.url}',1)">${workClientAttachment.attachmentName}</a>
-													</td>
-												</c:when>
-												<c:otherwise>
-													<c:choose>
-														<c:when test="${capitalDemand.uploadMode == 2}">
-															<c:choose>
-																<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+												<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+											</c:when>
+											<c:otherwise>
+												<c:choose>
+													<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+														<td><a class="attention-info" href="javascript:void(0)"
+															   onclick="openPreview('${workClientAttachment.url}',1)">${workClientAttachment.attachmentName}</a>
+														</td>
+													</c:when>
+													<c:otherwise>
+														<c:choose>
+															<c:when test="${capitalDemand.uploadMode == 2}">
+																<c:choose>
+																	<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
                                        or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
                                        or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
                                        or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
                                        or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
-																	<td><img src="${workClientAttachment.temporaryUrl}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.temporaryUrl}','90%','90%')" alt="${workClientAttachment.attachmentName}">
-																</c:when>
-																<c:otherwise>
-																	<c:choose>
-																		<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
-																			<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',1)">${workClientAttachment.attachmentName}</a></td>
-																		</c:when>
-																		<c:otherwise>
-																			<c:choose>
-																				<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
+																		<td><img src="${workClientAttachment.temporaryUrl}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.temporaryUrl}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+																	</c:when>
+																	<c:otherwise>
+																		<c:choose>
+																			<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+																				<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',1)">${workClientAttachment.attachmentName}</a></td>
+																			</c:when>
+																			<c:otherwise>
+																				<c:choose>
+																					<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
                                                        or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')
                                                        or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')
                                                        or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">
-																					<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',3)">${workClientAttachment.attachmentName}</a></td>
-																				</c:when>
-																				<c:otherwise>
-																					<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',2)">${workClientAttachment.attachmentName}</a></td>
-																				</c:otherwise>
-																			</c:choose>
-																		</c:otherwise>
-																	</c:choose>
-																</c:otherwise>
-															</c:choose>
-														</c:when>
-														<c:otherwise>
-															<c:choose>
-																<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																						<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',3)">${workClientAttachment.attachmentName}</a></td>
+																					</c:when>
+																					<c:otherwise>
+																						<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',2)">${workClientAttachment.attachmentName}</a></td>
+																					</c:otherwise>
+																				</c:choose>
+																			</c:otherwise>
+																		</c:choose>
+																	</c:otherwise>
+																</c:choose>
+															</c:when>
+															<c:otherwise>
+																<c:choose>
+																	<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
                                                    or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
                                                    or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
                                                    or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
                                                    or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
-																	<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
-																</c:when>
-																<c:otherwise>
-																	<c:choose>
-																		<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
-																			<td><a href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',1)">${workClientAttachment.attachmentName}</a></td>
-																		</c:when>
-																		<c:otherwise>
-																			<c:choose>
-																				<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
+																		<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+																	</c:when>
+																	<c:otherwise>
+																		<c:choose>
+																			<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+																				<td><a href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',1)">${workClientAttachment.attachmentName}</a></td>
+																			</c:when>
+																			<c:otherwise>
+																				<c:choose>
+																					<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
                                                        or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')
                                                        or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')
                                                        or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">
-																					<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',3)">${workClientAttachment.attachmentName}</a></td>
-																				</c:when>
-																				<c:otherwise>
-																					<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',2)">${workClientAttachment.attachmentName}</a></td>
-																				</c:otherwise>
-																			</c:choose>
-																		</c:otherwise>
-																	</c:choose>
-																</c:otherwise>
-															</c:choose>
-														</c:otherwise>
-													</c:choose>
-												</c:otherwise>
-											</c:choose>
-										</c:otherwise>
-									</c:choose>
-								</c:otherwise>
-							</c:choose>
+																						<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',3)">${workClientAttachment.attachmentName}</a></td>
+																					</c:when>
+																					<c:otherwise>
+																						<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',2)">${workClientAttachment.attachmentName}</a></td>
+																					</c:otherwise>
+																				</c:choose>
+																			</c:otherwise>
+																		</c:choose>
+																	</c:otherwise>
+																</c:choose>
+															</c:otherwise>
+														</c:choose>
+													</c:otherwise>
+												</c:choose>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
 
 
 
-							<td>${workClientAttachment.createBy.name}</td>
-							<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
-							<td class="op-td">
-								<div class="op-btn-box">
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td class="op-td">
+									<div class="op-btn-box">
+
+											<%--附件下载删除--%>
+										<c:choose>
+											<c:when test="${capitalDemand.uploadMode == 2}">
+												<c:choose>
+													<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+														<a href="${workClientAttachment.temporaryUrl}" target="_blank" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+													</c:when>
+													<c:otherwise>
+														<a href="${workClientAttachment.temporaryUrl}" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+													</c:otherwise>
+												</c:choose>
+											</c:when>
+											<c:otherwise>
+												<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${workClientAttachment.url}');" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+											</c:otherwise>
+										</c:choose>
+										<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+											<a href="javascript:void(0)"
+											   onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')"
+											   class="op-btn op-btn-delete"><i class="fa fa-trash"></i>&nbsp;删除</a>
+										</c:if>
+										<c:if test="${workClientAttachment.collectFlag != 1}">
+											<a href="javascript:void(0)" onclick="collectingAccessory(this,'${ctx}/projectAccessory/projectAccessory/saveCollectAccessory','${workClientAttachment.url}','${workClientAttachment.createBy.id}','${workClientAttachment.fileSize}')" class="op-btn layui-btn-warm" >&nbsp;收藏</a>
+										</c:if>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</c:if>
 
-										<%--附件下载删除--%>
-									<c:choose>
-										<c:when test="${capitalDemand.uploadMode == 2}">
-											<c:choose>
-												<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
-													<a href="${workClientAttachment.temporaryUrl}" target="_blank" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
-												</c:when>
-												<c:otherwise>
-													<a href="${workClientAttachment.temporaryUrl}" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
-												</c:otherwise>
-											</c:choose>
-										</c:when>
-										<c:otherwise>
-											<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${workClientAttachment.url}');" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
-										</c:otherwise>
-									</c:choose>
-									<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
-										<a href="javascript:void(0)"
-										   onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')"
-										   class="op-btn op-btn-delete"><i class="fa fa-trash"></i>&nbsp;删除</a>
-									</c:if>
-									<c:if test="${workClientAttachment.collectFlag != 1}">
-										<a href="javascript:void(0)" onclick="collectingAccessory(this,'${ctx}/projectAccessory/projectAccessory/saveCollectAccessory','${workClientAttachment.url}','${workClientAttachment.createBy.id}','${workClientAttachment.fileSize}')" class="op-btn layui-btn-warm" >&nbsp;收藏</a>
-									</c:if>
-								</div>
-							</td>
-						</tr>
-					</c:forEach>
-					</tbody>
-				</table>
-			</div>
 		</form:form>
 	</div>
 </div>

+ 2 - 2
src/main/webapp/webpage/modules/externalUnit/externalUnitCapitalDemandList.jsp

@@ -347,9 +347,9 @@
 					,"projectName":"<c:out value="${demand.project.name}" escapeXml="true"/>"
 					,"packTime":"<fmt:formatDate value="${demand.createDate}" pattern="yyyy-MM-dd"/>"
 					<c:choose><c:when test="${flag == '1' or fns:getUser().id == demand.createBy.id}">
-					,"candel":	<c:choose><c:when test="${(demand.status == 1 || demand.status == 3) && fns:getUser().id == demand.createBy.id}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+					,"candel":	<c:choose><c:when test="${(demand.status == 1 || demand.status == 3 ||(demand.status == 4 && demand.canDel == '1')) && fns:getUser().id == demand.createBy.id}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
 					<c:if test="${(demand.status == 1) && fns:getUser().id == demand.createBy.id}">,"canedit":"1"</c:if>
-					<c:if test="${(demand.status == 3 or demand.status == 4) && fns:getUser().id == demand.createBy.id}">,"canedits":"1"</c:if>
+					<c:if test="${(demand.status == 3 or (demand.status == 4 && demand.canDel == '0')) && fns:getUser().id == demand.createBy.id}">,"canedits":"1"</c:if>
 					,"cancancel":<c:choose><c:when test="${demand.status == 2 && fns:getUser().id == demand.createBy.id}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
 					</c:when>
 					<c:otherwise>

+ 75 - 69
src/main/webapp/webpage/modules/externalUnit/externalUnitProjectRecordsForm.jsp

@@ -33,78 +33,84 @@
 			});
 		});
 
-		function changeUser(ids,names) {
-            $.ajax({
-                type:'POST',
-                dataType:'json',
-                url:'${ctx}/externalUnit/externalUnit/getProjectRecordUsers',
-                data:{"ids":ids},
-                cache:false,
-                success: function(data) {
-                    var str = "";
-					var userIds = $("#hiddenMemberIds").val()
-					console.log('userIds',userIds)
+		function changeUser(ids, names) {
+			$.ajax({
+				type: 'POST',
+				dataType: 'json',
+				url: '${ctx}/externalUnit/externalUnit/getProjectRecordUsers',
+				data: { "ids": ids },
+				cache: false,
+				success: function(data) {
+					var str = "";
+					var userIds = $("#hiddenMemberIds").val(); // 获取当前已选择的用户ID
+					console.log('userIds', userIds);
+
+					if (!userIds) {
+						userIds = ""; // 如果 userIds 为空,初始化为 ""
+					}
 
 					var msgInfo = "";
-                    for (var i=0; i<data.length; i++) {
-                        var msg = data[i].msg;
-                        if(msg == "del") {
-                            var id = data[i].id;
-                            $("#delFlag"+id).val("正常");
-                            $("#del"+id).css("display","inline-block");
-                        } else if (msg == "msg") {
-                            var id = data[i].id;
-                            var name = data[i].name;
-                            var office = data[i].officeId;
-                            var no = data[i].no;
-                            var mobile = data[i].mobile;
-                            var email = data[i].email;
-							if (userIds === undefined || userIds === null) {
-								userIds = "";
-							}
-							if (userIds && !userIds.endsWith(',')) {
-								userIds += ",";
+					var userIdsSet = new Set(userIds.split(',')); // 用 Set 来存储用户ID,实现去重
+
+					// 遍历返回的用户数据
+					for (var i = 0; i < data.length; i++) {
+						var msg = data[i].msg;
+						var id = data[i].id;
+
+						// 如果 msg 是 "del",表示删除操作
+						if (msg == "del") {
+							$("#delFlag" + id).val("正常");
+							$("#del" + id).css("display", "inline-block");
+						}
+						// 如果 msg 是 "msg",表示正常的用户信息
+						else if (msg == "msg") {
+							// 如果该用户ID已经存在于 userIdsSet 中,跳过
+							if (!userIdsSet.has(id)) {
+								var name = data[i].name;
+								var office = data[i].officeId;
+								var no = data[i].no;
+								var mobile = data[i].mobile;
+								var email = data[i].email;
+
+								// 将该用户ID添加到 Set 中
+								userIdsSet.add(id);
+
+								// 更新用户列表字符串
+								str += '<tr id="' + id + '">' +
+										'<td>' + no + '</td>' +
+										'<td>' + name + '</td>' +
+										'<td>' + office + '</td>' +
+										'<td>' + mobile + '</td>' +
+										'<td>' + email + '</td>' +
+										'<td>' +
+										'<span id="del' + id + '" onclick="delRow(this, \'' + id + '\')" title="移除" class="op-btn op-btn-delete"><i class="fa fa-trash"></i>&nbsp;移除</span>' +
+										'</td>' +
+										'</tr>';
 							}
-							userIds += id + ",";
-							str += '<tr id="'+id+'">' +
-                                '<td>' +
-                                no +
-                                '</td>' +
-                                '<td>' +
-                                name +
-                                '</td>' +
-                                '<td>' +
-                                office +
-                                '</td>' +
-                                '<td>' +
-                                mobile +
-                                '</td>' +
-                                '<td>' +
-                                email +
-                                '</td>' +
-                                '<td>' +
-                                '<span id="del'+id+'" onclick="delRow(this,\''+id+'\')" title="移除" class="op-btn op-btn-delete"><i class="fa fa-trash"></i>&nbsp;移除</span>' +
-                                '</td>' +
-                                '</tr>';
-                        } else {
-                            msgInfo = msg;
-                        }
-                    }
-                    $("#hiddenMemberIds").val(userIds)
-					console.log('ids',$("#hiddenMemberIds").val())
-                    $("#usersList").append(str);
-                    if (msgInfo!= null && msgInfo != '' && msgInfo!= undefined){
-                        parent.layer.msg("新增项目成员成功!"+msgInfo,{icon:1});
-                    }else {
-                        parent.layer.msg("新增项目成员成功!",{icon:1});
-                    }
-                },
-                error:function () {
-                    parent.layer.msg("获取用户信息失败!!!",{icon:2});
-                    parent.layer.close(loadingMessage);
-                }
-            });
-        }
+						} else {
+							msgInfo = msg;
+						}
+					}
+
+					// 更新隐藏的用户ID字段
+					$("#hiddenMemberIds").val(Array.from(userIdsSet).join(','));
+
+					console.log('ids', $("#hiddenMemberIds").val());
+					$("#usersList").append(str);
+
+					// 根据 msgInfo 显示不同的提示
+					if (msgInfo != null && msgInfo != '' && msgInfo != undefined) {
+						parent.layer.msg("新增项目成员成功!" + msgInfo, { icon: 1 });
+					} else {
+						parent.layer.msg("新增项目成员成功!", { icon: 1 });
+					}
+				},
+				error: function() {
+					parent.layer.msg("获取用户信息失败!!!", { icon: 2 });
+					parent.layer.close(loadingMessage);
+				}
+			});
+		}
 
         function delRow(obj,id){
 			$(obj).parent().parent().remove();