Przeglądaj źródła

外部单位-意见反馈调整及提资需求调整

sangwenwei 9 miesięcy temu
rodzic
commit
db018e390d

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

@@ -335,6 +335,9 @@ public class ActTaskController extends BaseController {
 						}else if("sqr".equals(role.getEnname())){
 							a.setRoleName("申请人");
 							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());
 						}else {
 							if (role.getEnname().contains(buffer)){
 								SysRoleActivity r = systemService.getRoleActivityByEnname(role.getEnname());
@@ -352,7 +355,7 @@ public class ActTaskController extends BaseController {
 					if (i==0){
 						a.setBeginDate(endDate);
 					}
-					if(StringUtils.isNotBlank(a.getTaskName())){
+ 					if(StringUtils.isNotBlank(a.getTaskName())){
 						if(flag == 1 && null != project) {
 							a.setBeginDate(endDate);
 						}

+ 16 - 3
src/main/java/com/jeeplus/modules/externalUnit/service/ExternalUnitCapitalDemandService.java

@@ -90,6 +90,13 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
         if (capitalDemand != null){
             ExternalUnitProjectRecords externalUnitProjectRecords = projectRecordsService.get(capitalDemand.getProjectId());
             capitalDemand.setProject(externalUnitProjectRecords);
+            //查询附件
+            WorkClientAttachment workClientAttachment = new WorkClientAttachment();
+            workClientAttachment.setAttachmentId(capitalDemand.getId());
+            workClientAttachment.setAttachmentFlag("160");
+            workClientAttachment.setDivIdType("_exterProcess");
+            List<WorkClientAttachment> attachmentList = workattachmentService.getAttachmentList(workClientAttachment);
+            capitalDemand.setWorkAttachments(attachmentList);
         }
         return capitalDemand;
     }
@@ -828,19 +835,25 @@ public class ExternalUnitCapitalDemandService extends CrudService<ExternalUnitCa
         //在流程中新增一个节点
         ArrayList<User> wjbc = new ArrayList<>();
         wjbc.add(user);
+        //创建人
+        User createUser = UserUtils.get(capitalDemand.getCreateBy().getId());
 
         WorkActivityProcess workActivityProcess1 = new WorkActivityProcess();
+        workActivityProcess1.setId(IdGen.uuid());
         workActivityProcess1.setProcessKey("capitalDemand");
         workActivityProcess1.setCount(1);
         workActivityProcess1.setProcessInstanceId(capitalDemand.getProcessInstanceId());
         workActivityProcess1.setIsApproval("0");
-        workActivityProcessService.save(workActivityProcess1);
-        workActivityProcessService.insertAuditsByType(wjbc,workActivityProcess1.getId(),1,1);
+        workActivityProcess1.setCreateBy(createUser);
+        workActivityProcess1.setCreateDate(new Date());
+        workActivityProcess1.setUpdateDate(new Date());
+        workActivityProcess1.setUpdateBy(user);
+        workActivityProcessService.saveNewProcess(workActivityProcess1);
 
 
         users.add(capitalDemand.getCreateBy()); //发起人
         User user1 = UserUtils.get(capitalDemand.getExaminer());
-        users.add(user1); //审核人
+        users.add(user); //审核人
         if (users!=null && users.size()!=0) {
             for (User u : users) {
                 UserUtils.pushIm(u.getId(),str);

+ 44 - 5
src/main/java/com/jeeplus/modules/externalUnit/service/ExternalUnitFeedbackService.java

@@ -27,15 +27,22 @@ import com.jeeplus.modules.workclientinfo.entity.WorkClientAttachment;
 import com.jeeplus.modules.workprojectnotify.entity.WorkProjectNotify;
 import com.jeeplus.modules.workprojectnotify.service.WorkProjectNotifyService;
 import com.jeeplus.modules.workprojectnotify.util.UtilNotify;
-import org.activiti.engine.ActivitiObjectNotFoundException;
-import org.activiti.engine.RuntimeService;
+import org.activiti.bpmn.model.BpmnModel;
+import org.activiti.bpmn.model.FlowNode;
+import org.activiti.bpmn.model.SequenceFlow;
+import org.activiti.engine.*;
+import org.activiti.engine.history.HistoricTaskInstance;
+import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
+import org.activiti.engine.runtime.ExecutionQuery;
 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.*;
+import java.util.stream.Collectors;
 
 @Service
 @Transactional(readOnly = true)
@@ -68,6 +75,8 @@ public class ExternalUnitFeedbackService extends CrudService<ExternalUnitFeedbac
     private ActTaskService actTaskService;
     @Autowired
     private ActivityService activityService;
+    @Autowired
+    private TaskService taskService;
 
 
     public ExternalUnitFeedback get(String id) {
@@ -347,9 +356,21 @@ public class ExternalUnitFeedbackService extends CrudService<ExternalUnitFeedbac
         String str =  "意见反馈申请";
         String title = "意见反馈申请";
         // 对不同环节的业务逻辑进行操作
+        ProcessInstance processInstance = actTaskService.getProcIns(feedback.getProcessInstanceId());
+        List<Task> taskList = actTaskService.getCurrentTaskList(processInstance);
         String taskDefKey = feedback.getAct().getTaskDefKey();
         if (!"modifyApply".equals(taskDefKey)) {
-            actTaskService.claim(feedback.getAct().getTaskId(), UserUtils.getUser().getId());
+            if (feedback.getAct().getFlag().equals("no")){
+                for (Task task : taskList) {
+                    for (User auditUser : auditUsers) {
+                        if (task.getAssignee().equals(auditUser.getId())){
+                            actTaskService.claim(task.getId(), auditUser.getId());
+                        }
+                    }
+                }
+            }else {
+                actTaskService.claim(feedback.getAct().getTaskId(), UserUtils.getUser().getId());
+            }
         }else {
             feedback.getAct().setFlag("yes");
         }
@@ -447,6 +468,7 @@ public class ExternalUnitFeedbackService extends CrudService<ExternalUnitFeedbac
                         notifyRole = "项目-"+feedback.getProject().getName()+"-发起人:"+userName+"意见反馈审核完成";
                         workActivityProcess.setIsApproval("1");
                     } else {
+                        workActivityMenu.setProcessType("reject");
                         workActivityProcess.setIsApproval("2");
                     }
                     break;
@@ -459,6 +481,7 @@ public class ExternalUnitFeedbackService extends CrudService<ExternalUnitFeedbac
                     if (!"yes".equals(feedback.getAct().getFlag())) {
                         feedback.setStatus("3");
                     }
+                    workActivityMenu.setProcessType("reject");
                     break;
                 } else if ("apply_end".equals(taskDefKey)) {
                 }
@@ -479,7 +502,19 @@ public class ExternalUnitFeedbackService extends CrudService<ExternalUnitFeedbac
 
         workActivityProcessService.updateProcess(workActivityProcess,workActivityMenu,key,taskCount,feedback.getProcessInstanceId(),taskDefKey,"modifyApply",feedback.getAct().getFlag(),comment, activities);
         // 提交流程任务
-        actTaskService.complete(feedback.getAct().getTaskId(), feedback.getAct().getProcInsId(), feedback.getAct().getComment(), vars);
+        if (feedback.getAct().getFlag().equals("no")){
+            for (Task task : taskList) {
+                for (User auditUser : auditUsers) {
+                    if (task.getAssignee().equals(auditUser.getId())){
+                        actTaskService.complete(task.getId(), feedback.getAct().getProcInsId(), feedback.getAct().getComment(), vars);
+                    }
+                }
+            }
+        }else {
+            actTaskService.complete(feedback.getAct().getTaskId(), feedback.getAct().getProcInsId(), feedback.getAct().getComment(), vars);
+        }
+
+
         state = actTaskService.isProcessEnd(feedback.getAct().getProcInsId());
 
 
@@ -530,7 +565,7 @@ public class ExternalUnitFeedbackService extends CrudService<ExternalUnitFeedbac
             }
             workActivityProcessService.deleteProcessIdAuditUsers(feedback.getProcessInstanceId());
         }else{
-            if (StringUtils.isNotBlank(workActivityMenu.getProcessType()) && !workActivityMenu.getProcessType().equals("yjfk")) {
+            if (StringUtils.isNotBlank(workActivityMenu.getProcessType()) && workActivityMenu.getProcessType().equals("feedback")) {
                 WorkProjectNotify notify = new WorkProjectNotify();
                 notify.setNotifyId(feedback.getId());
                 notify.setAuditor(UserUtils.getUser().getId());
@@ -581,6 +616,7 @@ public class ExternalUnitFeedbackService extends CrudService<ExternalUnitFeedbac
                     str = "项目-"+feedback.getProject().getName()+"-发起人:"+userName+"意见反馈申请被驳回,请重新申请";
                     WorkProjectNotify notify = new WorkProjectNotify();
                     notify.setNotifyId(feedback.getId());
+                    notify.setAuditor(UserUtils.getUser().getId());
                     userList = workProjectNotifyService.readByNotifyId(notify);
                     workProjectNotifyService
                             .save(UtilNotify
@@ -601,6 +637,7 @@ public class ExternalUnitFeedbackService extends CrudService<ExternalUnitFeedbac
                         str = "项目-"+feedback.getProject().getName()+"-发起人:"+userName+"意见反馈重新申请,待审批";
                         WorkProjectNotify notify = new WorkProjectNotify();
                         notify.setNotifyId(feedback.getId());
+                        notify.setAuditor(UserUtils.getUser().getId());
                         userList = workProjectNotifyService.readByNotifyId(notify);
                         WorkProjectNotify workProjectNotify = UtilNotify
                                 .saveNewNotify(feedback.getId(),
@@ -634,6 +671,8 @@ public class ExternalUnitFeedbackService extends CrudService<ExternalUnitFeedbac
                             }
                         }
                     }else {
+                        title = "项目-"+feedback.getProject().getName()+"-发起人:"+userName+"意见反馈重新申请,待审批";
+                        str = "项目-"+feedback.getProject().getName()+"-发起人:"+userName+"意见反馈重新申请,待审批";
                         WorkProjectNotify notify = new WorkProjectNotify();
                         notify.setNotifyId(feedback.getId());
                         userList = workProjectNotifyService.readByNotifyId(notify);

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

@@ -10,6 +10,7 @@ import com.jeeplus.common.web.BaseController;
 import com.jeeplus.modules.act.entity.Act;
 import com.jeeplus.modules.act.service.ActTaskService;
 import com.jeeplus.modules.externalUnit.entity.ExternalUnitCapitalDemand;
+import com.jeeplus.modules.externalUnit.entity.ExternalUnitFeedback;
 import com.jeeplus.modules.externalUnit.entity.ExternalUnitProjectRecords;
 import com.jeeplus.modules.externalUnit.service.ExternalUnitCapitalDemandService;
 import com.jeeplus.modules.externalUnit.service.ExternalUnitProjectRecordsService;
@@ -139,6 +140,19 @@ public class ExternalUnitCapitalDemandController extends BaseController {
     }
 
     /**
+     * 详情
+     */
+    @RequestMapping(value = "detail")
+    public String detail(ExternalUnitCapitalDemand capitalDemand, Model model){
+        //项目基本信息
+        ExternalUnitProjectRecords externalUnitProjectRecords = unitProjectRecordsService.get(capitalDemand.getProjectId());
+        capitalDemand.setProject(externalUnitProjectRecords);
+
+        model.addAttribute("capitalDemand", capitalDemand);
+        return "modules/externalUnit/capitalDemandFormView";
+    }
+
+    /**
      * 暂存  提资需求
      * @param capitalDemand
      * @param model
@@ -251,7 +265,6 @@ public class ExternalUnitCapitalDemandController extends BaseController {
                 Task task = tasks.get(0);
                 String str = "";
                 if ("no".equals(flag)){
-                    //判断当前的审核节点是否加签
                     if (task.getDelegationState() == DelegationState.PENDING){
                         str = capitalDemandService.OtherAudit(capitalDemand,users);
                         addMessage(redirectAttributes, str);
@@ -261,18 +274,24 @@ public class ExternalUnitCapitalDemandController extends BaseController {
                     }
                 }else {
                     //判断是否转办  0: 转办  1:不转办
-                    if (capitalDemand.getExt().equals("0")){
-                        str = capitalDemandService.turnToOther(capitalDemand);
-                        addMessage(redirectAttributes, str);
-                    }else {
-                        if (task.getDelegationState() == DelegationState.PENDING){
-                            str = capitalDemandService.OtherAudit(capitalDemand,users);
+                    if (StringUtils.isNotBlank(capitalDemand.getExt())){
+                        if (capitalDemand.getExt().equals("0")){
+                            str = capitalDemandService.turnToOther(capitalDemand);
                             addMessage(redirectAttributes, str);
                         }else {
-                            str = capitalDemandService.auditSaveBranch(capitalDemand,users);
-                            addMessage(redirectAttributes, str);
+                            if (task.getDelegationState() == DelegationState.PENDING){
+                                str = capitalDemandService.OtherAudit(capitalDemand,users);
+                                addMessage(redirectAttributes, str);
+                            }else {
+                                str = capitalDemandService.auditSaveBranch(capitalDemand,users);
+                                addMessage(redirectAttributes, str);
+                            }
                         }
+                    }else {
+                        str = capitalDemandService.auditSaveBranch(capitalDemand,users);
+                        addMessage(redirectAttributes, str);
                     }
+
                 }
 
             }

+ 2 - 0
src/main/java/com/jeeplus/modules/workactivity/dao/WorkActivityProcessDao.java

@@ -42,4 +42,6 @@ public interface WorkActivityProcessDao extends CrudDao<WorkActivityProcess> {
      * @return
      */
     int deleteProcessUser(@Param("processInstanceId")String processInstanceId);
+
+    void saveNewProcess(WorkActivityProcess workActivityProcess1);
 }

+ 4 - 0
src/main/java/com/jeeplus/modules/workactivity/service/WorkActivityProcessService.java

@@ -534,4 +534,8 @@ public class WorkActivityProcessService extends CrudService<WorkActivityProcessD
 	public void updateType(String processInstanceId ,String type) {
 		dao.updateType(processInstanceId,type);
 	}
+
+	public void saveNewProcess(WorkActivityProcess workActivityProcess1) {
+		dao.saveNewProcess(workActivityProcess1);
+	}
 }

+ 32 - 0
src/main/resources/mappings/modules/workactivity/WorkActivityProcessDao.xml

@@ -268,6 +268,38 @@
 		)
 	</insert>
 
+	<insert id="saveNewProcess">
+		INSERT INTO work_activity_process(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			process_key,
+			is_approval,
+			process_instance_id,
+			count,
+			activity_task,
+			activity_id
+		) VALUES (
+			#{id},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{remarks},
+			#{delFlag},
+			#{processKey},
+			#{isApproval},
+			#{processInstanceId},
+			#{count},
+			#{activityTask},
+			#{activity.id}
+		)
+	</insert>
+
 	<update id="update">
 		UPDATE work_activity_process SET
 			update_by = #{updateBy.id},

+ 1 - 1
src/main/webapp/webpage/modules/externalUnit/capitalDemandFormAdd.jsp

@@ -99,7 +99,7 @@
 						<form:select path="examiner" cssClass="form-control required judgment simple-select">
 							<form:option value="" label=""/>
 							<c:forEach items="${projectMembers}" var="member">
-								<option value="${member.id}" <c:if test="${examiner==member.id}">selected</c:if> >${member.name}</option>
+								<option value="${member.id}" <c:if test="${capitalDemand.examiner==member.id}">selected</c:if> >${member.name}</option>
 							</c:forEach>
 						</form:select>
 					</div>

+ 17 - 12
src/main/webapp/webpage/modules/externalUnit/capitalDemandFormModify.jsp

@@ -10,15 +10,20 @@
 		var validateForm;
 		function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
 			console.log('obj',obj)
-		  if(validateForm.form()){
-			  if(validateForm.form()){
-				  $("#inputForm").attr("action","${ctx}/externalUnit/capitalDemand/saveDemand");
-				  $("#inputForm").submit();
-				  return true;
-			  }else {
-				  parent.layer.msg("信息未填写完整!", {icon: 5});
-			  }
-		  }
+			if(obj == 2){
+				$("#flag").val("no");
+			}else{
+				$("#flag").val("yes");
+			}
+			if(validateForm.form()){
+				console.log('obj',validateForm.form())
+				if($("#examiner").val() == ""){
+					parent.layer.msg("请选择审核人!", {icon: 5});
+					return false;
+				}
+				$("#inputForm").submit();
+				return true;
+			}
 		  return false;
 		}
 		$(document).ready(function() {
@@ -43,7 +48,7 @@
 <body>
 <div class="single-form">
 	<div class="container">
-		<form:form id="inputForm" modelAttribute="capitalDemand" action="${ctx}/externalUnit/capitalDemand/saveDemand" method="post" class="form-horizontal">
+		<form:form id="inputForm" modelAttribute="capitalDemand" action="${ctx}/externalUnit/capitalDemand/saveAuditDemand" method="post" class="form-horizontal">
 		<form:hidden path="project.id"/>
 		<form:hidden path="id"/>
 		<form:hidden path="home"/>
@@ -90,10 +95,10 @@
 				<div class="layui-item layui-col-sm6 lw7">
 					<label class="layui-form-label"><span class="require-item">*</span>审核人:</label>
 					<div class="layui-input-block">
-						<form:select path="examiner" cssClass="form-control judgment simple-select required judgment">
+						<form:select path="examiner" cssClass="form-control simple-select required judgment">
 							<form:option value="" label=""/>
 							<c:forEach items="${projectMembers}" var="member">
-								<option value="${member.id}" <c:if test="${examiner==member.id}">selected</c:if> >${member.name}</option>
+								<option value="${member.id}" <c:if test="${capitalDemand.examiner==member.id}">selected</c:if> >${member.name}</option>
 							</c:forEach>
 						</form:select>
 					</div>

+ 374 - 0
src/main/webapp/webpage/modules/externalUnit/capitalDemandFormView.jsp

@@ -0,0 +1,374 @@
+<%@ 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 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";
+				var uploadPath = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/" + storeAs;
+				/*将这段字符串存到数据库即可*/
+				var divId = "_exterProcess";
+				$("#addFile" + divId).show();
+				multipartUploadWithSts(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"/>
+			<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 lw7">
+					<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 lw7 with-textarea">
+					<label class="layui-form-label ">备注:</label>
+					<div class="layui-input-block">
+						<form:textarea disabled="true" placeholder="请输入备注" readonly="true" path="project.remarks" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 lw7 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>
+			<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/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>
+</body>
+</html>

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

@@ -104,6 +104,7 @@
 					var body = top.layer.getChildFrame('body', index);
 					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
 					var inputForm = body.find('#inputForm');
+					console.log('input',inputForm)
 					var top_iframe;
 					if(target){
 						top_iframe = target;//如果指定了iframe,则在改frame中跳转
@@ -120,6 +121,7 @@
 					var body = top.layer.getChildFrame('body', index);
 					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
 					var inputForm = body.find('#inputForm');
+					console.log('input',inputForm)
 					var top_iframe;
 					if(target){
 						top_iframe = target;//如果指定了iframe,则在改frame中跳转
@@ -291,7 +293,7 @@
 				// {checkbox: true, fixed: true},
 				{field:'index',align:'center', title: '序号',width:80}
 				,{field:'projectName',align:'center', title: '项目名称',minWidth:200,templet:function(d){
-						return "<a class=\"attention-info\" title=\"" + d.projectName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目信息', '${ctx}/externalUnit/externalUnit/detail?id=" + d.projectId +"','95%', '95%')\">" + d.projectName + "</a>";
+						return "<a class=\"attention-info\" title=\"" + d.projectName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目信息', '${ctx}/externalUnit/capitalDemand/detail?id=" + d.id +"','95%', '95%')\">" + d.projectName + "</a>";
 					}}
 				,{field:'remarks',align:'center', title: '备注', minWidth:150}
 				,{field:'createName',align:'center', title: '创建人', minWidth:150,templet:function(d){

+ 56 - 6
src/main/webapp/webpage/modules/externalUnit/externalUnitProjectFile.jsp

@@ -35,6 +35,9 @@
 			layui.use(['form', 'layer'], function () {
 				var form = layui.form;
 			});
+			function reset() {
+				$("#searchForm").resetForm();
+			}
 			//搜索框收放
 			$('#moresee').click(function(){
 				if($('#moresees').is(':visible'))
@@ -79,6 +82,44 @@
 
 		});
 
+		function openDialog(title,url,width,height,target){
+
+			if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+				width='auto';
+				height='auto';
+			}else{//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				skin: 'two-btns',
+				maxmin: true, //开启最大化最小化按钮
+				content: url ,
+				btn: ['提交','关闭'],
+				btn1: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(1) ){
+						top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}
+					window.location.reload();
+				},
+				btn2: function(index){
+				}
+			});
+		}
+
 
 		function insertTitle(tValue){
 			console.log('insertTitle')
@@ -199,12 +240,12 @@
 			,cols: [[
 				// {checkbox: true, fixed: true},
 				{field:'index',align:'center', title: '序号',width:60}
-				,{field:'attachmentName',align:'center', title: '文件名称', width:500}
-				,{field:'type',align:'center', title: '文件类型', width:200}
-				,{field:'createName', align:'center',title: '上传人', width:200}
-				,{field:'createDate',align:'center', title: '上传时间', width:200}
-				,{field:'remarks', align:'center',title: '备注', width:200}
-				,{field:'status', align:'center',title: '状态', width:210,templet:function(d){
+				,{field:'attachmentName',align:'center', title: '文件名称', minWidth:200}
+				,{field:'type',align:'center', title: '文件类型', minWidth:100}
+				,{field:'createName', align:'center',title: '上传人', minWidth:80}
+				,{field:'createDate',align:'center', title: '上传时间', minWidth:80}
+				,{field:'remarks', align:'center',title: '备注', minWidth:80}
+				,{field:'status', align:'center',title: '状态', minWidth:120,templet:function(d){
 						var st = fileState(d.status);
 						if(st.action)
 							var xml ="<span onclick=\"openDialogView('流程追踪', '${ctx}/externalUnit/capitalDemand/getDemandProcess?id=" + d.attachmentId + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
@@ -213,6 +254,14 @@
 						return xml;
 
 					}}
+				,{field:'op', align:'center',title: '操作', minWidth:80,templet:function(d){
+					if (d.type == 'pdf')
+						var link = '<a href="' + d.temporaryUrl + '" target="_blank" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>';
+					else
+						var link = '<a href="'+ d.temporaryUrl +'" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>';
+
+						return link;
+				}}
 			]]
 			,data: [
 				<c:if test="${ not empty page.list}">
@@ -224,6 +273,7 @@
 					,"attachmentName":"${file.attachmentName}"
 					,"attachmentId":"${file.attachmentId}"
 					,"type":"${file.type}"
+					,"temporaryUrl":"${file.url}"
 					,"createName":"${file.createName}"
 					,"createDate":"<fmt:formatDate value="${file.createDate}" pattern="yyyy-MM-dd"/>"
 					,"status":

+ 9 - 14
src/main/webapp/webpage/modules/externalUnit/feedbackFormModify.jsp

@@ -15,20 +15,15 @@
 		function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
 			console.log('obj',validateForm.form())
 			console.log('obj1',obj)
+			if(obj == 2){
+				$("#flag").val("no");
+			}else{
+				$("#flag").val("yes");
+			}
 		  if(validateForm.form()){
-			  if(obj == 1){
-				  if($("#examiners").val() == ""){
-					  parent.layer.msg("请选择审核人!", {icon: 5});
-					  return false;
-				  }
-
-			  }else if(obj ==2){
-				  //暂存
-				  $("#inputForm").attr("action","${ctx}/externalUnit/feedback/store");
-			  }else if(obj ==3){
-				  console.log('1111')
-				  //暂存
-				  $("#inputForm").attr("action","${ctx}/externalUnit/feedback/store");
+			  if($("#examiners").val() == ""){
+				  parent.layer.msg("请选择审核人!", {icon: 5});
+				  return false;
 			  }
 			  $("#inputForm").submit();
 			  return true;
@@ -87,7 +82,7 @@
 <body>
 <div class="single-form">
 	<div class="container">
-		<form:form id="inputForm" modelAttribute="feedback" action="${ctx}/externalUnit/feedback/save" method="post" class="form-horizontal">
+		<form:form id="inputForm" modelAttribute="feedback" action="${ctx}/externalUnit/feedback/saveAudit" method="post" class="form-horizontal">
 		<form:hidden path="project.id" id="projectId"/>
 		<form:hidden path="id"/>
 			<form:hidden path="home"/>