Przeglądaj źródła

建设部,归档系统

lem 4 lat temu
rodzic
commit
0513560a3c
59 zmienionych plików z 8622 dodań i 136 usunięć
  1. 4 0
      src/main/java/com/jeeplus/modules/filing/approvalStage/service/ApprovalStageService.java
  2. 4 0
      src/main/java/com/jeeplus/modules/filing/approvalStage/service/EarlyStageService.java
  3. 5 0
      src/main/java/com/jeeplus/modules/filing/approvalStage/service/ProjectOverviewService.java
  4. 4 0
      src/main/java/com/jeeplus/modules/filing/approvalStage/service/StudyStageService.java
  5. 24 11
      src/main/java/com/jeeplus/modules/filing/approvalStage/web/ApprovalStageController.java
  6. 34 21
      src/main/java/com/jeeplus/modules/filing/approvalStage/web/EarlyStageController.java
  7. 16 2
      src/main/java/com/jeeplus/modules/filing/approvalStage/web/ProjectOverviewController.java
  8. 18 5
      src/main/java/com/jeeplus/modules/filing/approvalStage/web/StudyStageController.java
  9. 1 2
      src/main/java/com/jeeplus/modules/filing/basicInformation/mapper/xml/BasicInformationMapper.xml
  10. 1 0
      src/main/java/com/jeeplus/modules/filing/basicInformation/web/BasicInformationController.java
  11. 21 4
      src/main/java/com/jeeplus/modules/filing/constructionStage/entity/ConstructionStage.java
  12. 91 0
      src/main/java/com/jeeplus/modules/filing/constructionStage/entity/CostManagment.java
  13. 89 0
      src/main/java/com/jeeplus/modules/filing/constructionStage/entity/ProjectOther.java
  14. 154 0
      src/main/java/com/jeeplus/modules/filing/constructionStage/entity/ProjectSchedule.java
  15. 77 0
      src/main/java/com/jeeplus/modules/filing/constructionStage/entity/QulityAssurance.java
  16. 77 0
      src/main/java/com/jeeplus/modules/filing/constructionStage/entity/SafetyQuality.java
  17. 197 0
      src/main/java/com/jeeplus/modules/filing/constructionStage/entity/SecurityManagment.java
  18. 158 0
      src/main/java/com/jeeplus/modules/filing/constructionStage/entity/StartUP.java
  19. 31 1
      src/main/java/com/jeeplus/modules/filing/constructionStage/mapper/ConstructionStageMapper.java
  20. 442 28
      src/main/java/com/jeeplus/modules/filing/constructionStage/mapper/xml/ConstructionStageMapper.xml
  21. 89 1
      src/main/java/com/jeeplus/modules/filing/constructionStage/service/ConstructionStageService.java
  22. 699 7
      src/main/java/com/jeeplus/modules/filing/constructionStage/web/ConstructionStageController.java
  23. 5 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/service/ApplicationForService.java
  24. 5 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/service/BiddingContractService.java
  25. 6 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/service/DesignStageService.java
  26. 5 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/service/EarlyEngineeringService.java
  27. 5 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/service/LegalComplianceService.java
  28. 5 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/service/ReviewStageService.java
  29. 15 2
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/web/ApplicationForController.java
  30. 16 2
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/web/BiddingContractController.java
  31. 15 2
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/web/DesignStageController.java
  32. 16 2
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/web/EarlyEngineeringController.java
  33. 16 2
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/web/LegalComplianceController.java
  34. 16 2
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/web/ReviewStageController.java
  35. 1376 0
      src/main/java/com/jeeplus/modules/filing/filingImages/service/FilingImagesService.java
  36. 176 0
      src/main/java/com/jeeplus/modules/filing/filingImages/web/FilingImagesController.java
  37. 268 5
      src/main/webapp/webpage/modules/filing/constructionStage/constructionStageForm.jsp
  38. 230 37
      src/main/webapp/webpage/modules/filing/constructionStage/constructionStageList.js
  39. 123 0
      src/main/webapp/webpage/modules/filing/costManagment/costManagmentForm.jsp
  40. 354 0
      src/main/webapp/webpage/modules/filing/costManagment/costManagmentList.js
  41. 87 0
      src/main/webapp/webpage/modules/filing/costManagment/costManagmentList.jsp
  42. 123 0
      src/main/webapp/webpage/modules/filing/projectOther/projectOtherForm.jsp
  43. 354 0
      src/main/webapp/webpage/modules/filing/projectOther/projectOtherList.js
  44. 87 0
      src/main/webapp/webpage/modules/filing/projectOther/projectOtherList.jsp
  45. 154 0
      src/main/webapp/webpage/modules/filing/projectSchedule/projectScheduleForm.jsp
  46. 354 0
      src/main/webapp/webpage/modules/filing/projectSchedule/projectScheduleList.js
  47. 87 0
      src/main/webapp/webpage/modules/filing/projectSchedule/projectScheduleList.jsp
  48. 120 0
      src/main/webapp/webpage/modules/filing/qulityAssurance/qulityAssuranceForm.jsp
  49. 342 0
      src/main/webapp/webpage/modules/filing/qulityAssurance/qulityAssuranceList.js
  50. 87 0
      src/main/webapp/webpage/modules/filing/qulityAssurance/qulityAssuranceList.jsp
  51. 118 0
      src/main/webapp/webpage/modules/filing/safetyQuality/safetyQualityForm.jsp
  52. 354 0
      src/main/webapp/webpage/modules/filing/safetyQuality/safetyQualityList.js
  53. 87 0
      src/main/webapp/webpage/modules/filing/safetyQuality/safetyQualityList.jsp
  54. 197 0
      src/main/webapp/webpage/modules/filing/securityManagment/securityManagmentForm.jsp
  55. 429 0
      src/main/webapp/webpage/modules/filing/securityManagment/securityManagmentList.js
  56. 87 0
      src/main/webapp/webpage/modules/filing/securityManagment/securityManagmentList.jsp
  57. 179 0
      src/main/webapp/webpage/modules/filing/startUp/startUpForm.jsp
  58. 401 0
      src/main/webapp/webpage/modules/filing/startUp/startUpList.js
  59. 87 0
      src/main/webapp/webpage/modules/filing/startUp/startUpList.jsp

+ 4 - 0
src/main/java/com/jeeplus/modules/filing/approvalStage/service/ApprovalStageService.java

@@ -76,4 +76,8 @@ public class ApprovalStageService extends CrudService<ApprovalStageMapper, Appro
 	public Integer findByCode(ApprovalStage entity) {
 		return mapper.findByCode(entity);
 	}
+
+	public List<ApprovalStage> findChildList(ApprovalStage entity) {
+		return mapper.findChildList(entity);
+	}
 }

+ 4 - 0
src/main/java/com/jeeplus/modules/filing/approvalStage/service/EarlyStageService.java

@@ -77,4 +77,8 @@ public class EarlyStageService extends CrudService<EarlyStageMapper, EarlyStage>
 	public Integer findByCode(EarlyStage entity) {
 		return mapper.findByCode(entity);
 	}
+
+	public List<EarlyStage> findChildList(EarlyStage entity) {
+		return mapper.findChildList(entity);
+	}
 }

+ 5 - 0
src/main/java/com/jeeplus/modules/filing/approvalStage/service/ProjectOverviewService.java

@@ -6,6 +6,7 @@ package com.jeeplus.modules.filing.approvalStage.service;
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.service.CrudService;
 import com.jeeplus.modules.filing.approvalStage.entity.ApprovalStage;
+import com.jeeplus.modules.filing.approvalStage.entity.EarlyStage;
 import com.jeeplus.modules.filing.approvalStage.entity.ProjectOverview;
 import com.jeeplus.modules.filing.approvalStage.mapper.ApprovalStageMapper;
 import com.jeeplus.modules.filing.approvalStage.mapper.ProjectOverviewMapper;
@@ -71,4 +72,8 @@ public class ProjectOverviewService extends CrudService<ProjectOverviewMapper, P
 	public void delete(ProjectOverview entity) {
 		super.delete(entity);
 	}
+
+	public List<ProjectOverview> findChildList(ProjectOverview entity) {
+		return mapper.findChildList(entity);
+	}
 }

+ 4 - 0
src/main/java/com/jeeplus/modules/filing/approvalStage/service/StudyStageService.java

@@ -72,4 +72,8 @@ public class StudyStageService extends CrudService<StudyStageMapper, StudyStage>
 			mapper.update(entity);
 		}
 	}
+
+	public List<StudyStage> findChildList(StudyStage entity) {
+		return mapper.findChildList(entity);
+	}
 }

+ 24 - 11
src/main/java/com/jeeplus/modules/filing/approvalStage/web/ApprovalStageController.java

@@ -10,6 +10,7 @@ import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.web.BaseController;
 import com.jeeplus.modules.filing.approvalStage.entity.ApprovalStage;
 import com.jeeplus.modules.filing.approvalStage.service.ApprovalStageService;
+import com.jeeplus.modules.filing.constructionStage.entity.ConstructionStage;
 import com.jeeplus.modules.filing.filingImages.entity.FilingImages;
 import com.jeeplus.modules.filing.filingImages.service.FilingImagesService;
 import org.apache.shiro.authz.annotation.Logical;
@@ -59,7 +60,7 @@ public class ApprovalStageController extends BaseController {
 		}
 		return entity;
 	}
-	
+
 	/**
 	 * 核准阶段列表页面
 	 */
@@ -69,7 +70,7 @@ public class ApprovalStageController extends BaseController {
 		model.addAttribute("approvalStage", approvalStage);
 		return "modules/filing/approvalStage/approvalStageList";
 	}
-	
+
 		/**
 	 * 核准阶段列表数据
 	 */
@@ -91,7 +92,7 @@ public class ApprovalStageController extends BaseController {
 		return "modules/filing/approvalStage/approvalStageForm";
 	}
 
-	
+
 	/**
 	 * 保存核准阶段
 	 */
@@ -153,7 +154,7 @@ public class ApprovalStageController extends BaseController {
 		j.setMsg("删除核准阶段成功");
 		return j;
 	}
-	
+
 	/**
 	 * 批量删除核准阶段
 	 */
@@ -169,7 +170,7 @@ public class ApprovalStageController extends BaseController {
 		j.setMsg("删除核准阶段成功");
 		return j;
 	}
-	
+
 	/**
 	 * 导出excel文件
 	 */
@@ -180,8 +181,20 @@ public class ApprovalStageController extends BaseController {
 		AjaxJson j = new AjaxJson();
 		try {
             String fileName = "核准阶段"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
-            Page<ApprovalStage> page = approvalStageService.findAllPage(new Page<ApprovalStage>(request, response, -1), approvalStage);
-    		new ExportExcel("核准阶段", ApprovalStage.class).setDataList(page.getList()).write(response, fileName).dispose();
+			//查询所有父级的信息
+			List<ApprovalStage> list = approvalStageService.findList(approvalStage);
+			List<ApprovalStage> returnList = new ArrayList<>();
+			//根据父级,查询所有子级的信息
+			for (ApprovalStage a :
+					list) {
+				List<ApprovalStage> childList = approvalStageService.findChildList(a);
+				returnList.add(a);
+				for (ApprovalStage b :
+						childList) {
+					returnList.add(b);
+				}
+			}
+    		new ExportExcel("核准阶段", ApprovalStage.class).setDataList(returnList).write(response, fileName).dispose();
     		j.setSuccess(true);
     		j.setMsg("导出成功!");
     		return j;
@@ -294,14 +307,14 @@ public class ApprovalStageController extends BaseController {
 		}
 	}
 
-    
+
     @ResponseBody
     @RequestMapping(value = "detail")
 	public Map<String, Object> detail(ApprovalStage approvalStage, HttpServletRequest request, HttpServletResponse response, Model model) {
 		Page<ApprovalStage> page = approvalStageService.findChildPage(new Page<ApprovalStage>(request, response), approvalStage);
 		return getBootstrapData(page);
 	}
-	
+
 
 	/**
 	 * 导入Excel数据
@@ -325,7 +338,7 @@ public class ApprovalStageController extends BaseController {
 		}
 		return j;
     }
-	
+
 	/**
 	 * 下载导入核准阶段数据模板
 	 */
@@ -336,7 +349,7 @@ public class ApprovalStageController extends BaseController {
 		AjaxJson j = new AjaxJson();
 		try {
             String fileName = "核准阶段数据导入模板.xlsx";
-    		List<ApprovalStage> list = Lists.newArrayList(); 
+    		List<ApprovalStage> list = Lists.newArrayList();
     		new ExportExcel("核准阶段数据", ApprovalStage.class, 1).setDataList(list).write(response, fileName).dispose();
     		return null;
 		} catch (Exception e) {

+ 34 - 21
src/main/java/com/jeeplus/modules/filing/approvalStage/web/EarlyStageController.java

@@ -8,6 +8,7 @@ import com.jeeplus.common.utils.excel.ExportExcel;
 import com.jeeplus.common.utils.excel.ImportExcel;
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.filing.approvalStage.entity.ApprovalStage;
 import com.jeeplus.modules.filing.approvalStage.entity.EarlyStage;
 import com.jeeplus.modules.filing.approvalStage.service.EarlyStageService;
 import com.jeeplus.modules.filing.filingImages.entity.FilingImages;
@@ -63,7 +64,7 @@ public class EarlyStageController extends BaseController {
 	}
 	
 	/**
-	 * 核准阶段列表页面
+	 * 项目前期阶段列表页面
 	 */
 	@RequiresPermissions("test:filing:earlyStage:list")
 	@RequestMapping(value = {"list", ""})
@@ -73,7 +74,7 @@ public class EarlyStageController extends BaseController {
 	}
 	
 		/**
-	 * 核准阶段列表数据
+	 * 项目前期阶段列表数据
 	 */
 	@ResponseBody
 	@RequiresPermissions("test:filing:earlyStage:list")
@@ -84,7 +85,7 @@ public class EarlyStageController extends BaseController {
 	}
 
 	/**
-	 * 查看,增加,核准阶段表单页面
+	 * 查看,增加,项目前期阶段表单页面
 	 */
 	@RequiresPermissions(value={"test:filing:earlyStage:view","test:filing:earlyStage:add","test:filing:earlyStage:edit"},logical=Logical.OR)
 	@RequestMapping(value = "form")
@@ -95,7 +96,7 @@ public class EarlyStageController extends BaseController {
 
 
 	/**
-	 * 查看,增加,核准阶段表单页面-字类数据列表
+	 * 查看,增加,项目前期阶段表单页面-字类数据列表
 	 */
 	@RequiresPermissions(value={"test:filing:earlyStage:view","test:filing:earlyStage:add","test:filing:earlyStage:edit"},logical=Logical.OR)
 	@RequestMapping(value = "childForm")
@@ -105,7 +106,7 @@ public class EarlyStageController extends BaseController {
 	}
 	
 	/**
-	 * 保存核准阶段
+	 * 保存项目前期阶段
 	 */
 	@ResponseBody
 	@RequiresPermissions(value={"test:filing:earlyStage:add","test:filing:earlyStage:edit"},logical=Logical.OR)
@@ -124,12 +125,12 @@ public class EarlyStageController extends BaseController {
 		//新增或编辑表单保存
 		earlyStageService.save(earlyStage);//保存
 		j.setSuccess(true);
-		j.setMsg("保存核准阶段成功");
+		j.setMsg("保存项目前期阶段成功");
 		return j;
 	}
 
 	/**
-	 * 保存核准阶段
+	 * 保存项目前期阶段
 	 */
 	@ResponseBody
 	@RequiresPermissions(value={"test:filing:earlyStage:add","test:filing:earlyStage:edit"},logical=Logical.OR)
@@ -148,13 +149,13 @@ public class EarlyStageController extends BaseController {
 		//新增或编辑表单保存
 		earlyStageService.save(earlyStage);//保存
 		j.setSuccess(true);
-		j.setMsg("保存核准阶段成功");
+		j.setMsg("保存项目前期阶段成功");
 		return j;
 	}
 
 
 	/**
-	 * 删除核准阶段
+	 * 删除项目前期阶段
 	 */
 	@ResponseBody
 	@RequiresPermissions("test:filing:earlyStage:del")
@@ -162,12 +163,12 @@ public class EarlyStageController extends BaseController {
 	public AjaxJson delete(EarlyStage earlyStage) {
 		AjaxJson j = new AjaxJson();
 		earlyStageService.delete(earlyStage);
-		j.setMsg("删除核准阶段成功");
+		j.setMsg("删除项目前期阶段成功");
 		return j;
 	}
 	
 	/**
-	 * 批量删除核准阶段
+	 * 批量删除项目前期阶段
 	 */
 	@ResponseBody
 	@RequiresPermissions("test:filing:earlyStage:del")
@@ -178,7 +179,7 @@ public class EarlyStageController extends BaseController {
 		for(String id : idArray){
 			earlyStageService.delete(earlyStageService.get(id));
 		}
-		j.setMsg("删除核准阶段成功");
+		j.setMsg("删除项目前期阶段成功");
 		return j;
 	}
 	
@@ -191,15 +192,27 @@ public class EarlyStageController extends BaseController {
     public AjaxJson exportFile(EarlyStage earlyStage, HttpServletRequest request, HttpServletResponse response) {
 		AjaxJson j = new AjaxJson();
 		try {
-            String fileName = "核准阶段"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
-            Page<EarlyStage> page = earlyStageService.findAllPage(new Page<EarlyStage>(request, response, -1), earlyStage);
-    		new ExportExcel("核准阶段", EarlyStage.class).setDataList(page.getList()).write(response, fileName).dispose();
+            String fileName = "项目前期阶段"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+			//查询所有父级的信息
+			List<EarlyStage> list = earlyStageService.findList(earlyStage);
+			List<EarlyStage> returnList = new ArrayList<>();
+			//根据父级,查询所有子级的信息
+			for (EarlyStage a :
+					list) {
+				List<EarlyStage> childList = earlyStageService.findChildList(a);
+				returnList.add(a);
+				for (EarlyStage b :
+						childList) {
+					returnList.add(b);
+				}
+			}
+    		new ExportExcel("项目前期阶段", EarlyStage.class).setDataList(returnList).write(response, fileName).dispose();
     		j.setSuccess(true);
     		j.setMsg("导出成功!");
     		return j;
 		} catch (Exception e) {
 			j.setSuccess(false);
-			j.setMsg("导出核准阶段记录失败!失败信息:"+e.getMessage());
+			j.setMsg("导出项目前期阶段记录失败!失败信息:"+e.getMessage());
 		}
 			return j;
     }
@@ -330,16 +343,16 @@ public class EarlyStageController extends BaseController {
 					list) {
 				earlyStageService.save(earlyStage);
 			}
-			j.setMsg( "已成功导入条核准阶段记录");
+			j.setMsg( "已成功导入条项目前期阶段记录");
 		} catch (Exception e) {
 			j.setSuccess(false);
-			j.setMsg("导入核准阶段失败!失败信息:"+e.getMessage());
+			j.setMsg("导入项目前期阶段失败!失败信息:"+e.getMessage());
 		}
 		return j;
     }
 	
 	/**
-	 * 下载导入核准阶段数据模板
+	 * 下载导入项目前期阶段数据模板
 	 */
 	@ResponseBody
 	@RequiresPermissions("test:filing:earlyStage:import")
@@ -347,9 +360,9 @@ public class EarlyStageController extends BaseController {
      public AjaxJson importFileTemplate(HttpServletResponse response) {
 		AjaxJson j = new AjaxJson();
 		try {
-            String fileName = "核准阶段数据导入模板.xlsx";
+            String fileName = "项目前期阶段数据导入模板.xlsx";
     		List<EarlyStage> list = Lists.newArrayList(); 
-    		new ExportExcel("核准阶段数据", EarlyStage.class, 1).setDataList(list).write(response, fileName).dispose();
+    		new ExportExcel("项目前期阶段数据", EarlyStage.class, 1).setDataList(list).write(response, fileName).dispose();
     		return null;
 		} catch (Exception e) {
 			j.setSuccess(false);

+ 16 - 2
src/main/java/com/jeeplus/modules/filing/approvalStage/web/ProjectOverviewController.java

@@ -9,6 +9,7 @@ import com.jeeplus.common.utils.excel.ImportExcel;
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.web.BaseController;
 import com.jeeplus.modules.filing.approvalStage.entity.ProjectOverview;
+import com.jeeplus.modules.filing.approvalStage.entity.ProjectOverview;
 import com.jeeplus.modules.filing.approvalStage.entity.StudyStage;
 import com.jeeplus.modules.filing.approvalStage.service.ProjectOverviewService;
 import org.apache.shiro.authz.annotation.Logical;
@@ -24,6 +25,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -180,8 +182,20 @@ public class ProjectOverviewController extends BaseController {
 		AjaxJson j = new AjaxJson();
 		try {
             String fileName = "项目概述"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
-            Page<ProjectOverview> page = projectOverviewService.findAllPage(new Page<ProjectOverview>(request, response, -1), projectOverview);
-    		new ExportExcel("项目概述", ProjectOverview.class).setDataList(page.getList()).write(response, fileName).dispose();
+			//查询所有父级的信息
+			List<ProjectOverview> list = projectOverviewService.findList(projectOverview);
+			List<ProjectOverview> returnList = new ArrayList<>();
+			//根据父级,查询所有子级的信息
+			for (ProjectOverview a :
+					list) {
+				List<ProjectOverview> childList = projectOverviewService.findChildList(a);
+				returnList.add(a);
+				for (ProjectOverview b :
+						childList) {
+					returnList.add(b);
+				}
+			}
+    		new ExportExcel("项目概述", ProjectOverview.class).setDataList(returnList).write(response, fileName).dispose();
     		j.setSuccess(true);
     		j.setMsg("导出成功!");
     		return j;

+ 18 - 5
src/main/java/com/jeeplus/modules/filing/approvalStage/web/StudyStageController.java

@@ -8,10 +8,10 @@ import com.jeeplus.common.utils.excel.ExportExcel;
 import com.jeeplus.common.utils.excel.ImportExcel;
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.web.BaseController;
-import com.jeeplus.modules.filing.approvalStage.entity.ProjectOverview;
 import com.jeeplus.modules.filing.approvalStage.entity.StudyStage;
-import com.jeeplus.modules.filing.approvalStage.service.ProjectOverviewService;
-import com.jeeplus.modules.filing.approvalStage.service.ProjectOverviewService;
+import com.jeeplus.modules.filing.approvalStage.entity.StudyStage;
+import com.jeeplus.modules.filing.approvalStage.service.StudyStageService;
+import com.jeeplus.modules.filing.approvalStage.service.StudyStageService;
 import com.jeeplus.modules.filing.approvalStage.service.StudyStageService;
 import org.apache.shiro.authz.annotation.Logical;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -26,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -182,8 +183,20 @@ public class StudyStageController extends BaseController {
 		AjaxJson j = new AjaxJson();
 		try {
             String fileName = "可研阶段"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
-            Page<StudyStage> page = studyStageService.findAllPage(new Page<StudyStage>(request, response, -1), studyStage);
-    		new ExportExcel("可研阶段", StudyStage.class).setDataList(page.getList()).write(response, fileName).dispose();
+			//查询所有父级的信息
+			List<StudyStage> list = studyStageService.findList(studyStage);
+			List<StudyStage> returnList = new ArrayList<>();
+			//根据父级,查询所有子级的信息
+			for (StudyStage a :
+					list) {
+				List<StudyStage> childList = studyStageService.findChildList(a);
+				returnList.add(a);
+				for (StudyStage b :
+						childList) {
+					returnList.add(b);
+				}
+			}
+    		new ExportExcel("可研阶段", StudyStage.class).setDataList(returnList).write(response, fileName).dispose();
     		j.setSuccess(true);
     		j.setMsg("导出成功!");
     		return j;

+ 1 - 2
src/main/java/com/jeeplus/modules/filing/basicInformation/mapper/xml/BasicInformationMapper.xml

@@ -201,7 +201,7 @@
     <!--逻辑删除-->
     <update id="deleteByLogic">
         UPDATE filing_basic_information
-        SET del_flag = #{DEL_FLAG_DELETE}
+        SET del_flag = #{DEL_FLAG_DE+LETE}
         WHERE id = #{id}
     </update>
     <update id="updateChild">
@@ -298,5 +298,4 @@
         </where>
     </select>
 
-
 </mapper>

+ 1 - 0
src/main/java/com/jeeplus/modules/filing/basicInformation/web/BasicInformationController.java

@@ -47,6 +47,7 @@ public class BasicInformationController extends BaseController {
 		BasicInformation entity = null;
 		if (StringUtils.isNotBlank(id)){
 			entity = basicInformationService.get(id);
+			entity = basicInformationService.get(id);
 		}
 		if (entity == null){
 			entity = new BasicInformation();

+ 21 - 4
src/main/java/com/jeeplus/modules/filing/constructionStage/entity/ConstructionStage.java

@@ -61,7 +61,7 @@ public class ConstructionStage extends DataEntity<ConstructionStage> {
     private Date soilWaterDate;
 
     /**
-     * 附件
+     * 例会报告
      * */
     private String enclosure;
     /**
@@ -177,7 +177,7 @@ public class ConstructionStage extends DataEntity<ConstructionStage> {
     /**
      * 重要的附件等扫描件
      * */
-    private String ImportantAccessories;
+    private String importantAccessories;
 
 
     /**
@@ -213,6 +213,7 @@ public class ConstructionStage extends DataEntity<ConstructionStage> {
     }
 
     @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="开工日期", align=2, sort=4)
     public Date getCommDate() {
         return commDate;
     }
@@ -230,6 +231,7 @@ public class ConstructionStage extends DataEntity<ConstructionStage> {
     }
 
     @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="竣工日期", align=2, sort=5)
     public Date getCompDate() {
         return compDate;
     }
@@ -247,6 +249,7 @@ public class ConstructionStage extends DataEntity<ConstructionStage> {
     }
 
     @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="投运日期", align=2, sort=6)
     public Date getCossDate() {
         return cossDate;
     }
@@ -264,6 +267,7 @@ public class ConstructionStage extends DataEntity<ConstructionStage> {
     }
 
     @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="环评验收日期", align=2, sort=7)
     public Date getAcceptanceDate() {
         return acceptanceDate;
     }
@@ -273,6 +277,7 @@ public class ConstructionStage extends DataEntity<ConstructionStage> {
     }
 
     @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="水保验收日期", align=2, sort=8)
     public Date getSoilWaterDate() {
         return soilWaterDate;
     }
@@ -337,6 +342,7 @@ public class ConstructionStage extends DataEntity<ConstructionStage> {
         this.openingCommittee = openingCommittee;
     }
 
+    @ExcelField(title="调度命名编号", align=2, sort=9)
     public String getDispatchingNaming() {
         return dispatchingNaming;
     }
@@ -345,6 +351,7 @@ public class ConstructionStage extends DataEntity<ConstructionStage> {
         this.dispatchingNaming = dispatchingNaming;
     }
 
+    @ExcelField(title="安全质量量化考核成果", align=2, sort=10)
     public String getResultsSafety() {
         return resultsSafety;
     }
@@ -377,6 +384,7 @@ public class ConstructionStage extends DataEntity<ConstructionStage> {
         this.accAuditReport = accAuditReport;
     }
 
+    @ExcelField(title="增资产生的卡片信息", align=2, sort=11)
     public String getCardInformation() {
         return cardInformation;
     }
@@ -409,6 +417,7 @@ public class ConstructionStage extends DataEntity<ConstructionStage> {
         this.nameOfSubcontractor = nameOfSubcontractor;
     }
 
+    @ExcelField(title="项目地点", align=2, sort=12)
     public String getProjectLocation() {
         return projectLocation;
     }
@@ -417,6 +426,7 @@ public class ConstructionStage extends DataEntity<ConstructionStage> {
         this.projectLocation = projectLocation;
     }
 
+    @ExcelField(title="四级风险内容", align=2, sort=13)
     public String getLevelRiskContent() {
         return levelRiskContent;
     }
@@ -426,6 +436,7 @@ public class ConstructionStage extends DataEntity<ConstructionStage> {
     }
 
     @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="四级风险实施时间", align=2, sort=14)
     public Date getLevelRiskTime() {
         return levelRiskTime;
     }
@@ -435,6 +446,7 @@ public class ConstructionStage extends DataEntity<ConstructionStage> {
     }
 
     @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="“标准化开工”时间", align=2, sort=15)
     public Date getStandStartTime() {
         return standStartTime;
     }
@@ -444,6 +456,7 @@ public class ConstructionStage extends DataEntity<ConstructionStage> {
     }
 
     @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="“标准化转序”时间", align=2, sort=16)
     public Date getStandTransferTime() {
         return standTransferTime;
     }
@@ -453,6 +466,7 @@ public class ConstructionStage extends DataEntity<ConstructionStage> {
     }
 
     @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="“标准化预验收”时间", align=2, sort=17)
     public Date getStandAcceptanceTime() {
         return standAcceptanceTime;
     }
@@ -462,6 +476,7 @@ public class ConstructionStage extends DataEntity<ConstructionStage> {
     }
 
     @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="约谈日期", align=2, sort=18)
     public Date getDateOfInterview() {
         return dateOfInterview;
     }
@@ -478,6 +493,7 @@ public class ConstructionStage extends DataEntity<ConstructionStage> {
         this.mettingMinutes = mettingMinutes;
     }
 
+    @ExcelField(title="累计扣款金额", align=2, sort=19)
     public String getAccumulatedAmount() {
         return accumulatedAmount;
     }
@@ -494,6 +510,7 @@ public class ConstructionStage extends DataEntity<ConstructionStage> {
         this.deductionForm = deductionForm;
     }
 
+    @ExcelField(title="工程遗留相关事项", align=2, sort=20)
     public String getMattersLeft() {
         return mattersLeft;
     }
@@ -511,11 +528,11 @@ public class ConstructionStage extends DataEntity<ConstructionStage> {
     }
 
     public String getImportantAccessories() {
-        return ImportantAccessories;
+        return importantAccessories;
     }
 
     public void setImportantAccessories(String importantAccessories) {
-        ImportantAccessories = importantAccessories;
+        this.importantAccessories = importantAccessories;
     }
 
     public List<ConstructionStage> getChildList() {

+ 91 - 0
src/main/java/com/jeeplus/modules/filing/constructionStage/entity/CostManagment.java

@@ -0,0 +1,91 @@
+package com.jeeplus.modules.filing.constructionStage.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import com.jeeplus.core.persistence.DataEntity;
+
+import java.util.Date;
+
+public class CostManagment extends DataEntity<CostManagment> {
+    /**
+     * 项目编码
+     */
+    private String projectCode;
+
+    /**
+     * 单体编码
+     */
+    private String monomerCode;
+
+    /**
+     * 项目名称
+     */
+    private String entryName;
+
+    /**
+     * 工程结算审核报告
+     * */
+    private String settAuditReport;
+    /**
+     * 工程决算审计报告
+     * */
+    private String accAuditReport;
+    /**
+     * 增资产生的卡片信息
+     * */
+    private String cardInformation;
+
+    @ExcelField(title="项目编码", align=2, sort=1)
+    public String getProjectCode() {
+        return projectCode;
+    }
+
+    public void setProjectCode(String projectCode) {
+        this.projectCode = projectCode;
+    }
+
+    @ExcelField(title="单体编码", align=2, sort=2)
+    public String getMonomerCode() {
+        return monomerCode;
+    }
+
+    public void setMonomerCode(String monomerCode) {
+        this.monomerCode = monomerCode;
+    }
+
+    @ExcelField(title="项目名称", align=2, sort=3)
+    public String getEntryName() {
+        return entryName;
+    }
+
+    public void setEntryName(String entryName) {
+        this.entryName = entryName;
+    }
+
+    public String getSettAuditReport() {
+        return settAuditReport;
+    }
+
+    public void setSettAuditReport(String settAuditReport) {
+        this.settAuditReport = settAuditReport;
+    }
+
+    public String getAccAuditReport() {
+        return accAuditReport;
+    }
+
+    public void setAccAuditReport(String accAuditReport) {
+        this.accAuditReport = accAuditReport;
+    }
+
+    @ExcelField(title="增资产生的卡片信息", align=2, sort=4)
+    public String getCardInformation() {
+        return cardInformation;
+    }
+
+    public void setCardInformation(String cardInformation) {
+        this.cardInformation = cardInformation;
+    }
+
+
+}

+ 89 - 0
src/main/java/com/jeeplus/modules/filing/constructionStage/entity/ProjectOther.java

@@ -0,0 +1,89 @@
+package com.jeeplus.modules.filing.constructionStage.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import com.jeeplus.core.persistence.DataEntity;
+
+import java.util.Date;
+
+public class ProjectOther extends DataEntity<ProjectOther> {
+    /**
+     * 项目编码
+     */
+    private String projectCode;
+
+    /**
+     * 单体编码
+     */
+    private String monomerCode;
+
+    /**
+     * 项目名称
+     */
+    private String entryName;
+
+    /**
+     * 工程遗留相关事项
+     * */
+    private String mattersLeft;
+    /**
+     * 退料及报废手续
+     * */
+    private String returnAndScrap;
+    /**
+     * 重要的附件等扫描件
+     * */
+    private String importantAccessories;
+
+    @ExcelField(title="项目编码", align=2, sort=1)
+    public String getProjectCode() {
+        return projectCode;
+    }
+
+    public void setProjectCode(String projectCode) {
+        this.projectCode = projectCode;
+    }
+
+    @ExcelField(title="单体编码", align=2, sort=2)
+    public String getMonomerCode() {
+        return monomerCode;
+    }
+
+    public void setMonomerCode(String monomerCode) {
+        this.monomerCode = monomerCode;
+    }
+
+    @ExcelField(title="项目名称", align=2, sort=3)
+    public String getEntryName() {
+        return entryName;
+    }
+
+    public void setEntryName(String entryName) {
+        this.entryName = entryName;
+    }
+
+    @ExcelField(title="工程遗留相关事项", align=2, sort=4)
+    public String getMattersLeft() {
+        return mattersLeft;
+    }
+
+    public void setMattersLeft(String mattersLeft) {
+        this.mattersLeft = mattersLeft;
+    }
+
+    public String getReturnAndScrap() {
+        return returnAndScrap;
+    }
+
+    public void setReturnAndScrap(String returnAndScrap) {
+        this.returnAndScrap = returnAndScrap;
+    }
+
+    public String getImportantAccessories() {
+        return importantAccessories;
+    }
+
+    public void setImportantAccessories(String importantAccessories) {
+        this.importantAccessories = importantAccessories;
+    }
+}

+ 154 - 0
src/main/java/com/jeeplus/modules/filing/constructionStage/entity/ProjectSchedule.java

@@ -0,0 +1,154 @@
+package com.jeeplus.modules.filing.constructionStage.entity;
+
+import com.google.common.collect.Lists;
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import com.jeeplus.core.persistence.DataEntity;
+
+import java.util.List;
+
+public class ProjectSchedule extends DataEntity<ProjectSchedule> {
+    /**
+     * 项目编码
+     */
+    private String projectCode;
+
+    /**
+     * 单体编码
+     */
+    private String monomerCode;
+
+    /**
+     * 项目名称
+     */
+    private String entryName;
+
+    /**
+     * 例会报告
+     * */
+    private String enclosure;
+    /**
+     * 土建
+     * */
+    private String scheduleCivil;
+    /**
+     * 电气
+     * */
+    private String scheduleElectrical;
+    /**
+     * 调试
+     * */
+    private String scheduleDebugging;
+    /**
+     * 验收
+     * */
+    private String scheduleCheck;
+    /**
+     * 累计定性描述
+     * */
+    private String scheduleCumulative;
+    /**
+     * 启委会文
+     * */
+    private String openingCommittee;
+    /**
+     * 调度命名编号
+     * */
+    private String dispatchingNaming;
+
+    /**
+     * 子类数据集合
+     * */
+    private List<ConstructionStage> childList = Lists.newArrayList();
+
+    @ExcelField(title="项目编码", align=2, sort=1)
+    public String getProjectCode() {
+        return projectCode;
+    }
+
+    public void setProjectCode(String projectCode) {
+        this.projectCode = projectCode;
+    }
+
+    @ExcelField(title="单体编码", align=2, sort=2)
+    public String getMonomerCode() {
+        return monomerCode;
+    }
+
+    public void setMonomerCode(String monomerCode) {
+        this.monomerCode = monomerCode;
+    }
+
+    @ExcelField(title="项目名称", align=2, sort=3)
+    public String getEntryName() {
+        return entryName;
+    }
+
+    public void setEntryName(String entryName) {
+        this.entryName = entryName;
+    }
+
+    public String getEnclosure() {
+        return enclosure;
+    }
+
+    public void setEnclosure(String enclosure) {
+        this.enclosure = enclosure;
+    }
+
+    public String getScheduleCivil() {
+        return scheduleCivil;
+    }
+
+    public void setScheduleCivil(String scheduleCivil) {
+        this.scheduleCivil = scheduleCivil;
+    }
+
+    public String getScheduleElectrical() {
+        return scheduleElectrical;
+    }
+
+    public void setScheduleElectrical(String scheduleElectrical) {
+        this.scheduleElectrical = scheduleElectrical;
+    }
+
+    public String getScheduleDebugging() {
+        return scheduleDebugging;
+    }
+
+    public void setScheduleDebugging(String scheduleDebugging) {
+        this.scheduleDebugging = scheduleDebugging;
+    }
+
+    public String getScheduleCheck() {
+        return scheduleCheck;
+    }
+
+    public void setScheduleCheck(String scheduleCheck) {
+        this.scheduleCheck = scheduleCheck;
+    }
+
+    public String getScheduleCumulative() {
+        return scheduleCumulative;
+    }
+
+    public void setScheduleCumulative(String scheduleCumulative) {
+        this.scheduleCumulative = scheduleCumulative;
+    }
+
+    public String getOpeningCommittee() {
+        return openingCommittee;
+    }
+
+    public void setOpeningCommittee(String openingCommittee) {
+        this.openingCommittee = openingCommittee;
+    }
+
+    @ExcelField(title="调度命名编号", align=2, sort=4)
+    public String getDispatchingNaming() {
+        return dispatchingNaming;
+    }
+
+    public void setDispatchingNaming(String dispatchingNaming) {
+        this.dispatchingNaming = dispatchingNaming;
+    }
+}

+ 77 - 0
src/main/java/com/jeeplus/modules/filing/constructionStage/entity/QulityAssurance.java

@@ -0,0 +1,77 @@
+package com.jeeplus.modules.filing.constructionStage.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import com.jeeplus.core.persistence.DataEntity;
+
+import java.util.Date;
+
+public class QulityAssurance extends DataEntity<QulityAssurance> {
+    /**
+     * 项目编码
+     */
+    private String projectCode;
+
+    /**
+     * 单体编码
+     */
+    private String monomerCode;
+
+    /**
+     * 项目名称
+     */
+    private String entryName;
+
+    /**
+     * 达标投产文
+     * */
+    private String standardProduction;
+    /**
+     * 五方质量终身责任承诺书
+     * */
+    private String fiveParty;
+
+    @ExcelField(title="项目编码", align=2, sort=1)
+    public String getProjectCode() {
+        return projectCode;
+    }
+
+    public void setProjectCode(String projectCode) {
+        this.projectCode = projectCode;
+    }
+
+    @ExcelField(title="单体编码", align=2, sort=2)
+    public String getMonomerCode() {
+        return monomerCode;
+    }
+
+    public void setMonomerCode(String monomerCode) {
+        this.monomerCode = monomerCode;
+    }
+
+    @ExcelField(title="项目名称", align=2, sort=3)
+    public String getEntryName() {
+        return entryName;
+    }
+
+    public void setEntryName(String entryName) {
+        this.entryName = entryName;
+    }
+
+    public String getStandardProduction() {
+        return standardProduction;
+    }
+
+    public void setStandardProduction(String standardProduction) {
+        this.standardProduction = standardProduction;
+    }
+
+    public String getFiveParty() {
+        return fiveParty;
+    }
+
+    public void setFiveParty(String fiveParty) {
+        this.fiveParty = fiveParty;
+    }
+
+}

+ 77 - 0
src/main/java/com/jeeplus/modules/filing/constructionStage/entity/SafetyQuality.java

@@ -0,0 +1,77 @@
+package com.jeeplus.modules.filing.constructionStage.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import com.jeeplus.core.persistence.DataEntity;
+
+import java.util.Date;
+
+public class SafetyQuality extends DataEntity<SafetyQuality> {
+    /**
+     * 项目编码
+     */
+    private String projectCode;
+
+    /**
+     * 单体编码
+     */
+    private String monomerCode;
+
+    /**
+     * 项目名称
+     */
+    private String entryName;
+
+    /**
+     * 安全质量量化考核成果
+     * */
+    private String resultsSafety;
+    /**
+     * 工程荣誉
+     * */
+    private String engineeringHonors;
+
+    @ExcelField(title="项目编码", align=2, sort=1)
+    public String getProjectCode() {
+        return projectCode;
+    }
+
+    public void setProjectCode(String projectCode) {
+        this.projectCode = projectCode;
+    }
+
+    @ExcelField(title="单体编码", align=2, sort=2)
+    public String getMonomerCode() {
+        return monomerCode;
+    }
+
+    public void setMonomerCode(String monomerCode) {
+        this.monomerCode = monomerCode;
+    }
+
+    @ExcelField(title="项目名称", align=2, sort=3)
+    public String getEntryName() {
+        return entryName;
+    }
+
+    public void setEntryName(String entryName) {
+        this.entryName = entryName;
+    }
+
+    @ExcelField(title="安全质量量化考核成果", align=2, sort=4)
+    public String getResultsSafety() {
+        return resultsSafety;
+    }
+
+    public void setResultsSafety(String resultsSafety) {
+        this.resultsSafety = resultsSafety;
+    }
+
+    public String getEngineeringHonors() {
+        return engineeringHonors;
+    }
+
+    public void setEngineeringHonors(String engineeringHonors) {
+        this.engineeringHonors = engineeringHonors;
+    }
+}

+ 197 - 0
src/main/java/com/jeeplus/modules/filing/constructionStage/entity/SecurityManagment.java

@@ -0,0 +1,197 @@
+package com.jeeplus.modules.filing.constructionStage.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import com.jeeplus.core.persistence.DataEntity;
+
+import java.util.Date;
+
+public class SecurityManagment extends DataEntity<SecurityManagment> {
+    /**
+     * 项目编码
+     */
+    private String projectCode;
+
+    /**
+     * 单体编码
+     */
+    private String monomerCode;
+
+    /**
+     * 项目名称
+     */
+    private String entryName;
+
+    /**
+     * 分包单位名称
+     * */
+    private String nameOfSubcontractor;
+    /**
+     * 项目地点
+     * */
+    private String projectLocation;
+    /**
+     * 四级风险内容
+     * */
+    private String levelRiskContent;
+    /**
+     * 四级风险实施时间
+     * */
+    private Date levelRiskTime;
+    /**
+     * “标准化开工”时间
+     * */
+    private Date standStartTime;
+    /**
+     * “标准化转序”时间
+     * */
+    private Date standTransferTime;
+    /**
+     * “标准化预验收”时间
+     * */
+    private Date standAcceptanceTime;
+    /**
+     * 约谈日期
+     * */
+    private Date dateOfInterview;
+    /**
+     * 约谈会议纪要
+     * */
+    private String mettingMinutes;
+    /**
+     * 累计扣款金额
+     * */
+    private String accumulatedAmount;
+    /**
+     * 扣款单
+     * */
+    private String deductionForm;
+
+    @ExcelField(title="项目编码", align=2, sort=1)
+    public String getProjectCode() {
+        return projectCode;
+    }
+
+    public void setProjectCode(String projectCode) {
+        this.projectCode = projectCode;
+    }
+
+    @ExcelField(title="单体编码", align=2, sort=2)
+    public String getMonomerCode() {
+        return monomerCode;
+    }
+
+    public void setMonomerCode(String monomerCode) {
+        this.monomerCode = monomerCode;
+    }
+
+    @ExcelField(title="项目名称", align=2, sort=3)
+    public String getEntryName() {
+        return entryName;
+    }
+
+    public void setEntryName(String entryName) {
+        this.entryName = entryName;
+    }
+
+    public String getNameOfSubcontractor() {
+        return nameOfSubcontractor;
+    }
+
+    public void setNameOfSubcontractor(String nameOfSubcontractor) {
+        this.nameOfSubcontractor = nameOfSubcontractor;
+    }
+
+    @ExcelField(title="项目地点", align=2, sort=4)
+    public String getProjectLocation() {
+        return projectLocation;
+    }
+
+    public void setProjectLocation(String projectLocation) {
+        this.projectLocation = projectLocation;
+    }
+
+    @ExcelField(title="四级风险内容", align=2, sort=5)
+    public String getLevelRiskContent() {
+        return levelRiskContent;
+    }
+
+    public void setLevelRiskContent(String levelRiskContent) {
+        this.levelRiskContent = levelRiskContent;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="四级风险实施时间", align=2, sort=6)
+    public Date getLevelRiskTime() {
+        return levelRiskTime;
+    }
+
+    public void setLevelRiskTime(Date levelRiskTime) {
+        this.levelRiskTime = levelRiskTime;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="“标准化开工”时间", align=2, sort=7)
+    public Date getStandStartTime() {
+        return standStartTime;
+    }
+
+    public void setStandStartTime(Date standStartTime) {
+        this.standStartTime = standStartTime;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="“标准化转序”时间", align=2, sort=8)
+    public Date getStandTransferTime() {
+        return standTransferTime;
+    }
+
+    public void setStandTransferTime(Date standTransferTime) {
+        this.standTransferTime = standTransferTime;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="“标准化预验收”时间", align=2, sort=9)
+    public Date getStandAcceptanceTime() {
+        return standAcceptanceTime;
+    }
+
+    public void setStandAcceptanceTime(Date standAcceptanceTime) {
+        this.standAcceptanceTime = standAcceptanceTime;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="约谈日期", align=2, sort=10)
+    public Date getDateOfInterview() {
+        return dateOfInterview;
+    }
+
+    public void setDateOfInterview(Date dateOfInterview) {
+        this.dateOfInterview = dateOfInterview;
+    }
+
+    public String getMettingMinutes() {
+        return mettingMinutes;
+    }
+
+    public void setMettingMinutes(String mettingMinutes) {
+        this.mettingMinutes = mettingMinutes;
+    }
+
+    @ExcelField(title="累计扣款金额", align=2, sort=11)
+    public String getAccumulatedAmount() {
+        return accumulatedAmount;
+    }
+
+    public void setAccumulatedAmount(String accumulatedAmount) {
+        this.accumulatedAmount = accumulatedAmount;
+    }
+
+    public String getDeductionForm() {
+        return deductionForm;
+    }
+
+    public void setDeductionForm(String deductionForm) {
+        this.deductionForm = deductionForm;
+    }
+}

+ 158 - 0
src/main/java/com/jeeplus/modules/filing/constructionStage/entity/StartUP.java

@@ -0,0 +1,158 @@
+package com.jeeplus.modules.filing.constructionStage.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import com.jeeplus.core.persistence.DataEntity;
+
+import java.util.Date;
+
+public class StartUP extends DataEntity<StartUP> {
+    /**
+     * 项目编码
+     */
+    private String projectCode;
+
+    /**
+     * 单体编码
+     */
+    private String monomerCode;
+
+    /**
+     * 项目名称
+     */
+    private String entryName;
+
+    /**
+     * 开工日期
+     * */
+    private Date commDate;
+    /**
+     * 开工报告
+     * */
+    private String commReport;
+    /**
+     * 竣工日期
+     * */
+    private Date compDate;
+    /**
+     * 竣工报告
+     * */
+    private String compLetion;
+    /**
+     * 投运日期
+     * */
+    private Date cossDate;
+    /**
+     * 投运报告
+     * */
+    private String cossReport;
+    /**
+     * 环评验收日期
+     * */
+    private Date acceptanceDate;
+    /**
+     * 水保验收日期
+     * */
+    private Date soilWaterDate;
+
+    @ExcelField(title="项目编码", align=2, sort=1)
+    public String getProjectCode() {
+        return projectCode;
+    }
+
+    public void setProjectCode(String projectCode) {
+        this.projectCode = projectCode;
+    }
+
+    @ExcelField(title="单体编码", align=2, sort=2)
+    public String getMonomerCode() {
+        return monomerCode;
+    }
+
+    public void setMonomerCode(String monomerCode) {
+        this.monomerCode = monomerCode;
+    }
+
+    @ExcelField(title="项目名称", align=2, sort=3)
+    public String getEntryName() {
+        return entryName;
+    }
+
+    public void setEntryName(String entryName) {
+        this.entryName = entryName;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="开工日期", align=2, sort=4)
+    public Date getCommDate() {
+        return commDate;
+    }
+
+    public void setCommDate(Date commDate) {
+        this.commDate = commDate;
+    }
+
+    public String getCommReport() {
+        return commReport;
+    }
+
+    public void setCommReport(String commReport) {
+        this.commReport = commReport;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="竣工日期", align=2, sort=5)
+    public Date getCompDate() {
+        return compDate;
+    }
+
+    public void setCompDate(Date compDate) {
+        this.compDate = compDate;
+    }
+
+    public String getCompLetion() {
+        return compLetion;
+    }
+
+    public void setCompLetion(String compLetion) {
+        this.compLetion = compLetion;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="投运日期", align=2, sort=6)
+    public Date getCossDate() {
+        return cossDate;
+    }
+
+    public void setCossDate(Date cossDate) {
+        this.cossDate = cossDate;
+    }
+
+    public String getCossReport() {
+        return cossReport;
+    }
+
+    public void setCossReport(String cossReport) {
+        this.cossReport = cossReport;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="环评验收日期", align=2, sort=7)
+    public Date getAcceptanceDate() {
+        return acceptanceDate;
+    }
+
+    public void setAcceptanceDate(Date acceptanceDate) {
+        this.acceptanceDate = acceptanceDate;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="水保验收日期", align=2, sort=8)
+    public Date getSoilWaterDate() {
+        return soilWaterDate;
+    }
+
+    public void setSoilWaterDate(Date soilWaterDate) {
+        this.soilWaterDate = soilWaterDate;
+    }
+}

+ 31 - 1
src/main/java/com/jeeplus/modules/filing/constructionStage/mapper/ConstructionStageMapper.java

@@ -5,8 +5,9 @@ package com.jeeplus.modules.filing.constructionStage.mapper;
 
 import com.jeeplus.core.persistence.BaseMapper;
 import com.jeeplus.core.persistence.annotation.MyBatisMapper;
-import com.jeeplus.modules.filing.constructionStage.entity.ConstructionStage;
+import com.jeeplus.modules.filing.constructionStage.entity.*;
 
+import javax.ejb.Startup;
 import java.util.List;
 
 /**
@@ -20,6 +21,7 @@ public interface ConstructionStageMapper extends BaseMapper<ConstructionStage> {
 
     Integer findByCode(ConstructionStage entity);
 
+    Integer findCode(String projectCode);
 
     /**
      * 通过id集合查询出所有符合条件的项目基础信息
@@ -30,4 +32,32 @@ public interface ConstructionStageMapper extends BaseMapper<ConstructionStage> {
      * 通过项目id查询出所有的项目信息
      * */
     List<ConstructionStage> findAll(List<String> idList);
+
+    void insertStartUp(StartUP startUP);
+
+    void updateStartUp(StartUP startUP);
+
+    void insertProjectSchedule(ProjectSchedule entity);
+
+    void updateProjectSchedule(ProjectSchedule entity);
+
+    void insertCostManagment(CostManagment entity);
+
+    void updateCostManagment(CostManagment entity);
+
+    void insertProjectOther(ProjectOther entity);
+
+    void updateProjectOther(ProjectOther entity);
+
+    void insertQulityAssurance(QulityAssurance entity);
+
+    void updateQulityAssurance(QulityAssurance entity);
+
+    void insertSafetyQuality(SafetyQuality entity);
+
+    void updateSafetyQuality(SafetyQuality entity);
+
+    void insertSecurityManagment(SecurityManagment entity);
+
+    void updateSecurityManagment(SecurityManagment entity);
 }

+ 442 - 28
src/main/java/com/jeeplus/modules/filing/constructionStage/mapper/xml/ConstructionStageMapper.xml

@@ -49,7 +49,7 @@
 		b.deductionForm AS "deductionForm",
 		b.mattersLeft AS "mattersLeft",
 		b.returnAndScrap AS "returnAndScrap",
-		b.ImportantAccessories AS "ImportantAccessories"
+		b.importantAccessories AS "importantAccessories"
 	</sql>
 	
 	<sql id="constructionStageJoins">
@@ -108,7 +108,7 @@
 	</select>
 	
 	<insert id="insert">
-		INSERT INTO filing_early_designstage(
+		INSERT INTO filing_construction_stage(
 			id,
 			create_by,
 			create_date,
@@ -117,9 +117,43 @@
 			remarks,
 			del_flag,
 	  		projectCode,
-			preDesignNo,
-			initialDesignDate,
-			preDesignAnnex
+			commDate,
+			commReport,
+			compDate,
+			compLetion,
+			cossDate,
+			cossReport,
+			acceptanceDate,
+			soilWaterDate,
+			enclosure,
+			scheduleCivil,
+			scheduleElectrical,
+			scheduleDebugging,
+			scheduleCheck,
+			scheduleCumulative,
+			openingCommittee,
+			dispatchingNaming,
+			resultsSafety,
+			engineeringHonors,
+			settAuditReport,
+			accAuditReport,
+			cardInformation,
+			standardProduction,
+			fiveParty,
+			nameOfSubcontractor,
+			projectLocation,
+			levelRiskContent,
+			levelRiskTime,
+			standStartTime,
+			standTransferTime,
+			standAcceptanceTime,
+			dateOfInterview,
+			mettingMinutes,
+			accumulatedAmount,
+			deductionForm,
+			mattersLeft,
+			returnAndScrap,
+			importantAccessories
 		) VALUES (
 			#{id},
 			#{createBy.id},
@@ -129,54 +163,430 @@
 			#{remarks},
 			#{delFlag},
 			#{projectCode},
-			#{preDesignNo},
-			#{initialDesignDate},
-			#{preDesignAnnex}
+			#{commDate},
+			#{commReport},
+			#{compDate},
+			#{compLetion},
+			#{cossDate},
+			#{cossReport},
+			#{acceptanceDate},
+			#{soilWaterDate},
+			#{enclosure},
+			#{scheduleCivil},
+			#{scheduleElectrical},
+			#{scheduleDebugging},
+			#{scheduleCheck},
+			#{scheduleCumulative},
+			#{openingCommittee},
+			#{dispatchingNaming},
+			#{resultsSafety},
+			#{engineeringHonors},
+			#{settAuditReport},
+			#{accAuditReport},
+			#{cardInformation},
+			#{standardProduction},
+			#{fiveParty},
+			#{nameOfSubcontractor},
+			#{projectLocation},
+			#{levelRiskContent},
+			#{levelRiskTime},
+			#{standStartTime},
+			#{standTransferTime},
+			#{standAcceptanceTime},
+			#{dateOfInterview},
+			#{mettingMinutes},
+			#{accumulatedAmount},
+			#{deductionForm},
+			#{mattersLeft},
+			#{returnAndScrap},
+			#{importantAccessories}
 		)
 	</insert>
-	
+	<insert id="insertStartUp">
+		INSERT INTO filing_construction_stage(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			projectCode,
+			commDate,
+			commReport,
+			compDate,
+			compLetion,
+			cossDate,
+			cossReport,
+			acceptanceDate,
+			soilWaterDate
+		) VALUES (
+					 #{id},
+					 #{createBy.id},
+					 #{createDate},
+					 #{updateBy.id},
+					 #{updateDate},
+					 #{remarks},
+					 #{delFlag},
+					 #{projectCode},
+					 #{commDate},
+					 #{commReport},
+					 #{compDate},
+					 #{compLetion},
+					 #{cossDate},
+					 #{cossReport},
+					 #{acceptanceDate},
+					 #{soilWaterDate}
+				 )
+	</insert>
+	<insert id="insertProjectSchedule">
+		INSERT INTO filing_construction_stage(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			projectCode,
+			enclosure,
+			scheduleCivil,
+			scheduleElectrical,
+			scheduleDebugging,
+			scheduleCheck,
+			scheduleCumulative,
+			openingCommittee,
+			dispatchingNaming
+		) VALUES (
+					 #{id},
+					 #{createBy.id},
+					 #{createDate},
+					 #{updateBy.id},
+					 #{updateDate},
+					 #{remarks},
+					 #{delFlag},
+					 #{projectCode},
+					 #{enclosure},
+					 #{scheduleCivil},
+					 #{scheduleElectrical},
+					 #{scheduleDebugging},
+					 #{scheduleCheck},
+					 #{scheduleCumulative},
+					 #{openingCommittee},
+					 #{dispatchingNaming}
+				 )
+	</insert>
+	<insert id="insertCostManagment">
+		INSERT INTO filing_construction_stage(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			projectCode,
+			settAuditReport,
+			accAuditReport,
+			cardInformation
+		) VALUES (
+					 #{id},
+					 #{createBy.id},
+					 #{createDate},
+					 #{updateBy.id},
+					 #{updateDate},
+					 #{remarks},
+					 #{delFlag},
+					 #{projectCode},
+					 #{settAuditReport},
+					 #{accAuditReport},
+					 #{cardInformation}
+				 )
+	</insert>
+	<insert id="insertProjectOther">
+		INSERT INTO filing_construction_stage(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			projectCode,
+			mattersLeft,
+			returnAndScrap,
+			importantAccessories
+		) VALUES (
+					 #{id},
+					 #{createBy.id},
+					 #{createDate},
+					 #{updateBy.id},
+					 #{updateDate},
+					 #{remarks},
+					 #{delFlag},
+					 #{projectCode},
+					 #{mattersLeft},
+					 #{returnAndScrap},
+					 #{importantAccessories}
+				 )
+	</insert>
+	<insert id="insertQulityAssurance">
+		INSERT INTO filing_construction_stage(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			projectCode,
+			standardProduction,
+			fiveParty
+		) VALUES (
+					 #{id},
+					 #{createBy.id},
+					 #{createDate},
+					 #{updateBy.id},
+					 #{updateDate},
+					 #{remarks},
+					 #{delFlag},
+					 #{projectCode},
+					 #{standardProduction},
+					 #{fiveParty}
+				 )
+	</insert>
+	<insert id="insertSafetyQuality">
+		INSERT INTO filing_construction_stage(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			projectCode,
+			resultsSafety,
+			engineeringHonors
+		) VALUES (
+					 #{id},
+					 #{createBy.id},
+					 #{createDate},
+					 #{updateBy.id},
+					 #{updateDate},
+					 #{remarks},
+					 #{delFlag},
+					 #{projectCode},
+					 #{resultsSafety},
+					 #{engineeringHonors}
+				 )
+	</insert>
+	<insert id="insertSecurityManagment">
+		INSERT INTO filing_construction_stage(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			projectCode,
+			nameOfSubcontractor,
+			projectLocation,
+			levelRiskContent,
+			levelRiskTime,
+			standStartTime,
+			standTransferTime,
+			standAcceptanceTime,
+			dateOfInterview,
+			mettingMinutes,
+			accumulatedAmount,
+			deductionForm
+		) VALUES (
+					 #{id},
+					 #{createBy.id},
+					 #{createDate},
+					 #{updateBy.id},
+					 #{updateDate},
+					 #{remarks},
+					 #{delFlag},
+					 #{projectCode},
+					#{nameOfSubcontractor},
+					#{projectLocation},
+					#{levelRiskContent},
+					#{levelRiskTime},
+					#{standStartTime},
+					#{standTransferTime},
+					#{standAcceptanceTime},
+					#{dateOfInterview},
+					#{mettingMinutes},
+					#{accumulatedAmount},
+					#{deductionForm}
+				 )
+	</insert>
+
 	<update id="update">
-		UPDATE filing_early_designstage SET
+		UPDATE filing_construction_stage SET
 			create_date = #{createDate},
 			update_by = #{updateBy.id},
 			update_date = #{updateDate},
 			remarks = #{remarks},
-			preDesignNo = #{preDesignNo},
-			initialDesignDate = #{initialDesignDate},
-			preDesignAnnex = #{preDesignAnnex}
+			commDate = #{commDate},
+			commReport = #{commReport},
+			compDate = #{compDate},
+			compLetion = #{compLetion},
+			cossDate = #{cossDate},
+			cossReport = #{cossReport},
+			acceptanceDate = #{acceptanceDate},
+			soilWaterDate = #{soilWaterDate},
+			enclosure = #{enclosure},
+			scheduleCivil = #{scheduleCivil},
+			scheduleElectrical = #{scheduleElectrical},
+			scheduleDebugging = #{scheduleDebugging},
+			scheduleCheck = #{scheduleCheck},
+			scheduleCumulative = #{scheduleCumulative},
+			openingCommittee = #{openingCommittee},
+			dispatchingNaming = #{dispatchingNaming},
+			resultsSafety = #{resultsSafety},
+			engineeringHonors = #{engineeringHonors},
+			settAuditReport = #{settAuditReport},
+			accAuditReport = #{accAuditReport},
+			cardInformation = #{cardInformation},
+			standardProduction = #{standardProduction},
+			fiveParty = #{fiveParty},
+			nameOfSubcontractor = #{nameOfSubcontractor},
+			projectLocation = #{projectLocation},
+			levelRiskContent = #{levelRiskContent},
+			levelRiskTime = #{levelRiskTime},
+			standStartTime = #{standStartTime},
+			standTransferTime = #{standTransferTime},
+			standAcceptanceTime = #{standAcceptanceTime},
+			dateOfInterview = #{dateOfInterview},
+			mettingMinutes = #{mettingMinutes},
+			accumulatedAmount = #{accumulatedAmount},
+			deductionForm = #{deductionForm},
+			mattersLeft = #{mattersLeft},
+			returnAndScrap = #{returnAndScrap},
+			importantAccessories = #{importantAccessories}
 		WHERE projectCode = #{projectCode}
 	</update>
 	
 	
 	<!--物理删除-->
 	<update id="delete">
-		DELETE FROM filing_early_designstage
+		DELETE FROM filing_construction_stage
 		WHERE id = #{id}
 	</update>
 	
 	<!--逻辑删除-->
 	<update id="deleteByLogic">
-		UPDATE filing_early_designstage SET 
+		UPDATE filing_construction_stage SET 
 			del_flag = #{DEL_FLAG_DELETE}
 		WHERE id = #{id}
 	</update>
-	
-	
+	<update id="updateStartUp">
+		UPDATE filing_construction_stage SET
+			 create_date = #{createDate},
+			 update_by = #{updateBy.id},
+			 update_date = #{updateDate},
+			 remarks = #{remarks},
+			 commDate = #{commDate},
+			 commReport = #{commReport},
+			 compDate = #{compDate},
+			 compLetion = #{compLetion},
+			 cossDate = #{cossDate},
+			 cossReport = #{cossReport},
+			 acceptanceDate = #{acceptanceDate},
+			 soilWaterDate = #{soilWaterDate}
+		WHERE projectCode = #{projectCode}
+	</update>
+	<update id="updateProjectSchedule">
+		UPDATE filing_construction_stage SET
+			 create_date = #{createDate},
+			 update_by = #{updateBy.id},
+			 update_date = #{updateDate},
+			 remarks = #{remarks},
+			 enclosure = #{enclosure},
+			 scheduleCivil = #{scheduleCivil},
+			 scheduleElectrical = #{scheduleElectrical},
+			 scheduleDebugging = #{scheduleDebugging},
+			 scheduleCheck = #{scheduleCheck},
+			 scheduleCumulative = #{scheduleCumulative},
+			 openingCommittee = #{openingCommittee},
+			 dispatchingNaming = #{dispatchingNaming}
+		WHERE projectCode = #{projectCode}
+	</update>
+	<update id="updateCostManagment">
+		UPDATE filing_construction_stage SET
+			 create_date = #{createDate},
+			 update_by = #{updateBy.id},
+			 update_date = #{updateDate},
+			 remarks = #{remarks},
+			 settAuditReport = #{settAuditReport},
+			 accAuditReport = #{accAuditReport},
+			 cardInformation = #{cardInformation}
+		WHERE projectCode = #{projectCode}
+	</update>
+	<update id="updateProjectOther">
+		UPDATE filing_construction_stage SET
+			 create_date = #{createDate},
+			 update_by = #{updateBy.id},
+			 update_date = #{updateDate},
+			 remarks = #{remarks},
+			 mattersLeft = #{mattersLeft},
+			 returnAndScrap = #{returnAndScrap},
+			 importantAccessories = #{importantAccessories}
+		WHERE projectCode = #{projectCode}
+	</update>
+	<update id="updateQulityAssurance">
+		UPDATE filing_construction_stage SET
+			 create_date = #{createDate},
+			 update_by = #{updateBy.id},
+			 update_date = #{updateDate},
+			 remarks = #{remarks},
+			 standardProduction = #{standardProduction},
+			 fiveParty = #{fiveParty}
+		WHERE projectCode = #{projectCode}
+	</update>
+	<update id="updateSafetyQuality">
+		UPDATE filing_construction_stage SET
+			 create_date = #{createDate},
+			 update_by = #{updateBy.id},
+			 update_date = #{updateDate},
+			 remarks = #{remarks},
+			 resultsSafety = #{resultsSafety},
+			 engineeringHonors = #{engineeringHonors}
+		WHERE projectCode = #{projectCode}
+	</update>
+	<update id="updateSecurityManagment">
+		UPDATE filing_construction_stage SET
+			 create_date = #{createDate},
+			 update_by = #{updateBy.id},
+			 update_date = #{updateDate},
+			 remarks = #{remarks},
+			 nameOfSubcontractor = #{nameOfSubcontractor},
+			 projectLocation = #{projectLocation},
+			 levelRiskContent = #{levelRiskContent},
+			 levelRiskTime = #{levelRiskTime},
+			 standStartTime = #{standStartTime},
+			 standTransferTime = #{standTransferTime},
+			 standAcceptanceTime = #{standAcceptanceTime},
+			 dateOfInterview = #{dateOfInterview},
+			 mettingMinutes = #{mettingMinutes},
+			 accumulatedAmount = #{accumulatedAmount},
+			 deductionForm = #{deductionForm}
+		WHERE projectCode = #{projectCode}
+	</update>
+
+
 	<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
 	<select id="findUniqueByProperty" resultType="ConstructionStage" statementType="STATEMENT">
-		select * FROM filing_early_designstage  where ${propertyName} = '${value}'
+		select * FROM filing_construction_stage  where ${propertyName} = '${value}'
 	</select>
 	<select id="findChildList" resultType="com.jeeplus.modules.filing.constructionStage.entity.ConstructionStage">
 		select
-			a.id AS "id",
-			a.projectCode AS "projectCode",
-			a.monomerCode AS "monomerCode",
-			a.entryName AS "entryName",
-			b.preDesignNo AS "preDesignNo",
-			b.initialDesignDate AS "initialDesignDate",
-			b.preDesignAnnex AS "preDesignAnnex"
-		from filing_basic_information a
-				 LEFT JOIN filing_early_designstage b on a.projectCode = b.projectCode
+		<include refid="constructionStageColumns"/>
+		FROM filing_basic_information a
+		<include refid="constructionStageJoins"/>
 		<where>
 			<if test="projectCode != null  and projectCode != ''">
 				a.parentId = #{projectCode}
@@ -184,7 +594,7 @@
 		</where>
 	</select>
 	<select id="findByCode" resultType="java.lang.Integer">
-		select count(id) from filing_early_designstage
+		select count(id) from filing_construction_stage
 		where projectCode = #{projectCode}
 	</select>
 	<select id="findByIdList" resultType="com.jeeplus.modules.filing.constructionStage.entity.ConstructionStage">
@@ -209,5 +619,9 @@
 		</foreach>
 		)
 	</select>
+	<select id="findCode" resultType="java.lang.Integer">
+		select count(id) from filing_construction_stage
+		where projectCode = #{projectCode}
+	</select>
 
 </mapper>

+ 89 - 1
src/main/java/com/jeeplus/modules/filing/constructionStage/service/ConstructionStageService.java

@@ -5,7 +5,7 @@ package com.jeeplus.modules.filing.constructionStage.service;
 
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.service.CrudService;
-import com.jeeplus.modules.filing.constructionStage.entity.ConstructionStage;
+import com.jeeplus.modules.filing.constructionStage.entity.*;
 import com.jeeplus.modules.filing.constructionStage.mapper.ConstructionStageMapper;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -72,6 +72,94 @@ public class ConstructionStageService extends CrudService<ConstructionStageMappe
 		}
 	}
 
+	@Transactional(readOnly = false)
+	public void startUpSave(StartUP entity) {
+		Integer byCode = mapper.findCode(entity.getProjectCode());
+		if (0 == byCode || null == byCode) {
+			entity.preInsert();
+			mapper.insertStartUp(entity);
+		} else {
+			entity.preUpdate();
+			mapper.updateStartUp(entity);
+		}
+	}
+
+	@Transactional(readOnly = false)
+	public void projectScheduleSave(ProjectSchedule entity) {
+		Integer byCode = mapper.findCode(entity.getProjectCode());
+		if (0 == byCode || null == byCode) {
+			entity.preInsert();
+			mapper.insertProjectSchedule(entity);
+		} else {
+			entity.preUpdate();
+			mapper.updateProjectSchedule(entity);
+		}
+	}
+
+	@Transactional(readOnly = false)
+	public void costManagmentSave(CostManagment entity) {
+		Integer byCode = mapper.findCode(entity.getProjectCode());
+		if (0 == byCode || null == byCode) {
+			entity.preInsert();
+			mapper.insertCostManagment(entity);
+		} else {
+			entity.preUpdate();
+			mapper.updateCostManagment(entity);
+		}
+	}
+
+	@Transactional(readOnly = false)
+	public void projectOtherSave(ProjectOther entity) {
+		Integer byCode = mapper.findCode(entity.getProjectCode());
+		if (0 == byCode || null == byCode) {
+			entity.preInsert();
+			mapper.insertProjectOther(entity);
+		} else {
+			entity.preUpdate();
+			mapper.updateProjectOther(entity);
+		}
+	}
+
+	@Transactional(readOnly = false)
+	public void qulityAssuranceSave(QulityAssurance entity) {
+		Integer byCode = mapper.findCode(entity.getProjectCode());
+		if (0 == byCode || null == byCode) {
+			entity.preInsert();
+			mapper.insertQulityAssurance(entity);
+		} else {
+			entity.preUpdate();
+			mapper.updateQulityAssurance(entity);
+		}
+	}
+
+	@Transactional(readOnly = false)
+	public void safetyQualitySave(SafetyQuality entity) {
+		Integer byCode = mapper.findCode(entity.getProjectCode());
+		if (0 == byCode || null == byCode) {
+			entity.preInsert();
+			mapper.insertSafetyQuality(entity);
+		} else {
+			entity.preUpdate();
+			mapper.updateSafetyQuality(entity);
+		}
+	}
+
+	@Transactional(readOnly = false)
+	public void securityManagmentSave(SecurityManagment entity) {
+		Integer byCode = mapper.findCode(entity.getProjectCode());
+		if (0 == byCode || null == byCode) {
+			entity.preInsert();
+			mapper.insertSecurityManagment(entity);
+		} else {
+			entity.preUpdate();
+			mapper.updateSecurityManagment(entity);
+		}
+	}
+
+	public List<ConstructionStage> findChildList(ConstructionStage entity) {
+		return mapper.findChildList(entity);
+	}
+
 	public Integer findByCode(ConstructionStage entity) {
 		return mapper.findByCode(entity);
 	}

+ 699 - 7
src/main/java/com/jeeplus/modules/filing/constructionStage/web/ConstructionStageController.java

@@ -9,6 +9,7 @@ import com.jeeplus.common.utils.excel.ImportExcel;
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.web.BaseController;
 import com.jeeplus.modules.filing.constructionStage.entity.ConstructionStage;
+import com.jeeplus.modules.filing.constructionStage.entity.*;
 import com.jeeplus.modules.filing.constructionStage.service.ConstructionStageService;
 import com.jeeplus.modules.filing.filingImages.service.FilingImagesService;
 import org.apache.shiro.authz.annotation.Logical;
@@ -24,6 +25,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -63,7 +65,147 @@ public class ConstructionStageController extends BaseController {
 		model.addAttribute("constructionStage", constructionStage);
 		return "modules/filing/constructionStage/constructionStageList";
 	}
-	
+
+	/**
+	 * 开竣工管理列表页面
+	 */
+	@RequiresPermissions("test:filing:startUp:list")
+	@RequestMapping(value = "startUp")
+	public String startUp(ConstructionStage constructionStage, Model model) {
+		model.addAttribute("constructionStage", constructionStage);
+		return "modules/filing/startUp/startUpList";
+	}
+
+	/**
+	 * 查看,增加,开竣工管理阶段表单页面
+	 */
+	@RequiresPermissions(value={"test:filing:startUp:view","test:filing:startUp:add","test:filing:startUp:edit"},logical=Logical.OR)
+	@RequestMapping(value = "startUpForm")
+	public String startUpForm(ConstructionStage constructionStage, Model model) {
+		model.addAttribute("constructionStage", constructionStage);
+		return "modules/filing/startUp/startUpForm";
+	}
+
+	/**
+	 * 工程进度管理段列表页面
+	 */
+	@RequiresPermissions("test:filing:projectSchedule:list")
+	@RequestMapping(value = "projectSchedule")
+	public String projectSchedule(ConstructionStage constructionStage, Model model) {
+		model.addAttribute("constructionStage", constructionStage);
+		return "modules/filing/projectSchedule/projectScheduleList";
+	}
+
+	/**
+	 * 查看,增加,工程进度管理段表单页面
+	 */
+	@RequiresPermissions(value={"test:filing:projectSchedule:view","test:filing:projectSchedule:add","test:filing:projectSchedule:edit"},logical=Logical.OR)
+	@RequestMapping(value = "projectScheduleForm")
+	public String projectScheduleForm(ConstructionStage constructionStage, Model model) {
+		model.addAttribute("constructionStage", constructionStage);
+		return "modules/filing/projectSchedule/projectScheduleForm";
+	}
+
+	/**
+	 * 安全质量管理列表页面
+	 */
+	@RequiresPermissions("test:filing:safetyQuality:list")
+	@RequestMapping(value = "safetyQuality")
+	public String safetyQuality(ConstructionStage constructionStage, Model model) {
+		model.addAttribute("constructionStage", constructionStage);
+		return "modules/filing/safetyQuality/safetyQualityList";
+	}
+
+	/**
+	 * 查看,增加,安全质量管理表单页面
+	 */
+	@RequiresPermissions(value={"test:filing:safetyQuality:view","test:filing:safetyQuality:add","test:filing:safetyQuality:edit"},logical=Logical.OR)
+	@RequestMapping(value = "safetyQualityForm")
+	public String safetyQualityForm(ConstructionStage constructionStage, Model model) {
+		model.addAttribute("constructionStage", constructionStage);
+		return "modules/filing/safetyQuality/safetyQualityForm";
+	}
+
+	/**
+	 * 造价管理阶段列表页面
+	 */
+	@RequiresPermissions("test:filing:costManagment:list")
+	@RequestMapping(value = "costManagment")
+	public String costManagment(ConstructionStage constructionStage, Model model) {
+		model.addAttribute("constructionStage", constructionStage);
+		return "modules/filing/costManagment/costManagmentList";
+	}
+
+	/**
+	 * 查看,增加,造价管理阶段表单页面
+	 */
+	@RequiresPermissions(value={"test:filing:costManagment:view","test:filing:costManagment:add","test:filing:costManagment:edit"},logical=Logical.OR)
+	@RequestMapping(value = "costManagmentForm")
+	public String costManagmentForm(ConstructionStage constructionStage, Model model) {
+		model.addAttribute("constructionStage", constructionStage);
+		return "modules/filing/costManagment/costManagmentForm";
+	}
+
+	/**
+	 * 质量管理阶段列表页面
+	 */
+	@RequiresPermissions("test:filing:qulityAssurance:list")
+	@RequestMapping(value = "qulityAssurance")
+	public String qulityAssurance(ConstructionStage constructionStage, Model model) {
+		model.addAttribute("constructionStage", constructionStage);
+		return "modules/filing/qulityAssurance/qulityAssuranceList";
+	}
+
+	/**
+	 * 查看,增加,质量管理阶段表单页面
+	 */
+	@RequiresPermissions(value={"test:filing:qulityAssurance:view","test:filing:qulityAssurance:add","test:filing:qulityAssurance:edit"},logical=Logical.OR)
+	@RequestMapping(value = "qulityAssuranceForm")
+	public String qulityAssuranceForm(ConstructionStage constructionStage, Model model) {
+		model.addAttribute("constructionStage", constructionStage);
+		return "modules/filing/qulityAssurance/qulityAssuranceForm";
+	}
+
+	/**
+	 * 安全管理阶段列表页面
+	 */
+	@RequiresPermissions("test:filing:securityManagment:list")
+	@RequestMapping(value = "securityManagment")
+	public String securityManagment(ConstructionStage constructionStage, Model model) {
+		model.addAttribute("constructionStage", constructionStage);
+		return "modules/filing/securityManagment/securityManagmentList";
+	}
+
+	/**
+	 * 查看,增加,安全管理阶段表单页面
+	 */
+	@RequiresPermissions(value={"test:filing:securityManagment:view","test:filing:securityManagment:add","test:filing:securityManagment:edit"},logical=Logical.OR)
+	@RequestMapping(value = "securityManagmentForm")
+	public String securityManagmentForm(ConstructionStage constructionStage, Model model) {
+		model.addAttribute("constructionStage", constructionStage);
+		return "modules/filing/securityManagment/securityManagmentForm";
+	}
+
+	/**
+	 * 其他阶段列表页面
+	 */
+	@RequiresPermissions("test:filing:projectOther:list")
+	@RequestMapping(value = "projectOther")
+	public String projectOther(ConstructionStage constructionStage, Model model) {
+		model.addAttribute("constructionStage", constructionStage);
+		return "modules/filing/projectOther/projectOtherList";
+	}
+
+	/**
+	 * 查看,增加,其他阶段表单页面
+	 */
+	@RequiresPermissions(value={"test:filing:projectOther:view","test:filing:projectOther:add","test:filing:projectOther:edit"},logical=Logical.OR)
+	@RequestMapping(value = "projectOtherForm")
+	public String projectOtherForm(ConstructionStage constructionStage, Model model) {
+		model.addAttribute("constructionStage", constructionStage);
+		return "modules/filing/projectOther/projectOtherForm";
+	}
+
 	/**
 	 * 工程建设阶段列表数据
 	 */
@@ -174,8 +316,20 @@ public class ConstructionStageController extends BaseController {
 		AjaxJson j = new AjaxJson();
 		try {
             String fileName = "工程建设阶段"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
-            Page<ConstructionStage> page = constructionStageService.findAllPage(new Page<ConstructionStage>(request, response, -1), constructionStage);
-    		new ExportExcel("工程建设阶段", ConstructionStage.class).setDataList(page.getList()).write(response, fileName).dispose();
+			//查询所有父级的信息
+			List<ConstructionStage> list = constructionStageService.findList(constructionStage);
+			List<ConstructionStage> returnList = new ArrayList<>();
+			//根据父级,查询所有子级的信息
+			for (ConstructionStage a :
+					list) {
+				List<ConstructionStage> childList = constructionStageService.findChildList(a);
+				returnList.add(a);
+				for (ConstructionStage b :
+						childList) {
+					returnList.add(b);
+				}
+			}
+    		new ExportExcel("工程建设阶段", ConstructionStage.class).setDataList(returnList).write(response, fileName).dispose();
     		j.setSuccess(true);
     		j.setMsg("导出成功!");
     		return j;
@@ -186,7 +340,245 @@ public class ConstructionStageController extends BaseController {
 			return j;
     }
 
-    
+	/**
+	 * 导出excel文件
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:startUp:export")
+	@RequestMapping(value = "exportStartUp")
+	public AjaxJson exportStartUp(ConstructionStage constructionStage, HttpServletRequest request, HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+			String fileName = "开竣工管理"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+			//查询所有父级的信息
+			List<ConstructionStage> list = constructionStageService.findList(constructionStage);
+			List<ConstructionStage> returnList = new ArrayList<>();
+			//根据父级,查询所有子级的信息
+			for (ConstructionStage a :
+					list) {
+				List<ConstructionStage> childList = constructionStageService.findChildList(a);
+				returnList.add(a);
+				for (ConstructionStage b :
+						childList) {
+					returnList.add(b);
+				}
+			}
+			new ExportExcel("开竣工管理", StartUP.class).setDataList(returnList).write(response, fileName).dispose();
+			j.setSuccess(true);
+			j.setMsg("导出成功!");
+			return j;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导出开竣工管理记录失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+
+	/**
+	 * 导出excel文件
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:projectSchedule:export")
+	@RequestMapping(value = "exportProjectSchedule")
+	public AjaxJson exportProjectSchedule(ConstructionStage constructionStage, HttpServletRequest request, HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+			String fileName = "工程进度管理"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+			//查询所有父级的信息
+			List<ConstructionStage> list = constructionStageService.findList(constructionStage);
+			List<ConstructionStage> returnList = new ArrayList<>();
+			//根据父级,查询所有子级的信息
+			for (ConstructionStage a :
+					list) {
+				List<ConstructionStage> childList = constructionStageService.findChildList(a);
+				returnList.add(a);
+				for (ConstructionStage b :
+						childList) {
+					returnList.add(b);
+				}
+			}
+			new ExportExcel("工程进度管理", ProjectSchedule.class).setDataList(returnList).write(response, fileName).dispose();
+			j.setSuccess(true);
+			j.setMsg("导出成功!");
+			return j;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导出工程进度管理记录失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+
+	/**
+	 * 导出安全质量管理excel文件
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:safetyQuality:export")
+	@RequestMapping(value = "exportSafetyQuality")
+	public AjaxJson exportSafetyQuality(ConstructionStage constructionStage, HttpServletRequest request, HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+			String fileName = "安全质量管理"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+			//查询所有父级的信息
+			List<ConstructionStage> list = constructionStageService.findList(constructionStage);
+			List<ConstructionStage> returnList = new ArrayList<>();
+			//根据父级,查询所有子级的信息
+			for (ConstructionStage a :
+					list) {
+				List<ConstructionStage> childList = constructionStageService.findChildList(a);
+				returnList.add(a);
+				for (ConstructionStage b :
+						childList) {
+					returnList.add(b);
+				}
+			}
+			new ExportExcel("安全质量管理", SafetyQuality.class).setDataList(returnList).write(response, fileName).dispose();
+			j.setSuccess(true);
+			j.setMsg("导出成功!");
+			return j;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导出安全质量管理记录失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+
+
+	/**
+	 * 导出造价管理excel文件
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:costManagment:export")
+	@RequestMapping(value = "exportCostManagment")
+	public AjaxJson exportCostManagment(ConstructionStage constructionStage, HttpServletRequest request, HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+			String fileName = "造价管理"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+			//查询所有父级的信息
+			List<ConstructionStage> list = constructionStageService.findList(constructionStage);
+			List<ConstructionStage> returnList = new ArrayList<>();
+			//根据父级,查询所有子级的信息
+			for (ConstructionStage a :
+					list) {
+				List<ConstructionStage> childList = constructionStageService.findChildList(a);
+				returnList.add(a);
+				for (ConstructionStage b :
+						childList) {
+					returnList.add(b);
+				}
+			}
+			new ExportExcel("造价管理", CostManagment.class).setDataList(returnList).write(response, fileName).dispose();
+			j.setSuccess(true);
+			j.setMsg("导出成功!");
+			return j;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导出造价管理记录失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+
+	/**
+	 * 导出质量管理excel文件
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:qulityAssurance:export")
+	@RequestMapping(value = "exportQulityAssurance")
+	public AjaxJson exportQulityAssurance(ConstructionStage constructionStage, HttpServletRequest request, HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+			String fileName = "质量管理"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+			//查询所有父级的信息
+			List<ConstructionStage> list = constructionStageService.findList(constructionStage);
+			List<ConstructionStage> returnList = new ArrayList<>();
+			//根据父级,查询所有子级的信息
+			for (ConstructionStage a :
+					list) {
+				List<ConstructionStage> childList = constructionStageService.findChildList(a);
+				returnList.add(a);
+				for (ConstructionStage b :
+						childList) {
+					returnList.add(b);
+				}
+			}
+			new ExportExcel("质量管理", QulityAssurance.class).setDataList(returnList).write(response, fileName).dispose();
+			j.setSuccess(true);
+			j.setMsg("导出成功!");
+			return j;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导出质量管理记录失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+
+	/**
+	 * 导出安全管理excel文件
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:securityManagment:export")
+	@RequestMapping(value = "exportSecurityManagment")
+	public AjaxJson exportSecurityManagment(ConstructionStage constructionStage, HttpServletRequest request, HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+			String fileName = "安全管理"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+			//查询所有父级的信息
+			List<ConstructionStage> list = constructionStageService.findList(constructionStage);
+			List<ConstructionStage> returnList = new ArrayList<>();
+			//根据父级,查询所有子级的信息
+			for (ConstructionStage a :
+					list) {
+				List<ConstructionStage> childList = constructionStageService.findChildList(a);
+				returnList.add(a);
+				for (ConstructionStage b :
+						childList) {
+					returnList.add(b);
+				}
+			}
+			new ExportExcel("安全管理", SecurityManagment.class).setDataList(returnList).write(response, fileName).dispose();
+			j.setSuccess(true);
+			j.setMsg("导出成功!");
+			return j;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导出安全管理记录失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+
+	/**
+	 * 导出其他excel文件
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:projectOther:export")
+	@RequestMapping(value = "exportProjectOther")
+	public AjaxJson exportProjectOther(ConstructionStage constructionStage, HttpServletRequest request, HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+			String fileName = "其他"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+			//查询所有父级的信息
+			List<ConstructionStage> list = constructionStageService.findList(constructionStage);
+			List<ConstructionStage> returnList = new ArrayList<>();
+			//根据父级,查询所有子级的信息
+			for (ConstructionStage a :
+					list) {
+				List<ConstructionStage> childList = constructionStageService.findChildList(a);
+				returnList.add(a);
+				for (ConstructionStage b :
+						childList) {
+					returnList.add(b);
+				}
+			}
+			new ExportExcel("其他", ProjectOther.class).setDataList(returnList).write(response, fileName).dispose();
+			j.setSuccess(true);
+			j.setMsg("导出成功!");
+			return j;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导出其他记录失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+
     @ResponseBody
     @RequestMapping(value = "detail")
 	public Map<String, Object> detail(ConstructionStage constructionStage, HttpServletRequest request, HttpServletResponse response, Model model) {
@@ -210,14 +602,176 @@ public class ConstructionStageController extends BaseController {
 					list) {
 				constructionStageService.save(constructionStage);
 			}
-			j.setMsg( "已成功导入工程建设阶段记录");
+			j.setMsg( "已成功导入工程建设阶段记录");
 		} catch (Exception e) {
 			j.setSuccess(false);
 			j.setMsg("导入工程建设阶段失败!失败信息:"+e.getMessage());
 		}
 		return j;
     }
-	
+
+
+	/**
+	 * 导入开竣工管理Excel数据
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:startUp:import")
+	@RequestMapping(value = "importStartUp")
+	public AjaxJson importStartUp(@RequestParam("file")MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+		AjaxJson j = new AjaxJson();
+		try {
+			ImportExcel ei = new ImportExcel(file, 1, 0);
+			List<StartUP> list = ei.getDataList(StartUP.class);
+			for (StartUP startUP :
+					list) {
+				constructionStageService.startUpSave(startUP);
+			}
+			j.setMsg( "已成功导入开竣工管理阶段记录");
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导入开竣工管理失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+
+	/**
+	 * 导入造价管理阶段Excel数据
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:costManagment:import")
+	@RequestMapping(value = "importCostManagment")
+	public AjaxJson importCostManagment(@RequestParam("file")MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+		AjaxJson j = new AjaxJson();
+		try {
+			ImportExcel ei = new ImportExcel(file, 1, 0);
+			List<CostManagment> list = ei.getDataList(CostManagment.class);
+			for (CostManagment entity :
+					list) {
+				constructionStageService.costManagmentSave(entity);
+			}
+			j.setMsg( "已成功导入造价管理阶段记录");
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导入造价管理阶段失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+
+	/**
+	 * 导入其他阶段Excel数据
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:projectOther:import")
+	@RequestMapping(value = "importProjectOther")
+	public AjaxJson importProjectOther(@RequestParam("file")MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+		AjaxJson j = new AjaxJson();
+		try {
+			ImportExcel ei = new ImportExcel(file, 1, 0);
+			List<ProjectOther> list = ei.getDataList(ProjectOther.class);
+			for (ProjectOther entity :
+					list) {
+				constructionStageService.projectOtherSave(entity);
+			}
+			j.setMsg( "已成功导入其他阶段记录");
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导入其他阶段失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+
+	/**
+	 * 导入质量管理`Excel数据
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:qulityAssurance:import")
+	@RequestMapping(value = "importQulityAssurance")
+	public AjaxJson importQulityAssurance(@RequestParam("file")MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+		AjaxJson j = new AjaxJson();
+		try {
+			ImportExcel ei = new ImportExcel(file, 1, 0);
+			List<QulityAssurance> list = ei.getDataList(QulityAssurance.class);
+			for (QulityAssurance entity :
+					list) {
+				constructionStageService.qulityAssuranceSave(entity);
+			}
+			j.setMsg( "已成功导入质量管理阶段记录");
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导入质量管理阶段失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+
+	/**
+	 * 导入安全质量管理Excel数据
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:safetyQuality:import")
+	@RequestMapping(value = "importSafetyQuality")
+	public AjaxJson importSafetyQuality(@RequestParam("file")MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+		AjaxJson j = new AjaxJson();
+		try {
+			ImportExcel ei = new ImportExcel(file, 1, 0);
+			List<SafetyQuality> list = ei.getDataList(SafetyQuality.class);
+			for (SafetyQuality entity :
+					list) {
+				constructionStageService.safetyQualitySave(entity);
+			}
+			j.setMsg( "已成功导入安全质量管理记录");
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导入安全质量管理失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+
+	/**
+	 * 导入安全管理Excel数据
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:securityManagment:import")
+	@RequestMapping(value = "importSecurityManagment")
+	public AjaxJson importSecurityManagment(@RequestParam("file")MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+		AjaxJson j = new AjaxJson();
+		try {
+			ImportExcel ei = new ImportExcel(file, 1, 0);
+			List<SecurityManagment> list = ei.getDataList(SecurityManagment.class);
+			for (SecurityManagment entity :
+					list) {
+				constructionStageService.securityManagmentSave(entity);
+			}
+			j.setMsg( "已成功导入安全管理记录");
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导入安全管理失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+
+	/**
+	 * 导入工程进度管理Excel数据
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:projectSchedule:import")
+	@RequestMapping(value = "importProjectSchedule")
+	public AjaxJson importProjectSchedule(@RequestParam("file")MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+		AjaxJson j = new AjaxJson();
+		try {
+			ImportExcel ei = new ImportExcel(file, 1, 0);
+			List<ProjectSchedule> list = ei.getDataList(ProjectSchedule.class);
+			for (ProjectSchedule projectSchedule :
+					list) {
+				constructionStageService.projectScheduleSave(projectSchedule);
+			}
+			j.setMsg( "已成功导入工程进度管理记录");
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导入工程进度管理失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+
 	/**
 	 * 下载导入工程建设阶段数据模板
 	 */
@@ -237,6 +791,144 @@ public class ConstructionStageController extends BaseController {
 		}
 		return j;
     }
-	
 
+	/**
+	 * 下载导入造价管理阶段数据模板
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:costManagment:import")
+	@RequestMapping(value = "costManagment/template")
+	public AjaxJson importCostManagmentTemplate(HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+			String fileName = "造价管理导入模板.xlsx";
+			List<ConstructionStage> list = Lists.newArrayList();
+			new ExportExcel("造价管理阶段数据", CostManagment.class, 1).setDataList(list).write(response, fileName).dispose();
+			return null;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg( "导入模板下载失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+
+	/**
+	 * 下载导入其他阶段数据模板
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:projectOther:import")
+	@RequestMapping(value = "projectOther/template")
+	public AjaxJson importProjectOtherTemplate(HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+			String fileName = "其他导入模板.xlsx";
+			List<ConstructionStage> list = Lists.newArrayList();
+			new ExportExcel("其他阶段数据", ProjectOther.class, 1).setDataList(list).write(response, fileName).dispose();
+			return null;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg( "导入模板下载失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+
+	/**
+	 * 下载导入工程进度管理阶段数据模板
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:projectSchedule:import")
+	@RequestMapping(value = "projectSchedule/template")
+	public AjaxJson importProjectScheduleTemplate(HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+			String fileName = "工程进度管理导入模板.xlsx";
+			List<ConstructionStage> list = Lists.newArrayList();
+			new ExportExcel("工程进度管理阶段数据", ProjectSchedule.class, 1).setDataList(list).write(response, fileName).dispose();
+			return null;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg( "导入模板下载失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+
+	/**
+	 * 下载导入质量管理阶段数据模板
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:qulityAssurance:import")
+	@RequestMapping(value = "qulityAssurance/template")
+	public AjaxJson importQulityAssuranceTemplate(HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+			String fileName = "质量管理导入模板.xlsx";
+			List<ConstructionStage> list = Lists.newArrayList();
+			new ExportExcel("质量管理阶段数据", QulityAssurance.class, 1).setDataList(list).write(response, fileName).dispose();
+			return null;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg( "导入模板下载失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+
+	/**
+	 * 下载导入安全质量管理段数据模板
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:safetyQuality:import")
+	@RequestMapping(value = "safetyQuality/template")
+	public AjaxJson importSafetyQualityTemplate(HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+			String fileName = "安全质量管理导入模板.xlsx";
+			List<ConstructionStage> list = Lists.newArrayList();
+			new ExportExcel("安全质量管理阶段数据", SafetyQuality.class, 1).setDataList(list).write(response, fileName).dispose();
+			return null;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg( "导入模板下载失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+
+	/**
+	 * 下载导入安全管理段数据模板
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:securityManagment:import")
+	@RequestMapping(value = "securityManagment/template")
+	public AjaxJson importSecurityManagmentTemplate(HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+			String fileName = "安全管理导入模板.xlsx";
+			List<ConstructionStage> list = Lists.newArrayList();
+			new ExportExcel("安全管理阶段数据", SecurityManagment.class, 1).setDataList(list).write(response, fileName).dispose();
+			return null;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg( "导入模板下载失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+
+	/**
+	 * 下载导入开竣工管理段数据模板
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:startUP:import")
+	@RequestMapping(value = "startUP/template")
+	public AjaxJson importStartUpTemplate(HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+			String fileName = "开竣工管理导入模板.xlsx";
+			List<ConstructionStage> list = Lists.newArrayList();
+			new ExportExcel("开竣工管理阶段数据", StartUP.class, 1).setDataList(list).write(response, fileName).dispose();
+			return null;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg( "导入模板下载失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
 }

+ 5 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/service/ApplicationForService.java

@@ -6,6 +6,7 @@ package com.jeeplus.modules.filing.earlyEngineering.service;
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.service.CrudService;
 import com.jeeplus.modules.filing.earlyEngineering.entity.ApplicationFor;
+import com.jeeplus.modules.filing.earlyEngineering.entity.BiddingContract;
 import com.jeeplus.modules.filing.earlyEngineering.mapper.ApplicationForMapper;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -75,4 +76,8 @@ public class ApplicationForService extends CrudService<ApplicationForMapper, App
 	public Integer findByCode(ApplicationFor entity) {
 		return mapper.findByCode(entity);
 	}
+
+	public List<ApplicationFor> findChildList(ApplicationFor entity) {
+		return mapper.findChildList(entity);
+	}
 }

+ 5 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/service/BiddingContractService.java

@@ -6,6 +6,7 @@ package com.jeeplus.modules.filing.earlyEngineering.service;
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.service.CrudService;
 import com.jeeplus.modules.filing.earlyEngineering.entity.BiddingContract;
+import com.jeeplus.modules.filing.earlyEngineering.entity.DesignStage;
 import com.jeeplus.modules.filing.earlyEngineering.mapper.BiddingContractMapper;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -75,4 +76,8 @@ public class BiddingContractService extends CrudService<BiddingContractMapper, B
 	public Integer findByCode(BiddingContract entity) {
 		return mapper.findByCode(entity);
 	}
+
+	public List<BiddingContract> findChildList(BiddingContract entity) {
+		return mapper.findChildList(entity);
+	}
 }

+ 6 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/service/DesignStageService.java

@@ -8,6 +8,7 @@ import com.jeeplus.core.service.CrudService;
 import com.jeeplus.modules.filing.approvalStage.entity.ApprovalStage;
 import com.jeeplus.modules.filing.approvalStage.mapper.ApprovalStageMapper;
 import com.jeeplus.modules.filing.earlyEngineering.entity.DesignStage;
+import com.jeeplus.modules.filing.earlyEngineering.entity.EarlyEngineering;
 import com.jeeplus.modules.filing.earlyEngineering.mapper.DesignStageMapper;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -77,4 +78,9 @@ public class DesignStageService extends CrudService<DesignStageMapper, DesignSta
 	public Integer findByCode(DesignStage entity) {
 		return mapper.findByCode(entity);
 	}
+
+
+	public List<DesignStage> findChildList(DesignStage entity) {
+		return mapper.findChildList(entity);
+	}
 }

+ 5 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/service/EarlyEngineeringService.java

@@ -6,6 +6,7 @@ package com.jeeplus.modules.filing.earlyEngineering.service;
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.service.CrudService;
 import com.jeeplus.modules.filing.earlyEngineering.entity.EarlyEngineering;
+import com.jeeplus.modules.filing.earlyEngineering.entity.LegalCompliance;
 import com.jeeplus.modules.filing.earlyEngineering.mapper.EarlyEngineeringMapper;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -112,4 +113,8 @@ public class EarlyEngineeringService extends CrudService<EarlyEngineeringMapper,
 	public Integer findByCode(EarlyEngineering entity) {
 		return mapper.findByCode(entity);
 	}
+
+	public List<EarlyEngineering> findChildList(EarlyEngineering entity) {
+		return mapper.findChildList(entity);
+	}
 }

+ 5 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/service/LegalComplianceService.java

@@ -6,6 +6,7 @@ package com.jeeplus.modules.filing.earlyEngineering.service;
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.service.CrudService;
 import com.jeeplus.modules.filing.earlyEngineering.entity.LegalCompliance;
+import com.jeeplus.modules.filing.earlyEngineering.entity.ReviewStage;
 import com.jeeplus.modules.filing.earlyEngineering.mapper.LegalComplianceMapper;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -74,4 +75,8 @@ public class LegalComplianceService extends CrudService<LegalComplianceMapper, L
 	public Integer findByCode(LegalCompliance entity) {
 		return mapper.findByCode(entity);
 	}
+
+	public List<LegalCompliance> findChildList(LegalCompliance entity) {
+		return mapper.findChildList(entity);
+	}
 }

+ 5 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/service/ReviewStageService.java

@@ -5,6 +5,7 @@ package com.jeeplus.modules.filing.earlyEngineering.service;
 
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.filing.approvalStage.entity.EarlyStage;
 import com.jeeplus.modules.filing.earlyEngineering.entity.ReviewStage;
 import com.jeeplus.modules.filing.earlyEngineering.mapper.ReviewStageMapper;
 import org.springframework.stereotype.Service;
@@ -75,4 +76,8 @@ public class ReviewStageService extends CrudService<ReviewStageMapper, ReviewSta
 	public Integer findByCode(ReviewStage entity) {
 		return mapper.findByCode(entity);
 	}
+
+	public List<ReviewStage> findChildList(ReviewStage entity) {
+		return mapper.findChildList(entity);
+	}
 }

+ 15 - 2
src/main/java/com/jeeplus/modules/filing/earlyEngineering/web/ApplicationForController.java

@@ -24,6 +24,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -174,8 +175,20 @@ public class ApplicationForController extends BaseController {
 		AjaxJson j = new AjaxJson();
 		try {
             String fileName = "报建审批"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
-            Page<ApplicationFor> page = applicationForService.findAllPage(new Page<ApplicationFor>(request, response, -1), applicationFor);
-    		new ExportExcel("报建审批", ApplicationFor.class).setDataList(page.getList()).write(response, fileName).dispose();
+			//查询所有父级的信息
+			List<ApplicationFor> list = applicationForService.findList(applicationFor);
+			List<ApplicationFor> returnList = new ArrayList<>();
+			//根据父级,查询所有子级的信息
+			for (ApplicationFor a :
+					list) {
+				List<ApplicationFor> childList = applicationForService.findChildList(a);
+				returnList.add(a);
+				for (ApplicationFor b :
+						childList) {
+					returnList.add(b);
+				}
+			}
+    		new ExportExcel("报建审批", ApplicationFor.class).setDataList(returnList).write(response, fileName).dispose();
     		j.setSuccess(true);
     		j.setMsg("导出成功!");
     		return j;

+ 16 - 2
src/main/java/com/jeeplus/modules/filing/earlyEngineering/web/BiddingContractController.java

@@ -8,6 +8,7 @@ import com.jeeplus.common.utils.excel.ExportExcel;
 import com.jeeplus.common.utils.excel.ImportExcel;
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.filing.constructionStage.entity.ConstructionStage;
 import com.jeeplus.modules.filing.earlyEngineering.entity.BiddingContract;
 import com.jeeplus.modules.filing.earlyEngineering.service.BiddingContractService;
 import com.jeeplus.modules.filing.filingImages.service.FilingImagesService;
@@ -24,6 +25,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -174,8 +176,20 @@ public class BiddingContractController extends BaseController {
 		AjaxJson j = new AjaxJson();
 		try {
             String fileName = "招标与合同管理"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
-            Page<BiddingContract> page = biddingContractService.findAllPage(new Page<BiddingContract>(request, response, -1), biddingContract);
-    		new ExportExcel("招标与合同管理", BiddingContract.class).setDataList(page.getList()).write(response, fileName).dispose();
+			//查询所有父级的信息
+			List<BiddingContract> list = biddingContractService.findList(biddingContract);
+			List<BiddingContract> returnList = new ArrayList<>();
+			//根据父级,查询所有子级的信息
+			for (BiddingContract a :
+					list) {
+				List<BiddingContract> childList = biddingContractService.findChildList(a);
+				returnList.add(a);
+				for (BiddingContract b :
+						childList) {
+					returnList.add(b);
+				}
+			}
+    		new ExportExcel("招标与合同管理", BiddingContract.class).setDataList(returnList).write(response, fileName).dispose();
     		j.setSuccess(true);
     		j.setMsg("导出成功!");
     		return j;

+ 15 - 2
src/main/java/com/jeeplus/modules/filing/earlyEngineering/web/DesignStageController.java

@@ -8,6 +8,7 @@ import com.jeeplus.common.utils.excel.ExportExcel;
 import com.jeeplus.common.utils.excel.ImportExcel;
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.filing.constructionStage.entity.ConstructionStage;
 import com.jeeplus.modules.filing.earlyEngineering.entity.DesignStage;
 import com.jeeplus.modules.filing.earlyEngineering.service.DesignStageService;
 import com.jeeplus.modules.filing.filingImages.entity.FilingImages;
@@ -182,8 +183,20 @@ public class DesignStageController extends BaseController {
 		AjaxJson j = new AjaxJson();
 		try {
             String fileName = "初设阶段"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
-            Page<DesignStage> page = designStageService.findAllPage(new Page<DesignStage>(request, response, -1), designStage);
-    		new ExportExcel("初设阶段", DesignStage.class).setDataList(page.getList()).write(response, fileName).dispose();
+			//查询所有父级的信息
+			List<DesignStage> list = designStageService.findList(designStage);
+			List<DesignStage> returnList = new ArrayList<>();
+			//根据父级,查询所有子级的信息
+			for (DesignStage a :
+					list) {
+				List<DesignStage> childList = designStageService.findChildList(a);
+				returnList.add(a);
+				for (DesignStage b :
+						childList) {
+					returnList.add(b);
+				}
+			}
+    		new ExportExcel("初设阶段", DesignStage.class).setDataList(returnList).write(response, fileName).dispose();
     		j.setSuccess(true);
     		j.setMsg("导出成功!");
     		return j;

+ 16 - 2
src/main/java/com/jeeplus/modules/filing/earlyEngineering/web/EarlyEngineeringController.java

@@ -8,6 +8,7 @@ import com.jeeplus.common.utils.excel.ExportExcel;
 import com.jeeplus.common.utils.excel.ImportExcel;
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.filing.constructionStage.entity.ConstructionStage;
 import com.jeeplus.modules.filing.earlyEngineering.entity.EarlyEngineering;
 import com.jeeplus.modules.filing.earlyEngineering.service.EarlyEngineeringService;
 import com.jeeplus.modules.filing.filingImages.service.FilingImagesService;
@@ -24,6 +25,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -174,8 +176,20 @@ public class EarlyEngineeringController extends BaseController {
 		AjaxJson j = new AjaxJson();
 		try {
             String fileName = "工程前期阶段"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
-            Page<EarlyEngineering> page = earlyEngineeringService.findAllPage(new Page<EarlyEngineering>(request, response, -1), earlyEngineering);
-    		new ExportExcel("工程前期阶段", EarlyEngineering.class).setDataList(page.getList()).write(response, fileName).dispose();
+			//查询所有父级的信息
+			List<EarlyEngineering> list = earlyEngineeringService.findList(earlyEngineering);
+			List<EarlyEngineering> returnList = new ArrayList<>();
+			//根据父级,查询所有子级的信息
+			for (EarlyEngineering a :
+					list) {
+				List<EarlyEngineering> childList = earlyEngineeringService.findChildList(a);
+				returnList.add(a);
+				for (EarlyEngineering b :
+						childList) {
+					returnList.add(b);
+				}
+			}
+    		new ExportExcel("工程前期阶段", EarlyEngineering.class).setDataList(returnList).write(response, fileName).dispose();
     		j.setSuccess(true);
     		j.setMsg("导出成功!");
     		return j;

+ 16 - 2
src/main/java/com/jeeplus/modules/filing/earlyEngineering/web/LegalComplianceController.java

@@ -8,6 +8,7 @@ import com.jeeplus.common.utils.excel.ExportExcel;
 import com.jeeplus.common.utils.excel.ImportExcel;
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.filing.constructionStage.entity.ConstructionStage;
 import com.jeeplus.modules.filing.earlyEngineering.entity.LegalCompliance;
 import com.jeeplus.modules.filing.earlyEngineering.service.LegalComplianceService;
 import com.jeeplus.modules.filing.earlyEngineering.service.LegalComplianceService;
@@ -25,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -175,8 +177,20 @@ public class LegalComplianceController extends BaseController {
 		AjaxJson j = new AjaxJson();
 		try {
             String fileName = "依法合规"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
-            Page<LegalCompliance> page = legalComplianceService.findAllPage(new Page<LegalCompliance>(request, response, -1), legalCompliance);
-    		new ExportExcel("依法合规", LegalCompliance.class).setDataList(page.getList()).write(response, fileName).dispose();
+			//查询所有父级的信息
+			List<LegalCompliance> list = legalComplianceService.findList(legalCompliance);
+			List<LegalCompliance> returnList = new ArrayList<>();
+			//根据父级,查询所有子级的信息
+			for (LegalCompliance a :
+					list) {
+				List<LegalCompliance> childList = legalComplianceService.findChildList(a);
+				returnList.add(a);
+				for (LegalCompliance b :
+						childList) {
+					returnList.add(b);
+				}
+			}
+    		new ExportExcel("依法合规", LegalCompliance.class).setDataList(returnList).write(response, fileName).dispose();
     		j.setSuccess(true);
     		j.setMsg("导出成功!");
     		return j;

+ 16 - 2
src/main/java/com/jeeplus/modules/filing/earlyEngineering/web/ReviewStageController.java

@@ -8,6 +8,7 @@ import com.jeeplus.common.utils.excel.ExportExcel;
 import com.jeeplus.common.utils.excel.ImportExcel;
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.filing.constructionStage.entity.ConstructionStage;
 import com.jeeplus.modules.filing.earlyEngineering.entity.ReviewStage;
 import com.jeeplus.modules.filing.earlyEngineering.service.ReviewStageService;
 import com.jeeplus.modules.filing.filingImages.service.FilingImagesService;
@@ -24,6 +25,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -174,8 +176,20 @@ public class ReviewStageController extends BaseController {
 		AjaxJson j = new AjaxJson();
 		try {
             String fileName = "批概阶段"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
-            Page<ReviewStage> page = reviewStageService.findAllPage(new Page<ReviewStage>(request, response, -1), reviewStage);
-    		new ExportExcel("批概阶段", ReviewStage.class).setDataList(page.getList()).write(response, fileName).dispose();
+			//查询所有父级的信息
+			List<ReviewStage> list = reviewStageService.findList(reviewStage);
+			List<ReviewStage> returnList = new ArrayList<>();
+			//根据父级,查询所有子级的信息
+			for (ReviewStage a :
+					list) {
+				List<ReviewStage> childList = reviewStageService.findChildList(a);
+				returnList.add(a);
+				for (ReviewStage b :
+						childList) {
+					returnList.add(b);
+				}
+			}
+    		new ExportExcel("批概阶段", ReviewStage.class).setDataList(returnList).write(response, fileName).dispose();
     		j.setSuccess(true);
     		j.setMsg("导出成功!");
     		return j;

Plik diff jest za duży
+ 1376 - 0
src/main/java/com/jeeplus/modules/filing/filingImages/service/FilingImagesService.java


+ 176 - 0
src/main/java/com/jeeplus/modules/filing/filingImages/web/FilingImagesController.java

@@ -241,4 +241,180 @@ public class FilingImagesController extends BaseController {
 		}
 		return "redirect:"+Global.getAdminPath()+"/filing/applicationFor/";
 	}
+
+	/**
+	 * 项目相应文件批量下载并压缩
+	 */
+	@RequestMapping(value = "exportConstructionStage")
+	public String exportConstructionStage(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+		String listIds = request.getParameter("ids");
+		List<String> idList = new ArrayList<>();
+		if (null != listIds && !"".equals(listIds)) {
+			idList = Arrays.asList(listIds.split(","));
+		} else {
+			idList = basicInformationService.findAllId();
+		}
+		try {
+			String filePath = filingImagesService.exportConstructionStage(idList);
+			filingImagesService.downloadZipFile(filePath,response);
+			return null;
+		} catch (Exception e) {
+			addMessage(redirectAttributes, "批量下载项目文件失败!");
+		}
+		return "redirect:"+Global.getAdminPath()+"/filing/constructionStage/";
+	}
+
+	/**
+	 * 项目相应文件批量下载并压缩
+	 */
+	@RequestMapping(value = "exportStartUp")
+	public String exportStartUp(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+		String listIds = request.getParameter("ids");
+		List<String> idList = new ArrayList<>();
+		if (null != listIds && !"".equals(listIds)) {
+			idList = Arrays.asList(listIds.split(","));
+		} else {
+			idList = basicInformationService.findAllId();
+		}
+		try {
+			String filePath = filingImagesService.exportStartUp(idList);
+			filingImagesService.downloadZipFile(filePath,response);
+			return null;
+		} catch (Exception e) {
+			addMessage(redirectAttributes, "批量下载项目文件失败!");
+		}
+		return "redirect:"+Global.getAdminPath()+"/filing/constructionStage/startUp";
+	}
+
+	/**
+	 * 项目相应文件批量下载并压缩
+	 */
+	@RequestMapping(value = "exportCostManagment")
+	public String exportCostManagment(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+		String listIds = request.getParameter("ids");
+		List<String> idList = new ArrayList<>();
+		if (null != listIds && !"".equals(listIds)) {
+			idList = Arrays.asList(listIds.split(","));
+		} else {
+			idList = basicInformationService.findAllId();
+		}
+		try {
+			String filePath = filingImagesService.exportCostManagment(idList);
+			filingImagesService.downloadZipFile(filePath,response);
+			return null;
+		} catch (Exception e) {
+			addMessage(redirectAttributes, "批量下载项目文件失败!");
+		}
+		return "redirect:"+Global.getAdminPath()+"/filing/constructionStage/costManagment";
+	}
+
+	/**
+	 * 项目相应文件批量下载并压缩
+	 */
+	@RequestMapping(value = "exportProjectOther")
+	public String exportProjectOther(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+		String listIds = request.getParameter("ids");
+		List<String> idList = new ArrayList<>();
+		if (null != listIds && !"".equals(listIds)) {
+			idList = Arrays.asList(listIds.split(","));
+		} else {
+			idList = basicInformationService.findAllId();
+		}
+		try {
+			String filePath = filingImagesService.exportProjectOther(idList);
+			filingImagesService.downloadZipFile(filePath,response);
+			return null;
+		} catch (Exception e) {
+			addMessage(redirectAttributes, "批量下载项目文件失败!");
+		}
+		return "redirect:"+Global.getAdminPath()+"/filing/constructionStage/projectOther";
+	}
+
+	/**
+	 * 项目相应文件批量下载并压缩
+	 */
+	@RequestMapping(value = "exportProjectSchedule")
+	public String exportProjectSchedule(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+		String listIds = request.getParameter("ids");
+		List<String> idList = new ArrayList<>();
+		if (null != listIds && !"".equals(listIds)) {
+			idList = Arrays.asList(listIds.split(","));
+		} else {
+			idList = basicInformationService.findAllId();
+		}
+		try {
+			String filePath = filingImagesService.exportProjectSchedule(idList);
+			filingImagesService.downloadZipFile(filePath,response);
+			return null;
+		} catch (Exception e) {
+			addMessage(redirectAttributes, "批量下载项目文件失败!");
+		}
+		return "redirect:"+Global.getAdminPath()+"/filing/constructionStage/projectSchedule";
+	}
+
+	/**
+	 * 项目相应文件批量下载并压缩
+	 */
+	@RequestMapping(value = "exportQulityAssurance")
+	public String exportQulityAssurance(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+		String listIds = request.getParameter("ids");
+		List<String> idList = new ArrayList<>();
+		if (null != listIds && !"".equals(listIds)) {
+			idList = Arrays.asList(listIds.split(","));
+		} else {
+			idList = basicInformationService.findAllId();
+		}
+		try {
+			String filePath = filingImagesService.exportQulityAssurance(idList);
+			filingImagesService.downloadZipFile(filePath,response);
+			return null;
+		} catch (Exception e) {
+			addMessage(redirectAttributes, "批量下载项目文件失败!");
+		}
+		return "redirect:"+Global.getAdminPath()+"/filing/constructionStage/qulityAssurance";
+	}
+
+	/**
+	 * 项目相应文件批量下载并压缩
+	 */
+	@RequestMapping(value = "exportSafetyQuality")
+	public String exportSafetyQuality(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+		String listIds = request.getParameter("ids");
+		List<String> idList = new ArrayList<>();
+		if (null != listIds && !"".equals(listIds)) {
+			idList = Arrays.asList(listIds.split(","));
+		} else {
+			idList = basicInformationService.findAllId();
+		}
+		try {
+			String filePath = filingImagesService.exportSafetyQuality(idList);
+			filingImagesService.downloadZipFile(filePath,response);
+			return null;
+		} catch (Exception e) {
+			addMessage(redirectAttributes, "批量下载项目文件失败!");
+		}
+		return "redirect:"+Global.getAdminPath()+"/filing/constructionStage/safetyQuality";
+	}
+
+	/**
+	 * 项目相应文件批量下载并压缩
+	 */
+	@RequestMapping(value = "exportSecurityManagment")
+	public String exportSecurityManagment(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+		String listIds = request.getParameter("ids");
+		List<String> idList = new ArrayList<>();
+		if (null != listIds && !"".equals(listIds)) {
+			idList = Arrays.asList(listIds.split(","));
+		} else {
+			idList = basicInformationService.findAllId();
+		}
+		try {
+			String filePath = filingImagesService.exportSecurityManagment(idList);
+			filingImagesService.downloadZipFile(filePath,response);
+			return null;
+		} catch (Exception e) {
+			addMessage(redirectAttributes, "批量下载项目文件失败!");
+		}
+		return "redirect:"+Global.getAdminPath()+"/filing/constructionStage/securityManagment";
+	}
 }

+ 268 - 5
src/main/webapp/webpage/modules/filing/constructionStage/constructionStageForm.jsp

@@ -22,7 +22,34 @@
     <script type="text/javascript">
 
         $(document).ready(function () {
-            $('#initialDesignDate').datetimepicker({
+            $('#commDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#compDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#cossDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#acceptanceDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#soilWaterDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#levelRiskTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standStartTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standTransferTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standAcceptanceTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#dateOfInterview').datetimepicker({
                 format: "YYYY-MM-DD"
             });
         });
@@ -73,9 +100,9 @@
             </td>
             <td class="width-15 active"><label class="pull-right">开工日期:</label></td>
             <td class="width-35">
-                <div class='input-group form_datetime' id='initialDesignDate'>
-                    <input type='text' name="initialDesignDate" class="form-control"
-                           value="<fmt:formatDate value="${constructionStage.compDate}" pattern="yyyy-MM-dd"/>"/>
+                <div class='input-group form_datetime' id='commDate'>
+                    <input type='text' name="commDate" class="form-control"
+                           value="<fmt:formatDate value="${constructionStage.commDate}" pattern="yyyy-MM-dd"/>"/>
                     <span class="input-group-addon">
                           <span class="glyphicon glyphicon-calendar"></span>
                     </span>
@@ -85,7 +112,7 @@
         <tr>
             <td class="width-15 active"><label class="pull-right">开工报告:</label></td>
             <td class="width-35">
-                <sys:fileUpload path="compDate" value="${constructionStage.compDate}" type="*" uploadPath="/photo"
+                <sys:fileUpload path="commReport" value="${constructionStage.commReport}" type="*" uploadPath="/photo"
                                 readonly="false"/>
             </td>
             <td class="width-15 active"><label class="pull-right">竣工日期:</label></td>
@@ -99,6 +126,242 @@
                 </div>
             </td>
         </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">竣工报告:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="compLetion" value="${constructionStage.compLetion}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">投运日期:</label></td>
+            <td class="width-35">
+                <div class='input-group form_datetime' id='cossDate'>
+                    <input type='text' name="cossDate" class="form-control"
+                           value="<fmt:formatDate value="${constructionStage.cossDate}" pattern="yyyy-MM-dd"/>"/>
+                    <span class="input-group-addon">
+                            <span class="glyphicon glyphicon-calendar"></span>
+                    </span>
+                </div>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">投运报告:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="cossReport" value="${constructionStage.cossReport}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">环评验收日期:</label></td>
+            <td class="width-35">
+                <div class='input-group form_datetime' id='acceptanceDate'>
+                    <input type='text' name="acceptanceDate" class="form-control"
+                           value="<fmt:formatDate value="${constructionStage.acceptanceDate}" pattern="yyyy-MM-dd"/>"/>
+                    <span class="input-group-addon">
+                            <span class="glyphicon glyphicon-calendar"></span>
+                    </span>
+                </div>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">水保验收日期:</label></td>
+            <td class="width-35">
+                <div class='input-group form_datetime' id='soilWaterDate'>
+                    <input type='text' name="soilWaterDate" class="form-control"
+                           value="<fmt:formatDate value="${constructionStage.soilWaterDate}" pattern="yyyy-MM-dd"/>"/>
+                    <span class="input-group-addon">
+                            <span class="glyphicon glyphicon-calendar"></span>
+                    </span>
+                </div>
+            </td>
+            <td class="width-15 active"><label class="pull-right">例会报告:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="enclosure" value="${constructionStage.enclosure}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">土建:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="scheduleCivil" value="${constructionStage.scheduleCivil}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">电气:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="scheduleElectrical" value="${constructionStage.scheduleElectrical}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">调试:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="scheduleDebugging" value="${constructionStage.scheduleDebugging}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">验收:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="scheduleCheck" value="${constructionStage.scheduleCheck}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">累计定性描述:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="scheduleCumulative" value="${constructionStage.scheduleCumulative}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">启委会文:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="openingCommittee" value="${constructionStage.openingCommittee}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">调度命名编号:</label></td>
+            <td class="width-35">
+                <form:input path="dispatchingNaming"  htmlEscape="false" class="form-control"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">安全质量量化考核成果:</label></td>
+            <td class="width-35">
+                <form:input path="resultsSafety" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">工程荣誉:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="engineeringHonors" value="${constructionStage.engineeringHonors}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">工程结算审核报告:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="settAuditReport" value="${constructionStage.settAuditReport}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">工程决算审计报告:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="accAuditReport" value="${constructionStage.accAuditReport}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">增资产生的卡片信息:</label></td>
+            <td class="width-35">
+                <form:input path="cardInformation" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">达标投产文:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="standardProduction" value="${constructionStage.standardProduction}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">五方质量终身责任承诺书:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="fiveParty" value="${constructionStage.fiveParty}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">分包单位名称:</label></td>
+            <td class="width-35">
+                <form:input path="nameOfSubcontractor" htmlEscape="false" class="form-control"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">项目地点:</label></td>
+            <td class="width-35">
+                <form:input path="projectLocation" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">四级风险内容:</label></td>
+            <td class="width-35">
+                <form:input path="levelRiskContent" htmlEscape="false" class="form-control"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">四级风险实施时间:</label></td>
+            <td class="width-35">
+                <div class='input-group form_datetime' id='levelRiskTime'>
+                    <input type='text' name="levelRiskTime" class="form-control"
+                           value="<fmt:formatDate value="${constructionStage.levelRiskTime}" pattern="yyyy-MM-dd"/>"/>
+                    <span class="input-group-addon">
+                            <span class="glyphicon glyphicon-calendar"></span>
+                    </span>
+                </div>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">“标准化开工”时间:</label></td>
+            <td class="width-35">
+                <div class='input-group form_datetime' id='standStartTime'>
+                    <input type='text' name="standStartTime" class="form-control"
+                           value="<fmt:formatDate value="${constructionStage.standStartTime}" pattern="yyyy-MM-dd"/>"/>
+                    <span class="input-group-addon">
+                            <span class="glyphicon glyphicon-calendar"></span>
+                    </span>
+                </div>
+            </td>
+            <td class="width-15 active"><label class="pull-right">“标准化转序”时间:</label></td>
+            <td class="width-35">
+                <div class='input-group form_datetime' id='standTransferTime'>
+                    <input type='text' name="standTransferTime" class="form-control"
+                           value="<fmt:formatDate value="${constructionStage.standTransferTime}" pattern="yyyy-MM-dd"/>"/>
+                    <span class="input-group-addon">
+                            <span class="glyphicon glyphicon-calendar"></span>
+                    </span>
+                </div>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">“标准化转序”时间</label></td>
+            <td class="width-35">
+                <div class='input-group form_datetime' id='standAcceptanceTime'>
+                    <input type='text' name="standAcceptanceTime" class="form-control"
+                           value="<fmt:formatDate value="${constructionStage.standAcceptanceTime}" pattern="yyyy-MM-dd"/>"/>
+                    <span class="input-group-addon">
+                            <span class="glyphicon glyphicon-calendar"></span>
+                    </span>
+                </div>
+            </td>
+            <td class="width-15 active"><label class="pull-right">约谈日期</label></td>
+            <td class="width-35">
+                <div class='input-group form_datetime' id='dateOfInterview'>
+                    <input type='text' name="dateOfInterview" class="form-control"
+                           value="<fmt:formatDate value="${constructionStage.dateOfInterview}" pattern="yyyy-MM-dd"/>"/>
+                    <span class="input-group-addon">
+                            <span class="glyphicon glyphicon-calendar"></span>
+                    </span>
+                </div>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">约谈会议纪要</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="mettingMinutes" value="${constructionStage.mettingMinutes}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">累计扣款金额</label></td>
+            <td class="width-35">
+                <form:input path="accumulatedAmount" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">扣款单</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="deductionForm" value="${constructionStage.deductionForm}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">工程遗留相关事项</label></td>
+            <td class="width-35">
+                <form:input path="mattersLeft" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">退料及报废手续</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="returnAndScrap" value="${constructionStage.returnAndScrap}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">重要的附件等扫描件</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="importantAccessories" value="${constructionStage.importantAccessories}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+        </tr>
         </tbody>
     </table>
     </div>

+ 230 - 37
src/main/webapp/webpage/modules/filing/constructionStage/constructionStageList.js

@@ -136,18 +136,145 @@ $(document).ready(function() {
 
 		    }
 			,{
-		        field: 'preDesignNo',
-		        title: '初设批复文号',
+		        field: 'commDate',
+		        title: '开工日期',
 			   width: 100,
 		        sortable: true,
-		        sortName: 'preDesignNo'
+		        sortName: 'commDate'
 		    }
-			, {
-					   field: 'initialDesignDate',
-					   title: '初设批复日期',
+				   , {
+					   field: 'compDate',
+					   title: '竣工日期',
 					   width: 100,
 					   sortable: true,
-					   sortName: 'initialDesignDate'
+					   sortName: 'compDate'
+
+				   }
+				   , {
+					   field: 'cossDate',
+					   title: '投运日期',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'cossDate'
+
+				   }
+				   , {
+					   field: 'acceptanceDate',
+					   title: '环评验收日期',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'acceptanceDate'
+
+				   }
+				   , {
+					   field: 'soilWaterDate',
+					   title: '水保验收日期',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'soilWaterDate'
+
+				   }
+				   , {
+					   field: 'dispatchingNaming',
+					   title: '调度命名编号',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'dispatchingNaming'
+
+				   }
+				   , {
+					   field: 'resultsSafety',
+					   title: '安全质量量化考核成果',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'resultsSafety'
+
+				   }
+				   , {
+					   field: 'cardInformation',
+					   title: '增资产生的卡片信息',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'cardInformation'
+
+				   }
+				   , {
+					   field: 'nameOfSubcontractor',
+					   title: '分包单位名称',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'nameOfSubcontractor'
+				   }
+				   , {
+					   field: 'projectLocation',
+					   title: '项目地点',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'projectLocation'
+
+				   }
+				   , {
+					   field: 'levelRiskContent',
+					   title: '四级风险内容',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'levelRiskContent'
+
+				   }
+				   , {
+					   field: 'levelRiskTime',
+					   title: '四级风险实施时间',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'levelRiskTime'
+
+				   }
+				   , {
+					   field: 'standStartTime',
+					   title: '“标准化开工”时间',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'standStartTime'
+
+				   }
+				   , {
+					   field: 'standTransferTime',
+					   title: '“标准化转序”时间',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'standTransferTime'
+
+				   }
+				   , {
+					   field: 'standAcceptanceTime',
+					   title: '“标准化预验收”时间',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'standAcceptanceTime'
+
+				   }
+				   , {
+					   field: 'dateOfInterview',
+					   title: '约谈日期',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'dateOfInterview'
+
+				   }
+				   , {
+					   field: 'accumulatedAmount',
+					   title: '累计扣款金额',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'accumulatedAmount'
+
+				   }
+				   , {
+					   field: 'mattersLeft',
+					   title: '工程遗留相关事项',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'mattersLeft'
 
 				   }
 		     ],
@@ -183,38 +310,104 @@ $(document).ready(function() {
 			columns: [{
 				width: 65
 			},{
-				field: 'projectCode',
-				title: '',
-				width: 100
-				,formatter:function(value, row , index){
-					if(value == null || value ==""){
-						value = "-";
+					field: 'projectCode',
+					width: 100
+					,formatter:function(value, row , index){
+						if(value == null || value ==""){
+							value = "-";
+						}
+					<c:choose>
+						<c:when test="${fns:hasPermission('test:filing:constructionStage:edit')}">
+						return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+					</c:when>
+						<c:when test="${fns:hasPermission('test:filing:constructionStage:view')}">
+						return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+					</c:when>
+						<c:otherwise>
+						return value;
+					</c:otherwise>
+						</c:choose>
+
 					}
-				<c:choose>
-					<c:when test="${fns:hasPermission('test:filing:constructionStage:edit')}">
-					return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
-				</c:when>
-					<c:otherwise>
-					return value;
-				</c:otherwise>
-					</c:choose>
 				}
-			}, {
-				field: 'monomerCode',
-				title: '',
-				width: 100
-			}, {
-				field: 'entryName',
-				title: '',
-				width: 100,
-			},{
-				field: 'preDesignNo',
-				title: '',
-				width: 100,
-			}
 				,{
-					field: 'initialDesignDate',
-					title: '',
+					field: 'monomerCode',
+					width: 100,
+
+				}
+				,{
+					field: 'entryName',
+					width: 100,
+				}
+				,{
+					field: 'commDate',
+					width: 100,
+				}
+				, {
+					field: 'compDate',
+					width: 100,
+				}
+				, {
+					field: 'cossDate',
+					width: 100,
+				}
+				, {
+					field: 'acceptanceDate',
+					width: 100,
+				}
+				, {
+					field: 'soilWaterDate',
+					width: 100,
+				}
+				, {
+					field: 'dispatchingNaming',
+					width: 100,
+				}
+				, {
+					field: 'resultsSafety',
+					width: 100,
+				}
+				, {
+					field: 'cardInformation',
+					width: 100,
+				},{
+					field: 'nameOfSubcontractor',
+					width: 100,
+				}
+				, {
+					field: 'projectLocation',
+					width: 100,
+				}
+				, {
+					field: 'levelRiskContent',
+					width: 100,
+				}
+				, {
+					field: 'levelRiskTime',
+					width: 100,
+				}
+				, {
+					field: 'standStartTime',
+					width: 100,
+				}
+				, {
+					field: 'standTransferTime',
+					width: 100,
+				}
+				, {
+					field: 'standAcceptanceTime',
+					width: 100,
+				}
+				, {
+					field: 'dateOfInterview',
+					width: 100,
+				}
+				, {
+					field: 'accumulatedAmount',
+					width: 100,
+				}
+				, {
+					field: 'mattersLeft',
 					width: 100,
 				}
 				]
@@ -269,7 +462,7 @@ $(document).ready(function() {
 	  });
 
 	$("#exportFiles").bind("click", function () {
-		$("#searchForm").attr("action","${ctx}/filing/filingImages/exportDesignStage?ids="+ getIdSelections());
+		$("#searchForm").attr("action","${ctx}/filing/filingImages/exportConstructionStage?ids="+ getIdSelections());
 		$("#searchForm").submit();
 		return true;
 	});

+ 123 - 0
src/main/webapp/webpage/modules/filing/costManagment/costManagmentForm.jsp

@@ -0,0 +1,123 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>核准阶段管理</title>
+    <meta name="decorator" content="ani"/>
+    <%@ include file="/webpage/include/bootstraptable.jsp" %>
+    <style type="text/css">
+        /* 下边两行是去掉input 输入框右边的上下箭头按钮*/
+        .deal::-webkit-inner-spin-button {
+            -webkit-appearance: none !important;
+        }
+
+        .deal::-webkit-outer-spin-button {
+            -webkit-appearance: none !important;
+        }
+
+        input[type="number"] {
+            -moz-appearance: textfield;
+        }
+    </style>
+    <script type="text/javascript">
+
+        $(document).ready(function () {
+            $('#commDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#compDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#cossDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#acceptanceDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#soilWaterDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#levelRiskTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standStartTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standTransferTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standAcceptanceTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#dateOfInterview').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+        });
+
+        function save() {
+            var isValidate = jp.validateForm('#inputForm');//校验表单
+            if (!isValidate) {
+                return false;
+            } else {
+                jp.loading();
+                jp.post("${ctx}/filing/constructionStage/save", $('#inputForm').serialize(), function (data) {
+                    if (data.success) {
+                        jp.getParent().refresh();
+                        var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+                        parent.layer.close(dialogIndex);
+                        jp.success(data.msg)
+
+                    } else {
+                        jp.error(data.msg);
+                    }
+                })
+            }
+
+        }
+
+    </script>
+</head>
+<body class="bg-white">
+<form:form id="inputForm" modelAttribute="constructionStage" action="${ctx}/filing/constructionStage/save" method="post"
+           class="form-horizontal">
+    <form:hidden path="id"/>
+    <table class="table table-bordered">
+        <tbody>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">项目编码:</label></td>
+            <td class="width-35">
+                <form:input path="projectCode" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">单体编码:</label></td>
+            <td class="width-35">
+                <form:input path="monomerCode" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+            <td class="width-35">
+                <form:input path="entryName" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">工程结算审核报告:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="settAuditReport" value="${constructionStage.settAuditReport}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">工程决算审计报告:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="accAuditReport" value="${constructionStage.accAuditReport}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">增资产生的卡片信息:</label></td>
+            <td class="width-35">
+                <form:input path="cardInformation" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        </tbody>
+    </table>
+    </div>
+</form:form>
+</body>
+</html>

+ 354 - 0
src/main/webapp/webpage/modules/filing/costManagment/costManagmentList.js

@@ -0,0 +1,354 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+$(document).ready(function() {
+	$('#basicTable').bootstrapTable({
+		  //请求方法
+               method: 'post',
+               //类型json
+               dataType: "json",
+               contentType: "application/x-www-form-urlencoded",
+               //显示检索按钮
+	       showSearch: true,
+               //显示刷新按钮
+               showRefresh: true,
+               //显示切换手机试图按钮
+               showToggle: true,
+               //显示 内容列下拉框
+    	       showColumns: true,
+    	       //显示到处按钮
+    	       showExport: true,
+    	       //显示切换分页按钮
+    	       showPaginationSwitch: true,
+    	       //显示详情按钮
+    	       detailView: true,
+    	       	//显示详细内容函数
+	           // detailFormatter: "detailFormatter",
+    	       //最低显示2行
+    	       minimumCountColumns: 2,
+               //是否显示行间隔色
+               striped: true,
+               //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+               cache: false,
+               //是否显示分页(*)
+               pagination: true,
+                //排序方式
+               sortOrder: "asc",
+               //初始化加载第一页,默认第一页
+               pageNumber:1,
+               //每页的记录行数(*)
+               pageSize: 10,
+               //可供选择的每页的行数(*)
+               pageList: [10, 25, 50, 100],
+               //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+               url: "${ctx}/filing/constructionStage/data",
+               //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+               //queryParamsType:'',
+               ////查询参数,每次调用是会带上这个参数,可自定义
+               queryParams : function(params) {
+               	var searchParam = $("#searchForm").serializeJSON();
+               	searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+               	searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+               	searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+                   return searchParam;
+               },
+               //分页方式:client客户端分页,server服务端分页(*)
+               sidePagination: "server",
+               contextMenuTrigger:"right",//pc端 按右键弹出菜单
+               contextMenuTriggerMobile:"press",//手机端 弹出菜单,click:单击, press:长按。
+               contextMenu: '#context-menu',
+               onContextMenuItem: function(row, $el){
+                   if($el.data("item") == "edit"){
+                   		edit(row.id);
+                   }else if($el.data("item") == "view"){
+                       view(row.id);
+                   } else if($el.data("item") == "delete"){
+                        jp.confirm('确认要删除该造价管理记录吗?', function(){
+                       	jp.loading();
+                       	jp.get("${ctx}/filing/constructionStage/delete?id="+row.id, function(data){
+                   	  		if(data.success){
+                   	  			$('#basicTable').bootstrapTable('refresh');
+                   	  			jp.success(data.msg);
+                   	  		}else{
+                   	  			jp.error(data.msg);
+                   	  		}
+                   	  	})
+
+                   	});
+
+                   }
+               },
+		/*		onPostBody:function(){
+					window.rowProps = undefined;
+					_table_rowspan("#basicTable" , 1);
+					_table_rowspan("#basicTable" , 2);
+					_table_rowspan("#basicTable" , 3);
+					_table_rowspan("#basicTable" , 4);
+					_table_rowspan("#basicTable" , 5);
+					return true;
+				},*/
+               onClickRow: function(row, $el){
+               },
+               	onShowSearch: function () {
+			$("#search-collapse").slideToggle();
+		},
+               columns: [{
+		        checkbox: true
+
+		    }
+			,{
+		        field: 'projectCode',
+		        title: '项目编码',
+			    width: 100,
+		        sortable: true,
+		        sortName: 'projectCode'
+		        ,formatter:function(value, row , index){
+			   if(value == null || value ==""){
+				   value = "-";
+			   }
+			   <c:choose>
+				   <c:when test="${fns:hasPermission('test:filing:costManagment:edit')}">
+				      return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:when test="${fns:hasPermission('test:filing:costManagment:view')}">
+				      return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:otherwise>
+				      return value;
+			      </c:otherwise>
+			   </c:choose>
+
+		        }
+		    }
+			,{
+		        field: 'monomerCode',
+		        title: '单体编码',
+		        sortable: true,
+			   width: 100,
+		        sortName: 'monomerCode'
+
+		    }
+			,{
+		        field: 'entryName',
+		        title: '项目名称',
+			   width: 100,
+		        sortable: true,
+		        sortName: 'entryName'
+
+		    }
+				   , {
+					   field: 'cardInformation',
+					   title: '增资产生的卡片信息',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'cardInformation'
+
+				   }
+		     ],
+		onExpandRow: function (index, row, $detail) {
+			initSubTable(index, row, $detail);
+		}
+		});
+
+	//初始化子表格(无线循环)
+	initSubTable = function (index, row, $detail) {
+		var parentid = row.projectCode;
+		var cur_table = $detail.html('<table></table>').find('table');
+		$(cur_table).bootstrapTable({
+			url: '${ctx}/filing/constructionStage/detail',
+			method: 'post',
+			//类型json
+			dataType: "json",
+			contentType: "application/x-www-form-urlencoded",
+			queryParams : function(params) {
+				var searchParam = $("#searchForm").serializeJSON();
+				searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+				searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+				searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+				searchParam.projectCode = parentid;
+				return searchParam;
+			},
+			striped: true, //是否显示行间隔色
+			pagination: false,//显示分页
+			sidePagination: "server",
+			pageNumber:1,
+			pageSize: 10,
+			pageList: [10, 25],
+			columns: [{
+				width: 65
+			},{
+					field: 'projectCode',
+					width: 100
+					,formatter:function(value, row , index){
+						if(value == null || value ==""){
+							value = "-";
+						}
+					<c:choose>
+						<c:when test="${fns:hasPermission('test:filing:costManagment:edit')}">
+						return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+					</c:when>
+						<c:when test="${fns:hasPermission('test:filing:costManagment:view')}">
+						return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+					</c:when>
+						<c:otherwise>
+						return value;
+					</c:otherwise>
+						</c:choose>
+
+					}
+				}
+				,{
+					field: 'monomerCode',
+					width: 100,
+
+				}
+				,{
+					field: 'entryName',
+					width: 100,
+				}
+				, {
+					field: 'cardInformation',
+					width: 100,
+				}
+				]
+		});
+	};
+
+		  
+	  if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+
+		 
+		  $('#basicTable').bootstrapTable("toggleView");
+		}
+	  
+	  $('#basicTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+                'check-all.bs.table uncheck-all.bs.table', function () {
+            $('#remove').prop('disabled', ! $('#basicTable').bootstrapTable('getSelections').length);
+            $('#view,#edit').prop('disabled', $('#basicTable').bootstrapTable('getSelections').length!=1);
+        });
+		  
+		$("#btnImport").click(function(){
+			jp.open({
+			    type: 2,
+                area: [500, 200],
+                auto: true,
+			    title:"导入数据",
+			    content: "${ctx}/tag/importExcel" ,
+			    btn: ['下载模板','确定', '关闭'],
+				btn1: function(index, layero){
+					  jp.downloadFile('${ctx}/filing/constructionStage/costManagment/template');
+				  },
+			    btn2: function(index, layero){
+						var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+						iframeWin.contentWindow.importExcel('${ctx}/filing/constructionStage/import', function (data) {
+							if(data.success){
+								jp.success(data.msg);
+								refresh();
+							}else{
+								jp.error(data.msg);
+							}
+                            jp.close(index);
+                        });//调用保存事件
+                    return false;
+				  },
+				 
+				  btn3: function(index){ 
+					  jp.close(index);
+	    	       }
+			}); 
+		});
+	  $("#export").click(function(){//导出Excel文件
+			jp.downloadFile('${ctx}/filing/constructionStage/export');
+	  });
+
+	$("#exportFiles").bind("click", function () {
+		$("#searchForm").attr("action","${ctx}/filing/filingImages/exportCostManagment?ids="+ getIdSelections());
+		$("#searchForm").submit();
+		return true;
+	});
+
+	/*$("#exportFiles").click(function(){//导出Excel文件
+		jp.downloadFile('${ctx}/filing/constructionStage/exportFiles?ids=' + getIdSelections());
+	});*/
+
+	  $("#search").click("click", function() {// 绑定查询按扭
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+
+	  $("#open").click(function () {
+		  $("#basicTable").bootstrapTable('expandAllRows');
+	  })
+
+		$("#close").click(function (row) {
+			$('#basicTable').bootstrapTable('refresh');
+		})
+
+	 $("#reset").click("click", function() {// 绑定查询按扭
+		  $("#searchForm  input").val("");
+		  $("#searchForm  select").val("");
+		   $("#searchForm  .select-item").html("");
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+		
+				$('#beginInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+				$('#endInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+		
+	});
+		
+  function getIdSelections() {
+        return $.map($("#basicTable").bootstrapTable('getSelections'), function (row) {
+            return row.id
+        });
+    }
+  
+  function deleteAll(){
+
+		jp.confirm('确认要删除该造价管理记录吗?', function(){
+			jp.loading();  	
+			jp.get("${ctx}/filing/constructionStage/deleteAll?ids=" + getIdSelections(), function(data){
+         	  		if(data.success){
+         	  			$('#basicTable').bootstrapTable('refresh');
+         	  			jp.success(data.msg);
+         	  		}else{
+         	  			jp.error(data.msg);
+         	  		}
+         	  	})
+          	   
+		})
+  }
+  
+    //刷新列表
+  function refresh() {
+      $('#basicTable').bootstrapTable('refresh');
+  }
+  function add(){
+	  jp.openSaveDialog('新增造价管理', "${ctx}/filing/constructionStage/costManagmentForm",'1000px', '800px');
+  }
+  
+   function edit(id){//没有权限时,不显示确定按钮
+       if(id == undefined){
+	      id = getIdSelections();
+	}
+	jp.openSaveDialog('编辑造价管理', "${ctx}/filing/constructionStage/costManagmentForm?id=" + id, '800px', '500px');
+  }
+
+ function view(id){//没有权限时,不显示确定按钮
+      if(id == undefined){
+             id = getIdSelections();
+      }
+        jp.openViewDialog('查看造价管理', "${ctx}/filing/constructionStage/costManagmentForm?id=" + id, '800px', '500px');
+ }
+
+
+	function addRow(list, idx, tpl, row){
+		$(list).append(Mustache.render(tpl, {
+			idx: idx, delBtn: true, row: row
+		}));
+	}
+			
+</script>
+
+

+ 87 - 0
src/main/webapp/webpage/modules/filing/costManagment/costManagmentList.jsp

@@ -0,0 +1,87 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>造价管理</title>
+    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+    <meta name="decorator" content="ani"/>
+    <%@ include file="/webpage/include/bootstraptable.jsp" %>
+    <%@include file="/webpage/include/treeview.jsp" %>
+    <%@include file="costManagmentList.js" %>
+    <style type="text/css">
+        table {
+            table-layout: fixed;
+            word-break: break-all;
+            word-wrap: break-word;
+            text-align: center;
+        }
+
+        .table th, .table td {
+            text-align: center;
+            vertical-align: middle !important;
+        }
+    </style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+    <div class="panel panel-primary">
+        <div class="panel-heading">
+            <h3 class="panel-title">造价管理</h3>
+        </div>
+        <div class="panel-body">
+            <!-- 搜索 -->
+            <div id="search-collapse" class="collapse">
+                <div class="accordion-inner">
+                    <form:form id="searchForm" modelAttribute="constructionStage"
+                               class="form form-horizontal well clearfix">
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <label class="label-item single-overflow pull-left" title="项目编码:">项目编码:</label>
+                            <form:input path="projectCode" htmlEscape="false" maxlength="257"  class=" form-control"/>
+                        </div>
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <div style="margin-top:26px">
+                                <a id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-search"></i> 查询</a>
+                                <a id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-refresh"></i> 重置</a>
+                            </div>
+                        </div>
+                    </form:form>
+                </div>
+            </div>
+
+            <!-- 工具栏 -->
+            <div id="toolbar">
+                <button id="open" class="btn btn-primary" >
+                    <i class="glyphicon glyphicon-list"></i> 全部展开
+                </button>
+                <button id="close" class="btn btn-primary">
+                    <i class="glyphicon glyphicon-minus"></i> 全部折叠
+                </button>
+                <shiro:hasPermission name="test:filing:costManagment:edit">
+                    <button id="edit" class="btn btn-success" disabled onclick="edit()">
+                        <i class="glyphicon glyphicon-edit"></i> 修改
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:costManagment:import">
+                    <button id="btnImport" class="btn btn-info"><i class="fa fa-folder-open-o"></i> 导入</button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:costManagment:export">
+                    <button id="export" class="btn btn-warning">
+                        <i class="fa fa-file-excel-o"></i> 导出
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:costManagment:export">
+                <button id="exportFiles" class="btn btn-warning">
+                    <i class="fa fa-file-excel-o"></i> 导出附件
+                </button>
+                </shiro:hasPermission>
+            </div>
+
+            <!-- 表格 -->
+            <table id="basicTable" data-toolbar="#toolbar" style="table-layout: fixed;word-break:break-all;"></table>
+        </div>
+    </div>
+</div>
+</body>
+</html>

+ 123 - 0
src/main/webapp/webpage/modules/filing/projectOther/projectOtherForm.jsp

@@ -0,0 +1,123 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>核准阶段管理</title>
+    <meta name="decorator" content="ani"/>
+    <%@ include file="/webpage/include/bootstraptable.jsp" %>
+    <style type="text/css">
+        /* 下边两行是去掉input 输入框右边的上下箭头按钮*/
+        .deal::-webkit-inner-spin-button {
+            -webkit-appearance: none !important;
+        }
+
+        .deal::-webkit-outer-spin-button {
+            -webkit-appearance: none !important;
+        }
+
+        input[type="number"] {
+            -moz-appearance: textfield;
+        }
+    </style>
+    <script type="text/javascript">
+
+        $(document).ready(function () {
+            $('#commDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#compDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#cossDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#acceptanceDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#soilWaterDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#levelRiskTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standStartTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standTransferTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standAcceptanceTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#dateOfInterview').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+        });
+
+        function save() {
+            var isValidate = jp.validateForm('#inputForm');//校验表单
+            if (!isValidate) {
+                return false;
+            } else {
+                jp.loading();
+                jp.post("${ctx}/filing/constructionStage/save", $('#inputForm').serialize(), function (data) {
+                    if (data.success) {
+                        jp.getParent().refresh();
+                        var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+                        parent.layer.close(dialogIndex);
+                        jp.success(data.msg)
+
+                    } else {
+                        jp.error(data.msg);
+                    }
+                })
+            }
+
+        }
+
+    </script>
+</head>
+<body class="bg-white">
+<form:form id="inputForm" modelAttribute="constructionStage" action="${ctx}/filing/constructionStage/save" method="post"
+           class="form-horizontal">
+    <form:hidden path="id"/>
+    <table class="table table-bordered">
+        <tbody>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">项目编码:</label></td>
+            <td class="width-35">
+                <form:input path="projectCode" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">单体编码:</label></td>
+            <td class="width-35">
+                <form:input path="monomerCode" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+            <td class="width-35">
+                <form:input path="entryName" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">工程遗留相关事项</label></td>
+            <td class="width-35">
+                <form:input path="mattersLeft" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">退料及报废手续</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="returnAndScrap" value="${constructionStage.returnAndScrap}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">重要的附件等扫描件</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="importantAccessories" value="${constructionStage.importantAccessories}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+        </tr>
+        </tbody>
+    </table>
+    </div>
+</form:form>
+</body>
+</html>

+ 354 - 0
src/main/webapp/webpage/modules/filing/projectOther/projectOtherList.js

@@ -0,0 +1,354 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+$(document).ready(function() {
+	$('#basicTable').bootstrapTable({
+		  //请求方法
+               method: 'post',
+               //类型json
+               dataType: "json",
+               contentType: "application/x-www-form-urlencoded",
+               //显示检索按钮
+	       showSearch: true,
+               //显示刷新按钮
+               showRefresh: true,
+               //显示切换手机试图按钮
+               showToggle: true,
+               //显示 内容列下拉框
+    	       showColumns: true,
+    	       //显示到处按钮
+    	       showExport: true,
+    	       //显示切换分页按钮
+    	       showPaginationSwitch: true,
+    	       //显示详情按钮
+    	       detailView: true,
+    	       	//显示详细内容函数
+	           // detailFormatter: "detailFormatter",
+    	       //最低显示2行
+    	       minimumCountColumns: 2,
+               //是否显示行间隔色
+               striped: true,
+               //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+               cache: false,
+               //是否显示分页(*)
+               pagination: true,
+                //排序方式
+               sortOrder: "asc",
+               //初始化加载第一页,默认第一页
+               pageNumber:1,
+               //每页的记录行数(*)
+               pageSize: 10,
+               //可供选择的每页的行数(*)
+               pageList: [10, 25, 50, 100],
+               //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+               url: "${ctx}/filing/constructionStage/data",
+               //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+               //queryParamsType:'',
+               ////查询参数,每次调用是会带上这个参数,可自定义
+               queryParams : function(params) {
+               	var searchParam = $("#searchForm").serializeJSON();
+               	searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+               	searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+               	searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+                   return searchParam;
+               },
+               //分页方式:client客户端分页,server服务端分页(*)
+               sidePagination: "server",
+               contextMenuTrigger:"right",//pc端 按右键弹出菜单
+               contextMenuTriggerMobile:"press",//手机端 弹出菜单,click:单击, press:长按。
+               contextMenu: '#context-menu',
+               onContextMenuItem: function(row, $el){
+                   if($el.data("item") == "edit"){
+                   		edit(row.id);
+                   }else if($el.data("item") == "view"){
+                       view(row.id);
+                   } else if($el.data("item") == "delete"){
+                        jp.confirm('确认要删除该其它记录吗?', function(){
+                       	jp.loading();
+                       	jp.get("${ctx}/filing/constructionStage/delete?id="+row.id, function(data){
+                   	  		if(data.success){
+                   	  			$('#basicTable').bootstrapTable('refresh');
+                   	  			jp.success(data.msg);
+                   	  		}else{
+                   	  			jp.error(data.msg);
+                   	  		}
+                   	  	})
+
+                   	});
+
+                   }
+               },
+		/*		onPostBody:function(){
+					window.rowProps = undefined;
+					_table_rowspan("#basicTable" , 1);
+					_table_rowspan("#basicTable" , 2);
+					_table_rowspan("#basicTable" , 3);
+					_table_rowspan("#basicTable" , 4);
+					_table_rowspan("#basicTable" , 5);
+					return true;
+				},*/
+               onClickRow: function(row, $el){
+               },
+               	onShowSearch: function () {
+			$("#search-collapse").slideToggle();
+		},
+               columns: [{
+		        checkbox: true
+
+		    }
+			,{
+		        field: 'projectCode',
+		        title: '项目编码',
+			    width: 100,
+		        sortable: true,
+		        sortName: 'projectCode'
+		        ,formatter:function(value, row , index){
+			   if(value == null || value ==""){
+				   value = "-";
+			   }
+			   <c:choose>
+				   <c:when test="${fns:hasPermission('test:filing:projectOther:edit')}">
+				      return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:when test="${fns:hasPermission('test:filing:projectOther:view')}">
+				      return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:otherwise>
+				      return value;
+			      </c:otherwise>
+			   </c:choose>
+
+		        }
+		    }
+			,{
+		        field: 'monomerCode',
+		        title: '单体编码',
+		        sortable: true,
+			   width: 100,
+		        sortName: 'monomerCode'
+
+		    }
+			,{
+		        field: 'entryName',
+		        title: '项目名称',
+			   width: 100,
+		        sortable: true,
+		        sortName: 'entryName'
+
+		    }
+				   , {
+					   field: 'mattersLeft',
+					   title: '工程遗留相关事项',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'mattersLeft'
+
+				   }
+		     ],
+		onExpandRow: function (index, row, $detail) {
+			initSubTable(index, row, $detail);
+		}
+		});
+
+	//初始化子表格(无线循环)
+	initSubTable = function (index, row, $detail) {
+		var parentid = row.projectCode;
+		var cur_table = $detail.html('<table></table>').find('table');
+		$(cur_table).bootstrapTable({
+			url: '${ctx}/filing/constructionStage/detail',
+			method: 'post',
+			//类型json
+			dataType: "json",
+			contentType: "application/x-www-form-urlencoded",
+			queryParams : function(params) {
+				var searchParam = $("#searchForm").serializeJSON();
+				searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+				searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+				searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+				searchParam.projectCode = parentid;
+				return searchParam;
+			},
+			striped: true, //是否显示行间隔色
+			pagination: false,//显示分页
+			sidePagination: "server",
+			pageNumber:1,
+			pageSize: 10,
+			pageList: [10, 25],
+			columns: [{
+				width: 65
+			},{
+					field: 'projectCode',
+					width: 100
+					,formatter:function(value, row , index){
+						if(value == null || value ==""){
+							value = "-";
+						}
+					<c:choose>
+						<c:when test="${fns:hasPermission('test:filing:projectOther:edit')}">
+						return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+					</c:when>
+						<c:when test="${fns:hasPermission('test:filing:projectOther:view')}">
+						return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+					</c:when>
+						<c:otherwise>
+						return value;
+					</c:otherwise>
+						</c:choose>
+
+					}
+				}
+				,{
+					field: 'monomerCode',
+					width: 100,
+
+				}
+				,{
+					field: 'entryName',
+					width: 100,
+				}
+				, {
+					field: 'mattersLeft',
+					width: 100,
+				}
+				]
+		});
+	};
+
+		  
+	  if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+
+		 
+		  $('#basicTable').bootstrapTable("toggleView");
+		}
+	  
+	  $('#basicTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+                'check-all.bs.table uncheck-all.bs.table', function () {
+            $('#remove').prop('disabled', ! $('#basicTable').bootstrapTable('getSelections').length);
+            $('#view,#edit').prop('disabled', $('#basicTable').bootstrapTable('getSelections').length!=1);
+        });
+		  
+		$("#btnImport").click(function(){
+			jp.open({
+			    type: 2,
+                area: [500, 200],
+                auto: true,
+			    title:"导入数据",
+			    content: "${ctx}/tag/importExcel" ,
+			    btn: ['下载模板','确定', '关闭'],
+				btn1: function(index, layero){
+					  jp.downloadFile('${ctx}/filing/constructionStage/projectOther/template');
+				  },
+			    btn2: function(index, layero){
+						var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+						iframeWin.contentWindow.importExcel('${ctx}/filing/constructionStage/importProjectOther', function (data) {
+							if(data.success){
+								jp.success(data.msg);
+								refresh();
+							}else{
+								jp.error(data.msg);
+							}
+                            jp.close(index);
+                        });//调用保存事件
+                    return false;
+				  },
+				 
+				  btn3: function(index){ 
+					  jp.close(index);
+	    	       }
+			}); 
+		});
+	  $("#export").click(function(){//导出Excel文件
+			jp.downloadFile('${ctx}/filing/constructionStage/export');
+	  });
+
+	$("#exportFiles").bind("click", function () {
+		$("#searchForm").attr("action","${ctx}/filing/filingImages/exportProjectOther?ids="+ getIdSelections());
+		$("#searchForm").submit();
+		return true;
+	});
+
+	/*$("#exportFiles").click(function(){//导出Excel文件
+		jp.downloadFile('${ctx}/filing/constructionStage/exportFiles?ids=' + getIdSelections());
+	});*/
+
+	  $("#search").click("click", function() {// 绑定查询按扭
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+
+	  $("#open").click(function () {
+		  $("#basicTable").bootstrapTable('expandAllRows');
+	  })
+
+		$("#close").click(function (row) {
+			$('#basicTable').bootstrapTable('refresh');
+		})
+
+	 $("#reset").click("click", function() {// 绑定查询按扭
+		  $("#searchForm  input").val("");
+		  $("#searchForm  select").val("");
+		   $("#searchForm  .select-item").html("");
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+		
+				$('#beginInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+				$('#endInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+		
+	});
+		
+  function getIdSelections() {
+        return $.map($("#basicTable").bootstrapTable('getSelections'), function (row) {
+            return row.id
+        });
+    }
+  
+  function deleteAll(){
+
+		jp.confirm('确认要删除该其它记录吗?', function(){
+			jp.loading();  	
+			jp.get("${ctx}/filing/constructionStage/deleteAll?ids=" + getIdSelections(), function(data){
+         	  		if(data.success){
+         	  			$('#basicTable').bootstrapTable('refresh');
+         	  			jp.success(data.msg);
+         	  		}else{
+         	  			jp.error(data.msg);
+         	  		}
+         	  	})
+          	   
+		})
+  }
+  
+    //刷新列表
+  function refresh() {
+      $('#basicTable').bootstrapTable('refresh');
+  }
+  function add(){
+	  jp.openSaveDialog('新增其它', "${ctx}/filing/constructionStage/projectOtherForm",'1000px', '800px');
+  }
+  
+   function edit(id){//没有权限时,不显示确定按钮
+       if(id == undefined){
+	      id = getIdSelections();
+	}
+	jp.openSaveDialog('编辑其它', "${ctx}/filing/constructionStage/projectOtherForm?id=" + id, '800px', '500px');
+  }
+
+ function view(id){//没有权限时,不显示确定按钮
+      if(id == undefined){
+             id = getIdSelections();
+      }
+        jp.openViewDialog('查看其它', "${ctx}/filing/constructionStage/projectOtherForm?id=" + id, '800px', '500px');
+ }
+
+
+	function addRow(list, idx, tpl, row){
+		$(list).append(Mustache.render(tpl, {
+			idx: idx, delBtn: true, row: row
+		}));
+	}
+			
+</script>
+
+

+ 87 - 0
src/main/webapp/webpage/modules/filing/projectOther/projectOtherList.jsp

@@ -0,0 +1,87 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>其它</title>
+    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+    <meta name="decorator" content="ani"/>
+    <%@ include file="/webpage/include/bootstraptable.jsp" %>
+    <%@include file="/webpage/include/treeview.jsp" %>
+    <%@include file="projectOtherList.js" %>
+    <style type="text/css">
+        table {
+            table-layout: fixed;
+            word-break: break-all;
+            word-wrap: break-word;
+            text-align: center;
+        }
+
+        .table th, .table td {
+            text-align: center;
+            vertical-align: middle !important;
+        }
+    </style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+    <div class="panel panel-primary">
+        <div class="panel-heading">
+            <h3 class="panel-title">其它</h3>
+        </div>
+        <div class="panel-body">
+            <!-- 搜索 -->
+            <div id="search-collapse" class="collapse">
+                <div class="accordion-inner">
+                    <form:form id="searchForm" modelAttribute="constructionStage"
+                               class="form form-horizontal well clearfix">
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <label class="label-item single-overflow pull-left" title="项目编码:">项目编码:</label>
+                            <form:input path="projectCode" htmlEscape="false" maxlength="257"  class=" form-control"/>
+                        </div>
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <div style="margin-top:26px">
+                                <a id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-search"></i> 查询</a>
+                                <a id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-refresh"></i> 重置</a>
+                            </div>
+                        </div>
+                    </form:form>
+                </div>
+            </div>
+
+            <!-- 工具栏 -->
+            <div id="toolbar">
+                <button id="open" class="btn btn-primary" >
+                    <i class="glyphicon glyphicon-list"></i> 全部展开
+                </button>
+                <button id="close" class="btn btn-primary">
+                    <i class="glyphicon glyphicon-minus"></i> 全部折叠
+                </button>
+                <shiro:hasPermission name="test:filing:projectOther:edit">
+                    <button id="edit" class="btn btn-success" disabled onclick="edit()">
+                        <i class="glyphicon glyphicon-edit"></i> 修改
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:projectOther:import">
+                    <button id="btnImport" class="btn btn-info"><i class="fa fa-folder-open-o"></i> 导入</button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:projectOther:export">
+                    <button id="export" class="btn btn-warning">
+                        <i class="fa fa-file-excel-o"></i> 导出
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:projectOther:export">
+                <button id="exportFiles" class="btn btn-warning">
+                    <i class="fa fa-file-excel-o"></i> 导出附件
+                </button>
+                </shiro:hasPermission>
+            </div>
+
+            <!-- 表格 -->
+            <table id="basicTable" data-toolbar="#toolbar" style="table-layout: fixed;word-break:break-all;"></table>
+        </div>
+    </div>
+</div>
+</body>
+</html>

+ 154 - 0
src/main/webapp/webpage/modules/filing/projectSchedule/projectScheduleForm.jsp

@@ -0,0 +1,154 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>核准阶段管理</title>
+    <meta name="decorator" content="ani"/>
+    <%@ include file="/webpage/include/bootstraptable.jsp" %>
+    <style type="text/css">
+        /* 下边两行是去掉input 输入框右边的上下箭头按钮*/
+        .deal::-webkit-inner-spin-button {
+            -webkit-appearance: none !important;
+        }
+
+        .deal::-webkit-outer-spin-button {
+            -webkit-appearance: none !important;
+        }
+
+        input[type="number"] {
+            -moz-appearance: textfield;
+        }
+    </style>
+    <script type="text/javascript">
+
+        $(document).ready(function () {
+            $('#commDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#compDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#cossDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#acceptanceDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#soilWaterDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#levelRiskTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standStartTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standTransferTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standAcceptanceTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#dateOfInterview').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+        });
+
+        function save() {
+            var isValidate = jp.validateForm('#inputForm');//校验表单
+            if (!isValidate) {
+                return false;
+            } else {
+                jp.loading();
+                jp.post("${ctx}/filing/constructionStage/save", $('#inputForm').serialize(), function (data) {
+                    if (data.success) {
+                        jp.getParent().refresh();
+                        var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+                        parent.layer.close(dialogIndex);
+                        jp.success(data.msg)
+
+                    } else {
+                        jp.error(data.msg);
+                    }
+                })
+            }
+
+        }
+
+    </script>
+</head>
+<body class="bg-white">
+<form:form id="inputForm" modelAttribute="constructionStage" action="${ctx}/filing/constructionStage/save" method="post"
+           class="form-horizontal">
+    <form:hidden path="id"/>
+    <table class="table table-bordered">
+        <tbody>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">项目编码:</label></td>
+            <td class="width-35">
+                <form:input path="projectCode" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">单体编码:</label></td>
+            <td class="width-35">
+                <form:input path="monomerCode" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+            <td class="width-35">
+                <form:input path="entryName" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">例会报告:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="enclosure" value="${constructionStage.enclosure}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">土建:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="scheduleCivil" value="${constructionStage.scheduleCivil}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">电气:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="scheduleElectrical" value="${constructionStage.scheduleElectrical}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">调试:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="scheduleDebugging" value="${constructionStage.scheduleDebugging}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">验收:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="scheduleCheck" value="${constructionStage.scheduleCheck}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">累计定性描述:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="scheduleCumulative" value="${constructionStage.scheduleCumulative}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">启委会文:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="openingCommittee" value="${constructionStage.openingCommittee}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">调度命名编号:</label></td>
+            <td class="width-35">
+                <form:input path="dispatchingNaming"  htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        </tbody>
+    </table>
+    </div>
+</form:form>
+</body>
+</html>

+ 354 - 0
src/main/webapp/webpage/modules/filing/projectSchedule/projectScheduleList.js

@@ -0,0 +1,354 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+$(document).ready(function() {
+	$('#basicTable').bootstrapTable({
+		  //请求方法
+               method: 'post',
+               //类型json
+               dataType: "json",
+               contentType: "application/x-www-form-urlencoded",
+               //显示检索按钮
+	       showSearch: true,
+               //显示刷新按钮
+               showRefresh: true,
+               //显示切换手机试图按钮
+               showToggle: true,
+               //显示 内容列下拉框
+    	       showColumns: true,
+    	       //显示到处按钮
+    	       showExport: true,
+    	       //显示切换分页按钮
+    	       showPaginationSwitch: true,
+    	       //显示详情按钮
+    	       detailView: true,
+    	       	//显示详细内容函数
+	           // detailFormatter: "detailFormatter",
+    	       //最低显示2行
+    	       minimumCountColumns: 2,
+               //是否显示行间隔色
+               striped: true,
+               //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+               cache: false,
+               //是否显示分页(*)
+               pagination: true,
+                //排序方式
+               sortOrder: "asc",
+               //初始化加载第一页,默认第一页
+               pageNumber:1,
+               //每页的记录行数(*)
+               pageSize: 10,
+               //可供选择的每页的行数(*)
+               pageList: [10, 25, 50, 100],
+               //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+               url: "${ctx}/filing/constructionStage/data",
+               //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+               //queryParamsType:'',
+               ////查询参数,每次调用是会带上这个参数,可自定义
+               queryParams : function(params) {
+               	var searchParam = $("#searchForm").serializeJSON();
+               	searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+               	searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+               	searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+                   return searchParam;
+               },
+               //分页方式:client客户端分页,server服务端分页(*)
+               sidePagination: "server",
+               contextMenuTrigger:"right",//pc端 按右键弹出菜单
+               contextMenuTriggerMobile:"press",//手机端 弹出菜单,click:单击, press:长按。
+               contextMenu: '#context-menu',
+               onContextMenuItem: function(row, $el){
+                   if($el.data("item") == "edit"){
+                   		edit(row.id);
+                   }else if($el.data("item") == "view"){
+                       view(row.id);
+                   } else if($el.data("item") == "delete"){
+                        jp.confirm('确认要删除该工程进度管理记录吗?', function(){
+                       	jp.loading();
+                       	jp.get("${ctx}/filing/constructionStage/delete?id="+row.id, function(data){
+                   	  		if(data.success){
+                   	  			$('#basicTable').bootstrapTable('refresh');
+                   	  			jp.success(data.msg);
+                   	  		}else{
+                   	  			jp.error(data.msg);
+                   	  		}
+                   	  	})
+
+                   	});
+
+                   }
+               },
+		/*		onPostBody:function(){
+					window.rowProps = undefined;
+					_table_rowspan("#basicTable" , 1);
+					_table_rowspan("#basicTable" , 2);
+					_table_rowspan("#basicTable" , 3);
+					_table_rowspan("#basicTable" , 4);
+					_table_rowspan("#basicTable" , 5);
+					return true;
+				},*/
+               onClickRow: function(row, $el){
+               },
+               	onShowSearch: function () {
+			$("#search-collapse").slideToggle();
+		},
+               columns: [{
+		        checkbox: true
+
+		    }
+			,{
+		        field: 'projectCode',
+		        title: '项目编码',
+			    width: 100,
+		        sortable: true,
+		        sortName: 'projectCode'
+		        ,formatter:function(value, row , index){
+			   if(value == null || value ==""){
+				   value = "-";
+			   }
+			   <c:choose>
+				   <c:when test="${fns:hasPermission('test:filing:projectSchedule:edit')}">
+				      return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:when test="${fns:hasPermission('test:filing:projectSchedule:view')}">
+				      return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:otherwise>
+				      return value;
+			      </c:otherwise>
+			   </c:choose>
+
+		        }
+		    }
+			,{
+		        field: 'monomerCode',
+		        title: '单体编码',
+		        sortable: true,
+			   width: 100,
+		        sortName: 'monomerCode'
+
+		    }
+			,{
+		        field: 'entryName',
+		        title: '项目名称',
+			   width: 100,
+		        sortable: true,
+		        sortName: 'entryName'
+
+		    }
+		   , {
+			   field: 'dispatchingNaming',
+			   title: '调度命名编号',
+			   width: 100,
+			   sortable: true,
+			   sortName: 'dispatchingNaming'
+
+		   }
+		     ],
+		onExpandRow: function (index, row, $detail) {
+			initSubTable(index, row, $detail);
+		}
+		});
+
+	//初始化子表格(无线循环)
+	initSubTable = function (index, row, $detail) {
+		var parentid = row.projectCode;
+		var cur_table = $detail.html('<table></table>').find('table');
+		$(cur_table).bootstrapTable({
+			url: '${ctx}/filing/constructionStage/detail',
+			method: 'post',
+			//类型json
+			dataType: "json",
+			contentType: "application/x-www-form-urlencoded",
+			queryParams : function(params) {
+				var searchParam = $("#searchForm").serializeJSON();
+				searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+				searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+				searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+				searchParam.projectCode = parentid;
+				return searchParam;
+			},
+			striped: true, //是否显示行间隔色
+			pagination: false,//显示分页
+			sidePagination: "server",
+			pageNumber:1,
+			pageSize: 10,
+			pageList: [10, 25],
+			columns: [{
+				width: 65
+			},{
+					field: 'projectCode',
+					width: 100
+					,formatter:function(value, row , index){
+						if(value == null || value ==""){
+							value = "-";
+						}
+					<c:choose>
+						<c:when test="${fns:hasPermission('test:filing:projectSchedule:edit')}">
+						return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+					</c:when>
+						<c:when test="${fns:hasPermission('test:filing:projectSchedule:view')}">
+						return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+					</c:when>
+						<c:otherwise>
+						return value;
+					</c:otherwise>
+						</c:choose>
+
+					}
+				}
+				,{
+					field: 'monomerCode',
+					width: 100,
+
+				}
+				,{
+					field: 'entryName',
+					width: 100,
+				}
+				, {
+					field: 'dispatchingNaming',
+					width: 100,
+				}
+				]
+		});
+	};
+
+
+	  if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+
+
+		  $('#basicTable').bootstrapTable("toggleView");
+		}
+
+	  $('#basicTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+                'check-all.bs.table uncheck-all.bs.table', function () {
+            $('#remove').prop('disabled', ! $('#basicTable').bootstrapTable('getSelections').length);
+            $('#view,#edit').prop('disabled', $('#basicTable').bootstrapTable('getSelections').length!=1);
+        });
+
+		$("#btnImport").click(function(){
+			jp.open({
+			    type: 2,
+                area: [500, 200],
+                auto: true,
+			    title:"导入数据",
+			    content: "${ctx}/tag/importExcel" ,
+			    btn: ['下载模板','确定', '关闭'],
+				btn1: function(index, layero){
+					  jp.downloadFile('${ctx}/filing/constructionStage/projectSchedule/template');
+				  },
+			    btn2: function(index, layero){
+						var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+						iframeWin.contentWindow.importExcel('${ctx}/filing/constructionStage/importProjectSchedule', function (data) {
+							if(data.success){
+								jp.success(data.msg);
+								refresh();
+							}else{
+								jp.error(data.msg);
+							}
+                            jp.close(index);
+                        });//调用保存事件
+                    return false;
+				  },
+
+				  btn3: function(index){
+					  jp.close(index);
+	    	       }
+			});
+		});
+	  $("#export").click(function(){//导出Excel文件
+			jp.downloadFile('${ctx}/filing/constructionStage/exportProjectSchedule');
+	  });
+
+	$("#exportFiles").bind("click", function () {
+		$("#searchForm").attr("action","${ctx}/filing/filingImages/exportProjectSchedule?ids="+ getIdSelections());
+		$("#searchForm").submit();
+		return true;
+	});
+
+	/*$("#exportFiles").click(function(){//导出Excel文件
+		jp.downloadFile('${ctx}/filing/constructionStage/exportFiles?ids=' + getIdSelections());
+	});*/
+
+	  $("#search").click("click", function() {// 绑定查询按扭
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+
+	  $("#open").click(function () {
+		  $("#basicTable").bootstrapTable('expandAllRows');
+	  })
+
+		$("#close").click(function (row) {
+			$('#basicTable').bootstrapTable('refresh');
+		})
+
+	 $("#reset").click("click", function() {// 绑定查询按扭
+		  $("#searchForm  input").val("");
+		  $("#searchForm  select").val("");
+		   $("#searchForm  .select-item").html("");
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+
+				$('#beginInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+				$('#endInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+
+	});
+
+  function getIdSelections() {
+        return $.map($("#basicTable").bootstrapTable('getSelections'), function (row) {
+            return row.id
+        });
+    }
+
+  function deleteAll(){
+
+		jp.confirm('确认要删除该工程进度管理记录吗?', function(){
+			jp.loading();
+			jp.get("${ctx}/filing/constructionStage/deleteAll?ids=" + getIdSelections(), function(data){
+         	  		if(data.success){
+         	  			$('#basicTable').bootstrapTable('refresh');
+         	  			jp.success(data.msg);
+         	  		}else{
+         	  			jp.error(data.msg);
+         	  		}
+         	  	})
+
+		})
+  }
+
+    //刷新列表
+  function refresh() {
+      $('#basicTable').bootstrapTable('refresh');
+  }
+  function add(){
+	  jp.openSaveDialog('新增工程进度管理', "${ctx}/filing/constructionStage/projectScheduleForm",'1000px', '800px');
+  }
+
+   function edit(id){//没有权限时,不显示确定按钮
+       if(id == undefined){
+	      id = getIdSelections();
+	}
+	jp.openSaveDialog('编辑工程进度管理', "${ctx}/filing/constructionStage/projectScheduleForm?id=" + id, '800px', '500px');
+  }
+
+ function view(id){//没有权限时,不显示确定按钮
+      if(id == undefined){
+             id = getIdSelections();
+      }
+        jp.openViewDialog('查看工程进度管理', "${ctx}/filing/constructionStage/projectScheduleForm?id=" + id, '800px', '500px');
+ }
+
+
+	function addRow(list, idx, tpl, row){
+		$(list).append(Mustache.render(tpl, {
+			idx: idx, delBtn: true, row: row
+		}));
+	}
+			
+</script>
+
+

+ 87 - 0
src/main/webapp/webpage/modules/filing/projectSchedule/projectScheduleList.jsp

@@ -0,0 +1,87 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>工程进度管理</title>
+    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+    <meta name="decorator" content="ani"/>
+    <%@ include file="/webpage/include/bootstraptable.jsp" %>
+    <%@include file="/webpage/include/treeview.jsp" %>
+    <%@include file="projectScheduleList.js" %>
+    <style type="text/css">
+        table {
+            table-layout: fixed;
+            word-break: break-all;
+            word-wrap: break-word;
+            text-align: center;
+        }
+
+        .table th, .table td {
+            text-align: center;
+            vertical-align: middle !important;
+        }
+    </style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+    <div class="panel panel-primary">
+        <div class="panel-heading">
+            <h3 class="panel-title">工程进度管理</h3>
+        </div>
+        <div class="panel-body">
+            <!-- 搜索 -->
+            <div id="search-collapse" class="collapse">
+                <div class="accordion-inner">
+                    <form:form id="searchForm" modelAttribute="constructionStage"
+                               class="form form-horizontal well clearfix">
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <label class="label-item single-overflow pull-left" title="项目编码:">项目编码:</label>
+                            <form:input path="projectCode" htmlEscape="false" maxlength="257"  class=" form-control"/>
+                        </div>
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <div style="margin-top:26px">
+                                <a id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-search"></i> 查询</a>
+                                <a id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-refresh"></i> 重置</a>
+                            </div>
+                        </div>
+                    </form:form>
+                </div>
+            </div>
+
+            <!-- 工具栏 -->
+            <div id="toolbar">
+                <button id="open" class="btn btn-primary" >
+                    <i class="glyphicon glyphicon-list"></i> 全部展开
+                </button>
+                <button id="close" class="btn btn-primary">
+                    <i class="glyphicon glyphicon-minus"></i> 全部折叠
+                </button>
+                <shiro:hasPermission name="test:filing:projectSchedule:edit">
+                    <button id="edit" class="btn btn-success" disabled onclick="edit()">
+                        <i class="glyphicon glyphicon-edit"></i> 修改
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:projectSchedule:import">
+                    <button id="btnImport" class="btn btn-info"><i class="fa fa-folder-open-o"></i> 导入</button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:projectSchedule:export">
+                    <button id="export" class="btn btn-warning">
+                        <i class="fa fa-file-excel-o"></i> 导出
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:projectSchedule:export">
+                <button id="exportFiles" class="btn btn-warning">
+                    <i class="fa fa-file-excel-o"></i> 导出附件
+                </button>
+                </shiro:hasPermission>
+            </div>
+
+            <!-- 表格 -->
+            <table id="basicTable" data-toolbar="#toolbar" style="table-layout: fixed;word-break:break-all;"></table>
+        </div>
+    </div>
+</div>
+</body>
+</html>

+ 120 - 0
src/main/webapp/webpage/modules/filing/qulityAssurance/qulityAssuranceForm.jsp

@@ -0,0 +1,120 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>核准阶段管理</title>
+    <meta name="decorator" content="ani"/>
+    <%@ include file="/webpage/include/bootstraptable.jsp" %>
+    <style type="text/css">
+        /* 下边两行是去掉input 输入框右边的上下箭头按钮*/
+        .deal::-webkit-inner-spin-button {
+            -webkit-appearance: none !important;
+        }
+
+        .deal::-webkit-outer-spin-button {
+            -webkit-appearance: none !important;
+        }
+
+        input[type="number"] {
+            -moz-appearance: textfield;
+        }
+    </style>
+    <script type="text/javascript">
+
+        $(document).ready(function () {
+            $('#commDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#compDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#cossDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#acceptanceDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#soilWaterDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#levelRiskTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standStartTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standTransferTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standAcceptanceTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#dateOfInterview').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+        });
+
+        function save() {
+            var isValidate = jp.validateForm('#inputForm');//校验表单
+            if (!isValidate) {
+                return false;
+            } else {
+                jp.loading();
+                jp.post("${ctx}/filing/constructionStage/save", $('#inputForm').serialize(), function (data) {
+                    if (data.success) {
+                        jp.getParent().refresh();
+                        var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+                        parent.layer.close(dialogIndex);
+                        jp.success(data.msg)
+
+                    } else {
+                        jp.error(data.msg);
+                    }
+                })
+            }
+
+        }
+
+    </script>
+</head>
+<body class="bg-white">
+<form:form id="inputForm" modelAttribute="constructionStage" action="${ctx}/filing/constructionStage/save" method="post"
+           class="form-horizontal">
+    <form:hidden path="id"/>
+    <table class="table table-bordered">
+        <tbody>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">项目编码:</label></td>
+            <td class="width-35">
+                <form:input path="projectCode" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">单体编码:</label></td>
+            <td class="width-35">
+                <form:input path="monomerCode" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+            <td class="width-35">
+                <form:input path="entryName" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+
+            <td class="width-15 active"><label class="pull-right">达标投产文:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="standardProduction" value="${constructionStage.standardProduction}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">五方质量终身责任承诺书:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="fiveParty" value="${constructionStage.fiveParty}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+        </tr>
+        </tbody>
+    </table>
+    </div>
+</form:form>
+</body>
+</html>

+ 342 - 0
src/main/webapp/webpage/modules/filing/qulityAssurance/qulityAssuranceList.js

@@ -0,0 +1,342 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+$(document).ready(function() {
+	$('#basicTable').bootstrapTable({
+		  //请求方法
+               method: 'post',
+               //类型json
+               dataType: "json",
+               contentType: "application/x-www-form-urlencoded",
+               //显示检索按钮
+	       showSearch: true,
+               //显示刷新按钮
+               showRefresh: true,
+               //显示切换手机试图按钮
+               showToggle: true,
+               //显示 内容列下拉框
+    	       showColumns: true,
+    	       //显示到处按钮
+    	       showExport: true,
+    	       //显示切换分页按钮
+    	       showPaginationSwitch: true,
+    	       //显示详情按钮
+    	       detailView: true,
+    	       	//显示详细内容函数
+	           // detailFormatter: "detailFormatter",
+    	       //最低显示2行
+    	       minimumCountColumns: 2,
+               //是否显示行间隔色
+               striped: true,
+               //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+               cache: false,
+               //是否显示分页(*)
+               pagination: true,
+                //排序方式
+               sortOrder: "asc",
+               //初始化加载第一页,默认第一页
+               pageNumber:1,
+               //每页的记录行数(*)
+               pageSize: 10,
+               //可供选择的每页的行数(*)
+               pageList: [10, 25, 50, 100],
+               //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+               url: "${ctx}/filing/constructionStage/data",
+               //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+               //queryParamsType:'',
+               ////查询参数,每次调用是会带上这个参数,可自定义
+               queryParams : function(params) {
+               	var searchParam = $("#searchForm").serializeJSON();
+               	searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+               	searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+               	searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+                   return searchParam;
+               },
+               //分页方式:client客户端分页,server服务端分页(*)
+               sidePagination: "server",
+               contextMenuTrigger:"right",//pc端 按右键弹出菜单
+               contextMenuTriggerMobile:"press",//手机端 弹出菜单,click:单击, press:长按。
+               contextMenu: '#context-menu',
+               onContextMenuItem: function(row, $el){
+                   if($el.data("item") == "edit"){
+                   		edit(row.id);
+                   }else if($el.data("item") == "view"){
+                       view(row.id);
+                   } else if($el.data("item") == "delete"){
+                        jp.confirm('确认要删除该质量管理记录吗?', function(){
+                       	jp.loading();
+                       	jp.get("${ctx}/filing/constructionStage/delete?id="+row.id, function(data){
+                   	  		if(data.success){
+                   	  			$('#basicTable').bootstrapTable('refresh');
+                   	  			jp.success(data.msg);
+                   	  		}else{
+                   	  			jp.error(data.msg);
+                   	  		}
+                   	  	})
+
+                   	});
+
+                   }
+               },
+		/*		onPostBody:function(){
+					window.rowProps = undefined;
+					_table_rowspan("#basicTable" , 1);
+					_table_rowspan("#basicTable" , 2);
+					_table_rowspan("#basicTable" , 3);
+					_table_rowspan("#basicTable" , 4);
+					_table_rowspan("#basicTable" , 5);
+					return true;
+				},*/
+               onClickRow: function(row, $el){
+               },
+               	onShowSearch: function () {
+			$("#search-collapse").slideToggle();
+		},
+               columns: [{
+		        checkbox: true
+
+		    }
+			,{
+		        field: 'projectCode',
+		        title: '项目编码',
+			    width: 100,
+		        sortable: true,
+		        sortName: 'projectCode'
+		        ,formatter:function(value, row , index){
+			   if(value == null || value ==""){
+				   value = "-";
+			   }
+			   <c:choose>
+				   <c:when test="${fns:hasPermission('test:filing:qulityAssurance:edit')}">
+				      return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:when test="${fns:hasPermission('test:filing:qulityAssurance:view')}">
+				      return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:otherwise>
+				      return value;
+			      </c:otherwise>
+			   </c:choose>
+
+		        }
+		    }
+			,{
+		        field: 'monomerCode',
+		        title: '单体编码',
+		        sortable: true,
+			   width: 100,
+		        sortName: 'monomerCode'
+
+		    }
+			,{
+		        field: 'entryName',
+		        title: '项目名称',
+			   width: 100,
+		        sortable: true,
+		        sortName: 'entryName'
+
+		    }
+		     ],
+		onExpandRow: function (index, row, $detail) {
+			initSubTable(index, row, $detail);
+		}
+		});
+
+	//初始化子表格(无线循环)
+	initSubTable = function (index, row, $detail) {
+		var parentid = row.projectCode;
+		var cur_table = $detail.html('<table></table>').find('table');
+		$(cur_table).bootstrapTable({
+			url: '${ctx}/filing/constructionStage/detail',
+			method: 'post',
+			//类型json
+			dataType: "json",
+			contentType: "application/x-www-form-urlencoded",
+			queryParams : function(params) {
+				var searchParam = $("#searchForm").serializeJSON();
+				searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+				searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+				searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+				searchParam.projectCode = parentid;
+				return searchParam;
+			},
+			striped: true, //是否显示行间隔色
+			pagination: false,//显示分页
+			sidePagination: "server",
+			pageNumber:1,
+			pageSize: 10,
+			pageList: [10, 25],
+			columns: [{
+				width: 65
+			},{
+					field: 'projectCode',
+					width: 100
+					,formatter:function(value, row , index){
+						if(value == null || value ==""){
+							value = "-";
+						}
+					<c:choose>
+						<c:when test="${fns:hasPermission('test:filing:qulityAssurance:edit')}">
+						return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+					</c:when>
+						<c:when test="${fns:hasPermission('test:filing:qulityAssurance:view')}">
+						return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+					</c:when>
+						<c:otherwise>
+						return value;
+					</c:otherwise>
+						</c:choose>
+
+					}
+				}
+				,{
+					field: 'monomerCode',
+					width: 100,
+
+				}
+				,{
+					field: 'entryName',
+					width: 100,
+				}
+				]
+		});
+	};
+
+		  
+	  if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+
+		 
+		  $('#basicTable').bootstrapTable("toggleView");
+		}
+	  
+	  $('#basicTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+                'check-all.bs.table uncheck-all.bs.table', function () {
+            $('#remove').prop('disabled', ! $('#basicTable').bootstrapTable('getSelections').length);
+            $('#view,#edit').prop('disabled', $('#basicTable').bootstrapTable('getSelections').length!=1);
+        });
+		  
+		$("#btnImport").click(function(){
+			jp.open({
+			    type: 2,
+                area: [500, 200],
+                auto: true,
+			    title:"导入数据",
+			    content: "${ctx}/tag/importExcel" ,
+			    btn: ['下载模板','确定', '关闭'],
+				btn1: function(index, layero){
+					  jp.downloadFile('${ctx}/filing/constructionStage/qulityAssurance/template');
+				  },
+			    btn2: function(index, layero){
+						var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+						iframeWin.contentWindow.importExcel('${ctx}/filing/constructionStage/importQulityAssurance', function (data) {
+							if(data.success){
+								jp.success(data.msg);
+								refresh();
+							}else{
+								jp.error(data.msg);
+							}
+                            jp.close(index);
+                        });//调用保存事件
+                    return false;
+				  },
+				 
+				  btn3: function(index){ 
+					  jp.close(index);
+	    	       }
+			}); 
+		});
+	  $("#export").click(function(){//导出Excel文件
+			jp.downloadFile('${ctx}/filing/constructionStage/export');
+	  });
+
+	$("#exportFiles").bind("click", function () {
+		$("#searchForm").attr("action","${ctx}/filing/filingImages/exportQulityAssurance?ids="+ getIdSelections());
+		$("#searchForm").submit();
+		return true;
+	});
+
+	/*$("#exportFiles").click(function(){//导出Excel文件
+		jp.downloadFile('${ctx}/filing/constructionStage/exportFiles?ids=' + getIdSelections());
+	});*/
+
+	  $("#search").click("click", function() {// 绑定查询按扭
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+
+	  $("#open").click(function () {
+		  $("#basicTable").bootstrapTable('expandAllRows');
+	  })
+
+		$("#close").click(function (row) {
+			$('#basicTable').bootstrapTable('refresh');
+		})
+
+	 $("#reset").click("click", function() {// 绑定查询按扭
+		  $("#searchForm  input").val("");
+		  $("#searchForm  select").val("");
+		   $("#searchForm  .select-item").html("");
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+		
+				$('#beginInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+				$('#endInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+		
+	});
+		
+  function getIdSelections() {
+        return $.map($("#basicTable").bootstrapTable('getSelections'), function (row) {
+            return row.id
+        });
+    }
+  
+  function deleteAll(){
+
+		jp.confirm('确认要删除该质量管理记录吗?', function(){
+			jp.loading();  	
+			jp.get("${ctx}/filing/constructionStage/deleteAll?ids=" + getIdSelections(), function(data){
+         	  		if(data.success){
+         	  			$('#basicTable').bootstrapTable('refresh');
+         	  			jp.success(data.msg);
+         	  		}else{
+         	  			jp.error(data.msg);
+         	  		}
+         	  	})
+          	   
+		})
+  }
+  
+    //刷新列表
+  function refresh() {
+      $('#basicTable').bootstrapTable('refresh');
+  }
+  function add(){
+	  jp.openSaveDialog('新增质量管理', "${ctx}/filing/constructionStage/qulityAssuranceForm",'1000px', '800px');
+  }
+  
+   function edit(id){//没有权限时,不显示确定按钮
+       if(id == undefined){
+	      id = getIdSelections();
+	}
+	jp.openSaveDialog('编辑质量管理', "${ctx}/filing/constructionStage/qulityAssuranceForm?id=" + id, '800px', '500px');
+  }
+
+ function view(id){//没有权限时,不显示确定按钮
+      if(id == undefined){
+             id = getIdSelections();
+      }
+        jp.openViewDialog('查看质量管理', "${ctx}/filing/constructionStage/qulityAssuranceForm?id=" + id, '800px', '500px');
+ }
+
+
+	function addRow(list, idx, tpl, row){
+		$(list).append(Mustache.render(tpl, {
+			idx: idx, delBtn: true, row: row
+		}));
+	}
+			
+</script>
+
+

+ 87 - 0
src/main/webapp/webpage/modules/filing/qulityAssurance/qulityAssuranceList.jsp

@@ -0,0 +1,87 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>质量管理</title>
+    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+    <meta name="decorator" content="ani"/>
+    <%@ include file="/webpage/include/bootstraptable.jsp" %>
+    <%@include file="/webpage/include/treeview.jsp" %>
+    <%@include file="qulityAssuranceList.js" %>
+    <style type="text/css">
+        table {
+            table-layout: fixed;
+            word-break: break-all;
+            word-wrap: break-word;
+            text-align: center;
+        }
+
+        .table th, .table td {
+            text-align: center;
+            vertical-align: middle !important;
+        }
+    </style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+    <div class="panel panel-primary">
+        <div class="panel-heading">
+            <h3 class="panel-title">质量管理</h3>
+        </div>
+        <div class="panel-body">
+            <!-- 搜索 -->
+            <div id="search-collapse" class="collapse">
+                <div class="accordion-inner">
+                    <form:form id="searchForm" modelAttribute="constructionStage"
+                               class="form form-horizontal well clearfix">
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <label class="label-item single-overflow pull-left" title="项目编码:">项目编码:</label>
+                            <form:input path="projectCode" htmlEscape="false" maxlength="257"  class=" form-control"/>
+                        </div>
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <div style="margin-top:26px">
+                                <a id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-search"></i> 查询</a>
+                                <a id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-refresh"></i> 重置</a>
+                            </div>
+                        </div>
+                    </form:form>
+                </div>
+            </div>
+
+            <!-- 工具栏 -->
+            <div id="toolbar">
+                <button id="open" class="btn btn-primary" >
+                    <i class="glyphicon glyphicon-list"></i> 全部展开
+                </button>
+                <button id="close" class="btn btn-primary">
+                    <i class="glyphicon glyphicon-minus"></i> 全部折叠
+                </button>
+                <shiro:hasPermission name="test:filing:qulityAssurance:edit">
+                    <button id="edit" class="btn btn-success" disabled onclick="edit()">
+                        <i class="glyphicon glyphicon-edit"></i> 修改
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:qulityAssurance:import">
+                    <button id="btnImport" class="btn btn-info"><i class="fa fa-folder-open-o"></i> 导入</button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:qulityAssurance:export">
+                    <button id="export" class="btn btn-warning">
+                        <i class="fa fa-file-excel-o"></i> 导出
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:qulityAssurance:export">
+                <button id="exportFiles" class="btn btn-warning">
+                    <i class="fa fa-file-excel-o"></i> 导出附件
+                </button>
+                </shiro:hasPermission>
+            </div>
+
+            <!-- 表格 -->
+            <table id="basicTable" data-toolbar="#toolbar" style="table-layout: fixed;word-break:break-all;"></table>
+        </div>
+    </div>
+</div>
+</body>
+</html>

+ 118 - 0
src/main/webapp/webpage/modules/filing/safetyQuality/safetyQualityForm.jsp

@@ -0,0 +1,118 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>核准阶段管理</title>
+    <meta name="decorator" content="ani"/>
+    <%@ include file="/webpage/include/bootstraptable.jsp" %>
+    <style type="text/css">
+        /* 下边两行是去掉input 输入框右边的上下箭头按钮*/
+        .deal::-webkit-inner-spin-button {
+            -webkit-appearance: none !important;
+        }
+
+        .deal::-webkit-outer-spin-button {
+            -webkit-appearance: none !important;
+        }
+
+        input[type="number"] {
+            -moz-appearance: textfield;
+        }
+    </style>
+    <script type="text/javascript">
+
+        $(document).ready(function () {
+            $('#commDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#compDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#cossDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#acceptanceDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#soilWaterDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#levelRiskTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standStartTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standTransferTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standAcceptanceTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#dateOfInterview').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+        });
+
+        function save() {
+            var isValidate = jp.validateForm('#inputForm');//校验表单
+            if (!isValidate) {
+                return false;
+            } else {
+                jp.loading();
+                jp.post("${ctx}/filing/constructionStage/save", $('#inputForm').serialize(), function (data) {
+                    if (data.success) {
+                        jp.getParent().refresh();
+                        var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+                        parent.layer.close(dialogIndex);
+                        jp.success(data.msg)
+
+                    } else {
+                        jp.error(data.msg);
+                    }
+                })
+            }
+
+        }
+
+    </script>
+</head>
+<body class="bg-white">
+<form:form id="inputForm" modelAttribute="constructionStage" action="${ctx}/filing/constructionStage/save" method="post"
+           class="form-horizontal">
+    <form:hidden path="id"/>
+    <table class="table table-bordered">
+        <tbody>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">项目编码:</label></td>
+            <td class="width-35">
+                <form:input path="projectCode" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">单体编码:</label></td>
+            <td class="width-35">
+                <form:input path="monomerCode" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+            <td class="width-35">
+                <form:input path="entryName" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">安全质量量化考核成果:</label></td>
+            <td class="width-35">
+                <form:input path="resultsSafety" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">工程荣誉:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="engineeringHonors" value="${constructionStage.engineeringHonors}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+        </tr>
+        </tbody>
+    </table>
+    </div>
+</form:form>
+</body>
+</html>

+ 354 - 0
src/main/webapp/webpage/modules/filing/safetyQuality/safetyQualityList.js

@@ -0,0 +1,354 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+$(document).ready(function() {
+	$('#basicTable').bootstrapTable({
+		  //请求方法
+               method: 'post',
+               //类型json
+               dataType: "json",
+               contentType: "application/x-www-form-urlencoded",
+               //显示检索按钮
+	       showSearch: true,
+               //显示刷新按钮
+               showRefresh: true,
+               //显示切换手机试图按钮
+               showToggle: true,
+               //显示 内容列下拉框
+    	       showColumns: true,
+    	       //显示到处按钮
+    	       showExport: true,
+    	       //显示切换分页按钮
+    	       showPaginationSwitch: true,
+    	       //显示详情按钮
+    	       detailView: true,
+    	       	//显示详细内容函数
+	           // detailFormatter: "detailFormatter",
+    	       //最低显示2行
+    	       minimumCountColumns: 2,
+               //是否显示行间隔色
+               striped: true,
+               //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+               cache: false,
+               //是否显示分页(*)
+               pagination: true,
+                //排序方式
+               sortOrder: "asc",
+               //初始化加载第一页,默认第一页
+               pageNumber:1,
+               //每页的记录行数(*)
+               pageSize: 10,
+               //可供选择的每页的行数(*)
+               pageList: [10, 25, 50, 100],
+               //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+               url: "${ctx}/filing/constructionStage/data",
+               //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+               //queryParamsType:'',
+               ////查询参数,每次调用是会带上这个参数,可自定义
+               queryParams : function(params) {
+               	var searchParam = $("#searchForm").serializeJSON();
+               	searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+               	searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+               	searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+                   return searchParam;
+               },
+               //分页方式:client客户端分页,server服务端分页(*)
+               sidePagination: "server",
+               contextMenuTrigger:"right",//pc端 按右键弹出菜单
+               contextMenuTriggerMobile:"press",//手机端 弹出菜单,click:单击, press:长按。
+               contextMenu: '#context-menu',
+               onContextMenuItem: function(row, $el){
+                   if($el.data("item") == "edit"){
+                   		edit(row.id);
+                   }else if($el.data("item") == "view"){
+                       view(row.id);
+                   } else if($el.data("item") == "delete"){
+                        jp.confirm('确认要删除该安全质量管理记录吗?', function(){
+                       	jp.loading();
+                       	jp.get("${ctx}/filing/constructionStage/delete?id="+row.id, function(data){
+                   	  		if(data.success){
+                   	  			$('#basicTable').bootstrapTable('refresh');
+                   	  			jp.success(data.msg);
+                   	  		}else{
+                   	  			jp.error(data.msg);
+                   	  		}
+                   	  	})
+
+                   	});
+
+                   }
+               },
+		/*		onPostBody:function(){
+					window.rowProps = undefined;
+					_table_rowspan("#basicTable" , 1);
+					_table_rowspan("#basicTable" , 2);
+					_table_rowspan("#basicTable" , 3);
+					_table_rowspan("#basicTable" , 4);
+					_table_rowspan("#basicTable" , 5);
+					return true;
+				},*/
+               onClickRow: function(row, $el){
+               },
+               	onShowSearch: function () {
+			$("#search-collapse").slideToggle();
+		},
+               columns: [{
+		        checkbox: true
+
+		    }
+			,{
+		        field: 'projectCode',
+		        title: '项目编码',
+			    width: 100,
+		        sortable: true,
+		        sortName: 'projectCode'
+		        ,formatter:function(value, row , index){
+			   if(value == null || value ==""){
+				   value = "-";
+			   }
+			   <c:choose>
+				   <c:when test="${fns:hasPermission('test:filing:safetyQuality:edit')}">
+				      return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:when test="${fns:hasPermission('test:filing:safetyQuality:view')}">
+				      return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:otherwise>
+				      return value;
+			      </c:otherwise>
+			   </c:choose>
+
+		        }
+		    }
+			,{
+		        field: 'monomerCode',
+		        title: '单体编码',
+		        sortable: true,
+			   width: 100,
+		        sortName: 'monomerCode'
+
+		    }
+			,{
+		        field: 'entryName',
+		        title: '项目名称',
+			   width: 100,
+		        sortable: true,
+		        sortName: 'entryName'
+
+		    }
+				   , {
+					   field: 'resultsSafety',
+					   title: '安全质量量化考核成果',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'resultsSafety'
+
+				   }
+
+		     ],
+		onExpandRow: function (index, row, $detail) {
+			initSubTable(index, row, $detail);
+		}
+		});
+
+	//初始化子表格(无线循环)
+	initSubTable = function (index, row, $detail) {
+		var parentid = row.projectCode;
+		var cur_table = $detail.html('<table></table>').find('table');
+		$(cur_table).bootstrapTable({
+			url: '${ctx}/filing/constructionStage/detail',
+			method: 'post',
+			//类型json
+			dataType: "json",
+			contentType: "application/x-www-form-urlencoded",
+			queryParams : function(params) {
+				var searchParam = $("#searchForm").serializeJSON();
+				searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+				searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+				searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+				searchParam.projectCode = parentid;
+				return searchParam;
+			},
+			striped: true, //是否显示行间隔色
+			pagination: false,//显示分页
+			sidePagination: "server",
+			pageNumber:1,
+			pageSize: 10,
+			pageList: [10, 25],
+			columns: [{
+				width: 65
+			},{
+					field: 'projectCode',
+					width: 100
+					,formatter:function(value, row , index){
+						if(value == null || value ==""){
+							value = "-";
+						}
+					<c:choose>
+						<c:when test="${fns:hasPermission('test:filing:safetyQuality:edit')}">
+						return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+					</c:when>
+						<c:when test="${fns:hasPermission('test:filing:safetyQuality:view')}">
+						return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+					</c:when>
+						<c:otherwise>
+						return value;
+					</c:otherwise>
+						</c:choose>
+
+					}
+				}
+				,{
+					field: 'monomerCode',
+					width: 100,
+				}
+				,{
+					field: 'entryName',
+					width: 100,
+				}
+				, {
+					field: 'resultsSafety',
+					width: 100,
+				}
+				]
+		});
+	};
+
+		  
+	  if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+
+		 
+		  $('#basicTable').bootstrapTable("toggleView");
+		}
+	  
+	  $('#basicTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+                'check-all.bs.table uncheck-all.bs.table', function () {
+            $('#remove').prop('disabled', ! $('#basicTable').bootstrapTable('getSelections').length);
+            $('#view,#edit').prop('disabled', $('#basicTable').bootstrapTable('getSelections').length!=1);
+        });
+		  
+		$("#btnImport").click(function(){
+			jp.open({
+			    type: 2,
+                area: [500, 200],
+                auto: true,
+			    title:"导入数据",
+			    content: "${ctx}/tag/importExcel" ,
+			    btn: ['下载模板','确定', '关闭'],
+				btn1: function(index, layero){
+					  jp.downloadFile('${ctx}/filing/constructionStage/safetyQuality/template');
+				  },
+			    btn2: function(index, layero){
+						var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+						iframeWin.contentWindow.importExcel('${ctx}/filing/constructionStage/importSafetyQuality', function (data) {
+							if(data.success){
+								jp.success(data.msg);
+								refresh();
+							}else{
+								jp.error(data.msg);
+							}
+                            jp.close(index);
+                        });//调用保存事件
+                    return false;
+				  },
+				 
+				  btn3: function(index){ 
+					  jp.close(index);
+	    	       }
+			}); 
+		});
+	  $("#export").click(function(){//导出Excel文件
+			jp.downloadFile('${ctx}/filing/constructionStage/exportSafetyQuality');
+	  });
+
+	$("#exportFiles").bind("click", function () {
+		$("#searchForm").attr("action","${ctx}/filing/filingImages/exportSafetyQuality?ids="+ getIdSelections());
+		$("#searchForm").submit();
+		return true;
+	});
+
+	/*$("#exportFiles").click(function(){//导出Excel文件
+		jp.downloadFile('${ctx}/filing/constructionStage/exportFiles?ids=' + getIdSelections());
+	});*/
+
+	  $("#search").click("click", function() {// 绑定查询按扭
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+
+	  $("#open").click(function () {
+		  $("#basicTable").bootstrapTable('expandAllRows');
+	  })
+
+		$("#close").click(function (row) {
+			$('#basicTable').bootstrapTable('refresh');
+		})
+
+	 $("#reset").click("click", function() {// 绑定查询按扭
+		  $("#searchForm  input").val("");
+		  $("#searchForm  select").val("");
+		   $("#searchForm  .select-item").html("");
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+		
+				$('#beginInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+				$('#endInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+		
+	});
+		
+  function getIdSelections() {
+        return $.map($("#basicTable").bootstrapTable('getSelections'), function (row) {
+            return row.id
+        });
+    }
+  
+  function deleteAll(){
+
+		jp.confirm('确认要删除该安全质量管理记录吗?', function(){
+			jp.loading();  	
+			jp.get("${ctx}/filing/constructionStage/deleteAll?ids=" + getIdSelections(), function(data){
+         	  		if(data.success){
+         	  			$('#basicTable').bootstrapTable('refresh');
+         	  			jp.success(data.msg);
+         	  		}else{
+         	  			jp.error(data.msg);
+         	  		}
+         	  	})
+          	   
+		})
+  }
+  
+    //刷新列表
+  function refresh() {
+      $('#basicTable').bootstrapTable('refresh');
+  }
+  function add(){
+	  jp.openSaveDialog('新增安全质量管理', "${ctx}/filing/constructionStage/safetyQualityForm",'1000px', '800px');
+  }
+  
+   function edit(id){//没有权限时,不显示确定按钮
+       if(id == undefined){
+	      id = getIdSelections();
+	}
+	jp.openSaveDialog('编辑安全质量管理', "${ctx}/filing/constructionStage/safetyQualityForm?id=" + id, '800px', '500px');
+  }
+
+ function view(id){//没有权限时,不显示确定按钮
+      if(id == undefined){
+             id = getIdSelections();
+      }
+        jp.openViewDialog('查看安全质量管理', "${ctx}/filing/constructionStage/safetyQualityForm?id=" + id, '800px', '500px');
+ }
+
+
+	function addRow(list, idx, tpl, row){
+		$(list).append(Mustache.render(tpl, {
+			idx: idx, delBtn: true, row: row
+		}));
+	}
+			
+</script>
+
+

+ 87 - 0
src/main/webapp/webpage/modules/filing/safetyQuality/safetyQualityList.jsp

@@ -0,0 +1,87 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>安全质量管理</title>
+    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+    <meta name="decorator" content="ani"/>
+    <%@ include file="/webpage/include/bootstraptable.jsp" %>
+    <%@include file="/webpage/include/treeview.jsp" %>
+    <%@include file="safetyQualityList.js" %>
+    <style type="text/css">
+        table {
+            table-layout: fixed;
+            word-break: break-all;
+            word-wrap: break-word;
+            text-align: center;
+        }
+
+        .table th, .table td {
+            text-align: center;
+            vertical-align: middle !important;
+        }
+    </style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+    <div class="panel panel-primary">
+        <div class="panel-heading">
+            <h3 class="panel-title">安全质量管理</h3>
+        </div>
+        <div class="panel-body">
+            <!-- 搜索 -->
+            <div id="search-collapse" class="collapse">
+                <div class="accordion-inner">
+                    <form:form id="searchForm" modelAttribute="constructionStage"
+                               class="form form-horizontal well clearfix">
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <label class="label-item single-overflow pull-left" title="项目编码:">项目编码:</label>
+                            <form:input path="projectCode" htmlEscape="false" maxlength="257"  class=" form-control"/>
+                        </div>
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <div style="margin-top:26px">
+                                <a id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-search"></i> 查询</a>
+                                <a id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-refresh"></i> 重置</a>
+                            </div>
+                        </div>
+                    </form:form>
+                </div>
+            </div>
+
+            <!-- 工具栏 -->
+            <div id="toolbar">
+                <button id="open" class="btn btn-primary" >
+                    <i class="glyphicon glyphicon-list"></i> 全部展开
+                </button>
+                <button id="close" class="btn btn-primary">
+                    <i class="glyphicon glyphicon-minus"></i> 全部折叠
+                </button>
+                <shiro:hasPermission name="test:filing:safetyQuality:edit">
+                    <button id="edit" class="btn btn-success" disabled onclick="edit()">
+                        <i class="glyphicon glyphicon-edit"></i> 修改
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:safetyQuality:import">
+                    <button id="btnImport" class="btn btn-info"><i class="fa fa-folder-open-o"></i> 导入</button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:safetyQuality:export">
+                    <button id="export" class="btn btn-warning">
+                        <i class="fa fa-file-excel-o"></i> 导出
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:safetyQuality:export">
+                <button id="exportFiles" class="btn btn-warning">
+                    <i class="fa fa-file-excel-o"></i> 导出附件
+                </button>
+                </shiro:hasPermission>
+            </div>
+
+            <!-- 表格 -->
+            <table id="basicTable" data-toolbar="#toolbar" style="table-layout: fixed;word-break:break-all;"></table>
+        </div>
+    </div>
+</div>
+</body>
+</html>

+ 197 - 0
src/main/webapp/webpage/modules/filing/securityManagment/securityManagmentForm.jsp

@@ -0,0 +1,197 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>核准阶段管理</title>
+    <meta name="decorator" content="ani"/>
+    <%@ include file="/webpage/include/bootstraptable.jsp" %>
+    <style type="text/css">
+        /* 下边两行是去掉input 输入框右边的上下箭头按钮*/
+        .deal::-webkit-inner-spin-button {
+            -webkit-appearance: none !important;
+        }
+
+        .deal::-webkit-outer-spin-button {
+            -webkit-appearance: none !important;
+        }
+
+        input[type="number"] {
+            -moz-appearance: textfield;
+        }
+    </style>
+    <script type="text/javascript">
+
+        $(document).ready(function () {
+            $('#commDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#compDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#cossDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#acceptanceDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#soilWaterDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#levelRiskTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standStartTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standTransferTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standAcceptanceTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#dateOfInterview').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+        });
+
+        function save() {
+            var isValidate = jp.validateForm('#inputForm');//校验表单
+            if (!isValidate) {
+                return false;
+            } else {
+                jp.loading();
+                jp.post("${ctx}/filing/constructionStage/save", $('#inputForm').serialize(), function (data) {
+                    if (data.success) {
+                        jp.getParent().refresh();
+                        var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+                        parent.layer.close(dialogIndex);
+                        jp.success(data.msg)
+
+                    } else {
+                        jp.error(data.msg);
+                    }
+                })
+            }
+
+        }
+
+    </script>
+</head>
+<body class="bg-white">
+<form:form id="inputForm" modelAttribute="constructionStage" action="${ctx}/filing/constructionStage/save" method="post"
+           class="form-horizontal">
+    <form:hidden path="id"/>
+    <table class="table table-bordered">
+        <tbody>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">项目编码:</label></td>
+            <td class="width-35">
+                <form:input path="projectCode" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">单体编码:</label></td>
+            <td class="width-35">
+                <form:input path="monomerCode" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+            <td class="width-35">
+                <form:input path="entryName" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+
+            <td class="width-15 active"><label class="pull-right">分包单位名称:</label></td>
+            <td class="width-35">
+                <form:input path="nameOfSubcontractor" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">项目地点:</label></td>
+            <td class="width-35">
+                <form:input path="projectLocation" htmlEscape="false" class="form-control"/>
+            </td>
+
+            <td class="width-15 active"><label class="pull-right">四级风险内容:</label></td>
+            <td class="width-35">
+                <form:input path="levelRiskContent" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">四级风险实施时间:</label></td>
+            <td class="width-35">
+                <div class='input-group form_datetime' id='levelRiskTime'>
+                    <input type='text' name="levelRiskTime" class="form-control"
+                           value="<fmt:formatDate value="${constructionStage.levelRiskTime}" pattern="yyyy-MM-dd"/>"/>
+                    <span class="input-group-addon">
+                            <span class="glyphicon glyphicon-calendar"></span>
+                    </span>
+                </div>
+            </td>
+
+            <td class="width-15 active"><label class="pull-right">“标准化开工”时间:</label></td>
+            <td class="width-35">
+                <div class='input-group form_datetime' id='standStartTime'>
+                    <input type='text' name="standStartTime" class="form-control"
+                           value="<fmt:formatDate value="${constructionStage.standStartTime}" pattern="yyyy-MM-dd"/>"/>
+                    <span class="input-group-addon">
+                            <span class="glyphicon glyphicon-calendar"></span>
+                    </span>
+                </div>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">“标准化转序”时间:</label></td>
+            <td class="width-35">
+                <div class='input-group form_datetime' id='standTransferTime'>
+                    <input type='text' name="standTransferTime" class="form-control"
+                           value="<fmt:formatDate value="${constructionStage.standTransferTime}" pattern="yyyy-MM-dd"/>"/>
+                    <span class="input-group-addon">
+                            <span class="glyphicon glyphicon-calendar"></span>
+                    </span>
+                </div>
+            </td>
+
+            <td class="width-15 active"><label class="pull-right">“标准化转序”时间</label></td>
+            <td class="width-35">
+                <div class='input-group form_datetime' id='standAcceptanceTime'>
+                    <input type='text' name="standAcceptanceTime" class="form-control"
+                           value="<fmt:formatDate value="${constructionStage.standAcceptanceTime}" pattern="yyyy-MM-dd"/>"/>
+                    <span class="input-group-addon">
+                            <span class="glyphicon glyphicon-calendar"></span>
+                    </span>
+                </div>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">约谈日期</label></td>
+            <td class="width-35">
+                <div class='input-group form_datetime' id='dateOfInterview'>
+                    <input type='text' name="dateOfInterview" class="form-control"
+                           value="<fmt:formatDate value="${constructionStage.dateOfInterview}" pattern="yyyy-MM-dd"/>"/>
+                    <span class="input-group-addon">
+                            <span class="glyphicon glyphicon-calendar"></span>
+                    </span>
+                </div>
+            </td>
+            <td class="width-15 active"><label class="pull-right">约谈会议纪要</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="mettingMinutes" value="${constructionStage.mettingMinutes}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">累计扣款金额</label></td>
+            <td class="width-35">
+                <form:input path="accumulatedAmount" htmlEscape="false" class="form-control"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">扣款单</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="deductionForm" value="${constructionStage.deductionForm}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+        </tr>
+        </tbody>
+    </table>
+    </div>
+</form:form>
+</body>
+</html>

+ 429 - 0
src/main/webapp/webpage/modules/filing/securityManagment/securityManagmentList.js

@@ -0,0 +1,429 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+$(document).ready(function() {
+	$('#basicTable').bootstrapTable({
+		  //请求方法
+               method: 'post',
+               //类型json
+               dataType: "json",
+               contentType: "application/x-www-form-urlencoded",
+               //显示检索按钮
+	       showSearch: true,
+               //显示刷新按钮
+               showRefresh: true,
+               //显示切换手机试图按钮
+               showToggle: true,
+               //显示 内容列下拉框
+    	       showColumns: true,
+    	       //显示到处按钮
+    	       showExport: true,
+    	       //显示切换分页按钮
+    	       showPaginationSwitch: true,
+    	       //显示详情按钮
+    	       detailView: true,
+    	       	//显示详细内容函数
+	           // detailFormatter: "detailFormatter",
+    	       //最低显示2行
+    	       minimumCountColumns: 2,
+               //是否显示行间隔色
+               striped: true,
+               //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+               cache: false,
+               //是否显示分页(*)
+               pagination: true,
+                //排序方式
+               sortOrder: "asc",
+               //初始化加载第一页,默认第一页
+               pageNumber:1,
+               //每页的记录行数(*)
+               pageSize: 10,
+               //可供选择的每页的行数(*)
+               pageList: [10, 25, 50, 100],
+               //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+               url: "${ctx}/filing/constructionStage/data",
+               //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+               //queryParamsType:'',
+               ////查询参数,每次调用是会带上这个参数,可自定义
+               queryParams : function(params) {
+               	var searchParam = $("#searchForm").serializeJSON();
+               	searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+               	searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+               	searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+                   return searchParam;
+               },
+               //分页方式:client客户端分页,server服务端分页(*)
+               sidePagination: "server",
+               contextMenuTrigger:"right",//pc端 按右键弹出菜单
+               contextMenuTriggerMobile:"press",//手机端 弹出菜单,click:单击, press:长按。
+               contextMenu: '#context-menu',
+               onContextMenuItem: function(row, $el){
+                   if($el.data("item") == "edit"){
+                   		edit(row.id);
+                   }else if($el.data("item") == "view"){
+                       view(row.id);
+                   } else if($el.data("item") == "delete"){
+                        jp.confirm('确认要删除该安全管理记录吗?', function(){
+                       	jp.loading();
+                       	jp.get("${ctx}/filing/constructionStage/delete?id="+row.id, function(data){
+                   	  		if(data.success){
+                   	  			$('#basicTable').bootstrapTable('refresh');
+                   	  			jp.success(data.msg);
+                   	  		}else{
+                   	  			jp.error(data.msg);
+                   	  		}
+                   	  	})
+
+                   	});
+
+                   }
+               },
+		/*		onPostBody:function(){
+					window.rowProps = undefined;
+					_table_rowspan("#basicTable" , 1);
+					_table_rowspan("#basicTable" , 2);
+					_table_rowspan("#basicTable" , 3);
+					_table_rowspan("#basicTable" , 4);
+					_table_rowspan("#basicTable" , 5);
+					return true;
+				},*/
+               onClickRow: function(row, $el){
+               },
+               	onShowSearch: function () {
+			$("#search-collapse").slideToggle();
+		},
+               columns: [{
+		        checkbox: true
+
+		    }
+			,{
+		        field: 'projectCode',
+		        title: '项目编码',
+			    width: 100,
+		        sortable: true,
+		        sortName: 'projectCode'
+		        ,formatter:function(value, row , index){
+			   if(value == null || value ==""){
+				   value = "-";
+			   }
+			   <c:choose>
+				   <c:when test="${fns:hasPermission('test:filing:securityManagment:edit')}">
+				      return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:when test="${fns:hasPermission('test:filing:securityManagment:view')}">
+				      return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:otherwise>
+				      return value;
+			      </c:otherwise>
+			   </c:choose>
+
+		        }
+		    }
+			,{
+		        field: 'monomerCode',
+		        title: '单体编码',
+		        sortable: true,
+			   width: 100,
+		        sortName: 'monomerCode'
+
+		    }, {
+					   field: 'nameOfSubcontractor',
+					   title: '分包单位名称',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'nameOfSubcontractor'
+
+				   }
+				   , {
+					   field: 'projectLocation',
+					   title: '项目地点',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'projectLocation'
+
+				   }
+				   , {
+					   field: 'levelRiskContent',
+					   title: '四级风险内容',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'levelRiskContent'
+
+				   }
+				   , {
+					   field: 'levelRiskTime',
+					   title: '四级风险实施时间',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'levelRiskTime'
+
+				   }
+				   , {
+					   field: 'standStartTime',
+					   title: '“标准化开工”时间',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'standStartTime'
+
+				   }
+				   , {
+					   field: 'standTransferTime',
+					   title: '“标准化转序”时间',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'standTransferTime'
+
+				   }
+				   , {
+					   field: 'standAcceptanceTime',
+					   title: '“标准化预验收”时间',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'standAcceptanceTime'
+
+				   }
+				   , {
+					   field: 'dateOfInterview',
+					   title: '约谈日期',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'dateOfInterview'
+
+				   }
+		     ],
+		onExpandRow: function (index, row, $detail) {
+			initSubTable(index, row, $detail);
+		}
+		});
+
+	//初始化子表格(无线循环)
+	initSubTable = function (index, row, $detail) {
+		var parentid = row.projectCode;
+		var cur_table = $detail.html('<table></table>').find('table');
+		$(cur_table).bootstrapTable({
+			url: '${ctx}/filing/constructionStage/detail',
+			method: 'post',
+			//类型json
+			dataType: "json",
+			contentType: "application/x-www-form-urlencoded",
+			queryParams : function(params) {
+				var searchParam = $("#searchForm").serializeJSON();
+				searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+				searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+				searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+				searchParam.projectCode = parentid;
+				return searchParam;
+			},
+			striped: true, //是否显示行间隔色
+			pagination: false,//显示分页
+			sidePagination: "server",
+			pageNumber:1,
+			pageSize: 10,
+			pageList: [10, 25],
+			columns: [{
+				width: 65
+			},{
+					field: 'projectCode',
+					width: 100
+					,formatter:function(value, row , index){
+						if(value == null || value ==""){
+							value = "-";
+						}
+					<c:choose>
+						<c:when test="${fns:hasPermission('test:filing:securityManagment:edit')}">
+						return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+					</c:when>
+						<c:when test="${fns:hasPermission('test:filing:securityManagment:view')}">
+						return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+					</c:when>
+						<c:otherwise>
+						return value;
+					</c:otherwise>
+						</c:choose>
+
+					}
+				}
+				,{
+					field: 'monomerCode',
+					width: 100,
+
+				}
+				,{
+					field: 'entryName',
+					width: 100,
+				}
+				, {
+					field: 'nameOfSubcontractor',
+					width: 100,
+				}
+				, {
+					field: 'projectLocation',
+					width: 100,
+				}
+				, {
+					field: 'levelRiskContent',
+					width: 100,
+				}
+				, {
+					field: 'levelRiskTime',
+					width: 100,
+				}
+				, {
+					field: 'standStartTime',
+					width: 100,
+				}
+				, {
+					field: 'standTransferTime',
+					width: 100,
+				}
+				, {
+					field: 'standAcceptanceTime',
+					width: 100,
+				}
+				, {
+					field: 'dateOfInterview',
+					width: 100,
+				}
+				]
+		});
+	};
+
+		  
+	  if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+
+		 
+		  $('#basicTable').bootstrapTable("toggleView");
+		}
+	  
+	  $('#basicTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+                'check-all.bs.table uncheck-all.bs.table', function () {
+            $('#remove').prop('disabled', ! $('#basicTable').bootstrapTable('getSelections').length);
+            $('#view,#edit').prop('disabled', $('#basicTable').bootstrapTable('getSelections').length!=1);
+        });
+		  
+		$("#btnImport").click(function(){
+			jp.open({
+			    type: 2,
+                area: [500, 200],
+                auto: true,
+			    title:"导入数据",
+			    content: "${ctx}/tag/importExcel" ,
+			    btn: ['下载模板','确定', '关闭'],
+				btn1: function(index, layero){
+					  jp.downloadFile('${ctx}/filing/constructionStage/securityManagment/template');
+				  },
+			    btn2: function(index, layero){
+						var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+						iframeWin.contentWindow.importExcel('${ctx}/filing/constructionStage/importSecurityManagment', function (data) {
+							if(data.success){
+								jp.success(data.msg);
+								refresh();
+							}else{
+								jp.error(data.msg);
+							}
+                            jp.close(index);
+                        });//调用保存事件
+                    return false;
+				  },
+				 
+				  btn3: function(index){ 
+					  jp.close(index);
+	    	       }
+			}); 
+		});
+	  $("#export").click(function(){//导出Excel文件
+			jp.downloadFile('${ctx}/filing/constructionStage/export');
+	  });
+
+	$("#exportFiles").bind("click", function () {
+		$("#searchForm").attr("action","${ctx}/filing/filingImages/exportSecurityManagment?ids="+ getIdSelections());
+		$("#searchForm").submit();
+		return true;
+	});
+
+	/*$("#exportFiles").click(function(){//导出Excel文件
+		jp.downloadFile('${ctx}/filing/constructionStage/exportFiles?ids=' + getIdSelections());
+	});*/
+
+	  $("#search").click("click", function() {// 绑定查询按扭
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+
+	  $("#open").click(function () {
+		  $("#basicTable").bootstrapTable('expandAllRows');
+	  })
+
+		$("#close").click(function (row) {
+			$('#basicTable').bootstrapTable('refresh');
+		})
+
+	 $("#reset").click("click", function() {// 绑定查询按扭
+		  $("#searchForm  input").val("");
+		  $("#searchForm  select").val("");
+		   $("#searchForm  .select-item").html("");
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+		
+				$('#beginInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+				$('#endInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+		
+	});
+		
+  function getIdSelections() {
+        return $.map($("#basicTable").bootstrapTable('getSelections'), function (row) {
+            return row.id
+        });
+    }
+  
+  function deleteAll(){
+
+		jp.confirm('确认要删除该安全管理记录吗?', function(){
+			jp.loading();  	
+			jp.get("${ctx}/filing/constructionStage/deleteAll?ids=" + getIdSelections(), function(data){
+         	  		if(data.success){
+         	  			$('#basicTable').bootstrapTable('refresh');
+         	  			jp.success(data.msg);
+         	  		}else{
+         	  			jp.error(data.msg);
+         	  		}
+         	  	})
+          	   
+		})
+  }
+  
+    //刷新列表
+  function refresh() {
+      $('#basicTable').bootstrapTable('refresh');
+  }
+  function add(){
+	  jp.openSaveDialog('新增安全管理', "${ctx}/filing/constructionStage/securityManagmentForm",'1000px', '800px');
+  }
+  
+   function edit(id){//没有权限时,不显示确定按钮
+       if(id == undefined){
+	      id = getIdSelections();
+	}
+	jp.openSaveDialog('编辑安全管理', "${ctx}/filing/constructionStage/securityManagmentForm?id=" + id, '800px', '500px');
+  }
+
+ function view(id){//没有权限时,不显示确定按钮
+      if(id == undefined){
+             id = getIdSelections();
+      }
+        jp.openViewDialog('查看安全管理', "${ctx}/filing/constructionStage/securityManagmentForm?id=" + id, '800px', '500px');
+ }
+
+
+	function addRow(list, idx, tpl, row){
+		$(list).append(Mustache.render(tpl, {
+			idx: idx, delBtn: true, row: row
+		}));
+	}
+			
+</script>
+
+

+ 87 - 0
src/main/webapp/webpage/modules/filing/securityManagment/securityManagmentList.jsp

@@ -0,0 +1,87 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>安全管理</title>
+    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+    <meta name="decorator" content="ani"/>
+    <%@ include file="/webpage/include/bootstraptable.jsp" %>
+    <%@include file="/webpage/include/treeview.jsp" %>
+    <%@include file="securityManagmentList.js" %>
+    <style type="text/css">
+        table {
+            table-layout: fixed;
+            word-break: break-all;
+            word-wrap: break-word;
+            text-align: center;
+        }
+
+        .table th, .table td {
+            text-align: center;
+            vertical-align: middle !important;
+        }
+    </style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+    <div class="panel panel-primary">
+        <div class="panel-heading">
+            <h3 class="panel-title">安全管理</h3>
+        </div>
+        <div class="panel-body">
+            <!-- 搜索 -->
+            <div id="search-collapse" class="collapse">
+                <div class="accordion-inner">
+                    <form:form id="searchForm" modelAttribute="constructionStage"
+                               class="form form-horizontal well clearfix">
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <label class="label-item single-overflow pull-left" title="项目编码:">项目编码:</label>
+                            <form:input path="projectCode" htmlEscape="false" maxlength="257"  class=" form-control"/>
+                        </div>
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <div style="margin-top:26px">
+                                <a id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-search"></i> 查询</a>
+                                <a id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-refresh"></i> 重置</a>
+                            </div>
+                        </div>
+                    </form:form>
+                </div>
+            </div>
+
+            <!-- 工具栏 -->
+            <div id="toolbar">
+                <button id="open" class="btn btn-primary" >
+                    <i class="glyphicon glyphicon-list"></i> 全部展开
+                </button>
+                <button id="close" class="btn btn-primary">
+                    <i class="glyphicon glyphicon-minus"></i> 全部折叠
+                </button>
+                <shiro:hasPermission name="test:filing:securityManagment:edit">
+                    <button id="edit" class="btn btn-success" disabled onclick="edit()">
+                        <i class="glyphicon glyphicon-edit"></i> 修改
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:securityManagment:import">
+                    <button id="btnImport" class="btn btn-info"><i class="fa fa-folder-open-o"></i> 导入</button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:securityManagment:export">
+                    <button id="export" class="btn btn-warning">
+                        <i class="fa fa-file-excel-o"></i> 导出
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:securityManagment:export">
+                <button id="exportFiles" class="btn btn-warning">
+                    <i class="fa fa-file-excel-o"></i> 导出附件
+                </button>
+                </shiro:hasPermission>
+            </div>
+
+            <!-- 表格 -->
+            <table id="basicTable" data-toolbar="#toolbar" style="table-layout: fixed;word-break:break-all;"></table>
+        </div>
+    </div>
+</div>
+</body>
+</html>

+ 179 - 0
src/main/webapp/webpage/modules/filing/startUp/startUpForm.jsp

@@ -0,0 +1,179 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>核准阶段管理</title>
+    <meta name="decorator" content="ani"/>
+    <%@ include file="/webpage/include/bootstraptable.jsp" %>
+    <style type="text/css">
+        /* 下边两行是去掉input 输入框右边的上下箭头按钮*/
+        .deal::-webkit-inner-spin-button {
+            -webkit-appearance: none !important;
+        }
+
+        .deal::-webkit-outer-spin-button {
+            -webkit-appearance: none !important;
+        }
+
+        input[type="number"] {
+            -moz-appearance: textfield;
+        }
+    </style>
+    <script type="text/javascript">
+
+        $(document).ready(function () {
+            $('#commDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#compDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#cossDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#acceptanceDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#soilWaterDate').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#levelRiskTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standStartTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standTransferTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#standAcceptanceTime').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+            $('#dateOfInterview').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+        });
+
+        function save() {
+            var isValidate = jp.validateForm('#inputForm');//校验表单
+            if (!isValidate) {
+                return false;
+            } else {
+                jp.loading();
+                jp.post("${ctx}/filing/constructionStage/updateSave", $('#inputForm').serialize(), function (data) {
+                    if (data.success) {
+                        jp.getParent().refresh();
+                        var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+                        parent.layer.close(dialogIndex);
+                        jp.success(data.msg)
+
+                    } else {
+                        jp.error(data.msg);
+                    }
+                })
+            }
+
+        }
+
+    </script>
+</head>
+<body class="bg-white">
+<form:form id="inputForm" modelAttribute="constructionStage" action="${ctx}/filing/constructionStage/updateSave" method="post"
+           class="form-horizontal">
+    <form:hidden path="id"/>
+    <table class="table table-bordered">
+        <tbody>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">项目编码:</label></td>
+            <td class="width-35">
+                <form:input path="projectCode" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">单体编码:</label></td>
+            <td class="width-35">
+                <form:input path="monomerCode" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+            <td class="width-35">
+                <form:input path="entryName" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">开工日期:</label></td>
+            <td class="width-35">
+                <div class='input-group form_datetime' id='commDate'>
+                    <input type='text' name="commDate" class="form-control"
+                           value="<fmt:formatDate value="${constructionStage.commDate}" pattern="yyyy-MM-dd"/>"/>
+                    <span class="input-group-addon">
+                          <span class="glyphicon glyphicon-calendar"></span>
+                    </span>
+                </div>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">开工报告:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="commReport" value="${constructionStage.commReport}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">竣工日期:</label></td>
+            <td class="width-35">
+                <div class='input-group form_datetime' id='compDate'>
+                    <input type='text' name="compDate" class="form-control"
+                           value="<fmt:formatDate value="${constructionStage.compDate}" pattern="yyyy-MM-dd"/>"/>
+                    <span class="input-group-addon">
+                            <span class="glyphicon glyphicon-calendar"></span>
+                    </span>
+                </div>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">竣工报告:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="compLetion" value="${constructionStage.compLetion}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">投运日期:</label></td>
+            <td class="width-35">
+                <div class='input-group form_datetime' id='cossDate'>
+                    <input type='text' name="cossDate" class="form-control"
+                           value="<fmt:formatDate value="${constructionStage.cossDate}" pattern="yyyy-MM-dd"/>"/>
+                    <span class="input-group-addon">
+                            <span class="glyphicon glyphicon-calendar"></span>
+                    </span>
+                </div>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">投运报告:</label></td>
+            <td class="width-35">
+                <sys:fileUpload path="cossReport" value="${constructionStage.cossReport}" type="*" uploadPath="/photo"
+                                readonly="false"/>
+            </td>
+            <td class="width-15 active"><label class="pull-right">环评验收日期:</label></td>
+            <td class="width-35">
+                <div class='input-group form_datetime' id='acceptanceDate'>
+                    <input type='text' name="acceptanceDate" class="form-control"
+                           value="<fmt:formatDate value="${constructionStage.acceptanceDate}" pattern="yyyy-MM-dd"/>"/>
+                    <span class="input-group-addon">
+                            <span class="glyphicon glyphicon-calendar"></span>
+                    </span>
+                </div>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="pull-right">水保验收日期:</label></td>
+            <td class="width-35">
+                <div class='input-group form_datetime' id='soilWaterDate'>
+                    <input type='text' name="soilWaterDate" class="form-control"
+                           value="<fmt:formatDate value="${constructionStage.soilWaterDate}" pattern="yyyy-MM-dd"/>"/>
+                    <span class="input-group-addon">
+                            <span class="glyphicon glyphicon-calendar"></span>
+                    </span>
+                </div>
+            </td>
+        </tbody>
+    </table>
+    </div>
+</form:form>
+</body>
+</html>

+ 401 - 0
src/main/webapp/webpage/modules/filing/startUp/startUpList.js

@@ -0,0 +1,401 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+$(document).ready(function() {
+	$('#basicTable').bootstrapTable({
+		  //请求方法
+               method: 'post',
+               //类型json
+               dataType: "json",
+               contentType: "application/x-www-form-urlencoded",
+               //显示检索按钮
+	       showSearch: true,
+               //显示刷新按钮
+               showRefresh: true,
+               //显示切换手机试图按钮
+               showToggle: true,
+               //显示 内容列下拉框
+    	       showColumns: true,
+    	       //显示到处按钮
+    	       showExport: true,
+    	       //显示切换分页按钮
+    	       showPaginationSwitch: true,
+    	       //显示详情按钮
+    	       detailView: true,
+    	       	//显示详细内容函数
+	           // detailFormatter: "detailFormatter",
+    	       //最低显示2行
+    	       minimumCountColumns: 2,
+               //是否显示行间隔色
+               striped: true,
+               //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+               cache: false,
+               //是否显示分页(*)
+               pagination: true,
+                //排序方式
+               sortOrder: "asc",
+               //初始化加载第一页,默认第一页
+               pageNumber:1,
+               //每页的记录行数(*)
+               pageSize: 10,
+               //可供选择的每页的行数(*)
+               pageList: [10, 25, 50, 100],
+               //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+               url: "${ctx}/filing/constructionStage/data",
+               //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+               //queryParamsType:'',
+               ////查询参数,每次调用是会带上这个参数,可自定义
+               queryParams : function(params) {
+               	var searchParam = $("#searchForm").serializeJSON();
+               	searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+               	searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+               	searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+                   return searchParam;
+               },
+               //分页方式:client客户端分页,server服务端分页(*)
+               sidePagination: "server",
+               contextMenuTrigger:"right",//pc端 按右键弹出菜单
+               contextMenuTriggerMobile:"press",//手机端 弹出菜单,click:单击, press:长按。
+               contextMenu: '#context-menu',
+               onContextMenuItem: function(row, $el){
+                   if($el.data("item") == "edit"){
+                   		edit(row.id);
+                   }else if($el.data("item") == "view"){
+                       view(row.id);
+                   } else if($el.data("item") == "delete"){
+                        jp.confirm('确认要删除该工程建设阶段记录吗?', function(){
+                       	jp.loading();
+                       	jp.get("${ctx}/filing/constructionStage/delete?id="+row.id, function(data){
+                   	  		if(data.success){
+                   	  			$('#basicTable').bootstrapTable('refresh');
+                   	  			jp.success(data.msg);
+                   	  		}else{
+                   	  			jp.error(data.msg);
+                   	  		}
+                   	  	})
+
+                   	});
+
+                   }
+               },
+		/*		onPostBody:function(){
+					window.rowProps = undefined;
+					_table_rowspan("#basicTable" , 1);
+					_table_rowspan("#basicTable" , 2);
+					_table_rowspan("#basicTable" , 3);
+					_table_rowspan("#basicTable" , 4);
+					_table_rowspan("#basicTable" , 5);
+					return true;
+				},*/
+               onClickRow: function(row, $el){
+               },
+               	onShowSearch: function () {
+			$("#search-collapse").slideToggle();
+		},
+               columns: [{
+		        checkbox: true
+
+		    }
+			,{
+		        field: 'projectCode',
+		        title: '项目编码',
+			    width: 100,
+		        sortable: true,
+		        sortName: 'projectCode'
+		        ,formatter:function(value, row , index){
+			   if(value == null || value ==""){
+				   value = "-";
+			   }
+			   <c:choose>
+				   <c:when test="${fns:hasPermission('test:filing:startUp:edit')}">
+				      return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:when test="${fns:hasPermission('test:filing:startUp:view')}">
+				      return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:otherwise>
+				      return value;
+			      </c:otherwise>
+			   </c:choose>
+
+		        }
+		    }
+			,{
+		        field: 'monomerCode',
+		        title: '单体编码',
+		        sortable: true,
+			   width: 100,
+		        sortName: 'monomerCode'
+
+		    }
+			,{
+		        field: 'entryName',
+		        title: '项目名称',
+			   width: 100,
+		        sortable: true,
+		        sortName: 'entryName'
+
+		    }
+			,{
+		        field: 'commDate',
+		        title: '开工日期',
+			   width: 100,
+		        sortable: true,
+		        sortName: 'commDate'
+		    }
+				   , {
+					   field: 'compDate',
+					   title: '竣工日期',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'compDate'
+
+				   }
+				   , {
+					   field: 'cossDate',
+					   title: '投运日期',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'cossDate'
+
+				   }
+				   , {
+					   field: 'acceptanceDate',
+					   title: '环评验收日期',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'acceptanceDate'
+
+				   }
+				   , {
+					   field: 'soilWaterDate',
+					   title: '水保验收日期',
+					   width: 100,
+					   sortable: true,
+					   sortName: 'soilWaterDate'
+
+				   }
+		     ],
+		onExpandRow: function (index, row, $detail) {
+			initSubTable(index, row, $detail);
+		}
+		});
+
+	//初始化子表格(无线循环)
+	initSubTable = function (index, row, $detail) {
+		var parentid = row.projectCode;
+		var cur_table = $detail.html('<table></table>').find('table');
+		$(cur_table).bootstrapTable({
+			url: '${ctx}/filing/constructionStage/detail',
+			method: 'post',
+			//类型json
+			dataType: "json",
+			contentType: "application/x-www-form-urlencoded",
+			queryParams : function(params) {
+				var searchParam = $("#searchForm").serializeJSON();
+				searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+				searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+				searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+				searchParam.projectCode = parentid;
+				return searchParam;
+			},
+			striped: true, //是否显示行间隔色
+			pagination: false,//显示分页
+			sidePagination: "server",
+			pageNumber:1,
+			pageSize: 10,
+			pageList: [10, 25],
+			columns: [{
+				width: 65
+			},{
+					field: 'projectCode',
+					width: 100
+					,formatter:function(value, row , index){
+						if(value == null || value ==""){
+							value = "-";
+						}
+					<c:choose>
+						<c:when test="${fns:hasPermission('test:filing:startUp:edit')}">
+						return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+					</c:when>
+						<c:when test="${fns:hasPermission('test:filing:startUp:view')}">
+						return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+					</c:when>
+						<c:otherwise>
+						return value;
+					</c:otherwise>
+						</c:choose>
+
+					}
+				}
+				,{
+					field: 'monomerCode',
+					width: 100,
+
+				}
+				,{
+					field: 'entryName',
+					width: 100,
+				}
+				,{
+					field: 'commDate',
+					width: 100,
+				}
+				, {
+					field: 'compDate',
+					width: 100,
+				}
+				, {
+					field: 'cossDate',
+					width: 100,
+				}
+				, {
+					field: 'acceptanceDate',
+					width: 100,
+				}
+				, {
+					field: 'soilWaterDate',
+					width: 100,
+				}
+				]
+		});
+	};
+
+		  
+	  if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+
+		 
+		  $('#basicTable').bootstrapTable("toggleView");
+		}
+	  
+	  $('#basicTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+                'check-all.bs.table uncheck-all.bs.table', function () {
+            $('#remove').prop('disabled', ! $('#basicTable').bootstrapTable('getSelections').length);
+            $('#view,#edit').prop('disabled', $('#basicTable').bootstrapTable('getSelections').length!=1);
+        });
+		  
+		$("#btnImport").click(function(){
+			jp.open({
+			    type: 2,
+                area: [500, 200],
+                auto: true,
+			    title:"导入数据",
+			    content: "${ctx}/tag/importExcel" ,
+			    btn: ['下载模板','确定', '关闭'],
+				btn1: function(index, layero){
+					  jp.downloadFile('${ctx}/filing/constructionStage/startUP/template');
+				  },
+			    btn2: function(index, layero){
+						var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+						iframeWin.contentWindow.importExcel('${ctx}/filing/constructionStage/importStartUp', function (data) {
+							if(data.success){
+								jp.success(data.msg);
+								refresh();
+							}else{
+								jp.error(data.msg);
+							}
+                            jp.close(index);
+                        });//调用保存事件
+                    return false;
+				  },
+				 
+				  btn3: function(index){ 
+					  jp.close(index);
+	    	       }
+			}); 
+		});
+	  $("#export").click(function(){//导出Excel文件
+			jp.downloadFile('${ctx}/filing/constructionStage/exportStartUp');
+	  });
+
+	$("#exportFiles").bind("click", function () {
+		$("#searchForm").attr("action","${ctx}/filing/filingImages/exportStartUp?ids="+ getIdSelections());
+		$("#searchForm").submit();
+		return true;
+	});
+
+	/*$("#exportFiles").click(function(){//导出Excel文件
+		jp.downloadFile('${ctx}/filing/constructionStage/exportFiles?ids=' + getIdSelections());
+	});*/
+
+	  $("#search").click("click", function() {// 绑定查询按扭
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+
+	  $("#open").click(function () {
+		  $("#basicTable").bootstrapTable('expandAllRows');
+	  })
+
+		$("#close").click(function (row) {
+			$('#basicTable').bootstrapTable('refresh');
+		})
+
+	 $("#reset").click("click", function() {// 绑定查询按扭
+		  $("#searchForm  input").val("");
+		  $("#searchForm  select").val("");
+		   $("#searchForm  .select-item").html("");
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+		
+				$('#beginInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+				$('#endInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+		
+	});
+		
+  function getIdSelections() {
+        return $.map($("#basicTable").bootstrapTable('getSelections'), function (row) {
+            return row.id
+        });
+    }
+  
+  function deleteAll(){
+
+		jp.confirm('确认要删除该工程建设阶段记录吗?', function(){
+			jp.loading();  	
+			jp.get("${ctx}/filing/constructionStage/deleteAll?ids=" + getIdSelections(), function(data){
+         	  		if(data.success){
+         	  			$('#basicTable').bootstrapTable('refresh');
+         	  			jp.success(data.msg);
+         	  		}else{
+         	  			jp.error(data.msg);
+         	  		}
+         	  	})
+          	   
+		})
+  }
+  
+    //刷新列表
+  function refresh() {
+      $('#basicTable').bootstrapTable('refresh');
+  }
+  function add(){
+	  jp.openSaveDialog('新增工程建设阶段', "${ctx}/filing/constructionStage/startUpForm",'1000px', '800px');
+  }
+  
+   function edit(id){//没有权限时,不显示确定按钮
+       if(id == undefined){
+	      id = getIdSelections();
+	}
+	jp.openSaveDialog('编辑工程建设阶段', "${ctx}/filing/constructionStage/startUpForm?id=" + id, '800px', '500px');
+  }
+
+ function view(id){//没有权限时,不显示确定按钮
+      if(id == undefined){
+             id = getIdSelections();
+      }
+        jp.openViewDialog('查看工程建设阶段', "${ctx}/filing/constructionStage/startUpForm?id=" + id, '800px', '500px');
+ }
+
+
+	function addRow(list, idx, tpl, row){
+		$(list).append(Mustache.render(tpl, {
+			idx: idx, delBtn: true, row: row
+		}));
+	}
+			
+</script>
+
+

+ 87 - 0
src/main/webapp/webpage/modules/filing/startUp/startUpList.jsp

@@ -0,0 +1,87 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>开竣工管理</title>
+    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+    <meta name="decorator" content="ani"/>
+    <%@ include file="/webpage/include/bootstraptable.jsp" %>
+    <%@include file="/webpage/include/treeview.jsp" %>
+    <%@include file="startUpList.js" %>
+    <style type="text/css">
+        table {
+            table-layout: fixed;
+            word-break: break-all;
+            word-wrap: break-word;
+            text-align: center;
+        }
+
+        .table th, .table td {
+            text-align: center;
+            vertical-align: middle !important;
+        }
+    </style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+    <div class="panel panel-primary">
+        <div class="panel-heading">
+            <h3 class="panel-title">开竣工管理</h3>
+        </div>
+        <div class="panel-body">
+            <!-- 搜索 -->
+            <div id="search-collapse" class="collapse">
+                <div class="accordion-inner">
+                    <form:form id="searchForm" modelAttribute="constructionStage"
+                               class="form form-horizontal well clearfix">
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <label class="label-item single-overflow pull-left" title="项目编码:">项目编码:</label>
+                            <form:input path="projectCode" htmlEscape="false" maxlength="257"  class=" form-control"/>
+                        </div>
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <div style="margin-top:26px">
+                                <a id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-search"></i> 查询</a>
+                                <a id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-refresh"></i> 重置</a>
+                            </div>
+                        </div>
+                    </form:form>
+                </div>
+            </div>
+
+            <!-- 工具栏 -->
+            <div id="toolbar">
+                <button id="open" class="btn btn-primary" >
+                    <i class="glyphicon glyphicon-list"></i> 全部展开
+                </button>
+                <button id="close" class="btn btn-primary">
+                    <i class="glyphicon glyphicon-minus"></i> 全部折叠
+                </button>
+                <shiro:hasPermission name="test:filing:startUp:edit">
+                    <button id="edit" class="btn btn-success" disabled onclick="edit()">
+                        <i class="glyphicon glyphicon-edit"></i> 修改
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:startUp:import">
+                    <button id="btnImport" class="btn btn-info"><i class="fa fa-folder-open-o"></i> 导入</button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:startUp:export">
+                    <button id="export" class="btn btn-warning">
+                        <i class="fa fa-file-excel-o"></i> 导出
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:startUp:export">
+                <button id="exportFiles" class="btn btn-warning">
+                    <i class="fa fa-file-excel-o"></i> 导出附件
+                </button>
+                </shiro:hasPermission>
+            </div>
+
+            <!-- 表格 -->
+            <table id="basicTable" data-toolbar="#toolbar" style="table-layout: fixed;word-break:break-all;"></table>
+        </div>
+    </div>
+</div>
+</body>
+</html>