Kaynağa Gözat

Merge remote-tracking branch 'origin/master'

[user3] 4 yıl önce
ebeveyn
işleme
be76881ad4
87 değiştirilmiş dosya ile 8150 ekleme ve 300 silme
  1. 7 0
      src/main/java/com/jeeplus/modules/projectVisa/dao/ProjectVisaDao.java
  2. 18 0
      src/main/java/com/jeeplus/modules/projectVisa/entity/ProjectVisa.java
  3. 4 0
      src/main/java/com/jeeplus/modules/projectVisa/service/ProjectVisaService.java
  4. 29 1
      src/main/java/com/jeeplus/modules/projectVisa/web/ProjectClaimController.java
  5. 30 1
      src/main/java/com/jeeplus/modules/projectVisa/web/ProjectDesignController.java
  6. 29 1
      src/main/java/com/jeeplus/modules/projectVisa/web/ProjectVisaController.java
  7. 40 0
      src/main/java/com/jeeplus/modules/projectcontentinfo/entity/Projectcontentinfo.java
  8. 13 5
      src/main/java/com/jeeplus/modules/projectcontentinfo/service/ProjectcontentinfoService.java
  9. 28 4
      src/main/java/com/jeeplus/modules/projectcontentinfo/web/ProjectcontentinfoController.java
  10. 55 0
      src/main/java/com/jeeplus/modules/projectrecord/dao/monthly/MonthlyConsultationReportDao.java
  11. 55 0
      src/main/java/com/jeeplus/modules/projectrecord/entity/MonthlyInfo.java
  12. 8 1
      src/main/java/com/jeeplus/modules/projectrecord/entity/ProjectRecordTreeData.java
  13. 162 0
      src/main/java/com/jeeplus/modules/projectrecord/service/monthly/MonthlyConsultationReportService.java
  14. 32 6
      src/main/java/com/jeeplus/modules/projectrecord/web/armorForMaterials/ArmorForMaterialsController.java
  15. 6 2
      src/main/java/com/jeeplus/modules/projectrecord/web/check/ChechDesignController.java
  16. 6 2
      src/main/java/com/jeeplus/modules/projectrecord/web/check/CheckClaimController.java
  17. 2 1
      src/main/java/com/jeeplus/modules/projectrecord/web/check/CheckDistributionSettlementController.java
  18. 1 1
      src/main/java/com/jeeplus/modules/projectrecord/web/check/CheckInterimPaymentController.java
  19. 7 2
      src/main/java/com/jeeplus/modules/projectrecord/web/check/CheckVisaController.java
  20. 34 6
      src/main/java/com/jeeplus/modules/projectrecord/web/concealProject/ConcealProjectController.java
  21. 34 13
      src/main/java/com/jeeplus/modules/projectrecord/web/contractMaterial/MaterialController.java
  22. 290 0
      src/main/java/com/jeeplus/modules/projectrecord/web/monthly/MonthlyConsultationReportController.java
  23. 140 0
      src/main/java/com/jeeplus/modules/projectrecord/web/summarizing/ContentArmorSummarizingController.java
  24. 140 0
      src/main/java/com/jeeplus/modules/projectrecord/web/summarizing/ContentClaimSummarizingController.java
  25. 140 0
      src/main/java/com/jeeplus/modules/projectrecord/web/summarizing/ContentConcealSummarizingController.java
  26. 2 21
      src/main/java/com/jeeplus/modules/projectrecord/web/summarizing/ContentDesignSummarizingController.java
  27. 140 0
      src/main/java/com/jeeplus/modules/projectrecord/web/summarizing/ContentDistributionSummarizingController.java
  28. 142 0
      src/main/java/com/jeeplus/modules/projectrecord/web/summarizing/ContentInterimPaymentSummarizingController.java
  29. 141 0
      src/main/java/com/jeeplus/modules/projectrecord/web/summarizing/ContentMaterialSummarizingController.java
  30. 140 0
      src/main/java/com/jeeplus/modules/projectrecord/web/summarizing/ContentVisaSummarizingController.java
  31. 2 0
      src/main/java/com/jeeplus/modules/workcontent/dao/WorkConcealProjectDao.java
  32. 2 0
      src/main/java/com/jeeplus/modules/workcontent/dao/WorkContentBranchAccountDao.java
  33. 2 0
      src/main/java/com/jeeplus/modules/workcontent/dao/WorkFiveDirectionsAffirmDao.java
  34. 6 0
      src/main/java/com/jeeplus/modules/workcontent/dao/WorkMaterialsPriceDao.java
  35. 36 0
      src/main/java/com/jeeplus/modules/workcontent/entity/WorkConcealProject.java
  36. 15 151
      src/main/java/com/jeeplus/modules/workcontent/entity/WorkContentBranchAccount.java
  37. 27 0
      src/main/java/com/jeeplus/modules/workcontent/entity/WorkFiveDirectionsAffirm.java
  38. 27 0
      src/main/java/com/jeeplus/modules/workcontent/entity/WorkMaterialsPrice.java
  39. 1 0
      src/main/java/com/jeeplus/modules/workcontent/service/ProjectVisaInfoService.java
  40. 4 0
      src/main/java/com/jeeplus/modules/workcontent/service/WorkConcealProjectService.java
  41. 4 0
      src/main/java/com/jeeplus/modules/workcontent/service/WorkContentBranchAccountService.java
  42. 4 0
      src/main/java/com/jeeplus/modules/workcontent/service/WorkFiveDirectionsAffirmService.java
  43. 4 0
      src/main/java/com/jeeplus/modules/workcontent/service/WorkMaterialsPriceService.java
  44. 23 0
      src/main/java/com/jeeplus/modules/workcontent/web/WorkConcealProjectController.java
  45. 21 0
      src/main/java/com/jeeplus/modules/workcontent/web/WorkContentBranchAccountController.java
  46. 21 0
      src/main/java/com/jeeplus/modules/workcontent/web/WorkFiveDirectionsAffirmController.java
  47. 21 0
      src/main/java/com/jeeplus/modules/workcontent/web/WorkMaterialsPriceController.java
  48. 112 0
      src/main/resources/mappings/modules/projectrecord/monthly/MonthlyConsultationReportDao.xml
  49. 18 0
      src/main/resources/mappings/modules/projectrecord/stage/ProjectVisaDao.xml
  50. 30 6
      src/main/resources/mappings/modules/workcontent/WorkConcealProjectDao.xml
  51. 27 6
      src/main/resources/mappings/modules/workcontent/WorkContentBranchAccountDao.xml
  52. 26 5
      src/main/resources/mappings/modules/workcontent/WorkFiveDirectionsAffirmDao.xml
  53. 27 6
      src/main/resources/mappings/modules/workcontent/WorkMaterialsPriceDao.xml
  54. 1 0
      src/main/webapp/static/bos/bosupload.js
  55. 126 6
      src/main/webapp/webpage/modules/projectrecord/armorForMaterials/armorForMaterialsForm.jsp
  56. 2 3
      src/main/webapp/webpage/modules/projectrecord/armorForMaterials/armorForMaterialsList.jsp
  57. 1 1
      src/main/webapp/webpage/modules/projectrecord/check/checkDesignList.jsp
  58. 1 1
      src/main/webapp/webpage/modules/projectrecord/claim/projectClaimForm.jsp
  59. 2 3
      src/main/webapp/webpage/modules/projectrecord/concealProject/concealProjectList.jsp
  60. 126 6
      src/main/webapp/webpage/modules/projectrecord/concealProject/workContentForm.jsp
  61. 3 3
      src/main/webapp/webpage/modules/projectrecord/contractMaterial/materialList.jsp
  62. 124 6
      src/main/webapp/webpage/modules/projectrecord/contractMaterial/workMaterialForm.jsp
  63. 1 1
      src/main/webapp/webpage/modules/projectrecord/design/projectDesignForm.jsp
  64. 1 1
      src/main/webapp/webpage/modules/projectrecord/distributionSettlement/distributionSettlementForm.jsp
  65. 1 1
      src/main/webapp/webpage/modules/projectrecord/implementStage/projectInterimPaymentForm.jsp
  66. 515 0
      src/main/webapp/webpage/modules/projectrecord/monthly/monthlyConsultationReportList.jsp
  67. 921 0
      src/main/webapp/webpage/modules/projectrecord/monthly/monthlyContentForm.jsp
  68. 879 0
      src/main/webapp/webpage/modules/projectrecord/monthly/monthlyContentView.jsp
  69. 371 0
      src/main/webapp/webpage/modules/projectrecord/summarizing/armorProjectRecordsList.jsp
  70. 371 0
      src/main/webapp/webpage/modules/projectrecord/summarizing/claimSumamarizingProjectRecordsList.jsp
  71. 371 0
      src/main/webapp/webpage/modules/projectrecord/summarizing/concealProjectRecordsList.jsp
  72. 371 0
      src/main/webapp/webpage/modules/projectrecord/summarizing/designSumamarizingProjectRecordsList.jsp
  73. 371 0
      src/main/webapp/webpage/modules/projectrecord/summarizing/distributionSumamarizingProjectRecordsList.jsp
  74. 371 0
      src/main/webapp/webpage/modules/projectrecord/summarizing/materialProjectRecordsList.jsp
  75. 15 3
      src/main/webapp/webpage/modules/projectrecord/summarizing/sumamarizingProjectRecordsList.jsp
  76. 371 0
      src/main/webapp/webpage/modules/projectrecord/summarizing/visaSumamarizingProjectRecordsList.jsp
  77. 21 21
      src/main/webapp/webpage/modules/projectrecord/summarizing/workContentView.jsp
  78. 1 1
      src/main/webapp/webpage/modules/projectrecord/visa/projectVisaForm.jsp
  79. 8 1
      src/main/webapp/webpage/modules/projectrecord/workContentFromAndView/workContentForm.jsp
  80. 122 0
      src/main/webapp/webpage/modules/workcontent/workProjectArmorListView.jsp
  81. 63 0
      src/main/webapp/webpage/modules/workcontent/workProjectBranchListView.jsp
  82. 58 0
      src/main/webapp/webpage/modules/workcontent/workProjectClaimListView.jsp
  83. 51 0
      src/main/webapp/webpage/modules/workcontent/workProjectConcealListView.jsp
  84. 59 0
      src/main/webapp/webpage/modules/workcontent/workProjectDesignListView.jsp
  85. 56 0
      src/main/webapp/webpage/modules/workcontent/workProjectMaterialListView.jsp
  86. 1 1
      src/main/webapp/webpage/modules/workcontent/workProjectScheduleListView.jsp
  87. 59 0
      src/main/webapp/webpage/modules/workcontent/workProjectVisaListView.jsp

+ 7 - 0
src/main/java/com/jeeplus/modules/projectVisa/dao/ProjectVisaDao.java

@@ -47,4 +47,11 @@ public interface ProjectVisaDao extends CrudDao<ProjectVisa> {
      * @return
      */
     Integer upodateContractVisaInfo(ProjectContentData projectContentData);
+
+    /**
+     * 根据项目id查询所有有关项目的信息
+     * @param projectVisa
+     * @return
+     */
+    List<ProjectVisa> findListByProjectId(ProjectVisa projectVisa);
 }

+ 18 - 0
src/main/java/com/jeeplus/modules/projectVisa/entity/ProjectVisa.java

@@ -25,6 +25,8 @@ public class ProjectVisa extends DataEntity<ProjectVisa> {
     private Double confirmMoney;//定审金额
     private String type;//汇总类型1是签证2是设计
     private String   dateStr;//签证时间Str
+    private String contractName;          //合同名称
+    private String contractNumber;          //合同编号
     private List<WorkClientAttachment> workAttachments = Lists.newArrayList();
 
     public String getContractId() {
@@ -123,4 +125,20 @@ public class ProjectVisa extends DataEntity<ProjectVisa> {
     public void setDateStr(String dateStr) {
         this.dateStr = dateStr;
     }
+
+    public String getContractName() {
+        return contractName;
+    }
+
+    public void setContractName(String contractName) {
+        this.contractName = contractName;
+    }
+
+    public String getContractNumber() {
+        return contractNumber;
+    }
+
+    public void setContractNumber(String contractNumber) {
+        this.contractNumber = contractNumber;
+    }
 }

+ 4 - 0
src/main/java/com/jeeplus/modules/projectVisa/service/ProjectVisaService.java

@@ -81,6 +81,10 @@ public class ProjectVisaService extends CrudService<ProjectVisaDao,ProjectVisa>
     }
 
 
+    public List<ProjectVisa> findListByProjectId(ProjectVisa projectVisa) {
+        return dao.findListByProjectId(projectVisa);
+    }
+
 
 
     public ProjectContentData getProjectContentData(String id) {

+ 29 - 1
src/main/java/com/jeeplus/modules/projectVisa/web/ProjectClaimController.java

@@ -251,7 +251,7 @@ public class ProjectClaimController extends BaseController {
      * 工程费用列表页面
      */
     @RequestMapping(value = {"visaList"})
-    public String list(ProjectVisa projectVisa, String view, HttpServletRequest request, Model model) {
+    public String visaList(ProjectVisa projectVisa, String view, HttpServletRequest request, Model model) {
         String sign = request.getParameter("sign");
         List<String> signList = new ArrayList();
         if (StringUtils.isNotBlank(sign)){
@@ -284,6 +284,34 @@ public class ProjectClaimController extends BaseController {
     }
 
     /**
+     * 根据projectId获取项目中所有的工程进度款数据信息
+     */
+    @RequestMapping(value = {"listByProjectId"})
+    public String listByProjectId(ProjectVisa projectVisa, String view, HttpServletRequest request, Model model) {
+        String sign = request.getParameter("sign");
+        List<String> signList = new ArrayList();
+        if (StringUtils.isNotBlank(sign)){
+            signList = Arrays.asList(sign.split(","));
+        }
+        projectVisa.setType("3");
+        List<ProjectVisa> list = new ArrayList<>();
+        if(StringUtils.isNotBlank(projectVisa.getProjectId())){
+            list = projectVisaService.findListByProjectId(projectVisa);
+        }
+        if(null != list){
+            for (ProjectVisa visa: list) {
+                if(null != visa.getDate()){
+                    visa.setDateStr(StringUtils.getDateStr(visa.getDate()));
+                }
+            }
+        }
+        model.addAttribute("signList", signList);
+        model.addAttribute("investmentCostList", list);
+        String viewPath = "modules/workcontent/workProjectClaimListView";
+        return viewPath;
+    }
+
+    /**
      * 保存信息
      */
     @RequestMapping(value = "save")

+ 30 - 1
src/main/java/com/jeeplus/modules/projectVisa/web/ProjectDesignController.java

@@ -26,6 +26,7 @@ import com.jeeplus.modules.sys.utils.DictUtils;
 import com.jeeplus.modules.sys.utils.UserUtils;
 import com.jeeplus.modules.workclientinfo.dao.WorkClientAttachmentDao;
 import com.jeeplus.modules.workclientinfo.entity.WorkClientAttachment;
+import com.jeeplus.modules.workcontent.entity.WorkScheduleInfo;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -120,7 +121,7 @@ public class ProjectDesignController extends BaseController {
      * 工程费用列表页面
      */
     @RequestMapping(value = {"visaList"})
-    public String list(ProjectVisa projectVisa, String view, HttpServletRequest request, Model model) {
+    public String visaList(ProjectVisa projectVisa, String view, HttpServletRequest request, Model model) {
         String sign = request.getParameter("sign");
         List<String> signList = new ArrayList();
         if (StringUtils.isNotBlank(sign)){
@@ -152,6 +153,34 @@ public class ProjectDesignController extends BaseController {
         return viewPath;
     }
 
+    /**
+     * 根据projectId获取项目中所有的工程进度款数据信息
+     */
+    @RequestMapping(value = {"listByProjectId"})
+    public String listByProjectId(ProjectVisa projectVisa, String view, HttpServletRequest request, Model model) {
+        String sign = request.getParameter("sign");
+        List<String> signList = new ArrayList();
+        if (StringUtils.isNotBlank(sign)){
+            signList = Arrays.asList(sign.split(","));
+        }
+        projectVisa.setType("2");
+        List<ProjectVisa> list = new ArrayList<>();
+        if(StringUtils.isNotBlank(projectVisa.getProjectId())){
+            list = projectVisaService.findListByProjectId(projectVisa);
+        }
+        if(null != list){
+            for (ProjectVisa visa: list) {
+                if(null != visa.getDate()){
+                    visa.setDateStr(StringUtils.getDateStr(visa.getDate()));
+                }
+            }
+        }
+        model.addAttribute("signList", signList);
+        model.addAttribute("investmentCostList", list);
+        String viewPath = "modules/workcontent/workProjectDesignListView";
+        return viewPath;
+    }
+
     //编辑签证汇总页面
     @RequestMapping(value = "updateTable")
     public String updateTable(ProjectVisa projectVisa, Model model) {

+ 29 - 1
src/main/java/com/jeeplus/modules/projectVisa/web/ProjectVisaController.java

@@ -129,7 +129,7 @@ public class ProjectVisaController extends BaseController {
      * 工程费用列表页面
      */
     @RequestMapping(value = {"visaList"})
-    public String list(ProjectVisa projectVisa, String view, HttpServletRequest request, Model model) {
+    public String visaList(ProjectVisa projectVisa, String view, HttpServletRequest request, Model model) {
         String sign = request.getParameter("sign");
         List<String> signList = new ArrayList();
         if (StringUtils.isNotBlank(sign)){
@@ -161,6 +161,34 @@ public class ProjectVisaController extends BaseController {
         return viewPath;
     }
 
+    /**
+     * 根据projectId获取项目中所有的工程进度款数据信息
+     */
+    @RequestMapping(value = {"listByProjectId"})
+    public String listByProjectId(ProjectVisa projectVisa, String view, HttpServletRequest request, Model model) {
+        String sign = request.getParameter("sign");
+        List<String> signList = new ArrayList();
+        if (StringUtils.isNotBlank(sign)){
+            signList = Arrays.asList(sign.split(","));
+        }
+        List<ProjectVisa> list = new ArrayList<>();
+        projectVisa.setType("1");
+        if(StringUtils.isNotBlank(projectVisa.getProjectId())){
+            list = projectVisaService.findListByProjectId(projectVisa);
+        }
+        if(null != list){
+            for (ProjectVisa visa: list) {
+                if(null != visa.getDate()){
+                    visa.setDateStr(StringUtils.getDateStr(visa.getDate()));
+                }
+            }
+        }
+        model.addAttribute("signList", signList);
+        model.addAttribute("investmentCostList", list);
+        String viewPath = "modules/workcontent/workProjectVisaListView";
+        return viewPath;
+    }
+
     //编辑签证汇总页面
     @RequestMapping(value = "updateTable")
     public String updateTable(ProjectVisa projectVisa, Model model) {

+ 40 - 0
src/main/java/com/jeeplus/modules/projectcontentinfo/entity/Projectcontentinfo.java

@@ -10,6 +10,7 @@ import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
 import com.jeeplus.modules.sys.entity.Workattachment;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -45,6 +46,13 @@ public class Projectcontentinfo extends TreeEntity<Projectcontentinfo> {
 	private String reportId;
 	private String projectType;
 
+
+	private String monthlyName;    //月报名称
+	private Date monthlyDate;    //月报时间
+	private String monthlyContent;  //月报内容信息
+	private String monthlyNumber;   //月报编号
+
+
 	public RuralProjectRecords getProjectOnRural() {
 		return projectOnRural;
 	}
@@ -250,4 +258,36 @@ public class Projectcontentinfo extends TreeEntity<Projectcontentinfo> {
 	public void setProjectType(String projectType) {
 		this.projectType = projectType;
 	}
+
+	public String getMonthlyName() {
+		return monthlyName;
+	}
+
+	public void setMonthlyName(String monthlyName) {
+		this.monthlyName = monthlyName;
+	}
+
+	public Date getMonthlyDate() {
+		return monthlyDate;
+	}
+
+	public void setMonthlyDate(Date monthlyDate) {
+		this.monthlyDate = monthlyDate;
+	}
+
+	public String getMonthlyContent() {
+		return monthlyContent;
+	}
+
+	public void setMonthlyContent(String monthlyContent) {
+		this.monthlyContent = monthlyContent;
+	}
+
+	public String getMonthlyNumber() {
+		return monthlyNumber;
+	}
+
+	public void setMonthlyNumber(String monthlyNumber) {
+		this.monthlyNumber = monthlyNumber;
+	}
 }

+ 13 - 5
src/main/java/com/jeeplus/modules/projectcontentinfo/service/ProjectcontentinfoService.java

@@ -251,9 +251,9 @@ public class ProjectcontentinfoService extends CrudService<ProjectcontentinfoDao
 			projectContentData.setCompanyId(contentinfo.getCompanyId());
 			projectContentData.setOfficeId(contentinfo.getOfficeId());
 			projectContentData.setProject(contentinfo.getProject());
-			if(StringUtils.isNotBlank(projectcontentinfo.getProject().getWorkContractInfo().getId())){
+			/*if(StringUtils.isNotBlank(projectcontentinfo.getProject().getWorkContractInfo().getId())){
 				projectContentData.setContractId(projectcontentinfo.getProject().getWorkContractInfo().getId());
-			}
+			}*/
 			projectContentDataService.save(projectContentData);
 			//保存工作内容详情
 			if(StringUtils.isNotBlank(projectContentData.getContentDetail())) {
@@ -269,12 +269,20 @@ public class ProjectcontentinfoService extends CrudService<ProjectcontentinfoDao
 //				}
 				WorkContentDetailBaseService detailService = WorkContentDetailFactory.getDetailService(projectContentData.getType());
 				if(detailService!=null)
-					detailService.saveDetails(URLDecoder.decode(projectContentData.getContentDetail(),"UTF-8"), projectContentData.getProject().getId(), projectContentData.getId(),projectcontentinfo.getProject().getWorkContractInfo().getId());
+					detailService.saveDetails(URLDecoder.decode(projectContentData.getContentDetail(),"UTF-8"), projectContentData.getProject().getId(), projectContentData.getId(),projectcontentinfo.getProjectContentData().getContractId());
 			}
 			//保存依据资料信息
 			if(projectContentData.getProjectBasedDataList()!=null&&!projectContentData.getProjectBasedDataList().isEmpty()){
-				//删除已存在的附件信息
-				workattachmentDao.deleteByDivIdType(projectContentData.getId());
+				Set set = new HashSet();
+				for (ProjectBasedData data:projectContentData.getProjectBasedDataList()) {
+					set.add(data.getFlag());
+				}
+				List setList = new ArrayList(set);
+				//判定是否为全过程管理中的项目复核模块 如果是则删除已有的附件信息
+				if(setList.contains("132")){
+					//删除已存在的附件信息
+					workattachmentDao.deleteByDivIdType(projectContentData.getId());
+				}
 				for (ProjectBasedData data:projectContentData.getProjectBasedDataList()) {
 					//判定是否为全过程管理中的项目复核模块
 					if("132".equals(data.getFlag())){

Dosya farkı çok büyük olduğundan ihmal edildi
+ 28 - 4
src/main/java/com/jeeplus/modules/projectcontentinfo/web/ProjectcontentinfoController.java


+ 55 - 0
src/main/java/com/jeeplus/modules/projectrecord/dao/monthly/MonthlyConsultationReportDao.java

@@ -0,0 +1,55 @@
+package com.jeeplus.modules.projectrecord.dao.monthly;
+
+import com.jeeplus.common.persistence.CrudDao;
+import com.jeeplus.common.persistence.annotation.MyBatisDao;
+import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
+import com.jeeplus.modules.projectrecord.entity.MonthlyInfo;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecordTreeData;
+
+import java.util.List;
+
+@MyBatisDao
+public interface MonthlyConsultationReportDao extends CrudDao<Projectcontentinfo> {
+
+    /**
+     * 根据项目查询对应信息
+     * @param projectId
+     * @return
+     */
+    List<ProjectRecordTreeData> getFindList(String projectId);
+
+    /**
+     * 新增方法
+     * @param monthly
+     * @return
+     */
+    Integer saveMonthly(MonthlyInfo monthly);
+
+    /**
+     * 修改
+     * @param monthly
+     * @return
+     */
+    Integer updateMonthly(MonthlyInfo monthly);
+
+    /**
+     * 根据id查询信息
+     * @param id
+     * @return
+     */
+    MonthlyInfo getById(String id);
+
+    /**
+     * 根据项目id查询项目编号前缀
+     * @param projectId
+     * @return
+     */
+    String getProjectNum(String projectId);
+
+    /**
+     * 根据id删除信息
+     * @param id
+     * @return
+     */
+    void deleteMonthly(String id);
+}

+ 55 - 0
src/main/java/com/jeeplus/modules/projectrecord/entity/MonthlyInfo.java

@@ -0,0 +1,55 @@
+package com.jeeplus.modules.projectrecord.entity;
+
+import com.jeeplus.common.persistence.DataEntity;
+
+import java.util.Date;
+
+public class MonthlyInfo  extends DataEntity<MonthlyInfo> {
+    private static final long serialVersionUID = 1L;
+
+    private String projectId;      //项目id
+    private String monthlyName;    //月报名称
+    private Date monthlyDate;    //月报时间
+    private String monthlyContent;  //月报内容信息
+    private String monthlyNumber;   //月报编号
+
+    public String getMonthlyName() {
+        return monthlyName;
+    }
+
+    public void setMonthlyName(String monthlyName) {
+        this.monthlyName = monthlyName;
+    }
+
+    public Date getMonthlyDate() {
+        return monthlyDate;
+    }
+
+    public void setMonthlyDate(Date monthlyDate) {
+        this.monthlyDate = monthlyDate;
+    }
+
+    public String getMonthlyContent() {
+        return monthlyContent;
+    }
+
+    public void setMonthlyContent(String monthlyContent) {
+        this.monthlyContent = monthlyContent;
+    }
+
+    public String getMonthlyNumber() {
+        return monthlyNumber;
+    }
+
+    public void setMonthlyNumber(String monthlyNumber) {
+        this.monthlyNumber = monthlyNumber;
+    }
+
+    public String getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(String projectId) {
+        this.projectId = projectId;
+    }
+}

+ 8 - 1
src/main/java/com/jeeplus/modules/projectrecord/entity/ProjectRecordTreeData.java

@@ -2,6 +2,7 @@ package com.jeeplus.modules.projectrecord.entity;
 
 import com.jeeplus.common.persistence.DataEntity;
 
+import java.util.Date;
 import java.util.List;
 
 public class ProjectRecordTreeData extends DataEntity<ProjectRecordTreeData> {
@@ -32,6 +33,7 @@ public class ProjectRecordTreeData extends DataEntity<ProjectRecordTreeData> {
 
     private String contCate;//合同分类
     private double trueAmt;//有效合同金额
+    private Date date;   //时间控件
 
 
 
@@ -220,6 +222,11 @@ public class ProjectRecordTreeData extends DataEntity<ProjectRecordTreeData> {
         this.trueAmt = trueAmt;
     }
 
+    public Date getDate() {
+        return date;
+    }
 
-
+    public void setDate(Date date) {
+        this.date = date;
+    }
 }

+ 162 - 0
src/main/java/com/jeeplus/modules/projectrecord/service/monthly/MonthlyConsultationReportService.java

@@ -0,0 +1,162 @@
+package com.jeeplus.modules.projectrecord.service.monthly;
+
+import com.jeeplus.common.service.CrudService;
+import com.jeeplus.common.utils.MyBeanUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.modules.projectcontentinfo.dao.ProjectBasedDataDao;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectBasedData;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectContentData;
+import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectContentDataService;
+import com.jeeplus.modules.projectrecord.dao.monthly.MonthlyConsultationReportDao;
+import com.jeeplus.modules.projectrecord.entity.MonthlyInfo;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecordTreeData;
+import com.jeeplus.modules.projectreportnum.dao.ProjectReportNumDao;
+import com.jeeplus.modules.projectreportnum.entity.ReportNum;
+import com.jeeplus.modules.sys.dao.WorkattachmentDao;
+import com.jeeplus.modules.sys.entity.Workattachment;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+@Service
+@Transactional(readOnly = true)
+public class MonthlyConsultationReportService extends CrudService<MonthlyConsultationReportDao, Projectcontentinfo> {
+
+    @Autowired
+    private ProjectContentDataService projectContentDataService;
+    @Autowired
+    private WorkattachmentDao workattachmentDao;
+    @Autowired
+    private ProjectBasedDataDao projectBasedDataDao;
+    @Autowired
+    private ProjectReportNumDao projectReportNumDao;
+
+    public List<ProjectRecordTreeData> getFindList(String projectId){
+        List<ProjectRecordTreeData> projectRecordTreeData = dao.getFindList(projectId);
+        return projectRecordTreeData;
+    }
+
+
+    @Transactional(readOnly = false)
+    public String saveData(Projectcontentinfo projectcontentinfo) throws Exception {
+        String monthlyId = "";
+        List<Workattachment> attachmentList = projectcontentinfo.getWorkAttachments();
+        if(projectcontentinfo.getProjectContentData()!=null){
+            MonthlyInfo monthly = new MonthlyInfo();
+            MyBeanUtils.copyBeanNotNull2Bean(projectcontentinfo,monthly);
+            monthly.setProjectId(projectcontentinfo.getProject().getId());
+            if(StringUtils.isNotBlank(monthly.getId())){
+                monthly.preUpdate();
+                dao.updateMonthly(monthly);
+            }else{
+                monthly.setIsNewRecord(false);
+                //查询项目报告号前缀
+                String projectNumPrefix = dao.getProjectNum(monthly.getProjectId());
+                projectNumPrefix += "-YB-";
+
+                //获取最后一个报告号数据信息
+                ReportNum reportNum = new ReportNum();
+                reportNum.setNum(projectNumPrefix);
+                ReportNum lastReportNum = projectReportNumDao.getLastReportNum(reportNum);
+                if (null != lastReportNum){
+                    lastReportNum.getNum().lastIndexOf("-");
+                    //截取最后四位流水号
+                    String substring = lastReportNum.getNum().substring(lastReportNum.getNum().lastIndexOf("-")+1, lastReportNum.getNum().length());
+                    //转换为数字并递增
+                    Integer substringInteger = Integer.parseInt(substring)+1;
+                    //生成新的流水号
+                    StringBuffer newSerialNum = new StringBuffer();
+                    for(int x = 0; x < (4 - substringInteger.toString().length()); x++) {
+                        newSerialNum.append("0");
+                    }
+                    newSerialNum.append(substringInteger);
+                    reportNum.setNum(reportNum.getNum()+newSerialNum);
+                }else{
+                    reportNum.setNum(reportNum.getNum()+"0001");
+                }
+                monthly.setMonthlyNumber(reportNum.getNum());
+                monthly.preInsert();
+                dao.saveMonthly(monthly);
+            }
+            monthlyId = monthly.getId();
+            //保存月报基本信息
+            ProjectContentData projectContentData = projectcontentinfo.getProjectContentData();
+            //保存依据资料信息
+            if(projectContentData.getProjectBasedDataList()!=null&&!projectContentData.getProjectBasedDataList().isEmpty()){
+                for (ProjectBasedData data:projectContentData.getProjectBasedDataList()) {
+                    if (data.getDelFlag().equals("0")){
+                        List<ProjectBasedData> projectBasedData = new ArrayList<>();
+                        projectBasedData.add(data);
+                        projectContentDataService.saveBasedData(monthly.getId(),projectBasedData);
+                    }
+                }
+            }
+        }
+        //保存附件
+        if (attachmentList!=null && attachmentList.size()!=0) {
+            //附件信息
+            for (Workattachment workattachment : attachmentList) {
+                if (workattachment.getId() == null) {
+                    continue;
+                }
+                if (workattachment.DEL_FLAG_NORMAL.equals(workattachment.getDelFlag())) {
+                    workattachment.setAttachmentId(monthlyId);
+                    workattachment.setAttachmentUser(UserUtils.getUser().getId());
+                    if (StringUtils.isBlank(workattachment.getId()) || "null".equals(workattachment.getId())) {
+                        workattachment.preInsert();
+                        workattachmentDao.insert(workattachment);
+                    } else {
+                        workattachment.preUpdate();
+                        workattachmentDao.update(workattachment);
+                    }
+                } else {
+                    workattachmentDao.delete(workattachment);
+                }
+            }
+        }
+        return "true";
+    }
+
+    public MonthlyInfo getById(String id){
+        MonthlyInfo monthlyInfo = dao.getById(id);
+        return monthlyInfo;
+    }
+
+
+    /**
+     * 查询依据性文件
+     * @param monthly
+     * @return
+     */
+    public List<ProjectBasedData> getBasedData(MonthlyInfo monthly){
+        if (StringUtils.isNotBlank(monthly.getId())){
+            List<ProjectBasedData> list = projectBasedDataDao.queryListByContentId(monthly.getId());
+            return list;
+        }
+        return null;
+    }
+
+    /**
+     * 查询附件信息
+     * @param monthly
+     * @return
+     */
+    public List<Workattachment> getWorkattachment(MonthlyInfo monthly){
+        if (StringUtils.isNotBlank(monthly.getId())){
+            Workattachment workattachment = new Workattachment();
+            workattachment.setAttachmentId(monthly.getId());
+            List<Workattachment> list = workattachmentDao.findList(workattachment);
+            return list;
+        }
+        return null;
+    }
+
+    @Transactional(readOnly = false)
+    public void deleteMonthly(String id){
+        dao.deleteMonthly(id);
+    }
+}

+ 32 - 6
src/main/java/com/jeeplus/modules/projectrecord/web/armorForMaterials/ArmorForMaterialsController.java

@@ -11,11 +11,15 @@ import com.jeeplus.modules.projectVisa.entity.ProjectVisa;
 import com.jeeplus.modules.projectVisa.entity.VisaTreeData;
 import com.jeeplus.modules.projectVisa.service.ProjectVisaService;
 import com.jeeplus.modules.projectcontentinfo.entity.ProjectContentData;
+import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
 import com.jeeplus.modules.projectcontentinfo.service.ProjectContentDataService;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectcontentinfoService;
 import com.jeeplus.modules.projectcontroltable.entity.ProjectControlTable;
 import com.jeeplus.modules.projectcontroltable.service.ProjectControlTableService;
 import com.jeeplus.modules.projectrecord.entity.ConcealProjectInfo;
 import com.jeeplus.modules.projectrecord.entity.ProjectImplementEarly;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecordTreeData;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
 import com.jeeplus.modules.projectrecord.service.ProjectImplementEarlyService;
 import com.jeeplus.modules.projectrecord.service.armorForMaterials.ArmorForMaterialsService;
 import com.jeeplus.modules.sys.entity.User;
@@ -55,6 +59,8 @@ public class ArmorForMaterialsController extends BaseController {
     private ProjectControlTableService projectControlTableService;
     @Autowired
     private ProjectContentDataService projectContentDataService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
 
     @ModelAttribute
     public ConstructionContract get(@RequestParam(required=false) String id) {
@@ -161,19 +167,38 @@ public class ArmorForMaterialsController extends BaseController {
                         //将项目信息放入
                         treeList.add(visaTreeData);
 
+                        //获取阶段Type父节点信息
+                        String projectType = projectImplementEarlyService.getProjectType(record.getProjectTypeId(), "实施阶段");
+                        //根据项目id查询相关的项目阶段内容
+                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentDataListOnImplement(record.getId(),visaTreeData.getId(),projectType,"411");
+
+                        Projectcontentinfo select = new Projectcontentinfo();
+                        ProjectRecords project = new ProjectRecords();
+                        project.setId(record.getId());
+                        select.setParentIds("0,");
+                        select.setProject(project);
+                        List<Projectcontentinfo> p = projectcontentinfoService.findListByProject(select);
 
                         //根据获取的合同的id去查找汇总表获取汇总表信息
-                        List<ProjectContentData> contentDataList=armorForMaterialsService.getConcealProjectList(contract.getId());
-                        for (int j=0;j<contentDataList.size();j++){
+                        //List<ProjectContentData> contentDataList=armorForMaterialsService.getConcealProjectList(contract.getId());
+                        for (int j=0;j<reportDataList.size();j++){
                             VisaTreeData contentData=new VisaTreeData();
-                            ProjectContentData data=contentDataList.get(j);
-                            contentData.setPid(data.getContractId());
+                            ProjectRecordTreeData data=reportDataList.get(j);
+                            contentData.setPid(visaTreeData.getId());
                             contentData.setId(data.getId());
-                            contentData.setContractName(data.getName());
+                            contentData.setContractName(data.getProjectName());
                             contentData.setCnumber(contract.getCnumber());
-                            contentData.setNumber(data.getNumber());
+                            //contentData.setNumber(data.getNumber());
                             contentData.setProjectId(record.getId());
                             contentData.setCreateDate(data.getCreateDate());
+                            //添加工作内容id
+                            contentData.setProjectContentId(record.getProjectContentId());
+
+                            if(p.size()>0){
+                                contentData.setContentPId(p.get(0).getId());
+                                contentData.setParentIds("0,");
+                                contentData.setDictType("");
+                            }
 
                             //将项目设置为第二级数据
                             contentData.setCondition(3);
@@ -220,6 +245,7 @@ public class ArmorForMaterialsController extends BaseController {
             projectContentDataService.queryBasedData(projectContentData);
         }
 
+        concealProjectInfo.setCondition("armor");
         concealProjectInfo.setProjectContentData(projectContentData);
         model.addAttribute("concealProjectInfo", concealProjectInfo);
         if("view".equals(concealProjectInfo.getType())){

+ 6 - 2
src/main/java/com/jeeplus/modules/projectrecord/web/check/ChechDesignController.java

@@ -282,7 +282,7 @@ public class ChechDesignController extends BaseController {
                         //获取阶段Type父节点信息
                         String projectType = projectImplementEarlyService.getProjectType(record.getProjectTypeId(), "实施阶段");
                         //根据项目id查询相关的项目阶段内容
-                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentReportDataListOnImplement(record.getId(),projectType,"43");
+                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentDataListOnImplement(record.getId(),visaTreeData.getId(),projectType,"43");
 
                         Projectcontentinfo select = new Projectcontentinfo();
                         ProjectRecords project = new ProjectRecords();
@@ -300,7 +300,11 @@ public class ChechDesignController extends BaseController {
                             contentData.setContractName(data.getProjectName());
                             contentData.setCnumber(contract.getCnumber());
                             contentData.setStatus(data.getStatus());
-                            contentData.setNumber(data.getReportName());
+                            if(StringUtils.isNotBlank(data.getReportName())){
+                                contentData.setNumber(data.getReportName());
+                            }else{
+                                contentData.setNumber("");
+                            }
                             contentData.setProjectId(record.getId());
                             contentData.setReportId(data.getReportId());
                             contentData.setCreateDate(data.getCreateDate());

+ 6 - 2
src/main/java/com/jeeplus/modules/projectrecord/web/check/CheckClaimController.java

@@ -166,7 +166,7 @@ public class CheckClaimController extends BaseController {
                         //获取阶段Type父节点信息
                         String projectType = projectImplementEarlyService.getProjectType(record.getProjectTypeId(), "实施阶段");
                         //根据项目id查询相关的项目阶段内容
-                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentReportDataListOnImplement(record.getId(),projectType,"46");
+                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentDataListOnImplement(record.getId(),visaTreeData.getId(),projectType,"46");
 
                         Projectcontentinfo select = new Projectcontentinfo();
                         ProjectRecords project = new ProjectRecords();
@@ -185,7 +185,11 @@ public class CheckClaimController extends BaseController {
                             contentData.setContractName(data.getProjectName());
                             contentData.setCnumber(contract.getCnumber());
                             contentData.setStatus(data.getStatus());
-                            contentData.setNumber(data.getReportName());
+                            if(StringUtils.isNotBlank(data.getReportName())){
+                                contentData.setNumber(data.getReportName());
+                            }else{
+                                contentData.setNumber("");
+                            }
                             contentData.setProjectId(record.getId());
                             contentData.setReportId(data.getReportId());
                             contentData.setCreateDate(data.getCreateDate());

+ 2 - 1
src/main/java/com/jeeplus/modules/projectrecord/web/check/CheckDistributionSettlementController.java

@@ -177,7 +177,8 @@ public class CheckDistributionSettlementController extends BaseController {
                         //获取阶段Type父节点信息
                         String projectType = projectImplementEarlyService.getProjectType(record.getProjectTypeId(), "实施阶段");
                         //根据项目id查询相关的项目阶段内容
-                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentReportDataListOnImplement(record.getId(),projectType,"412");
+                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentDataListOnImplement(record.getId(),visaTreeData.getId(),projectType,"412");
+
                         //根据获取的合同的id去查找汇总表获取汇总表信息
                         //List<ProjectContentData> contentDataList=distributionSettlementService.getConcealProjectList(contract.getId());
 

+ 1 - 1
src/main/java/com/jeeplus/modules/projectrecord/web/check/CheckInterimPaymentController.java

@@ -171,7 +171,7 @@ public class CheckInterimPaymentController extends BaseController {
                         //获取阶段Type父节点信息
                         String projectType = projectImplementEarlyService.getProjectType(record.getProjectTypeId(), "实施阶段");
                         //根据项目id查询相关的项目阶段内容
-                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentReportDataListOnImplement(record.getId(),projectType,"420");
+                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentDataListOnImplement(record.getId(),visaTreeData.getId(),projectType,"420");
                         //根据获取的合同的id去查找汇总表获取汇总表信息
                         //List<ProjectContentData> contentDataList=service.getInterimPaymentList(contract.getId());
 

+ 7 - 2
src/main/java/com/jeeplus/modules/projectrecord/web/check/CheckVisaController.java

@@ -295,7 +295,8 @@ public class CheckVisaController extends BaseController {
                         //获取阶段Type父节点信息
                         String projectType = projectImplementEarlyService.getProjectType(record.getProjectTypeId(), "实施阶段");
                         //根据项目id查询相关的项目阶段内容
-                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentReportDataListOnImplement(record.getId(),projectType,"45");
+                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentDataListOnImplement(record.getId(),visaTreeData.getId(),projectType,"45");
+
                         //根据获取的合同的id去查找汇总表获取汇总表信息
                         //List<ProjectContentData> projectVisaList=projectVisaService.getVisaList(contract.getId(),"1");
 
@@ -314,7 +315,11 @@ public class CheckVisaController extends BaseController {
                             contentData.setContractName(data.getProjectName());
                             contentData.setCnumber(contract.getCnumber());
                             contentData.setStatus(data.getStatus());
-                            contentData.setNumber(data.getReportName());
+                            if(StringUtils.isNotBlank(data.getReportName())){
+                                contentData.setNumber(data.getReportName());
+                            }else{
+                                contentData.setNumber("");
+                            }
                             contentData.setProjectId(record.getId());
                             contentData.setReportId(data.getReportId());
                             contentData.setCreateDate(data.getCreateDate());

+ 34 - 6
src/main/java/com/jeeplus/modules/projectrecord/web/concealProject/ConcealProjectController.java

@@ -11,11 +11,15 @@ import com.jeeplus.modules.projectVisa.entity.ProjectVisa;
 import com.jeeplus.modules.projectVisa.entity.VisaTreeData;
 import com.jeeplus.modules.projectVisa.service.ProjectVisaService;
 import com.jeeplus.modules.projectcontentinfo.entity.ProjectContentData;
+import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
 import com.jeeplus.modules.projectcontentinfo.service.ProjectContentDataService;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectcontentinfoService;
 import com.jeeplus.modules.projectcontroltable.entity.ProjectControlTable;
 import com.jeeplus.modules.projectcontroltable.service.ProjectControlTableService;
 import com.jeeplus.modules.projectrecord.entity.ConcealProjectInfo;
 import com.jeeplus.modules.projectrecord.entity.ProjectImplementEarly;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecordTreeData;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
 import com.jeeplus.modules.projectrecord.service.ProjectImplementEarlyService;
 import com.jeeplus.modules.projectrecord.service.concealProject.ConcealProjectService;
 import com.jeeplus.modules.sys.entity.User;
@@ -54,6 +58,8 @@ public class ConcealProjectController extends BaseController {
     private ProjectControlTableService projectControlTableService;
     @Autowired
     private ProjectContentDataService projectContentDataService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
 
     @ModelAttribute
     public ConstructionContract get(@RequestParam(required=false) String id) {
@@ -162,18 +168,39 @@ public class ConcealProjectController extends BaseController {
                         treeList.add(visaTreeData);
 
 
+                        //获取阶段Type父节点信息
+                        String projectType = projectImplementEarlyService.getProjectType(record.getProjectTypeId(), "实施阶段");
+                        //根据项目id查询相关的项目阶段内容
+                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentDataListOnImplement(record.getId(),visaTreeData.getId(),projectType,"410");
+
+                        Projectcontentinfo select = new Projectcontentinfo();
+                        ProjectRecords project = new ProjectRecords();
+                        project.setId(record.getId());
+                        select.setParentIds("0,");
+                        select.setProject(project);
+                        List<Projectcontentinfo> p = projectcontentinfoService.findListByProject(select);
+
+
                         //根据获取的合同的id去查找汇总表获取汇总表信息
-                        List<ProjectContentData> contentDataList=concealProjectService.getConcealProjectList(contract.getId());
-                        for (int j=0;j<contentDataList.size();j++){
+                        //List<ProjectContentData> contentDataList=concealProjectService.getConcealProjectList(contract.getId());
+                        for (int j=0;j<reportDataList.size();j++){
                             VisaTreeData contentData=new VisaTreeData();
-                            ProjectContentData data=contentDataList.get(j);
-                            contentData.setPid(data.getContractId());
+                            ProjectRecordTreeData data=reportDataList.get(j);
+                            contentData.setPid(visaTreeData.getId());
                             contentData.setId(data.getId());
-                            contentData.setContractName(data.getName());
+                            contentData.setContractName(data.getProjectName());
                             contentData.setCnumber(contract.getCnumber());
-                            contentData.setNumber(data.getNumber());
+                            //contentData.setNumber(data.getNumber());
                             contentData.setProjectId(record.getId());
                             contentData.setCreateDate(data.getCreateDate());
+                            //添加工作内容id
+                            contentData.setProjectContentId(record.getProjectContentId());
+
+                            if(p.size()>0){
+                                contentData.setContentPId(p.get(0).getId());
+                                contentData.setParentIds("0,");
+                                contentData.setDictType("");
+                            }
 
                             //将项目设置为第二级数据
                             contentData.setCondition(3);
@@ -215,6 +242,7 @@ public class ConcealProjectController extends BaseController {
             projectContentDataService.queryBasedData(projectContentData);
         }
 
+        concealProjectInfo.setCondition("conceal");
         concealProjectInfo.setProjectContentData(projectContentData);
         model.addAttribute("concealProjectInfo", concealProjectInfo);
         if("view".equals(concealProjectInfo.getType())){

+ 34 - 13
src/main/java/com/jeeplus/modules/projectrecord/web/contractMaterial/MaterialController.java

@@ -11,12 +11,12 @@ import com.jeeplus.modules.projectVisa.entity.ProjectVisa;
 import com.jeeplus.modules.projectVisa.entity.VisaTreeData;
 import com.jeeplus.modules.projectVisa.service.ProjectVisaService;
 import com.jeeplus.modules.projectcontentinfo.entity.ProjectContentData;
+import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
 import com.jeeplus.modules.projectcontentinfo.service.ProjectContentDataService;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectcontentinfoService;
 import com.jeeplus.modules.projectcontroltable.entity.ProjectControlTable;
 import com.jeeplus.modules.projectcontroltable.service.ProjectControlTableService;
-import com.jeeplus.modules.projectrecord.entity.ConcealProjectInfo;
-import com.jeeplus.modules.projectrecord.entity.MaterialProjectInfo;
-import com.jeeplus.modules.projectrecord.entity.ProjectImplementEarly;
+import com.jeeplus.modules.projectrecord.entity.*;
 import com.jeeplus.modules.projectrecord.service.ProjectImplementEarlyService;
 import com.jeeplus.modules.projectrecord.service.concealProject.ConcealProjectService;
 import com.jeeplus.modules.projectrecord.service.material.MaterialService;
@@ -51,15 +51,13 @@ public class MaterialController extends BaseController {
     @Autowired
     private ContractService contractService;
     @Autowired
-    private WorkClientAttachmentDao workClientAttachmentDao;
-    @Autowired
-    private ConcealProjectService concealProjectService;
-    @Autowired
     private ProjectControlTableService projectControlTableService;
     @Autowired
     private ProjectContentDataService projectContentDataService;
     @Autowired
     private MaterialService materialService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
 
     @ModelAttribute
     public ConstructionContract get(@RequestParam(required=false) String id) {
@@ -163,18 +161,40 @@ public class MaterialController extends BaseController {
                         //将项目信息放入
                         treeList.add(visaTreeData);
 
+                        //获取阶段Type父节点信息
+                        String projectType = projectImplementEarlyService.getProjectType(record.getProjectTypeId(), "实施阶段");
+                        //根据项目id查询相关的项目阶段内容
+                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentDataListOnImplement(record.getId(),visaTreeData.getId(),projectType,"421");
+
+                        Projectcontentinfo select = new Projectcontentinfo();
+                        ProjectRecords project = new ProjectRecords();
+                        project.setId(record.getId());
+                        select.setParentIds("0,");
+                        select.setProject(project);
+                        List<Projectcontentinfo> p = projectcontentinfoService.findListByProject(select);
+
+
                         //根据获取的合同的id去查找汇总表获取汇总表信息
-                        List<ProjectContentData> contentDataList=materialService.getMaterialList(contract.getId());
-                        for (int j=0;j<contentDataList.size();j++){
+                        //List<ProjectContentData> contentDataList=materialService.getMaterialList(contract.getId());
+                        for (int j=0;j<reportDataList.size();j++){
                             VisaTreeData contentData=new VisaTreeData();
-                            ProjectContentData data=contentDataList.get(j);
-                            contentData.setPid(data.getContractId());
+                            ProjectRecordTreeData data=reportDataList.get(j);
+                            contentData.setPid(visaTreeData.getId());
                             contentData.setId(data.getId());
-                            contentData.setContractName(data.getName());
+                            contentData.setContractName(data.getProjectName());
                             contentData.setCnumber(contract.getCnumber());
-                            contentData.setNumber(data.getNumber());
+                            //contentData.setNumber(data.getNumber());
                             contentData.setProjectId(record.getId());
                             contentData.setCreateDate(data.getCreateDate());
+                            //添加工作内容id
+                            contentData.setProjectContentId(record.getProjectContentId());
+
+                            if(p.size()>0){
+                                contentData.setContentPId(p.get(0).getId());
+                                contentData.setParentIds("0,");
+                                contentData.setDictType("");
+                            }
+
                             //将项目设置为第二级数据
                             contentData.setCondition(3);
                             for (String masterId : masterIdList) {
@@ -214,6 +234,7 @@ public class MaterialController extends BaseController {
             projectContentDataService.queryBasedData(projectContentData);
         }
 
+        materialProjectInfo.setCondition("material");
         materialProjectInfo.setProjectContentData(projectContentData);
         model.addAttribute("materialProjectInfo", materialProjectInfo);
         if("view".equals(materialProjectInfo.getType())){

+ 290 - 0
src/main/java/com/jeeplus/modules/projectrecord/web/monthly/MonthlyConsultationReportController.java

@@ -0,0 +1,290 @@
+package com.jeeplus.modules.projectrecord.web.monthly;
+
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.oss.OSSClientUtil;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.MyBeanUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.projectType.service.ProjectTypeService;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectBasedData;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectContentData;
+import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectBasedDataService;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectContentDataService;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectcontentinfoService;
+import com.jeeplus.modules.projectcontroltable.entity.ProjectControlTable;
+import com.jeeplus.modules.projectcontroltable.service.ProjectControlTableService;
+import com.jeeplus.modules.projectrecord.dao.WorkProjectUserDao;
+import com.jeeplus.modules.projectrecord.entity.MonthlyInfo;
+import com.jeeplus.modules.projectrecord.entity.ProjectImplementEarly;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecordTreeData;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.projectrecord.service.ProjectImplementEarlyService;
+import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
+import com.jeeplus.modules.projectrecord.service.monthly.MonthlyConsultationReportService;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
+import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.*;
+
+/**
+ * 工程造价咨询月报Controller
+ * @author 徐滕
+ * @version 2020-08-11
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/project/monthlyConsultationReport")
+public class MonthlyConsultationReportController extends BaseController {
+
+    @Autowired
+    private ProjectImplementEarlyService projectImplementEarlyService;
+    @Autowired
+    private ProjectRecordsService projectRecordsService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
+    @Autowired
+    private WorkProjectUserDao workProjectUserDao;
+    @Autowired
+    private MonthlyConsultationReportService service;
+
+    private static String template_path = Global.getProjectTemplatePath()+"咨询工作方案.xlsx";
+    private static String template_name = "咨询工作方案.xlsx";
+
+    /*@ModelAttribute
+    public ProjectImplementEarly get(@RequestParam(required=false) String id) {
+        ProjectImplementEarly entity = null;
+        if (StringUtils.isNotBlank(id)){
+            entity = projectImplementEarlyService.get(id);
+        }
+        if (entity == null){
+            entity = new ProjectImplementEarly();
+        }
+        return entity;
+    }*/
+
+    /**
+     * 项目列表页面
+     */
+    @RequiresPermissions("project:monthlyConsultationReport:list")
+    @RequestMapping(value = {"list", ""})
+    public String list(ProjectImplementEarly projectRecords, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        Page<ProjectImplementEarly> page = projectImplementEarlyService.findProjectPage(new Page<ProjectImplementEarly>(request, response), projectRecords);
+        model.addAttribute("page", page);
+        return "modules/projectrecord/monthly/monthlyConsultationReportList";
+    }
+
+    /**
+     * 项目列表页面
+     */
+    @RequestMapping(value = "getProjectList")
+    @ResponseBody
+    public Map<String,List> getProjectList(ProjectImplementEarly projectRecords, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        Page<ProjectImplementEarly> page = projectImplementEarlyService.findProjectPage(new Page<ProjectImplementEarly>(request, response), projectRecords);
+        //无合同状态下,获取委托方的名称
+        List<ProjectImplementEarly> list = page.getList();
+        List<ProjectRecordTreeData> projectRecordTreeDataList = new ArrayList<>();
+        Map<String,List> map = new HashMap<>();
+        for (int i = 0; i < list.size(); i++) {
+            ProjectRecordTreeData projectRecordTreeData = new ProjectRecordTreeData();
+            ProjectImplementEarly records1 = list.get(i);
+            if (records1.getWorkContractInfo() == null) {
+                if (records1.getWorkClientLinkmanList() != null && records1.getWorkClientLinkmanList().size() > 0) {
+                    WorkClientLinkman linkman = records1.getWorkClientLinkmanList().get(0);
+                    WorkContractInfo contractInfo = new WorkContractInfo();
+                    contractInfo.setClient(linkman.getClientId());
+                    records1.setWorkContractInfo(contractInfo);
+                }
+            }
+            //将界面需要展示数据放入类中
+            projectRecordTreeData.setId(records1.getId());
+            projectRecordTreeData.setProjectName(records1.getProjectName());
+            projectRecordTreeData.setProjectId(records1.getProjectId());
+            projectRecordTreeData.setProjectContentId(records1.getProjectContentId());
+            if(null!= records1.getWorkContractInfo()){
+                projectRecordTreeData.setContractName(records1.getWorkContractInfo().getName());
+                projectRecordTreeData.setClientName(records1.getWorkContractInfo().getClient().getName());
+            }else{
+                projectRecordTreeData.setContractName("");
+                projectRecordTreeData.setClientName("");
+            }
+            projectRecordTreeData.setProjectStatus(records1.getProjectStatus());
+            projectRecordTreeData.setProjectRegistrant(records1.getProjectRegistrant());
+            projectRecordTreeData.setCreateDate(records1.getCreateDate());
+            projectRecordTreeData.setCreateId(records1.getCreateBy().getId());
+            //父节点的pid设置为0
+            projectRecordTreeData.setPid("0");
+            //遍历项目负责人信息
+            List<User> masterUserList = records1.getProjectLeaders();
+            List<String> masterList = new ArrayList<>();
+            Set masterIdSet = new HashSet();
+            for (User masterUser:masterUserList) {
+                masterList.add(masterUser.getName());
+                masterIdSet.add(masterUser.getId());
+            }
+
+            //查询项目组成员信息
+            List<User> members = workProjectUserDao.isDelFalg(records1.getId(), "");
+            records1.setProjectMembers(members);
+            for (User masterUser:records1.getProjectMembers()) {
+                masterIdSet.add(masterUser.getId());
+            }
+            //Set转List
+            List<String> masterIdList = new ArrayList<>(masterIdSet);
+            //如果当前登录人为项目登记者或项目负责人则允许其添加子节点信息
+            for (String masterId : masterIdList) {
+                if(masterId.equals(UserUtils.getUser().getId())){
+                    projectRecordTreeData.setOperationSign(1);
+                    break;
+                }else{
+                    projectRecordTreeData.setOperationSign(0);
+                }
+            }
+
+            //项目负责人list数据转String
+            String projectLeader = masterList.toString().replaceAll("(?:\\[|null|\\]| +)", "");
+            projectRecordTreeData.setProjectLeader(projectLeader);
+            projectRecordTreeData.setLoginId(UserUtils.getUser().getId());
+            projectRecordTreeDataList.add(projectRecordTreeData);
+
+            //根据项目id查询相关的项目阶段内容
+            List<ProjectRecordTreeData> reportDataList = service.getFindList(records1.getId());
+            if(0 != reportDataList.size()){
+                Projectcontentinfo select = new Projectcontentinfo();
+                ProjectRecords project = new ProjectRecords();
+                project.setId(records1.getId());
+                select.setParentIds("0,");
+                select.setProject(project);
+                List<Projectcontentinfo> p = projectcontentinfoService.findListByProject(select);
+                for (ProjectRecordTreeData reportData : reportDataList) {
+                    //添加工作内容id
+                    if(p.size()>0){
+                        reportData.setContentPId(p.get(0).getId());
+                        reportData.setParentIds("0,");
+                        reportData.setDictType("");
+                    }
+                    //添加项目负责人
+                    reportData.setProjectLeader(projectLeader);
+                    //添加登陆者id
+                    reportData.setLoginId(UserUtils.getUser().getId());
+                    reportData.setCreateId(records1.getCreateBy().getId());
+                    //如果当前登录人为项目登记者或项目负责人则允许其添加子节点信息
+                    for (String masterId : masterIdList) {
+                        if(masterId.equals(UserUtils.getUser().getId())){
+                            reportData.setOperationSign(1);
+                            break;
+                        }else{
+                            reportData.setOperationSign(0);
+                        }
+                    }
+                }
+            }
+            projectRecordTreeDataList.addAll(reportDataList);
+
+        }
+        map.put("data",projectRecordTreeDataList);
+        return map;
+    }
+
+    /**
+     * 查询
+     * @param projectcontentinfo
+     * @param request
+     * @param response
+     * @param model
+     * @param attr
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = {"form"})
+    public String form(Projectcontentinfo projectcontentinfo, HttpServletRequest request, HttpServletResponse response, Model model, RedirectAttributes attr) throws Exception {
+        String dictType = projectcontentinfo.getDictType();
+        ProjectRecords records = projectRecordsService.getQueryProjectUsers(projectcontentinfo.getProject().getId());
+        projectcontentinfo.setProject(records);
+
+        ProjectContentData projectContentData = new ProjectContentData();
+        projectContentData.setType(dictType);
+
+        if(StringUtils.isNotBlank(projectcontentinfo.getId())){
+            MonthlyInfo monthlyInfo = service.getById(projectcontentinfo.getId());
+            if(null != monthlyInfo){
+                MyBeanUtils.copyBeanNotNull2Bean(monthlyInfo,projectcontentinfo);
+                User user = UserUtils.get(monthlyInfo.getCreateBy().getId());
+                projectContentData.setMaster(user);
+                projectContentData.setProjectBasedDataList(service.getBasedData(monthlyInfo));
+                projectContentData.setWorkAttachments(service.getWorkattachment(monthlyInfo));
+            }
+        }else{
+            projectContentData.setMaster(UserUtils.getUser());
+        }
+
+        projectcontentinfo.setProjectContentData(projectContentData);
+        String projectType = projectImplementEarlyService.getProjectType(records.getProjectTypeId(), "实施前期");
+        projectcontentinfo.setType(projectType);
+        /*if(StringUtils.isBlank(projectcontentinfo.getId()) && StringUtils.isNotBlank(projectcontentinfo.getProjectContentId())){
+            projectcontentinfo.setId(projectcontentinfo.getProjectContentId());
+        }*/
+        model.addAttribute("projectcontentinfo", projectcontentinfo);
+        if ("view".equals(projectcontentinfo.getView())){
+            return "modules/projectrecord/monthly/monthlyContentView";
+        }else {
+            return "modules/projectrecord/monthly/monthlyContentForm";
+        }
+    }
+
+    /**
+     * 新增
+     * @param projectcontentinfo
+     * @param redirectAttributes
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = {"save"})
+    public String save(Projectcontentinfo projectcontentinfo,RedirectAttributes redirectAttributes) throws Exception {
+        String str = service.saveData(projectcontentinfo);
+        addMessage(redirectAttributes, "保存月报信息"+(str.equals("true")?"成功":"失败"));
+        return "redirect:"+Global.getAdminPath()+"/project/monthlyConsultationReport/?repage";
+    }
+
+    /**
+     * 删除
+     * @param id
+     * @return
+     */
+    @RequestMapping(value = {"delete"})
+    public String delete(String id ){
+        service.deleteMonthly(id);
+        return "redirect:"+Global.getAdminPath()+"/project/monthlyConsultationReport/?repage";
+    }
+
+    /**
+     * 下载导入项目数据模板
+     */
+    @RequestMapping(value = "downloadTemplate")
+    public void downloadTemplate(HttpServletRequest request,HttpServletResponse response) {
+        try {
+            new OSSClientUtil().downByStream(template_path,template_name,response,request.getHeader("USER-AGENT"));
+        } catch (Exception e) {
+            logger.error("月报模板下载失败!",e);
+        }
+    }
+}

+ 140 - 0
src/main/java/com/jeeplus/modules/projectrecord/web/summarizing/ContentArmorSummarizingController.java

@@ -0,0 +1,140 @@
+package com.jeeplus.modules.projectrecord.web.summarizing;
+
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.projectType.service.ProjectTypeService;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectBasedData;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectContentData;
+import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectcontentinfoService;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
+import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+import org.activiti.engine.HistoryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 甲供物资汇总表Controller
+ * @author 徐滕
+ * @version 2020-07-10
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/project/armorSummarizing")
+public class ContentArmorSummarizingController extends BaseController {
+    @Autowired
+    private ProjectRecordsService projectRecordsService;
+    @Autowired
+    protected HistoryService historyService;
+    @Autowired
+    private ProjectTypeService projectTypeService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
+
+    @ModelAttribute
+    public ProjectRecords get(@RequestParam(required=false) String id) {
+        ProjectRecords entity = null;
+        if (StringUtils.isNotBlank(id)){
+            entity = projectRecordsService.get(id);
+        }
+        if (entity == null){
+            entity = new ProjectRecords();
+        }
+        return entity;
+    }
+
+    /**
+     * 项目列表页面
+     */
+    @RequestMapping(value = {"list", ""})
+    public String list(ProjectRecords projectRecords, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        projectRecords.setProjectStatus(5);
+        Page<ProjectRecords> page = projectRecordsService.findPage(new Page<ProjectRecords>(request, response), projectRecords);
+        //无合同状态下,获取委托方的名称
+        List<ProjectRecords> list = page.getList();
+        for (int i = 0; i < list.size(); i++) {
+            ProjectRecords records1 = list.get(i);
+            if (records1.getWorkContractInfo() == null) {
+                projectRecordsService.queryLinkmanInfos(records1);
+                if (records1.getWorkClientLinkmanList() != null && records1.getWorkClientLinkmanList().size() > 0) {
+                    WorkClientLinkman linkman = records1.getWorkClientLinkmanList().get(0);
+                    WorkContractInfo contractInfo = new WorkContractInfo();
+                    contractInfo.setClient(linkman.getClientId());
+                    records1.setWorkContractInfo(contractInfo);
+                }
+            }
+        }
+        for (ProjectRecords record : list) {
+            Projectcontentinfo select = new Projectcontentinfo();
+            ProjectRecords project = new ProjectRecords();
+            project.setId(record.getId());
+            select.setParentIds("0,");
+            select.setProject(project);
+            List<Projectcontentinfo> p = projectcontentinfoService.findListByProject(select);
+            //添加工作内容id
+            if(p.size()>0){
+                record.setContentPId(p.get(0).getId());
+                record.setParentIds("0,");
+                record.setDictType("");
+            }
+        }
+        model.addAttribute("page", page);
+        return "modules/projectrecord/summarizing/armorProjectRecordsList";
+    }
+
+    @RequestMapping(value = {"form"})
+    public String form(Projectcontentinfo projectcontentinfo, Model model) {
+        String dictType = projectcontentinfo.getDictType();
+        //根据项目id获取项目对象
+        ProjectRecords records = projectRecordsService.getQueryProjectUsers(projectcontentinfo.getInfoId());
+        projectcontentinfo.setProject(records);
+
+        ProjectContentData projectContentData = new ProjectContentData();
+        projectContentData.setType(projectcontentinfo.getType());
+        projectcontentinfo.setProjectContentData(projectContentData);
+        model.addAttribute("projectcontentinfo", projectcontentinfo);
+        return "modules/projectrecord/summarizing/workContentView";
+    }
+
+
+    /**
+     * 根据type查询对应的宜居性文件内容
+     * @param typeId
+     * @return
+     */
+    @RequestMapping(value = {"projectBasedDataList"})
+    @ResponseBody
+    public Map projectBasedDataList(String typeId){
+        Map<String,List<ProjectBasedData>> map = new HashMap<>();
+        //获取该工作内容的依据性资料信息
+        List<ProjectBasedData> projectBasedDataList =  projectTypeService.getAccrdingDataList(typeId);
+        if(projectBasedDataList.size()>0){
+            for (ProjectBasedData projectBasedData: projectBasedDataList) {
+                projectBasedData.setFlag("according");
+                projectBasedData.setUploadDate(new Date());
+                projectBasedData.setUploadUser(UserUtils.getUser());
+                projectBasedData.setType(typeId);
+            }
+        }
+        map.put("projectBasedDataList",projectBasedDataList);
+        return map;
+    }
+}

+ 140 - 0
src/main/java/com/jeeplus/modules/projectrecord/web/summarizing/ContentClaimSummarizingController.java

@@ -0,0 +1,140 @@
+package com.jeeplus.modules.projectrecord.web.summarizing;
+
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.projectType.service.ProjectTypeService;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectBasedData;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectContentData;
+import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectcontentinfoService;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
+import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+import org.activiti.engine.HistoryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 索赔汇总表Controller
+ * @author 徐滕
+ * @version 2020-07-10
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/project/claimSummarizing")
+public class ContentClaimSummarizingController extends BaseController {
+    @Autowired
+    private ProjectRecordsService projectRecordsService;
+    @Autowired
+    protected HistoryService historyService;
+    @Autowired
+    private ProjectTypeService projectTypeService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
+
+    @ModelAttribute
+    public ProjectRecords get(@RequestParam(required=false) String id) {
+        ProjectRecords entity = null;
+        if (StringUtils.isNotBlank(id)){
+            entity = projectRecordsService.get(id);
+        }
+        if (entity == null){
+            entity = new ProjectRecords();
+        }
+        return entity;
+    }
+
+    /**
+     * 项目列表页面
+     */
+    @RequestMapping(value = {"list", ""})
+    public String list(ProjectRecords projectRecords, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        projectRecords.setProjectStatus(5);
+        Page<ProjectRecords> page = projectRecordsService.findPage(new Page<ProjectRecords>(request, response), projectRecords);
+        //无合同状态下,获取委托方的名称
+        List<ProjectRecords> list = page.getList();
+        for (int i = 0; i < list.size(); i++) {
+            ProjectRecords records1 = list.get(i);
+            if (records1.getWorkContractInfo() == null) {
+                projectRecordsService.queryLinkmanInfos(records1);
+                if (records1.getWorkClientLinkmanList() != null && records1.getWorkClientLinkmanList().size() > 0) {
+                    WorkClientLinkman linkman = records1.getWorkClientLinkmanList().get(0);
+                    WorkContractInfo contractInfo = new WorkContractInfo();
+                    contractInfo.setClient(linkman.getClientId());
+                    records1.setWorkContractInfo(contractInfo);
+                }
+            }
+        }
+        for (ProjectRecords record : list) {
+            Projectcontentinfo select = new Projectcontentinfo();
+            ProjectRecords project = new ProjectRecords();
+            project.setId(record.getId());
+            select.setParentIds("0,");
+            select.setProject(project);
+            List<Projectcontentinfo> p = projectcontentinfoService.findListByProject(select);
+            //添加工作内容id
+            if(p.size()>0){
+                record.setContentPId(p.get(0).getId());
+                record.setParentIds("0,");
+                record.setDictType("");
+            }
+        }
+        model.addAttribute("page", page);
+        return "modules/projectrecord/summarizing/claimSumamarizingProjectRecordsList";
+    }
+
+    @RequestMapping(value = {"form"})
+    public String form(Projectcontentinfo projectcontentinfo, Model model) {
+        String dictType = projectcontentinfo.getDictType();
+        //根据项目id获取项目对象
+        ProjectRecords records = projectRecordsService.getQueryProjectUsers(projectcontentinfo.getInfoId());
+        projectcontentinfo.setProject(records);
+
+        ProjectContentData projectContentData = new ProjectContentData();
+        projectContentData.setType(projectcontentinfo.getType());
+        projectcontentinfo.setProjectContentData(projectContentData);
+        model.addAttribute("projectcontentinfo", projectcontentinfo);
+        return "modules/projectrecord/summarizing/workContentView";
+    }
+
+
+    /**
+     * 根据type查询对应的宜居性文件内容
+     * @param typeId
+     * @return
+     */
+    @RequestMapping(value = {"projectBasedDataList"})
+    @ResponseBody
+    public Map projectBasedDataList(String typeId){
+        Map<String,List<ProjectBasedData>> map = new HashMap<>();
+        //获取该工作内容的依据性资料信息
+        List<ProjectBasedData> projectBasedDataList =  projectTypeService.getAccrdingDataList(typeId);
+        if(projectBasedDataList.size()>0){
+            for (ProjectBasedData projectBasedData: projectBasedDataList) {
+                projectBasedData.setFlag("according");
+                projectBasedData.setUploadDate(new Date());
+                projectBasedData.setUploadUser(UserUtils.getUser());
+                projectBasedData.setType(typeId);
+            }
+        }
+        map.put("projectBasedDataList",projectBasedDataList);
+        return map;
+    }
+}

+ 140 - 0
src/main/java/com/jeeplus/modules/projectrecord/web/summarizing/ContentConcealSummarizingController.java

@@ -0,0 +1,140 @@
+package com.jeeplus.modules.projectrecord.web.summarizing;
+
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.projectType.service.ProjectTypeService;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectBasedData;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectContentData;
+import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectcontentinfoService;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
+import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+import org.activiti.engine.HistoryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 隐蔽工程量汇总表Controller
+ * @author 徐滕
+ * @version 2020-07-10
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/project/concealSummarizing")
+public class ContentConcealSummarizingController extends BaseController {
+    @Autowired
+    private ProjectRecordsService projectRecordsService;
+    @Autowired
+    protected HistoryService historyService;
+    @Autowired
+    private ProjectTypeService projectTypeService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
+
+    @ModelAttribute
+    public ProjectRecords get(@RequestParam(required=false) String id) {
+        ProjectRecords entity = null;
+        if (StringUtils.isNotBlank(id)){
+            entity = projectRecordsService.get(id);
+        }
+        if (entity == null){
+            entity = new ProjectRecords();
+        }
+        return entity;
+    }
+
+    /**
+     * 项目列表页面
+     */
+    @RequestMapping(value = {"list", ""})
+    public String list(ProjectRecords projectRecords, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        projectRecords.setProjectStatus(5);
+        Page<ProjectRecords> page = projectRecordsService.findPage(new Page<ProjectRecords>(request, response), projectRecords);
+        //无合同状态下,获取委托方的名称
+        List<ProjectRecords> list = page.getList();
+        for (int i = 0; i < list.size(); i++) {
+            ProjectRecords records1 = list.get(i);
+            if (records1.getWorkContractInfo() == null) {
+                projectRecordsService.queryLinkmanInfos(records1);
+                if (records1.getWorkClientLinkmanList() != null && records1.getWorkClientLinkmanList().size() > 0) {
+                    WorkClientLinkman linkman = records1.getWorkClientLinkmanList().get(0);
+                    WorkContractInfo contractInfo = new WorkContractInfo();
+                    contractInfo.setClient(linkman.getClientId());
+                    records1.setWorkContractInfo(contractInfo);
+                }
+            }
+        }
+        for (ProjectRecords record : list) {
+            Projectcontentinfo select = new Projectcontentinfo();
+            ProjectRecords project = new ProjectRecords();
+            project.setId(record.getId());
+            select.setParentIds("0,");
+            select.setProject(project);
+            List<Projectcontentinfo> p = projectcontentinfoService.findListByProject(select);
+            //添加工作内容id
+            if(p.size()>0){
+                record.setContentPId(p.get(0).getId());
+                record.setParentIds("0,");
+                record.setDictType("");
+            }
+        }
+        model.addAttribute("page", page);
+        return "modules/projectrecord/summarizing/concealProjectRecordsList";
+    }
+
+    @RequestMapping(value = {"form"})
+    public String form(Projectcontentinfo projectcontentinfo, Model model) {
+        String dictType = projectcontentinfo.getDictType();
+        //根据项目id获取项目对象
+        ProjectRecords records = projectRecordsService.getQueryProjectUsers(projectcontentinfo.getInfoId());
+        projectcontentinfo.setProject(records);
+
+        ProjectContentData projectContentData = new ProjectContentData();
+        projectContentData.setType(projectcontentinfo.getType());
+        projectcontentinfo.setProjectContentData(projectContentData);
+        model.addAttribute("projectcontentinfo", projectcontentinfo);
+        return "modules/projectrecord/summarizing/workContentView";
+    }
+
+
+    /**
+     * 根据type查询对应的宜居性文件内容
+     * @param typeId
+     * @return
+     */
+    @RequestMapping(value = {"projectBasedDataList"})
+    @ResponseBody
+    public Map projectBasedDataList(String typeId){
+        Map<String,List<ProjectBasedData>> map = new HashMap<>();
+        //获取该工作内容的依据性资料信息
+        List<ProjectBasedData> projectBasedDataList =  projectTypeService.getAccrdingDataList(typeId);
+        if(projectBasedDataList.size()>0){
+            for (ProjectBasedData projectBasedData: projectBasedDataList) {
+                projectBasedData.setFlag("according");
+                projectBasedData.setUploadDate(new Date());
+                projectBasedData.setUploadUser(UserUtils.getUser());
+                projectBasedData.setType(typeId);
+            }
+        }
+        map.put("projectBasedDataList",projectBasedDataList);
+        return map;
+    }
+}

+ 2 - 21
src/main/java/com/jeeplus/modules/projectrecord/web/summarizing/ContentDesignSummarizingController.java

@@ -47,7 +47,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.util.*;
 
 /**
- * 项目实施前期Controller
+ * 设计变更汇总表Controller
  * @author 徐滕
  * @version 2020-07-10
  */
@@ -57,28 +57,10 @@ public class ContentDesignSummarizingController extends BaseController {
     @Autowired
     private ProjectRecordsService projectRecordsService;
     @Autowired
-    private ProjectBasedDataService projectBasedDataService;
-    @Autowired
-    private ProjectContentDataService projectContentDataService;
-    @Autowired
-    private ProjectReportDataService projectReportDataService;
-    @Autowired
-    private ProjectReportChangeService projectReportChangeService;
-    @Autowired
-    private ProjectControlTableService projectControlTableService;
-    @Autowired
-    private ActTaskService actTaskService;
-    @Autowired
     protected HistoryService historyService;
     @Autowired
     private ProjectTypeService projectTypeService;
     @Autowired
-    private DictService dictService;
-    @Autowired
-    private ProjectEarlyReviewService projectEarlyReviewService;
-    @Autowired
-    private ProjectResultsFileTemplateService projectResultsFileTemplateService;
-    @Autowired
     private ProjectcontentinfoService projectcontentinfoService;
 
     @ModelAttribute
@@ -96,7 +78,6 @@ public class ContentDesignSummarizingController extends BaseController {
     /**
      * 项目列表页面
      */
-    @RequiresPermissions("project:designSummarizing:list")
     @RequestMapping(value = {"list", ""})
     public String list(ProjectRecords projectRecords, HttpServletRequest request, HttpServletResponse response, Model model) {
         if(UserUtils.isManager()){
@@ -133,7 +114,7 @@ public class ContentDesignSummarizingController extends BaseController {
             }
         }
         model.addAttribute("page", page);
-        return "modules/projectrecord/summarizing/sumamarizingProjectRecordsList";
+        return "modules/projectrecord/summarizing/designSumamarizingProjectRecordsList";
     }
 
     @RequestMapping(value = {"form"})

+ 140 - 0
src/main/java/com/jeeplus/modules/projectrecord/web/summarizing/ContentDistributionSummarizingController.java

@@ -0,0 +1,140 @@
+package com.jeeplus.modules.projectrecord.web.summarizing;
+
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.projectType.service.ProjectTypeService;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectBasedData;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectContentData;
+import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectcontentinfoService;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
+import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+import org.activiti.engine.HistoryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 分布结算汇总表Controller
+ * @author 徐滕
+ * @version 2020-07-10
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/project/distributionSummarizing")
+public class ContentDistributionSummarizingController extends BaseController {
+    @Autowired
+    private ProjectRecordsService projectRecordsService;
+    @Autowired
+    protected HistoryService historyService;
+    @Autowired
+    private ProjectTypeService projectTypeService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
+
+    @ModelAttribute
+    public ProjectRecords get(@RequestParam(required=false) String id) {
+        ProjectRecords entity = null;
+        if (StringUtils.isNotBlank(id)){
+            entity = projectRecordsService.get(id);
+        }
+        if (entity == null){
+            entity = new ProjectRecords();
+        }
+        return entity;
+    }
+
+    /**
+     * 项目列表页面
+     */
+    @RequestMapping(value = {"list", ""})
+    public String list(ProjectRecords projectRecords, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        projectRecords.setProjectStatus(5);
+        Page<ProjectRecords> page = projectRecordsService.findPage(new Page<ProjectRecords>(request, response), projectRecords);
+        //无合同状态下,获取委托方的名称
+        List<ProjectRecords> list = page.getList();
+        for (int i = 0; i < list.size(); i++) {
+            ProjectRecords records1 = list.get(i);
+            if (records1.getWorkContractInfo() == null) {
+                projectRecordsService.queryLinkmanInfos(records1);
+                if (records1.getWorkClientLinkmanList() != null && records1.getWorkClientLinkmanList().size() > 0) {
+                    WorkClientLinkman linkman = records1.getWorkClientLinkmanList().get(0);
+                    WorkContractInfo contractInfo = new WorkContractInfo();
+                    contractInfo.setClient(linkman.getClientId());
+                    records1.setWorkContractInfo(contractInfo);
+                }
+            }
+        }
+        for (ProjectRecords record : list) {
+            Projectcontentinfo select = new Projectcontentinfo();
+            ProjectRecords project = new ProjectRecords();
+            project.setId(record.getId());
+            select.setParentIds("0,");
+            select.setProject(project);
+            List<Projectcontentinfo> p = projectcontentinfoService.findListByProject(select);
+            //添加工作内容id
+            if(p.size()>0){
+                record.setContentPId(p.get(0).getId());
+                record.setParentIds("0,");
+                record.setDictType("");
+            }
+        }
+        model.addAttribute("page", page);
+        return "modules/projectrecord/summarizing/distributionSumamarizingProjectRecordsList";
+    }
+
+    @RequestMapping(value = {"form"})
+    public String form(Projectcontentinfo projectcontentinfo, Model model) {
+        String dictType = projectcontentinfo.getDictType();
+        //根据项目id获取项目对象
+        ProjectRecords records = projectRecordsService.getQueryProjectUsers(projectcontentinfo.getInfoId());
+        projectcontentinfo.setProject(records);
+
+        ProjectContentData projectContentData = new ProjectContentData();
+        projectContentData.setType(projectcontentinfo.getType());
+        projectcontentinfo.setProjectContentData(projectContentData);
+        model.addAttribute("projectcontentinfo", projectcontentinfo);
+        return "modules/projectrecord/summarizing/workContentView";
+    }
+
+
+    /**
+     * 根据type查询对应的宜居性文件内容
+     * @param typeId
+     * @return
+     */
+    @RequestMapping(value = {"projectBasedDataList"})
+    @ResponseBody
+    public Map projectBasedDataList(String typeId){
+        Map<String,List<ProjectBasedData>> map = new HashMap<>();
+        //获取该工作内容的依据性资料信息
+        List<ProjectBasedData> projectBasedDataList =  projectTypeService.getAccrdingDataList(typeId);
+        if(projectBasedDataList.size()>0){
+            for (ProjectBasedData projectBasedData: projectBasedDataList) {
+                projectBasedData.setFlag("according");
+                projectBasedData.setUploadDate(new Date());
+                projectBasedData.setUploadUser(UserUtils.getUser());
+                projectBasedData.setType(typeId);
+            }
+        }
+        map.put("projectBasedDataList",projectBasedDataList);
+        return map;
+    }
+}

+ 142 - 0
src/main/java/com/jeeplus/modules/projectrecord/web/summarizing/ContentInterimPaymentSummarizingController.java

@@ -0,0 +1,142 @@
+package com.jeeplus.modules.projectrecord.web.summarizing;
+
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.projectType.service.ProjectTypeService;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectBasedData;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectContentData;
+import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectcontentinfoService;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
+import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+import org.activiti.engine.HistoryService;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 工程进度款汇总表Controller
+ * @author 徐滕
+ * @version 2020-07-10
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/project/interimPaymentSummarizing")
+public class ContentInterimPaymentSummarizingController extends BaseController {
+    @Autowired
+    private ProjectRecordsService projectRecordsService;
+    @Autowired
+    protected HistoryService historyService;
+    @Autowired
+    private ProjectTypeService projectTypeService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
+
+    @ModelAttribute
+    public ProjectRecords get(@RequestParam(required=false) String id) {
+        ProjectRecords entity = null;
+        if (StringUtils.isNotBlank(id)){
+            entity = projectRecordsService.get(id);
+        }
+        if (entity == null){
+            entity = new ProjectRecords();
+        }
+        return entity;
+    }
+
+    /**
+     * 项目列表页面
+     */
+    @RequiresPermissions("project:interimPaymentSummarizing:list")
+    @RequestMapping(value = {"list", ""})
+    public String list(ProjectRecords projectRecords, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        projectRecords.setProjectStatus(5);
+        Page<ProjectRecords> page = projectRecordsService.findPage(new Page<ProjectRecords>(request, response), projectRecords);
+        //无合同状态下,获取委托方的名称
+        List<ProjectRecords> list = page.getList();
+        for (int i = 0; i < list.size(); i++) {
+            ProjectRecords records1 = list.get(i);
+            if (records1.getWorkContractInfo() == null) {
+                projectRecordsService.queryLinkmanInfos(records1);
+                if (records1.getWorkClientLinkmanList() != null && records1.getWorkClientLinkmanList().size() > 0) {
+                    WorkClientLinkman linkman = records1.getWorkClientLinkmanList().get(0);
+                    WorkContractInfo contractInfo = new WorkContractInfo();
+                    contractInfo.setClient(linkman.getClientId());
+                    records1.setWorkContractInfo(contractInfo);
+                }
+            }
+        }
+        for (ProjectRecords record : list) {
+            Projectcontentinfo select = new Projectcontentinfo();
+            ProjectRecords project = new ProjectRecords();
+            project.setId(record.getId());
+            select.setParentIds("0,");
+            select.setProject(project);
+            List<Projectcontentinfo> p = projectcontentinfoService.findListByProject(select);
+            //添加工作内容id
+            if(p.size()>0){
+                record.setContentPId(p.get(0).getId());
+                record.setParentIds("0,");
+                record.setDictType("");
+            }
+        }
+        model.addAttribute("page", page);
+        return "modules/projectrecord/summarizing/sumamarizingProjectRecordsList";
+    }
+
+    @RequestMapping(value = {"form"})
+    public String form(Projectcontentinfo projectcontentinfo, Model model) {
+        String dictType = projectcontentinfo.getDictType();
+        //根据项目id获取项目对象
+        ProjectRecords records = projectRecordsService.getQueryProjectUsers(projectcontentinfo.getInfoId());
+        projectcontentinfo.setProject(records);
+
+        ProjectContentData projectContentData = new ProjectContentData();
+        projectContentData.setType(projectcontentinfo.getType());
+        projectcontentinfo.setProjectContentData(projectContentData);
+        model.addAttribute("projectcontentinfo", projectcontentinfo);
+        return "modules/projectrecord/summarizing/workContentView";
+    }
+
+
+    /**
+     * 根据type查询对应的宜居性文件内容
+     * @param typeId
+     * @return
+     */
+    @RequestMapping(value = {"projectBasedDataList"})
+    @ResponseBody
+    public Map projectBasedDataList(String typeId){
+        Map<String,List<ProjectBasedData>> map = new HashMap<>();
+        //获取该工作内容的依据性资料信息
+        List<ProjectBasedData> projectBasedDataList =  projectTypeService.getAccrdingDataList(typeId);
+        if(projectBasedDataList.size()>0){
+            for (ProjectBasedData projectBasedData: projectBasedDataList) {
+                projectBasedData.setFlag("according");
+                projectBasedData.setUploadDate(new Date());
+                projectBasedData.setUploadUser(UserUtils.getUser());
+                projectBasedData.setType(typeId);
+            }
+        }
+        map.put("projectBasedDataList",projectBasedDataList);
+        return map;
+    }
+}

+ 141 - 0
src/main/java/com/jeeplus/modules/projectrecord/web/summarizing/ContentMaterialSummarizingController.java

@@ -0,0 +1,141 @@
+package com.jeeplus.modules.projectrecord.web.summarizing;
+
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.projectType.service.ProjectTypeService;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectBasedData;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectContentData;
+import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectcontentinfoService;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
+import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+import org.activiti.engine.HistoryService;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 暂定材料价汇总表Controller
+ * @author 徐滕
+ * @version 2020-07-10
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/project/materialSummarizing")
+public class ContentMaterialSummarizingController extends BaseController {
+    @Autowired
+    private ProjectRecordsService projectRecordsService;
+    @Autowired
+    protected HistoryService historyService;
+    @Autowired
+    private ProjectTypeService projectTypeService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
+
+    @ModelAttribute
+    public ProjectRecords get(@RequestParam(required=false) String id) {
+        ProjectRecords entity = null;
+        if (StringUtils.isNotBlank(id)){
+            entity = projectRecordsService.get(id);
+        }
+        if (entity == null){
+            entity = new ProjectRecords();
+        }
+        return entity;
+    }
+
+    /**
+     * 项目列表页面
+     */
+    @RequestMapping(value = {"list", ""})
+    public String list(ProjectRecords projectRecords, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        projectRecords.setProjectStatus(5);
+        Page<ProjectRecords> page = projectRecordsService.findPage(new Page<ProjectRecords>(request, response), projectRecords);
+        //无合同状态下,获取委托方的名称
+        List<ProjectRecords> list = page.getList();
+        for (int i = 0; i < list.size(); i++) {
+            ProjectRecords records1 = list.get(i);
+            if (records1.getWorkContractInfo() == null) {
+                projectRecordsService.queryLinkmanInfos(records1);
+                if (records1.getWorkClientLinkmanList() != null && records1.getWorkClientLinkmanList().size() > 0) {
+                    WorkClientLinkman linkman = records1.getWorkClientLinkmanList().get(0);
+                    WorkContractInfo contractInfo = new WorkContractInfo();
+                    contractInfo.setClient(linkman.getClientId());
+                    records1.setWorkContractInfo(contractInfo);
+                }
+            }
+        }
+        for (ProjectRecords record : list) {
+            Projectcontentinfo select = new Projectcontentinfo();
+            ProjectRecords project = new ProjectRecords();
+            project.setId(record.getId());
+            select.setParentIds("0,");
+            select.setProject(project);
+            List<Projectcontentinfo> p = projectcontentinfoService.findListByProject(select);
+            //添加工作内容id
+            if(p.size()>0){
+                record.setContentPId(p.get(0).getId());
+                record.setParentIds("0,");
+                record.setDictType("");
+            }
+        }
+        model.addAttribute("page", page);
+        return "modules/projectrecord/summarizing/materialProjectRecordsList";
+    }
+
+    @RequestMapping(value = {"form"})
+    public String form(Projectcontentinfo projectcontentinfo, Model model) {
+        String dictType = projectcontentinfo.getDictType();
+        //根据项目id获取项目对象
+        ProjectRecords records = projectRecordsService.getQueryProjectUsers(projectcontentinfo.getInfoId());
+        projectcontentinfo.setProject(records);
+
+        ProjectContentData projectContentData = new ProjectContentData();
+        projectContentData.setType(projectcontentinfo.getType());
+        projectcontentinfo.setProjectContentData(projectContentData);
+        model.addAttribute("projectcontentinfo", projectcontentinfo);
+        return "modules/projectrecord/summarizing/workContentView";
+    }
+
+
+    /**
+     * 根据type查询对应的宜居性文件内容
+     * @param typeId
+     * @return
+     */
+    @RequestMapping(value = {"projectBasedDataList"})
+    @ResponseBody
+    public Map projectBasedDataList(String typeId){
+        Map<String,List<ProjectBasedData>> map = new HashMap<>();
+        //获取该工作内容的依据性资料信息
+        List<ProjectBasedData> projectBasedDataList =  projectTypeService.getAccrdingDataList(typeId);
+        if(projectBasedDataList.size()>0){
+            for (ProjectBasedData projectBasedData: projectBasedDataList) {
+                projectBasedData.setFlag("according");
+                projectBasedData.setUploadDate(new Date());
+                projectBasedData.setUploadUser(UserUtils.getUser());
+                projectBasedData.setType(typeId);
+            }
+        }
+        map.put("projectBasedDataList",projectBasedDataList);
+        return map;
+    }
+}

+ 140 - 0
src/main/java/com/jeeplus/modules/projectrecord/web/summarizing/ContentVisaSummarizingController.java

@@ -0,0 +1,140 @@
+package com.jeeplus.modules.projectrecord.web.summarizing;
+
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.projectType.service.ProjectTypeService;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectBasedData;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectContentData;
+import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectcontentinfoService;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
+import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+import org.activiti.engine.HistoryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 现场签证总表Controller
+ * @author 徐滕
+ * @version 2020-07-10
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/project/visaSummarizing")
+public class ContentVisaSummarizingController extends BaseController {
+    @Autowired
+    private ProjectRecordsService projectRecordsService;
+    @Autowired
+    protected HistoryService historyService;
+    @Autowired
+    private ProjectTypeService projectTypeService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
+
+    @ModelAttribute
+    public ProjectRecords get(@RequestParam(required=false) String id) {
+        ProjectRecords entity = null;
+        if (StringUtils.isNotBlank(id)){
+            entity = projectRecordsService.get(id);
+        }
+        if (entity == null){
+            entity = new ProjectRecords();
+        }
+        return entity;
+    }
+
+    /**
+     * 项目列表页面
+     */
+    @RequestMapping(value = {"list", ""})
+    public String list(ProjectRecords projectRecords, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        projectRecords.setProjectStatus(5);
+        Page<ProjectRecords> page = projectRecordsService.findPage(new Page<ProjectRecords>(request, response), projectRecords);
+        //无合同状态下,获取委托方的名称
+        List<ProjectRecords> list = page.getList();
+        for (int i = 0; i < list.size(); i++) {
+            ProjectRecords records1 = list.get(i);
+            if (records1.getWorkContractInfo() == null) {
+                projectRecordsService.queryLinkmanInfos(records1);
+                if (records1.getWorkClientLinkmanList() != null && records1.getWorkClientLinkmanList().size() > 0) {
+                    WorkClientLinkman linkman = records1.getWorkClientLinkmanList().get(0);
+                    WorkContractInfo contractInfo = new WorkContractInfo();
+                    contractInfo.setClient(linkman.getClientId());
+                    records1.setWorkContractInfo(contractInfo);
+                }
+            }
+        }
+        for (ProjectRecords record : list) {
+            Projectcontentinfo select = new Projectcontentinfo();
+            ProjectRecords project = new ProjectRecords();
+            project.setId(record.getId());
+            select.setParentIds("0,");
+            select.setProject(project);
+            List<Projectcontentinfo> p = projectcontentinfoService.findListByProject(select);
+            //添加工作内容id
+            if(p.size()>0){
+                record.setContentPId(p.get(0).getId());
+                record.setParentIds("0,");
+                record.setDictType("");
+            }
+        }
+        model.addAttribute("page", page);
+        return "modules/projectrecord/summarizing/visaSumamarizingProjectRecordsList";
+    }
+
+    @RequestMapping(value = {"form"})
+    public String form(Projectcontentinfo projectcontentinfo, Model model) {
+        String dictType = projectcontentinfo.getDictType();
+        //根据项目id获取项目对象
+        ProjectRecords records = projectRecordsService.getQueryProjectUsers(projectcontentinfo.getInfoId());
+        projectcontentinfo.setProject(records);
+
+        ProjectContentData projectContentData = new ProjectContentData();
+        projectContentData.setType(projectcontentinfo.getType());
+        projectcontentinfo.setProjectContentData(projectContentData);
+        model.addAttribute("projectcontentinfo", projectcontentinfo);
+        return "modules/projectrecord/summarizing/workContentView";
+    }
+
+
+    /**
+     * 根据type查询对应的宜居性文件内容
+     * @param typeId
+     * @return
+     */
+    @RequestMapping(value = {"projectBasedDataList"})
+    @ResponseBody
+    public Map projectBasedDataList(String typeId){
+        Map<String,List<ProjectBasedData>> map = new HashMap<>();
+        //获取该工作内容的依据性资料信息
+        List<ProjectBasedData> projectBasedDataList =  projectTypeService.getAccrdingDataList(typeId);
+        if(projectBasedDataList.size()>0){
+            for (ProjectBasedData projectBasedData: projectBasedDataList) {
+                projectBasedData.setFlag("according");
+                projectBasedData.setUploadDate(new Date());
+                projectBasedData.setUploadUser(UserUtils.getUser());
+                projectBasedData.setType(typeId);
+            }
+        }
+        map.put("projectBasedDataList",projectBasedDataList);
+        return map;
+    }
+}

+ 2 - 0
src/main/java/com/jeeplus/modules/workcontent/dao/WorkConcealProjectDao.java

@@ -40,4 +40,6 @@ public interface WorkConcealProjectDao extends CrudDao<WorkConcealProject> {
      * @param id
      */
     void deleteContractById(String id);
+
+    List<WorkConcealProject> findListByProjectId(WorkConcealProject workConcealProject);
 }

+ 2 - 0
src/main/java/com/jeeplus/modules/workcontent/dao/WorkContentBranchAccountDao.java

@@ -34,4 +34,6 @@ public interface WorkContentBranchAccountDao extends CrudDao<WorkContentBranchAc
      * @return
      */
     List<String> getTableType(String contentId);
+
+    List<WorkContentBranchAccount> findListByProjectId(WorkContentBranchAccount workContentBranchAccount);
 }

+ 2 - 0
src/main/java/com/jeeplus/modules/workcontent/dao/WorkFiveDirectionsAffirmDao.java

@@ -34,4 +34,6 @@ public interface WorkFiveDirectionsAffirmDao extends CrudDao<WorkFiveDirectionsA
      * @return
      */
     List<String> getTableType(String contentId);
+
+    List<WorkFiveDirectionsAffirm> findListByProjectId(WorkFiveDirectionsAffirm workFiveDirectionsAffirm);
 }

+ 6 - 0
src/main/java/com/jeeplus/modules/workcontent/dao/WorkMaterialsPriceDao.java

@@ -34,4 +34,10 @@ public interface WorkMaterialsPriceDao extends CrudDao<WorkMaterialsPrice> {
      * @return
      */
     List<String> getTableType(String contentId);
+    /**
+     * 根据项目id查询所有有关项目的信息
+     * @param workScheduleInfo
+     * @return
+     */
+    List<WorkMaterialsPrice> findListByProjectId(WorkMaterialsPrice workMaterialsPrice);
 }

+ 36 - 0
src/main/java/com/jeeplus/modules/workcontent/entity/WorkConcealProject.java

@@ -12,6 +12,10 @@ public class WorkConcealProject extends DataEntity<WorkConcealProject> {
     private String workAmount;		// 工程量
     private String workConcealProjectSerialNum;		// 隐蔽工程验收记录编号
     private String type;  //类别
+    private String contractId;  //实施合同id
+    private String contractName;          //实施合同名称
+    private String contractNumber;          //实施合同编号
+    private String typeName;    //类型名称
 
     public WorkConcealProject() {
         super();
@@ -71,4 +75,36 @@ public class WorkConcealProject extends DataEntity<WorkConcealProject> {
     public void setType(String type) {
         this.type = type;
     }
+
+    public String getContractId() {
+        return contractId;
+    }
+
+    public void setContractId(String contractId) {
+        this.contractId = contractId;
+    }
+
+    public String getContractName() {
+        return contractName;
+    }
+
+    public void setContractName(String contractName) {
+        this.contractName = contractName;
+    }
+
+    public String getContractNumber() {
+        return contractNumber;
+    }
+
+    public void setContractNumber(String contractNumber) {
+        this.contractNumber = contractNumber;
+    }
+
+    public String getTypeName() {
+        return typeName;
+    }
+
+    public void setTypeName(String typeName) {
+        this.typeName = typeName;
+    }
 }

+ 15 - 151
src/main/java/com/jeeplus/modules/workcontent/entity/WorkContentBranchAccount.java

@@ -34,6 +34,9 @@ public class WorkContentBranchAccount extends DataEntity<WorkContentBranchAccoun
 	private Double businessRate;		// 核增减率%
 
 	private String type;		// 节点类型
+	private String contractId;		//实施合同id
+	private String contractName;		//实施合同名称
+	private String contractNumber;		//实施合同编号
 
 	public String getProjectId() {
 		return projectId;
@@ -115,166 +118,27 @@ public class WorkContentBranchAccount extends DataEntity<WorkContentBranchAccoun
 		this.type = type;
 	}
 
-	 /*private static final long serialVersionUID = 1L;
-	private String projectId;		// 项目id
-	private String contentId;		// 工作内容ID
-	private String costType;		// 类型:估算-1、概算-2、预算-3
-	private String costNum;		// 编号
-	private String costName;		// 工程费用名称
-	@NumberFormat(style = NumberFormat.Style.CURRENCY)
-	private Double buildindCost;		// 建筑工程费
-	@NumberFormat(style = NumberFormat.Style.CURRENCY)
-	private Double equipmentCost;		// 设备购置费
-	@NumberFormat(style = NumberFormat.Style.CURRENCY)
-	private Double installationCost;		// 安装工程费
-	@NumberFormat(style = NumberFormat.Style.CURRENCY)
-	private Double otherExpenses;		// 其他费用
-	@NumberFormat(style = NumberFormat.Style.CURRENCY)
-	private Double totalCost;		// 合计(万元)
-	private Integer count;		// 数量
-	private String unit;		// 单位
-	private String target;		// 指标
-	private String expenseType;		// 费用类型
-	private String nodeTypes;		// 节点类型
-
-	public WorkContentInvestmentCost() {
-		super();
-	}
-
-	public WorkContentInvestmentCost(String id){
-		super(id);
-	}
-
-	public String getProjectId() {
-		return projectId;
+	public String getContractId() {
+		return contractId;
 	}
 
-	public void setProjectId(String projectId) {
-		this.projectId = projectId;
-	}
-
-	public String getContentId() {
-		return contentId;
+	public void setContractId(String contractId) {
+		this.contractId = contractId;
 	}
 
-	public void setContentId(String contentId) {
-		this.contentId = contentId;
+	public String getContractName() {
+		return contractName;
 	}
 
-	public String getCostType() {
-		return costType;
+	public void setContractName(String contractName) {
+		this.contractName = contractName;
 	}
 
-	public void setCostType(String costType) {
-		this.costType = costType;
+	public String getContractNumber() {
+		return contractNumber;
 	}
 
-	@ExcelField(title="编号", align=2, sort=10)
-	public String getCostNum() {
-		return costNum;
+	public void setContractNumber(String contractNumber) {
+		this.contractNumber = contractNumber;
 	}
-
-	public void setCostNum(String costNum) {
-		this.costNum = costNum;
-	}
-
-	@ExcelField(title="工程费用名称", align=2, sort=11)
-	public String getCostName() {
-		return costName;
-	}
-
-	public void setCostName(String costName) {
-		this.costName = costName;
-	}
-
-	@ExcelField(title="建筑工程费", align=2, sort=12)
-	public Double getBuildindCost() {
-		return buildindCost;
-	}
-
-	public void setBuildindCost(Double buildindCost) {
-		this.buildindCost = buildindCost;
-	}
-
-	@ExcelField(title="设备购置费", align=2, sort=13)
-	public Double getEquipmentCost() {
-		return equipmentCost;
-	}
-
-	public void setEquipmentCost(Double equipmentCost) {
-		this.equipmentCost = equipmentCost;
-	}
-
-	@ExcelField(title="安装工程费", align=2, sort=14)
-	public Double getInstallationCost() {
-		return installationCost;
-	}
-
-	public void setInstallationCost(Double installationCost) {
-		this.installationCost = installationCost;
-	}
-
-	@ExcelField(title="其他费用", align=2, sort=15)
-	public Double getOtherExpenses() {
-		return otherExpenses;
-	}
-
-	public void setOtherExpenses(Double otherExpenses) {
-		this.otherExpenses = otherExpenses;
-	}
-
-	@ExcelField(title="合计(万元)", align=2, sort=16)
-	public Double getTotalCost() {
-		return totalCost;
-	}
-
-	public void setTotalCost(Double totalCost) {
-		this.totalCost = totalCost;
-	}
-
-	@ExcelField(title="数量", align=2, sort=17)
-	public Integer getCount() {
-		return count;
-	}
-
-	public void setCount(Integer count) {
-		this.count = count;
-	}
-
-	@ExcelField(title="单位", align=2, sort=18)
-	public String getUnit() {
-		return unit;
-	}
-
-	public void setUnit(String unit) {
-		this.unit = unit;
-	}
-
-	@ExcelField(title="指标", align=2, sort=19)
-	public String getTarget() {
-		return target;
-	}
-
-	public void setTarget(String target) {
-		this.target = target;
-	}
-
-	@ExcelField(title="费用类型", align=2, sort=20)
-	public String getExpenseType() {
-		return expenseType;
-	}
-
-	public void setExpenseType(String expenseType) {
-		this.expenseType = expenseType;
-	}
-
-	@ExcelField(title="节点类型", align=2, sort=21)
-	public String getNodeTypes() {
-		return nodeTypes;
-	}
-
-	public void setNodeTypes(String nodeTypes) {
-		this.nodeTypes = nodeTypes;
-	}*/
-	
 }

+ 27 - 0
src/main/java/com/jeeplus/modules/workcontent/entity/WorkFiveDirectionsAffirm.java

@@ -45,6 +45,9 @@ public class WorkFiveDirectionsAffirm extends DataEntity<WorkFiveDirectionsAffir
 	private String consultRemarks;  //备注
 	private String type;          //数据状态
 	private String roadworkDemandDateStr;  //需求日期Str
+	private String contractId;          //实施合同id
+	private String contractName;          //实施合同名称
+	private String contractNumber;          //实施合同编号
 
 	public WorkFiveDirectionsAffirm() {
 		super();
@@ -237,4 +240,28 @@ public class WorkFiveDirectionsAffirm extends DataEntity<WorkFiveDirectionsAffir
 	public void setRoadworkDemandDateStr(String roadworkDemandDateStr) {
 		this.roadworkDemandDateStr = roadworkDemandDateStr;
 	}
+
+	public String getContractId() {
+		return contractId;
+	}
+
+	public void setContractId(String contractId) {
+		this.contractId = contractId;
+	}
+
+	public String getContractName() {
+		return contractName;
+	}
+
+	public void setContractName(String contractName) {
+		this.contractName = contractName;
+	}
+
+	public String getContractNumber() {
+		return contractNumber;
+	}
+
+	public void setContractNumber(String contractNumber) {
+		this.contractNumber = contractNumber;
+	}
 }

+ 27 - 0
src/main/java/com/jeeplus/modules/workcontent/entity/WorkMaterialsPrice.java

@@ -26,6 +26,9 @@ public class WorkMaterialsPrice extends DataEntity<WorkMaterialsPrice> {
     @NumberFormat(style = NumberFormat.Style.CURRENCY)
 	private Double nuclearPrice;		// 甲方、咨询核定价(不含税价)
 	private String type;          //数据状态
+	private String contractId;          //实施合同id
+	private String contractName;          //实施合同名称
+	private String contractNumber;          //实施合同编号
 
 	public WorkMaterialsPrice() {
 		super();
@@ -98,4 +101,28 @@ public class WorkMaterialsPrice extends DataEntity<WorkMaterialsPrice> {
 	public void setType(String type) {
 		this.type = type;
 	}
+
+	public String getContractId() {
+		return contractId;
+	}
+
+	public void setContractId(String contractId) {
+		this.contractId = contractId;
+	}
+
+	public String getContractName() {
+		return contractName;
+	}
+
+	public void setContractName(String contractName) {
+		this.contractName = contractName;
+	}
+
+	public String getContractNumber() {
+		return contractNumber;
+	}
+
+	public void setContractNumber(String contractNumber) {
+		this.contractNumber = contractNumber;
+	}
 }

+ 1 - 0
src/main/java/com/jeeplus/modules/workcontent/service/ProjectVisaInfoService.java

@@ -64,6 +64,7 @@ public class ProjectVisaInfoService extends CrudService<ProjectVisaDao, ProjectV
 				workConcealProjectDao.deleteContractById(workConcealProject.getId());
                 continue;
             }
+			workConcealProject.setContractId(contractId);
 			workConcealProject.setContentId(contentId);
 			workConcealProject.setProjectId(projectId);
             this.save(workConcealProject);

+ 4 - 0
src/main/java/com/jeeplus/modules/workcontent/service/WorkConcealProjectService.java

@@ -30,6 +30,9 @@ public class WorkConcealProjectService extends CrudService<WorkConcealProjectDao
 	public List<WorkConcealProject> findList(WorkConcealProject workConcealProject) {
 		return super.findList(workConcealProject);
 	}
+	public List<WorkConcealProject> findListByProjectId(WorkConcealProject workConcealProject) {
+		return dao.findListByProjectId(workConcealProject);
+	}
 	
 	public Page<WorkConcealProject> findPage(Page<WorkConcealProject> page, WorkConcealProject workConcealProject) {
 		return super.findPage(page, workConcealProject);
@@ -58,6 +61,7 @@ public class WorkConcealProjectService extends CrudService<WorkConcealProjectDao
                 dao.delete(workConcealProject);
                 continue;
             }
+            workConcealProject.setContractId(contractId);
 			workConcealProject.setContentId(contentId);
 			workConcealProject.setProjectId(projectId);
             this.save(workConcealProject);

+ 4 - 0
src/main/java/com/jeeplus/modules/workcontent/service/WorkContentBranchAccountService.java

@@ -30,6 +30,9 @@ public class WorkContentBranchAccountService extends CrudService<WorkContentBran
 	public List<WorkContentBranchAccount> findList(WorkContentBranchAccount workContentBranchAccount) {
 		return super.findList(workContentBranchAccount);
 	}
+	public List<WorkContentBranchAccount> findListByProjectId(WorkContentBranchAccount workContentBranchAccount) {
+		return dao.findListByProjectId(workContentBranchAccount);
+	}
 	
 	public Page<WorkContentBranchAccount> findPage(Page<WorkContentBranchAccount> page, WorkContentBranchAccount workContentBranchAccount) {
 		return super.findPage(page, workContentBranchAccount);
@@ -57,6 +60,7 @@ public class WorkContentBranchAccountService extends CrudService<WorkContentBran
                 dao.delete(investmentCost);
                 continue;
             }
+			investmentCost.setContractId(contractId);
             investmentCost.setContentId(contentId);
             investmentCost.setProjectId(projectId);
             this.save(investmentCost);

+ 4 - 0
src/main/java/com/jeeplus/modules/workcontent/service/WorkFiveDirectionsAffirmService.java

@@ -31,6 +31,9 @@ public class WorkFiveDirectionsAffirmService extends CrudService<WorkFiveDirecti
 	public List<WorkFiveDirectionsAffirm> findList(WorkFiveDirectionsAffirm workFiveDirectionsAffirm) {
 		return super.findList(workFiveDirectionsAffirm);
 	}
+	public List<WorkFiveDirectionsAffirm> findListByProjectId(WorkFiveDirectionsAffirm workFiveDirectionsAffirm) {
+		return dao.findListByProjectId(workFiveDirectionsAffirm);
+	}
 	
 	public Page<WorkFiveDirectionsAffirm> findPage(Page<WorkFiveDirectionsAffirm> page, WorkFiveDirectionsAffirm workFiveDirectionsAffirm) {
 		return super.findPage(page, workFiveDirectionsAffirm);
@@ -59,6 +62,7 @@ public class WorkFiveDirectionsAffirmService extends CrudService<WorkFiveDirecti
                 dao.delete(workFiveDirectionsAffirm);
                 continue;
             }
+            workFiveDirectionsAffirm.setContractId(contractId);
 			workFiveDirectionsAffirm.setContentId(contentId);
 			workFiveDirectionsAffirm.setProjectId(projectId);
             this.save(workFiveDirectionsAffirm);

+ 4 - 0
src/main/java/com/jeeplus/modules/workcontent/service/WorkMaterialsPriceService.java

@@ -33,6 +33,9 @@ public class WorkMaterialsPriceService extends CrudService<WorkMaterialsPriceDao
 	public List<WorkMaterialsPrice> findList(WorkMaterialsPrice workPreliminaryDesignEstimate) {
 		return super.findList(workPreliminaryDesignEstimate);
 	}
+	public List<WorkMaterialsPrice> findListByProjectId(WorkMaterialsPrice workPreliminaryDesignEstimate) {
+		return dao.findListByProjectId(workPreliminaryDesignEstimate);
+	}
 	
 	public Page<WorkMaterialsPrice> findPage(Page<WorkMaterialsPrice> page, WorkMaterialsPrice workPreliminaryDesignEstimate) {
 		return super.findPage(page, workPreliminaryDesignEstimate);
@@ -61,6 +64,7 @@ public class WorkMaterialsPriceService extends CrudService<WorkMaterialsPriceDao
                 dao.delete(preliminaryDesignEstimate);
                 continue;
             }
+			preliminaryDesignEstimate.setContractId(contractId);
 			preliminaryDesignEstimate.setContentId(contentId);
 			preliminaryDesignEstimate.setProjectId(projectId);
             this.save(preliminaryDesignEstimate);

+ 23 - 0
src/main/java/com/jeeplus/modules/workcontent/web/WorkConcealProjectController.java

@@ -13,6 +13,7 @@ import com.jeeplus.modules.sys.entity.MainDictDetail;
 import com.jeeplus.modules.sys.utils.DictUtils;
 import com.jeeplus.modules.workcontent.entity.WorkConcealProject;
 import com.jeeplus.modules.workcontent.entity.WorkConcealProject;
+import com.jeeplus.modules.workcontent.entity.WorkMaterialsPrice;
 import com.jeeplus.modules.workcontent.service.WorkConcealProjectService;
 import com.jeeplus.modules.workreceiptsregister.entity.ResponseEntity;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -84,6 +85,28 @@ public class WorkConcealProjectController extends BaseController {
 
 
 	/**
+	 * 根据projectId获取项目中所有的工程进度款数据信息
+	 */
+	@RequestMapping(value = {"listByProjectId"})
+	public String listByProjectId(WorkConcealProject workConcealProject, String view, HttpServletRequest request, Model model) {
+		String sign = request.getParameter("sign");
+		List<String> signList = new ArrayList();
+		if (StringUtils.isNotBlank(sign)){
+			signList = Arrays.asList(sign.split(","));
+		}
+		List<WorkConcealProject> list = new ArrayList<>();
+		if(StringUtils.isNotBlank(workConcealProject.getProjectId())){
+			list = workConcealProjectService.findListByProjectId(workConcealProject);
+		}
+		model.addAttribute("signList", signList);
+		model.addAttribute("workConcealProject", list);
+		return "modules/workcontent/workProjectConcealListView";
+	}
+
+
+
+
+	/**
 	 * 查询数据表中的所有数据类型
 	 * @return
 	 */

+ 21 - 0
src/main/java/com/jeeplus/modules/workcontent/web/WorkContentBranchAccountController.java

@@ -9,6 +9,7 @@ import com.jeeplus.common.utils.StringUtils;
 import com.jeeplus.common.utils.excel.ExportExcel;
 import com.jeeplus.common.utils.excel.ImportExcel;
 import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.projectVisa.entity.ProjectVisa;
 import com.jeeplus.modules.sys.entity.MainDictDetail;
 import com.jeeplus.modules.sys.utils.DictUtils;
 import com.jeeplus.modules.workcontent.entity.WorkContentBranchAccount;
@@ -85,6 +86,26 @@ public class WorkContentBranchAccountController extends BaseController {
 	}
 
 	/**
+	 * 根据projectId获取项目中所有的工程进度款数据信息
+	 */
+	@RequestMapping(value = {"listByProjectId"})
+	public String listByProjectId(WorkContentBranchAccount workContentBranchAccount, String view, HttpServletRequest request, Model model) {
+		String sign = request.getParameter("sign");
+		List<String> signList = new ArrayList();
+		if (StringUtils.isNotBlank(sign)){
+			signList = Arrays.asList(sign.split(","));
+		}
+		List<WorkContentBranchAccount> list = new ArrayList<>();
+		if(StringUtils.isNotBlank(workContentBranchAccount.getProjectId())){
+			list = workContentBranchAccountService.findListByProjectId(workContentBranchAccount);
+		}
+		model.addAttribute("signList", signList);
+		model.addAttribute("investmentCostList", list);
+		String viewPath = "modules/workcontent/workProjectBranchListView";
+		return viewPath;
+	}
+
+	/**
 	 * 导入Excel数据
 	*/
 	@ResponseBody

+ 21 - 0
src/main/java/com/jeeplus/modules/workcontent/web/WorkFiveDirectionsAffirmController.java

@@ -12,6 +12,7 @@ import com.jeeplus.common.web.BaseController;
 import com.jeeplus.modules.sys.entity.MainDictDetail;
 import com.jeeplus.modules.sys.utils.DictUtils;
 import com.jeeplus.modules.workcontent.entity.WorkFiveDirectionsAffirm;
+import com.jeeplus.modules.workcontent.entity.WorkMaterialsPrice;
 import com.jeeplus.modules.workcontent.entity.WorkPreliminaryDesignEstimate;
 import com.jeeplus.modules.workcontent.service.WorkFiveDirectionsAffirmService;
 import com.jeeplus.modules.workcontent.service.WorkPreliminaryDesignEstimateService;
@@ -89,6 +90,26 @@ public class WorkFiveDirectionsAffirmController extends BaseController {
         return viewPath;
 	}
 
+
+	/**
+	 * 根据projectId获取项目中所有的工程进度款数据信息
+	 */
+	@RequestMapping(value = {"listByProjectId"})
+	public String listByProjectId(WorkFiveDirectionsAffirm workFiveDirectionsAffirm, String view, HttpServletRequest request, Model model) {
+		String sign = request.getParameter("sign");
+		List<String> signList = new ArrayList();
+		if (StringUtils.isNotBlank(sign)){
+			signList = Arrays.asList(sign.split(","));
+		}
+		List<WorkFiveDirectionsAffirm> list = new ArrayList<>();
+		if(StringUtils.isNotBlank(workFiveDirectionsAffirm.getProjectId())){
+			list = workFiveDirectionsAffirmService.findListByProjectId(workFiveDirectionsAffirm);
+		}
+		model.addAttribute("signList", signList);
+		model.addAttribute("fiveDirectionsAffirmList", list);
+		return "modules/workcontent/workProjectArmorListView";
+	}
+
 	public static String getNowDate(Date currentTime) {
 		if(null != currentTime){
 			SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");

+ 21 - 0
src/main/java/com/jeeplus/modules/workcontent/web/WorkMaterialsPriceController.java

@@ -84,6 +84,27 @@ public class WorkMaterialsPriceController extends BaseController {
 	}
 
 
+
+	/**
+	 * 根据projectId获取项目中所有的工程进度款数据信息
+	 */
+	@RequestMapping(value = {"listByProjectId"})
+	public String listByProjectId(WorkMaterialsPrice workMaterialsPrice,String view, HttpServletRequest request, Model model) {
+		String sign = request.getParameter("sign");
+		List<String> signList = new ArrayList();
+		if (StringUtils.isNotBlank(sign)){
+			signList = Arrays.asList(sign.split(","));
+		}
+		List<WorkMaterialsPrice> list = new ArrayList<>();
+		if(StringUtils.isNotBlank(workMaterialsPrice.getProjectId())){
+			list = workMaterialsPriceService.findListByProjectId(workMaterialsPrice);
+		}
+		model.addAttribute("signList", signList);
+		model.addAttribute("workScheduleList", list);
+		return "modules/workcontent/workProjectMaterialListView";
+	}
+
+
 	/**
 	 * 查询数据表中的所有数据类型
 	 * @return

+ 112 - 0
src/main/resources/mappings/modules/projectrecord/monthly/MonthlyConsultationReportDao.xml

@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.modules.projectrecord.dao.monthly.MonthlyConsultationReportDao">
+
+
+	<sql id="monthlyColumns">
+		a.id AS "id",
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+
+		a.project_id AS "projectId",
+		a.monthly_name AS "monthlyName",
+		a.monthly_date as "monthlyDate",
+		a.monthly_content as "monthlyContent",
+		a.monthly_number as "monthlyNumber"
+	</sql>
+
+	<select id="getFindList" resultType="com.jeeplus.modules.projectrecord.entity.ProjectRecordTreeData">
+		select
+		a.id AS "id",
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+		a.project_id AS "pid",
+		a.monthly_name as "projectName",
+		a.monthly_date as "date",
+		a.monthly_number as "projectId",
+		su.name as "projectRegistrant"
+		from
+		  work_monthly_info a
+		left join sys_user su on su.id = a.create_by
+		where a.project_id = #{projectId} and a.del_flag = 0
+		order by a.update_date desc
+	</select>
+
+	<select id="getById" resultType="com.jeeplus.modules.projectrecord.entity.MonthlyInfo">
+		SELECT
+		<include refid="monthlyColumns"/>
+		from work_monthly_info a
+		where a.id = #{id}
+	</select>
+
+	<insert id="saveMonthly">
+		insert into work_monthly_info (
+		  id,
+		  create_by,
+		  create_date,
+		  update_by,
+		  update_date,
+		  remarks,
+		  del_flag,
+		  project_id,
+		  monthly_name,
+		  monthly_date,
+		  monthly_content,
+		  monthly_number
+		)
+		values
+		  (
+			#{id},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{remarks},
+			#{delFlag},
+			#{projectId},
+			#{monthlyName},
+			#{monthlyDate},
+			#{monthlyContent},
+			#{monthlyNumber}
+		  )
+	</insert>
+
+	<update id="updateMonthly">
+		update
+		  work_monthly_info
+		set
+		  update_by = #{updateBy.id},
+		  update_date = #{updateDate},
+		  remarks = #{remarks},
+		  monthly_name = #{monthlyName},
+		  monthly_date = #{monthlyDate},
+		  monthly_content = #{monthlyContent},
+		  monthly_number = #{monthlyNumber}
+		where id = #{id}
+	</update>
+
+	<select id="getProjectNum" resultType="java.lang.String">
+		select
+		a.num as "num"
+		from report_num a
+		where
+			a.del_flag = 0 and a.project_id = #{projectId} and a.parent_id = 0
+	</select>
+
+	<update id="deleteMonthly">
+		update
+		  work_monthly_info
+		set
+		  del_flag = 1
+		where id = #{id}
+	</update>
+
+</mapper>

+ 18 - 0
src/main/resources/mappings/modules/projectrecord/stage/ProjectVisaDao.xml

@@ -267,4 +267,22 @@
 	<update id="deleteByLogic">
 		update contract_visa_info set del_flag='1' where id=#{id} and type=#{type}
 	</update>
+
+	<select id="findListByProjectId" resultType="com.jeeplus.modules.projectVisa.entity.ProjectVisa" >
+		SELECT
+		cc.contract_name contractName, cc.cnumber contractNumber,
+		<include refid="projectVisaColumns"/>
+		FROM contract_visa_design a
+		left join construction_contract cc on cc.id = a.contract_id
+		<where>
+			<if test="projectId!=null and projectId !=''">
+				AND a.project_id = #{projectId}
+			</if>
+			<if test="type!=null and type !=''">
+				AND a.type = #{type}
+			</if>
+			AND a.del_flag = #{DEL_FLAG_NORMAL}
+		</where>
+		ORDER BY cc.contract_name desc, a.update_date DESC
+	</select>
 </mapper>

+ 30 - 6
src/main/resources/mappings/modules/workcontent/WorkConcealProjectDao.xml

@@ -15,7 +15,8 @@
 		a.cost_part AS "costPart",
 		a.work_amount as "workAmount",
 		a.work_conceal_project_serial_num as "workConcealProjectSerialNum",
-		a.type as "type"
+		a.type as "type",
+		a.contract_id as "contractId"
 	</sql>
 	
 
@@ -48,6 +49,24 @@
 			</otherwise>
 		</choose>
 	</select>
+
+
+	<select id="findListByProjectId" resultType="com.jeeplus.modules.workcontent.entity.WorkConcealProject" >
+		SELECT
+		cc.contract_name contractName, cc.cnumber contractNumber,
+
+		(case when a.type = 'workSiteLevel' then '场平工程量' when a.type = 'workConcealProject' then '隐蔽工程量' else '' end) as typeName,
+		<include refid="workConcealProjectColumns"/>
+		FROM work_conceal_project a
+		left join construction_contract cc on cc.id = a.contract_id
+		<where>
+			<if test="projectId!=null and projectId !=''">
+				AND a.project_id = #{projectId}
+			</if>
+			AND a.del_flag = #{DEL_FLAG_NORMAL}
+		</where>
+		ORDER BY a.update_date DESC,a.contract_id
+	</select>
 	
 	<select id="findAllList" resultType="com.jeeplus.modules.workcontent.entity.WorkConcealProject" >
 		SELECT 
@@ -80,7 +99,8 @@
 			cost_part,
 			work_amount,
 			work_conceal_project_serial_num,
-			type
+			type,
+			contract_id
 		) VALUES (
 			#{id},
 			#{createBy.id},
@@ -94,7 +114,8 @@
             #{costPart},
             #{workAmount},
             #{workConcealProjectSerialNum},
-            #{type}
+            #{type},
+            #{contractId}
 		)
 	</insert>
 
@@ -112,7 +133,8 @@
 			cost_part,
 			work_amount,
 			work_conceal_project_serial_num,
-			type
+			type,
+			contract_id
 		) VALUES
 		<foreach collection="list" item="item" separator=",">
             ( #{item.id},
@@ -127,7 +149,8 @@
 			#{item.costPart},
 			#{item.workAmount},
 			#{item.workConcealProjectSerialNum},
-			#{item.type}
+			#{item.type},
+			#{item.contractId}
 			)
         </foreach>
 	</insert>
@@ -143,7 +166,8 @@
 			cost_part = #{costPart},
 			work_amount = #{workAmount},
 			work_conceal_project_serial_num = #{workConcealProjectSerialNum},
-			type = #{type}
+			type = #{type},
+			contract_id = #{contractId}
 		WHERE id = #{id}
 	</update>
 	

+ 27 - 6
src/main/resources/mappings/modules/workcontent/WorkContentBranchAccountDao.xml

@@ -19,7 +19,8 @@
 		a.business_add AS "businessAdd",
 		a.business_reduce AS "businessReduce",
 		a.business_rate AS "businessRate",
-		a.type AS "type"
+		a.type AS "type",
+		a.contract_id as "contractId"
 	</sql>
 	
     
@@ -88,7 +89,8 @@
 			business_add,
 			business_reduce,
 			business_rate,
-			type
+			type,
+			contract_id
 		) VALUES (
 			#{id},
 			#{createBy.id},
@@ -106,7 +108,8 @@
             #{businessAdd},
             #{businessReduce},
             #{businessRate},
-            #{type}
+            #{type},
+            #{contractId}
 		)
 	</insert>
 
@@ -128,7 +131,8 @@
 			business_add,
 			business_reduce,
 			business_rate,
-			type
+			type,
+			contract_id
 		) VALUES
 		<foreach collection="list" item="item" separator=",">
             ( #{item.id},
@@ -147,7 +151,8 @@
             #{item.businessAdd},
             #{item.businessReduce},
             #{item.businessRate},
-            #{item.type}
+            #{item.type},
+            #{contractId}
             )
         </foreach>
 	</insert>
@@ -166,7 +171,8 @@
 			business_add = #{businessAdd},
 			business_reduce = #{businessReduce},
 			business_rate = #{businessRate},
-			type = #{type}
+			type = #{type},
+			contract_id = #{contractId}
 		WHERE id = #{id}
 	</update>
 	
@@ -201,5 +207,20 @@
 		) a
 	</select>
 
+	<select id="findListByProjectId" resultType="WorkContentBranchAccount" >
+		SELECT
+		cc.contract_name contractName, cc.cnumber contractNumber,
+		<include refid="workContentBranchAccountColumns"/>
+		FROM work_content_branchaccount a
+		left join construction_contract cc on cc.id = a.contract_id
+		<where>
+			<if test="projectId!=null and projectId !=''">
+				AND a.project_id = #{projectId}
+			</if>
+			AND a.del_flag = #{DEL_FLAG_NORMAL}
+		</where>
+		ORDER BY cc.contract_name desc, a.update_date DESC
+	</select>
+
 	
 </mapper>

+ 26 - 5
src/main/resources/mappings/modules/workcontent/WorkFiveDirectionsAffirmDao.xml

@@ -31,7 +31,8 @@
 		a.consult_attrition_rate as "consultAttritionRate",
 		a.consult_audit_total as "consultAuditTotal",
 		a.consult_remarks as "consultRemarks",
-		a.type as "type"
+		a.type as "type",
+		a.contract_id as "contractId"
 	</sql>
 	
 
@@ -64,6 +65,21 @@
 			</otherwise>
 		</choose>
 	</select>
+
+	<select id="findListByProjectId" resultType="com.jeeplus.modules.workcontent.entity.WorkFiveDirectionsAffirm" >
+		SELECT
+			cc.contract_name contractName, cc.cnumber contractNumber,
+			<include refid="workFiveDirectionsAffirmColumns"/>
+		FROM work_five_directions_affirm a
+		left join construction_contract cc on cc.id = a.contract_id
+		<where>
+			<if test="projectId!=null and projectId !=''">
+				AND a.project_id = #{projectId}
+			</if>
+			AND a.del_flag = #{DEL_FLAG_NORMAL}
+		</where>
+		ORDER BY cc.contract_name desc, a.update_date DESC
+	</select>
 	
 	<select id="findAllList" resultType="com.jeeplus.modules.workcontent.entity.WorkFiveDirectionsAffirm" >
 		SELECT 
@@ -112,7 +128,8 @@
 			consult_attrition_rate,
 			consult_audit_total,
 			consult_remarks,
-			type
+			type,
+			contract_id
 		) VALUES (
 			#{id},
 			#{createBy.id},
@@ -142,7 +159,8 @@
             #{consultAttritionRate},
             #{consultAuditTotal},
             #{consultRemarks},
-            #{type}
+            #{type},
+            #{contractId}
 		)
 	</insert>
 
@@ -176,7 +194,8 @@
 			consult_attrition_rate,
 			consult_audit_total,
 			consult_remarks,
-			type
+			type,
+			contract_id
 		) VALUES
 		<foreach collection="list" item="item" separator=",">
             ( #{item.id},
@@ -208,6 +227,7 @@
 			#{item.consultAuditTotal},
 			#{item.consultRemarks},
 			#{item.type}
+			#{item.contractId}
 			)
         </foreach>
 	</insert>
@@ -239,7 +259,8 @@
 			consult_attrition_rate = #{consultAttritionRate},
 			consult_audit_total = #{consultAuditTotal},
 			consult_remarks = #{consultRemarks},
-			type = #{type}
+			type = #{type},
+			contract_id = #{contractId}
 		WHERE id = #{id}
 	</update>
 	

+ 27 - 6
src/main/resources/mappings/modules/workcontent/WorkMaterialsPriceDao.xml

@@ -18,7 +18,8 @@
 		a.part_used as "partUsed",
 		a.material_price as "materialPrice",
 		a.nuclear_price as "nuclearPrice",
-		a.type as "type"
+		a.type as "type",
+		a.contract_id as "contractId"
 	</sql>
 	
 
@@ -51,6 +52,21 @@
 			</otherwise>
 		</choose>
 	</select>
+
+	<select id="findListByProjectId" resultType="com.jeeplus.modules.workcontent.entity.WorkMaterialsPrice" >
+		SELECT
+		cc.contract_name contractName, cc.cnumber contractNumber,
+		<include refid="workPreliminaryDesignEstimateColumns"/>
+		FROM work_materials_price a
+		left join construction_contract cc on cc.id = a.contract_id
+		<where>
+			<if test="projectId!=null and projectId !=''">
+				AND a.project_id = #{projectId}
+			</if>
+			AND a.del_flag = #{DEL_FLAG_NORMAL}
+		</where>
+		ORDER BY cc.contract_name desc, a.update_date DESC
+	</select>
 	
 	<select id="findAllList" resultType="com.jeeplus.modules.workcontent.entity.WorkMaterialsPrice" >
 		SELECT 
@@ -85,7 +101,8 @@
 			part_used,
 			material_price,
 			Nuclear_price,
-			type
+			type,
+			contract_id
 		) VALUES (
 			#{id},
 			#{createBy.id},
@@ -101,7 +118,8 @@
 			#{partUsed},
 			#{materialPrice},
 			#{nuclearPrice},
-            #{type}
+            #{type},
+            #{contractId}
 		)
 	</insert>
 
@@ -121,7 +139,8 @@
 			part_used,
 			material_price,
 			Nuclear_price,
-			type
+			type,
+			contract_id
 		) VALUES
 		<foreach collection="list" item="item" separator=",">
             ( #{item.id},
@@ -138,7 +157,8 @@
 			#{item.partUsed},
 			#{item.materialPrice},
 			#{item.nuclearPrice},
-			#{item.type}
+			#{item.type},
+			#{item.contractId}
 			)
         </foreach>
 	</insert>
@@ -157,7 +177,8 @@
 			part_used = #{partUsed},
 			material_price = #{materialPrice},
 			nuclear_price = #{nuclearPrice},
-			type = #{type}
+			type = #{type},
+			contract_id = #{contractId}
 		WHERE id = #{id}
 	</update>
 	

+ 1 - 0
src/main/webapp/static/bos/bosupload.js

@@ -164,6 +164,7 @@ function multitest (storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,
                                 '<input name="workAttachments['+lenght+'].createBy.id" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.createBy+'"/>'+
                                 '<input name="workAttachments['+lenght+'].type" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.type+'"/>'+
                                 '<input name="workAttachments['+lenght+'].attachmentFlag" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.attachmentFlag+'"/>'+
+                                '<input name="workAttachments['+lenght+'].divIdType" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.divIdType+'"/>'+
                                 '</td>'+
                                 '<td class="op-td">'+
                                 '<div class="op-btn-box">' +

+ 126 - 6
src/main/webapp/webpage/modules/projectrecord/armorForMaterials/armorForMaterialsForm.jsp

@@ -55,10 +55,20 @@
                     }
                 }
 
-                var idArr = $("#workBaseDataList tr:visible .clientId").length;
-                if(idArr == 0){
-                    layer.msg('请添加甲供物资审核所需依据性文件', {icon: 5});
-                    return false;
+
+
+                var length = document.getElementById("workBaseDataList");
+                var rows = length.rows.length;
+                var idList = [];
+                for (var i=0;i<rows;i++){
+                    var chooseCondition = $("#workBaseDataList"+i+"_chooseCondition").val();
+                    if(chooseCondition==1){
+                        var fileUrl = $("#workBaseDataList"+i+"_fileUrl").val();
+                        if(fileUrl == null || fileUrl == ''){
+                            layer.msg('请上传依据性资料必填文件', {icon: 5});
+                            return false;
+                        }
+                    }
                 }
 
                 beforeSubmit();
@@ -193,6 +203,33 @@
         function changeContentDetail(obj) {
             $("#contentDetail").empty();
             var val = "411";
+
+            var modify = $("#modify").val();
+            if("modify" != modify){
+                $("#workBaseDataList").empty();
+                $.ajax({
+                    type:'post',
+                    url:'${ctx}/project/projectImplementEarly/projectBasedDataList',
+                    data:{
+                        "typeId":val
+                    },
+                    success:function(data){
+                        console.log(data);
+                        if(data.projectBasedDataList.length > 0){
+                            var data = data.projectBasedDataList;
+                            for(var i=0;i<data.length;i++){
+                                var idArr = $("#workBaseDataList tr:visible .clientId");
+                                if(data[i].id!=''&&!hasInArr(data[i].id,idArr)){
+                                    addRowBaseData("#workBaseDataList",workBaseDataRowIdx,workBaseDataTplFirst,data[i]);
+                                    workBaseDataRowIdx=workBaseDataRowIdx+1;
+                                }
+                            }
+                        }
+                    }
+                })
+
+            }
+
             contentDetailTypeShow(val);
             $("#contentDetailTypeDiv").show();
             $("#projectContentDataSign").val(val);
@@ -419,12 +456,36 @@
             }
 
         }
+
+        //依据性文件点击事件
+        function accordingBtn(obj, prefix,userId){
+            $(prefix+"_file").click();
+        }
+        //依据性文件上传文件方法
+        function insertAccording(tValue,idx,prefix) {
+            var files = $(prefix+"_file")[0].files;
+            for(var i=0;i<files.length;i++) {
+                var file = files[i];
+                var attachmentId = "";
+                var attachmentFlag = "132";
+                console.log(file);
+                var timestamp = new Date().getTime();
+
+                var storeAs = "attachment-file/basedData/" + timestamp + "/" + file['name'];
+                var uploadPath = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/" + storeAs;
+                /*将这段字符串存到数据库即可*/
+                var divId = "_attachment";
+                multipartUploadWithSts(storeAs, file, attachmentId, attachmentFlag, uploadPath, divId, "0",1,idx,prefix);
+            }
+            $(prefix+"_file").val(123)
+            //var idx1 = $("#workBaseDataList tr").length +1;
+        }
     </script>
 </head>
 <body>
 <div class="single-form">
     <div class="container${container}">
-        <form:form id="inputForm" modelAttribute="concealProjectInfo" action="${ctx}/project/armorForMaterials/save" method="post" class="form-horizontal">
+        <form:form id="inputForm" modelAttribute="concealProjectInfo" action="${ctx}/projectcontentinfo/projectcontentinfo/save" method="post" class="form-horizontal">
             <form:hidden path="id"/>
             <form:hidden path="edit"/>
             <form:hidden path="parentIds"/>
@@ -432,6 +493,8 @@
             <form:hidden path="project.id"/>
             <form:hidden path="contract.id"/>
             <form:hidden path="projectContentData.id"/>
+            <input type="hidden" name="projectContentData.contractId" value="${concealProjectInfo.contract.id}">
+            <input type="hidden" name="projectContentData.type" value="411">
             <input type="hidden" id="projectId" value="${concealProjectInfo.project.id}">
             <input type="hidden" id="contentDeta" name="projectContentData.contentDetail">
             <input type="hidden" id="dataBodyList" name="dataBodyList" value="">
@@ -510,7 +573,19 @@
                 <c:forEach items="${concealProjectInfo.projectContentData.projectBasedDataList}" var="projectBasedData" varStatus="idx">
                     <tr>
                         <td class="hide">
-                            <input type="hidden" id="workBaseDataList${idx.index}_id" value="${projectBasedData.id}" class="clientId">
+                            <input id="workBaseDataList${idx.index}_id"      name="projectReportData.projectBasedDataList[${idx.index}].id"     type="hidden" value="${projectBasedData.id}"  class="clientId">
+                            <input id="workBaseDataList${idx.index}_file" type="file" name="projectReportData.projectBasedDataList[${idx.index}].file" multiple="multiple" style="display: none;" onChange="if(this.value)insertAccording(this.value,${idx.index},'#workBaseDataList${idx.index}');"/>
+                            <input id="workBaseDataList${idx.index}_number"	 name="projectReportData.projectBasedDataList[${idx.index}].number" type="hidden" value="${projectBasedData.number}"/>
+                            <input id="workBaseDataList${idx.index}_name" 	 name="projectReportData.projectBasedDataList[${idx.index}].name"   type="hidden" value="${projectBasedData.name}"/>
+                            <input id="workBaseDataList${idx.index}_type"	 name="projectReportData.projectBasedDataList[${idx.index}].type"   type="hidden" value="${projectBasedData.type}"/>
+                            <input id="workBaseDataList${idx.index}_flag"	 name="projectReportData.projectBasedDataList[${idx.index}].flag"   type="hidden" value="132"/>
+                            <input id="workBaseDataList${idx.index}_chooseCondition"	 name="projectReportData.projectBasedDataList[${idx.index}].chooseCondition"   type="hidden" value="${projectBasedData.chooseCondition}"/>
+
+                            <input id="workBaseDataList${idx.index}_fileType"	 name="projectReportData.projectBasedDataList[${idx.index}].fileType"   type="hidden" value=""/>
+                            <input id="workBaseDataList${idx.index}_fileName"	 name="projectReportData.projectBasedDataList[${idx.index}].fileName"   type="hidden" value=""/>
+                            <input id="workBaseDataList${idx.index}_fileUrl"	 name="projectReportData.projectBasedDataList[${idx.index}].fileUrl"   type="hidden" value=""/>
+                            <input id="workBaseDataList${idx.index}_fileAttachmentFlag"	 name="projectReportData.projectBasedDataList[${idx.index}].fileAttachmentFlag"   type="hidden" value=""/>
+                            <input id="workBaseDataList${idx.index}_fileAttachmentId"	 name="projectReportData.projectBasedDataList[${idx.index}].fileAttachmentId"   type="hidden" value=""/>
                         </td>
                         <td style="text-align:center;">
                                 ${projectBasedData.number}
@@ -537,6 +612,50 @@
             </table>
                 </div>
             </div>
+            <script type="text/template" id="workBaseDataTplFirst">//<!--
+                <tr id="budgetList{{idx}}">
+                    <td class="hide">
+                            <input id="workBaseDataList{{idx}}_file" type="file" name="projectContentData.projectBasedDataList[{{idx}}].file" multiple="multiple" style="display: none;" onChange="if(this.value)insertAccording(this.value,{{idx}},'#workBaseDataList{{idx}}');"/>
+                            <input id="workBaseDataList{{idx}}_flag"	 name="projectContentData.projectBasedDataList[{{idx}}].flag"   type="hidden" value="132"/>
+                            <input id="workBaseDataList{{idx}}_chooseCondition"	 name="projectContentData.projectBasedDataList[{{idx}}].chooseCondition"   type="hidden" value="{{row.chooseCondition}}"/>
+
+                        <input id="workBaseDataList{{idx}}_id" name="projectContentData.projectBasedDataList[{{idx}}].id" type="hidden" value="{{row.id}}" class="clientId"/>
+                        <input id="workBaseDataList{{idx}}_number" name="projectContentData.projectBasedDataList[{{idx}}].number" type="hidden" value="{{row.number}}"/>
+                        <input id="workBaseDataList{{idx}}_name" name="projectContentData.projectBasedDataList[{{idx}}].name" type="hidden" value="{{row.name}}"/>
+                        <input id="workBaseDataList{{idx}}_type" name="projectContentData.projectBasedDataList[{{idx}}].type" type="hidden" value="{{row.type}}"/>
+
+                        <input id="workBaseDataList{{idx}}_fileType"	 name="projectContentData.projectBasedDataList[{{idx}}].fileType"   type="hidden" value=""/>
+                        <input id="workBaseDataList{{idx}}_fileName"	 name="projectContentData.projectBasedDataList[{{idx}}].fileName"   type="hidden" value=""/>
+                        <input id="workBaseDataList{{idx}}_fileUrl"	 name="projectContentData.projectBasedDataList[{{idx}}].fileUrl"   type="hidden" value=""/>
+                        <input id="workBaseDataList{{idx}}_fileAttachmentFlag"	 name="projectContentData.projectBasedDataList[{{idx}}].fileAttachmentFlag"   type="hidden" value=""/>
+                        <input id="workBaseDataList{{idx}}}_fileAttachmentId"	 name="projectContentData.projectBasedDataList[{{idx}}].fileAttachmentId"   type="hidden" value=""/>
+                    </td>
+                    <%--<td style="text-align:center;">
+                        {{row.number}}
+                    </td>--%>
+                    <td style="text-align:center;">
+                        {{row.name}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.typeLabel}}
+                    </td>
+                    <td style="text-align:center;">
+                        <div id="workBaseDataList{{idx}}_fileTypeDiv">
+                        </div>
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.uploadUser.name}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.uploadDate}}
+                    </td>
+                    <td class="text-center op-td">
+                        <div id="workBaseDataList{{idx}}_operation">
+                            <a href=javascript:void(0); onclick="accordingBtn(this, '#workBaseDataList{{idx}}','{{row.uploadUser.id}}')"   class="op-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i> 添加附件</a>
+                        </div>
+                    </td>
+                </tr>//-->
+            </script>
             <script type="text/template" id="workBaseDataTpl">//<!--
                 <tr id="budgetList{{idx}}">
                     <td class="hide">
@@ -567,6 +686,7 @@
             </script>
             <script type="text/javascript">
                 var workBaseDataTpl = $("#workBaseDataTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+                var workBaseDataTplFirst = $("#workBaseDataTplFirst").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
                 var workBaseDataRowIdx = ${fn:length(concealProjectInfo.projectReportData.projectBasedDataList)};
                 function setValuee(obj){
                     for(var i=0;i<obj.length;i++){

+ 2 - 3
src/main/webapp/webpage/modules/projectrecord/armorForMaterials/armorForMaterialsList.jsp

@@ -271,7 +271,7 @@
                             }else if(d.condition ==2){
                                 return  "<a class=\"attention-info pid\" title=\"" + d.contractName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看合同信息', '${ctx}/project/constructionContract/view?id=" + d.contractId +"','95%', '95%')\">" + d.contractName + "</a>";
                             }else{
-                                return "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看隐蔽工程量信息', '${ctx}/project/armorForMaterials/form?type=view&infoId="+d.id+"&contractId="+d.contractId+"&project.id="+d.projectId+"&contract.id="+d.pid+"','95%', '95%')\">" + d.contractName + "</a>";
+                                return "<a class=\"attention-info\" href=\"#\" onclick=\"openDialogView('查看隐蔽工程量信息', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=contentView&condition=armor&dictType=${dictType}&id="+d.contentPId+"&parentIds=${parentIds}&infoId="+d.id+"','95%', '95%')\">" + d.contractName + "</a>";
                             }
                         }},
                     {field: 'date', align:'center', title: '创建日期',width:100,templet: function(d){
@@ -324,8 +324,7 @@
             } else if (d.condition ==3){
                 if(1 == d.operationSign) {
                     return [
-                        '<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改甲供物资信息\', \'${ctx}/project/armorForMaterials/form?infoId='+d.id+'&contractId='+d.contractId+'&project.id='+d.projectId+'&contract.id='+d.pid+'\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 编辑</a>',
-                        '<a href="${ctx}/project/armorForMaterials/deleteConcealProject?id='+d.id+'" onclick="return confirmx(\'确认要删除该甲供物资信息吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+                        '<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改隐蔽工程量信息\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=content&condition=armor&flag=modify&dictType=${dictType}&infoId='+d.id+'&id='+d.contentPId+'\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 编辑</a>',
                     ].join('');
                 }else{
                     return[''].join('');

+ 1 - 1
src/main/webapp/webpage/modules/projectrecord/check/checkDesignList.jsp

@@ -276,7 +276,7 @@
                                 return "<font>"+d.cnumber+"</font>";
                             }
                         }},
-                    {field: 'contractName', title: '项目名称/合同名称/签证名称',templet:function(d){
+                    {field: 'contractName', title: '项目名称/合同名称/设计变更名称',templet:function(d){
                             if(d.condition ==1){
                                 return  "<a class=\"attention-info pid\" title=\"" + d.contractName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目信息', '${ctx}/project/projectRecords/view?id=" + d.id +"','95%', '95%')\">" + d.contractName + "</a>";
                             }else if(d.condition ==2){

+ 1 - 1
src/main/webapp/webpage/modules/projectrecord/claim/projectClaimForm.jsp

@@ -487,7 +487,7 @@
             <form:hidden path="project.id"/>
             <form:hidden path="contract.id"/>
             <form:hidden path="projectContentData.id"/>
-            <input type="hidden" name="project.workContractInfo.id" value="${concealProjectInfo.contract.id}">
+            <input type="hidden" name="projectContentData.contractId" value="${concealProjectInfo.contract.id}">
             <input type="hidden" name="projectContentData.type" value="46">
             <input type="hidden" id="contentDeta" name="projectContentData.contentDetail">
             <input type="hidden" id="dataBodyList" name="dataBodyList" value="">

+ 2 - 3
src/main/webapp/webpage/modules/projectrecord/concealProject/concealProjectList.jsp

@@ -272,7 +272,7 @@
                             }else if(d.condition ==2){
                                 return  "<a class=\"attention-info pid\" title=\"" + d.contractName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看合同信息', '${ctx}/project/constructionContract/view?id=" + d.contractId +"','95%', '95%')\">" + d.contractName + "</a>";
                             }else{
-                                return "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看隐蔽工程量信息', '${ctx}/project/concealProject/form?type=view&infoId="+d.id+"&contractId="+d.contractId+"&project.id="+d.projectId+"&contract.id="+d.pid+"','95%', '95%')\">" + d.contractName + "</a>";
+                                return "<a class=\"attention-info\" href=\"#\" onclick=\"openDialogView('查看隐蔽工程量信息', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=contentView&condition=conceal&dictType=${dictType}&id="+d.contentPId+"&parentIds=${parentIds}&infoId="+d.id+"','95%', '95%')\">" + d.contractName + "</a>";
                             }
                         }},
                     {field: 'date', align:'center', title: '创建日期',width:100,templet: function(d){
@@ -325,8 +325,7 @@
             } else if (d.condition ==3){
                 if(1 == d.operationSign) {
                     return [
-                        '<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改隐蔽工程量信息\', \'${ctx}/project/concealProject/form?infoId='+d.id+'&contractId='+d.contractId+'&project.id='+d.projectId+'&contract.id='+d.pid+'\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 编辑</a>',
-                        '<a href="${ctx}/project/concealProject/deleteConcealProject?id='+d.id+'" onclick="return confirmx(\'确认要删除该隐蔽工程量信息吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+                        '<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改隐蔽工程量信息\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=content&condition=conceal&flag=modify&dictType=${dictType}&infoId='+d.id+'&id='+d.contentPId+'\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 编辑</a>',
                     ].join('');
                 }else{
                     return[''].join('');

+ 126 - 6
src/main/webapp/webpage/modules/projectrecord/concealProject/workContentForm.jsp

@@ -64,10 +64,19 @@
                     }
                 }
 
-                var idArr = $("#workBaseDataList tr:visible .clientId").length;
-                if(idArr == 0){
-                    layer.msg('请添加隐蔽工程量所需依据性文件', {icon: 5});
-                    return false;
+
+                var length = document.getElementById("workBaseDataList");
+                var rows = length.rows.length;
+                var idList = [];
+                for (var i=0;i<rows;i++){
+                    var chooseCondition = $("#workBaseDataList"+i+"_chooseCondition").val();
+                    if(chooseCondition==1){
+                        var fileUrl = $("#workBaseDataList"+i+"_fileUrl").val();
+                        if(fileUrl == null || fileUrl == ''){
+                            layer.msg('请上传依据性资料必填文件', {icon: 5});
+                            return false;
+                        }
+                    }
                 }
 
 
@@ -203,6 +212,33 @@
         function changeContentDetail(obj) {
             $("#contentDetail").empty();
             var val = "410";
+
+            var modify = $("#modify").val();
+            if("modify" != modify){
+                $("#workBaseDataList").empty();
+                $.ajax({
+                    type:'post',
+                    url:'${ctx}/project/projectImplementEarly/projectBasedDataList',
+                    data:{
+                        "typeId":val
+                    },
+                    success:function(data){
+                        console.log(data);
+                        if(data.projectBasedDataList.length > 0){
+                            var data = data.projectBasedDataList;
+                            for(var i=0;i<data.length;i++){
+                                var idArr = $("#workBaseDataList tr:visible .clientId");
+                                if(data[i].id!=''&&!hasInArr(data[i].id,idArr)){
+                                    addRowBaseData("#workBaseDataList",workBaseDataRowIdx,workBaseDataTplFirst,data[i]);
+                                    workBaseDataRowIdx=workBaseDataRowIdx+1;
+                                }
+                            }
+                        }
+                    }
+                })
+
+            }
+
             contentDetailTypeShow(val);
             $("#contentDetailTypeDiv").show();
             $("#projectContentDataSign").val(val);
@@ -429,12 +465,36 @@
             }
 
         }
+
+        //依据性文件点击事件
+        function accordingBtn(obj, prefix,userId){
+            $(prefix+"_file").click();
+        }
+        //依据性文件上传文件方法
+        function insertAccording(tValue,idx,prefix) {
+            var files = $(prefix+"_file")[0].files;
+            for(var i=0;i<files.length;i++) {
+                var file = files[i];
+                var attachmentId = "";
+                var attachmentFlag = "132";
+                console.log(file);
+                var timestamp = new Date().getTime();
+
+                var storeAs = "attachment-file/basedData/" + timestamp + "/" + file['name'];
+                var uploadPath = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/" + storeAs;
+                /*将这段字符串存到数据库即可*/
+                var divId = "_attachment";
+                multipartUploadWithSts(storeAs, file, attachmentId, attachmentFlag, uploadPath, divId, "0",1,idx,prefix);
+            }
+            $(prefix+"_file").val(123)
+            //var idx1 = $("#workBaseDataList tr").length +1;
+        }
     </script>
 </head>
 <body>
 <div class="single-form">
     <div class="container${container}">
-        <form:form id="inputForm" modelAttribute="concealProjectInfo" action="${ctx}/project/concealProject/save" method="post" class="form-horizontal">
+        <form:form id="inputForm" modelAttribute="concealProjectInfo" action="${ctx}/projectcontentinfo/projectcontentinfo/save" method="post" class="form-horizontal">
             <form:hidden path="id"/>
             <form:hidden path="edit"/>
             <form:hidden path="parentIds"/>
@@ -442,6 +502,9 @@
             <form:hidden path="project.id"/>
             <form:hidden path="contract.id"/>
             <form:hidden path="projectContentData.id"/>
+            <input type="hidden" name="projectContentData.contractId" value="${concealProjectInfo.contract.id}">
+            <input type="hidden" name="projectContentData.type" value="410">
+            <input type="hidden" id="projectId" value="${concealProjectInfo.project.id}">
             <input type="hidden" id="contentDeta" name="projectContentData.contentDetail">
             <input type="hidden" id="dataBodyList" name="dataBodyList" value="">
             <input type="hidden" id="projectContentDataSign" name="projectContentDataSign" value="">
@@ -519,7 +582,19 @@
                 <c:forEach items="${concealProjectInfo.projectContentData.projectBasedDataList}" var="projectBasedData" varStatus="idx">
                     <tr>
                         <td class="hide">
-                            <input type="hidden" id="workBaseDataList${idx.index}_id" value="${projectBasedData.id}" class="clientId">
+                            <input id="workBaseDataList${idx.index}_id"      name="projectReportData.projectBasedDataList[${idx.index}].id"     type="hidden" value="${projectBasedData.id}"  class="clientId">
+                            <input id="workBaseDataList${idx.index}_file" type="file" name="projectReportData.projectBasedDataList[${idx.index}].file" multiple="multiple" style="display: none;" onChange="if(this.value)insertAccording(this.value,${idx.index},'#workBaseDataList${idx.index}');"/>
+                            <input id="workBaseDataList${idx.index}_number"	 name="projectReportData.projectBasedDataList[${idx.index}].number" type="hidden" value="${projectBasedData.number}"/>
+                            <input id="workBaseDataList${idx.index}_name" 	 name="projectReportData.projectBasedDataList[${idx.index}].name"   type="hidden" value="${projectBasedData.name}"/>
+                            <input id="workBaseDataList${idx.index}_type"	 name="projectReportData.projectBasedDataList[${idx.index}].type"   type="hidden" value="${projectBasedData.type}"/>
+                            <input id="workBaseDataList${idx.index}_flag"	 name="projectReportData.projectBasedDataList[${idx.index}].flag"   type="hidden" value="132"/>
+                            <input id="workBaseDataList${idx.index}_chooseCondition"	 name="projectReportData.projectBasedDataList[${idx.index}].chooseCondition"   type="hidden" value="${projectBasedData.chooseCondition}"/>
+
+                            <input id="workBaseDataList${idx.index}_fileType"	 name="projectReportData.projectBasedDataList[${idx.index}].fileType"   type="hidden" value=""/>
+                            <input id="workBaseDataList${idx.index}_fileName"	 name="projectReportData.projectBasedDataList[${idx.index}].fileName"   type="hidden" value=""/>
+                            <input id="workBaseDataList${idx.index}_fileUrl"	 name="projectReportData.projectBasedDataList[${idx.index}].fileUrl"   type="hidden" value=""/>
+                            <input id="workBaseDataList${idx.index}_fileAttachmentFlag"	 name="projectReportData.projectBasedDataList[${idx.index}].fileAttachmentFlag"   type="hidden" value=""/>
+                            <input id="workBaseDataList${idx.index}_fileAttachmentId"	 name="projectReportData.projectBasedDataList[${idx.index}].fileAttachmentId"   type="hidden" value=""/>
                         </td>
                         <td style="text-align:center;">
                                 ${projectBasedData.number}
@@ -546,6 +621,50 @@
             </table>
                 </div>
             </div>
+            <script type="text/template" id="workBaseDataTplFirst">//<!--
+                <tr id="budgetList{{idx}}">
+                    <td class="hide">
+                            <input id="workBaseDataList{{idx}}_file" type="file" name="projectContentData.projectBasedDataList[{{idx}}].file" multiple="multiple" style="display: none;" onChange="if(this.value)insertAccording(this.value,{{idx}},'#workBaseDataList{{idx}}');"/>
+                            <input id="workBaseDataList{{idx}}_flag"	 name="projectContentData.projectBasedDataList[{{idx}}].flag"   type="hidden" value="132"/>
+                            <input id="workBaseDataList{{idx}}_chooseCondition"	 name="projectContentData.projectBasedDataList[{{idx}}].chooseCondition"   type="hidden" value="{{row.chooseCondition}}"/>
+
+                        <input id="workBaseDataList{{idx}}_id" name="projectContentData.projectBasedDataList[{{idx}}].id" type="hidden" value="{{row.id}}" class="clientId"/>
+                        <input id="workBaseDataList{{idx}}_number" name="projectContentData.projectBasedDataList[{{idx}}].number" type="hidden" value="{{row.number}}"/>
+                        <input id="workBaseDataList{{idx}}_name" name="projectContentData.projectBasedDataList[{{idx}}].name" type="hidden" value="{{row.name}}"/>
+                        <input id="workBaseDataList{{idx}}_type" name="projectContentData.projectBasedDataList[{{idx}}].type" type="hidden" value="{{row.type}}"/>
+
+                        <input id="workBaseDataList{{idx}}_fileType"	 name="projectContentData.projectBasedDataList[{{idx}}].fileType"   type="hidden" value=""/>
+                        <input id="workBaseDataList{{idx}}_fileName"	 name="projectContentData.projectBasedDataList[{{idx}}].fileName"   type="hidden" value=""/>
+                        <input id="workBaseDataList{{idx}}_fileUrl"	 name="projectContentData.projectBasedDataList[{{idx}}].fileUrl"   type="hidden" value=""/>
+                        <input id="workBaseDataList{{idx}}_fileAttachmentFlag"	 name="projectContentData.projectBasedDataList[{{idx}}].fileAttachmentFlag"   type="hidden" value=""/>
+                        <input id="workBaseDataList{{idx}}}_fileAttachmentId"	 name="projectContentData.projectBasedDataList[{{idx}}].fileAttachmentId"   type="hidden" value=""/>
+                    </td>
+                    <%--<td style="text-align:center;">
+                        {{row.number}}
+                    </td>--%>
+                    <td style="text-align:center;">
+                        {{row.name}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.typeLabel}}
+                    </td>
+                    <td style="text-align:center;">
+                        <div id="workBaseDataList{{idx}}_fileTypeDiv">
+                        </div>
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.uploadUser.name}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.uploadDate}}
+                    </td>
+                    <td class="text-center op-td">
+                        <div id="workBaseDataList{{idx}}_operation">
+                            <a href=javascript:void(0); onclick="accordingBtn(this, '#workBaseDataList{{idx}}','{{row.uploadUser.id}}')"   class="op-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i> 添加附件</a>
+                        </div>
+                    </td>
+                </tr>//-->
+            </script>
             <script type="text/template" id="workBaseDataTpl">//<!--
                 <tr id="budgetList{{idx}}">
                     <td class="hide">
@@ -576,6 +695,7 @@
             </script>
             <script type="text/javascript">
                 var workBaseDataTpl = $("#workBaseDataTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+                var workBaseDataTplFirst = $("#workBaseDataTplFirst").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
                 var workBaseDataRowIdx = ${fn:length(concealProjectInfo.projectReportData.projectBasedDataList)};
                 function setValuee(obj){
                     for(var i=0;i<obj.length;i++){

+ 3 - 3
src/main/webapp/webpage/modules/projectrecord/contractMaterial/materialList.jsp

@@ -272,7 +272,8 @@
                             }else if(d.condition ==2){
                                 return  "<a class=\"attention-info pid\" title=\"" + d.contractName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看合同信息', '${ctx}/project/constructionContract/view?id=" + d.contractId +"','95%', '95%')\">" + d.contractName + "</a>";
                             }else{
-                                return "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看暂定材料信息', '${ctx}/project/contractMaterial/form?type=view&infoId="+d.id+"&contractId="+d.contractId+"&project.id="+d.projectId+"&contract.id="+d.pid+"','95%', '95%')\">" + d.contractName + "</a>";                            }
+                                return "<a class=\"attention-info\" href=\"#\" onclick=\"openDialogView('查看隐蔽工程量信息', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=contentView&condition=material&dictType=${dictType}&id="+d.contentPId+"&parentIds=${parentIds}&infoId="+d.id+"','95%', '95%')\">" + d.contractName + "</a>";
+                            }
                         }},
                     {field: 'date', align:'center', title: '创建日期',width:100,templet: function(d){
                             var date=d.createDate;
@@ -324,8 +325,7 @@
             } else if (d.condition ==3){
                 if(1 == d.operationSign) {
                     return [
-                        '<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改暂定材料信息\', \'${ctx}/project/contractMaterial/form?infoId='+d.id+'&contractId='+d.contractId+'&project.id='+d.projectId+'&contract.id='+d.pid+'\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 编辑</a>',
-                        '<a href="${ctx}/project/contractMaterial/deleteConcealProject?id='+d.id+'" onclick="return confirmx(\'确认要删除该暂定材料吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+                        '<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改隐蔽工程量信息\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=content&condition=material&flag=modify&dictType=${dictType}&infoId='+d.id+'&id='+d.contentPId+'\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 编辑</a>',
                     ].join('');
                 }else{
                     return[''].join('');

+ 124 - 6
src/main/webapp/webpage/modules/projectrecord/contractMaterial/workMaterialForm.jsp

@@ -52,10 +52,18 @@
                     }
                 }
 
-                var idArr = $("#workBaseDataList tr:visible .clientId").length;
-                if(idArr == 0){
-                    layer.msg('请添加暂定材料价审核所需依据性文件', {icon: 5});
-                    return false;
+                var length = document.getElementById("workBaseDataList");
+                var rows = length.rows.length;
+                var idList = [];
+                for (var i=0;i<rows;i++){
+                    var chooseCondition = $("#workBaseDataList"+i+"_chooseCondition").val();
+                    if(chooseCondition==1){
+                        var fileUrl = $("#workBaseDataList"+i+"_fileUrl").val();
+                        if(fileUrl == null || fileUrl == ''){
+                            layer.msg('请上传依据性资料必填文件', {icon: 5});
+                            return false;
+                        }
+                    }
                 }
 
                 beforeSubmit();
@@ -190,6 +198,33 @@
         function changeContentDetail(obj) {
             $("#contentDetail").empty();
             var val = "421";
+
+            var modify = $("#modify").val();
+            if("modify" != modify){
+                $("#workBaseDataList").empty();
+                $.ajax({
+                    type:'post',
+                    url:'${ctx}/project/projectImplementEarly/projectBasedDataList',
+                    data:{
+                        "typeId":val
+                    },
+                    success:function(data){
+                        console.log(data);
+                        if(data.projectBasedDataList.length > 0){
+                            var data = data.projectBasedDataList;
+                            for(var i=0;i<data.length;i++){
+                                var idArr = $("#workBaseDataList tr:visible .clientId");
+                                if(data[i].id!=''&&!hasInArr(data[i].id,idArr)){
+                                    addRowBaseData("#workBaseDataList",workBaseDataRowIdx,workBaseDataTplFirst,data[i]);
+                                    workBaseDataRowIdx=workBaseDataRowIdx+1;
+                                }
+                            }
+                        }
+                    }
+                })
+
+            }
+
             contentDetailTypeShow(val);
             $("#contentDetailTypeDiv").show();
             $("#projectContentDataSign").val(val);
@@ -416,12 +451,35 @@
             }
 
         }
+        //依据性文件点击事件
+        function accordingBtn(obj, prefix,userId){
+            $(prefix+"_file").click();
+        }
+        //依据性文件上传文件方法
+        function insertAccording(tValue,idx,prefix) {
+            var files = $(prefix+"_file")[0].files;
+            for(var i=0;i<files.length;i++) {
+                var file = files[i];
+                var attachmentId = "";
+                var attachmentFlag = "132";
+                console.log(file);
+                var timestamp = new Date().getTime();
+
+                var storeAs = "attachment-file/basedData/" + timestamp + "/" + file['name'];
+                var uploadPath = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/" + storeAs;
+                /*将这段字符串存到数据库即可*/
+                var divId = "_attachment";
+                multipartUploadWithSts(storeAs, file, attachmentId, attachmentFlag, uploadPath, divId, "0",1,idx,prefix);
+            }
+            $(prefix+"_file").val(123)
+            //var idx1 = $("#workBaseDataList tr").length +1;
+        }
     </script>
 </head>
 <body>
 <div class="single-form">
     <div class="container${container}">
-        <form:form id="inputForm" modelAttribute="materialProjectInfo" action="${ctx}/project/contractMaterial/save"  method="post" class="form-horizontal">
+        <form:form id="inputForm" modelAttribute="materialProjectInfo" action="${ctx}/projectcontentinfo/projectcontentinfo/save"  method="post" class="form-horizontal">
             <form:hidden path="id"/>
             <form:hidden path="edit"/>
             <form:hidden path="parentIds"/>
@@ -429,6 +487,9 @@
             <form:hidden path="project.id"/>
             <form:hidden path="contract.id"/>
             <form:hidden path="projectContentData.id"/>
+            <input type="hidden" name="projectContentData.contractId" value="${materialProjectInfo.contract.id}">
+            <input type="hidden" name="projectContentData.type" value="421">
+            <input type="hidden" id="projectId" value="${concealProjectInfo.project.id}">
             <input type="hidden" id="contentDeta" name="projectContentData.contentDetail">
             <input type="hidden" id="dataBodyList" name="dataBodyList" value="">
             <input type="hidden" id="projectContentDataSign" name="projectContentDataSign" value="">
@@ -506,7 +567,19 @@
                 <c:forEach items="${materialProjectInfo.projectContentData.projectBasedDataList}" var="projectBasedData" varStatus="idx">
                     <tr>
                         <td class="hide">
-                            <input type="hidden" id="workBaseDataList${idx.index}_id" value="${projectBasedData.id}" class="clientId">
+                            <input id="workBaseDataList${idx.index}_id"      name="projectReportData.projectBasedDataList[${idx.index}].id"     type="hidden" value="${projectBasedData.id}"  class="clientId">
+                            <input id="workBaseDataList${idx.index}_file" type="file" name="projectReportData.projectBasedDataList[${idx.index}].file" multiple="multiple" style="display: none;" onChange="if(this.value)insertAccording(this.value,${idx.index},'#workBaseDataList${idx.index}');"/>
+                            <input id="workBaseDataList${idx.index}_number"	 name="projectReportData.projectBasedDataList[${idx.index}].number" type="hidden" value="${projectBasedData.number}"/>
+                            <input id="workBaseDataList${idx.index}_name" 	 name="projectReportData.projectBasedDataList[${idx.index}].name"   type="hidden" value="${projectBasedData.name}"/>
+                            <input id="workBaseDataList${idx.index}_type"	 name="projectReportData.projectBasedDataList[${idx.index}].type"   type="hidden" value="${projectBasedData.type}"/>
+                            <input id="workBaseDataList${idx.index}_flag"	 name="projectReportData.projectBasedDataList[${idx.index}].flag"   type="hidden" value="132"/>
+                            <input id="workBaseDataList${idx.index}_chooseCondition"	 name="projectReportData.projectBasedDataList[${idx.index}].chooseCondition"   type="hidden" value="${projectBasedData.chooseCondition}"/>
+
+                            <input id="workBaseDataList${idx.index}_fileType"	 name="projectReportData.projectBasedDataList[${idx.index}].fileType"   type="hidden" value=""/>
+                            <input id="workBaseDataList${idx.index}_fileName"	 name="projectReportData.projectBasedDataList[${idx.index}].fileName"   type="hidden" value=""/>
+                            <input id="workBaseDataList${idx.index}_fileUrl"	 name="projectReportData.projectBasedDataList[${idx.index}].fileUrl"   type="hidden" value=""/>
+                            <input id="workBaseDataList${idx.index}_fileAttachmentFlag"	 name="projectReportData.projectBasedDataList[${idx.index}].fileAttachmentFlag"   type="hidden" value=""/>
+                            <input id="workBaseDataList${idx.index}_fileAttachmentId"	 name="projectReportData.projectBasedDataList[${idx.index}].fileAttachmentId"   type="hidden" value=""/>
                         </td>
                         <td style="text-align:center;">
                                 ${projectBasedData.number}
@@ -533,6 +606,50 @@
             </table>
                 </div>
             </div>
+            <script type="text/template" id="workBaseDataTplFirst">//<!--
+                <tr id="budgetList{{idx}}">
+                    <td class="hide">
+                            <input id="workBaseDataList{{idx}}_file" type="file" name="projectContentData.projectBasedDataList[{{idx}}].file" multiple="multiple" style="display: none;" onChange="if(this.value)insertAccording(this.value,{{idx}},'#workBaseDataList{{idx}}');"/>
+                            <input id="workBaseDataList{{idx}}_flag"	 name="projectContentData.projectBasedDataList[{{idx}}].flag"   type="hidden" value="132"/>
+                            <input id="workBaseDataList{{idx}}_chooseCondition"	 name="projectContentData.projectBasedDataList[{{idx}}].chooseCondition"   type="hidden" value="{{row.chooseCondition}}"/>
+
+                        <input id="workBaseDataList{{idx}}_id" name="projectContentData.projectBasedDataList[{{idx}}].id" type="hidden" value="{{row.id}}" class="clientId"/>
+                        <input id="workBaseDataList{{idx}}_number" name="projectContentData.projectBasedDataList[{{idx}}].number" type="hidden" value="{{row.number}}"/>
+                        <input id="workBaseDataList{{idx}}_name" name="projectContentData.projectBasedDataList[{{idx}}].name" type="hidden" value="{{row.name}}"/>
+                        <input id="workBaseDataList{{idx}}_type" name="projectContentData.projectBasedDataList[{{idx}}].type" type="hidden" value="{{row.type}}"/>
+
+                        <input id="workBaseDataList{{idx}}_fileType"	 name="projectContentData.projectBasedDataList[{{idx}}].fileType"   type="hidden" value=""/>
+                        <input id="workBaseDataList{{idx}}_fileName"	 name="projectContentData.projectBasedDataList[{{idx}}].fileName"   type="hidden" value=""/>
+                        <input id="workBaseDataList{{idx}}_fileUrl"	 name="projectContentData.projectBasedDataList[{{idx}}].fileUrl"   type="hidden" value=""/>
+                        <input id="workBaseDataList{{idx}}_fileAttachmentFlag"	 name="projectContentData.projectBasedDataList[{{idx}}].fileAttachmentFlag"   type="hidden" value=""/>
+                        <input id="workBaseDataList{{idx}}}_fileAttachmentId"	 name="projectContentData.projectBasedDataList[{{idx}}].fileAttachmentId"   type="hidden" value=""/>
+                    </td>
+                    <%--<td style="text-align:center;">
+                        {{row.number}}
+                    </td>--%>
+                    <td style="text-align:center;">
+                        {{row.name}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.typeLabel}}
+                    </td>
+                    <td style="text-align:center;">
+                        <div id="workBaseDataList{{idx}}_fileTypeDiv">
+                        </div>
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.uploadUser.name}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.uploadDate}}
+                    </td>
+                    <td class="text-center op-td">
+                        <div id="workBaseDataList{{idx}}_operation">
+                            <a href=javascript:void(0); onclick="accordingBtn(this, '#workBaseDataList{{idx}}','{{row.uploadUser.id}}')"   class="op-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i> 添加附件</a>
+                        </div>
+                    </td>
+                </tr>//-->
+            </script>
             <script type="text/template" id="workBaseDataTpl">//<!--
                 <tr id="budgetList{{idx}}">
                     <td class="hide">
@@ -563,6 +680,7 @@
             </script>
             <script type="text/javascript">
                 var workBaseDataTpl = $("#workBaseDataTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+                var workBaseDataTplFirst = $("#workBaseDataTplFirst").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
                 var workBaseDataRowIdx = ${fn:length(materialProjectInfo.projectReportData.projectBasedDataList)};
                 function setValuee(obj){
                     for(var i=0;i<obj.length;i++){

+ 1 - 1
src/main/webapp/webpage/modules/projectrecord/design/projectDesignForm.jsp

@@ -487,7 +487,7 @@
             <form:hidden path="project.id"/>
             <form:hidden path="contract.id"/>
             <form:hidden path="projectContentData.id"/>
-            <input type="hidden" name="project.workContractInfo.id" value="${concealProjectInfo.contract.id}">
+            <input type="hidden" name="projectContentData.contractId" value="${concealProjectInfo.contract.id}">
             <input type="hidden" name="projectContentData.type" value="43">
             <input type="hidden" id="contentDeta" name="projectContentData.contentDetail">
             <input type="hidden" id="dataBodyList" name="dataBodyList" value="">

+ 1 - 1
src/main/webapp/webpage/modules/projectrecord/distributionSettlement/distributionSettlementForm.jsp

@@ -491,7 +491,7 @@
             <form:hidden path="project.id"/>
             <form:hidden path="contract.id"/>
             <form:hidden path="projectContentData.id"/>
-            <input type="hidden" name="project.workContractInfo.id" value="${concealProjectInfo.contract.id}">
+            <input type="hidden" name="projectContentData.contractId" value="${concealProjectInfo.contract.id}">
             <input type="hidden" name="projectContentData.type" value="412">
             <input type="hidden" id="projectId" value="${concealProjectInfo.project.id}">
             <input type="hidden" id="contentDeta" name="projectContentData.contentDetail">

+ 1 - 1
src/main/webapp/webpage/modules/projectrecord/implementStage/projectInterimPaymentForm.jsp

@@ -493,7 +493,7 @@
             <form:hidden path="contract.id"/>
             <form:hidden path="projectContentData.id"/>
             <input type="hidden" id="projectId" value="${concealProjectInfo.project.id}">
-            <input type="hidden" name="project.workContractInfo.id" value="${concealProjectInfo.contract.id}">
+            <input type="hidden" name="projectContentData.contractId" value="${concealProjectInfo.contract.id}">
             <input type="hidden" name="projectContentData.type" value="420">
             <input type="hidden" id="contentDeta" name="projectContentData.contentDetail">
             <input type="hidden" id="dataBodyList" name="dataBodyList" value="">

+ 515 - 0
src/main/webapp/webpage/modules/projectrecord/monthly/monthlyConsultationReportList.jsp

@@ -0,0 +1,515 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目登记</title>
+	<meta name="decorator" content="default"/>
+    <link href="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.css" rel="stylesheet" />
+    <style>
+        .layui-table th{
+            font-size: 14px;
+            /*表头内容居中显示*/
+            text-align: center;
+        }
+		.pid{
+			font-size:14px;
+			font-weight:400;
+		}
+    </style>
+	<script type="text/javascript">
+        $(document).ready(function() {
+
+            //搜索框收放
+            $('#moresee').click(function(){
+                if($('#moresees').is(':visible'))
+                {
+                    $('#moresees').slideUp(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+                }else{
+                    $('#moresees').slideDown(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+                }
+            });
+            laydate.render({
+                elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+        });
+
+        function reset() {
+            $("#searchForm").resetForm();
+        }
+
+        function openDialog(title,url,width,height,target) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url,
+                skin: 'three-btns',
+                btn: ['送审', '暂存', '关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+
+        function openDialogre(title,url,width,height,target,buttons) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            var split = buttons.split(",");
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                skin: 'three-btns',
+                content: url,
+                btn: split,
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    if(split.length==2){return}
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row contentShadow shadowLR" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="projectImplementEarly" action="${ctx}/project/monthlyConsultationReport/" method="post" class="form-inline">
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+					<div class="commonQuery lw6">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">项目名称:</label>
+							<div class="layui-input-block">
+								<form:input path="projectName" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">项目负责人:</label>
+							<div class="layui-input-block">
+								<form:input path="leaderNameStr" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+								<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+					<div id="moresees" style="clear:both;display:none;" class="lw6">
+						<%--<div class="layui-item query athird ">
+							<label class="layui-form-label">合同名称:</label>
+							<div class="layui-input-block">
+								<input type="text" input="workContractInfoName" name="workContractInfo.name" value="" htmlEscape="false" maxlength="255"  class=" form-control layui-input">
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">委托方:</label>
+							<div class="layui-input-block">
+								<input type="text" input="workContractInfoClientName" name="workContractInfo.client.name" value="" htmlEscape="false" maxlength="255"  class=" form-control layui-input">
+							</div>
+						</div>--%>
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-form contentDetails contentShadow shadowLBR">
+				<div class="nav-btns">
+					<button class="nav-btn layui-btn" id="btn-expand">全部展开</button>
+					<button class="nav-btn layui-btn-warm" id="btn-fold">全部折叠</button>
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+
+                    <div style="clear: both;"></div>
+				</div>
+                <table id="permissionTable" class="layui-table" lay-filter="permissionTable"></table>
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+
+    resizeListTable();
+    $("a").on("click",addLinkVisied);
+</script>
+<script>
+    resizeListWindow2();
+    $(window).resize(function(){
+        resizeListWindow2();
+    });
+</script>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script src="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.js" charset="utf-8"></script>
+<script>
+    /*使用模块加载的方式 加载文件*/
+    layui.config({
+        base: '${ctx}/resoueces/css/layui/module/'
+    }).extend({
+        treetable: 'treetable-lay/treetable'
+    }).use(['layer', 'table', 'treetable'], function () {
+        var $ = layui.jquery;
+        var table = layui.table;
+        var layer = layui.layer;
+        var treetable = layui.treetable;
+
+        // 渲染表格
+        var renderTable = function () {
+        	var projectName = $("#projectName").val();
+        	var workContractInfoName = $("#workContractInfoName").val();
+        	var workContractInfoClientName = $("#workContractInfoClientName").val();
+        	if(undefined == workContractInfoName){
+				workContractInfoName = "";
+			}
+        	if(undefined == workContractInfoClientName){
+				workContractInfoClientName = "";
+			}
+            layer.load(2);
+            treetable.render({
+                treeColIndex: 1,//树形图标显示在第几列
+                treeSpid: 0,//最上级的父级id
+                treeIdName: 'permissionId',//id字段的名称
+                treePidName: 'pid',//pid字段的名称
+                treeDefaultClose: true,//是否默认折叠
+                treeLinkage: true,//父级展开时是否自动展开所有子级
+                elem: '#permissionTable',
+                url: '${ctx}/project/monthlyConsultationReport/getProjectList?projectId=${projectRecords.id}&pageNo=${page.pageNo}&projectName='+$("#projectName").val()+'&leaderNameStr='+$("#leaderNameStr").val()+'&workContractInfo.name='+workContractInfoName+'&workContractInfo.client.name='+workContractInfoClientName,
+                page: false,
+                cols: [[
+                    {type: 'numbers', align:'center', title: '序号' ,width:80},
+                    {field: 'projectId', title: '项目编号/月报编号'},
+                    {field: 'projectName', align:'center', title: '项目名称/月报名称',templet:function(d){
+                    	if(0 == d.pid){
+							return "<a class=\"attention-info pid\" title=\"" + d.projectName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目', '${ctx}/project/projectRecords/view?id=" + d.id +"','95%', '95%')\">" + d.projectName + "</a>";
+						}else{
+							return "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看月报内容',    '${ctx}/project/monthlyConsultationReport/form?view=view&dictType=&id="+d.id+"&project.id="+d.pid+"&infoId="+d.id+"','95%', '95%')\">" + d.projectName + "</a>";
+						}
+						}},
+                    {field: 'projectLeader', align:'center', title: '项目负责人',templet: function(d){
+							if(0 == d.pid){
+								return "<font style = 'font-size:14px;font-weight:500;'>"+d.projectLeader+"</font>";
+							}else{
+								return "<font>"+d.projectLeader+"</font>";
+							}
+						}},
+                    {field: 'projectRegistrant', align:'center', title: '登记人',templet: function(d){
+							if(0 == d.pid){
+								return "<font style = 'font-size:14px;font-weight:500;'>"+d.projectRegistrant+"</font>";
+							}else{
+								return "<font>"+d.projectRegistrant+"</font>";
+							}
+						}},
+                    {field: 'createDate', align:'center', title: '登记日期',width:100,templet: function(d){
+							var date=d.createDate;
+							date=date.replace(new RegExp(/-/gm) ,"/");
+
+							if(0 == d.pid){
+								return "<font style = 'font-size:14px;font-weight:500;'>"+layui.util.toDateString(date,'yyyy-MM-dd')+"</font>";
+							}else{
+								return "<font>"+layui.util.toDateString(date,'yyyy-MM-dd')+"</font>";
+							}
+						}},
+                    {templet: complain, align:'center', title: '操作',width:130}
+                ]],
+                done: function () {
+                    layer.closeAll('loading');
+                }
+            });
+        };
+
+        renderTable();
+
+        //触发三个button按钮
+        $('#btn-expand').click(function () {
+            treetable.expandAll('#permissionTable');
+        });
+
+        $('#btn-fold').click(function () {
+            treetable.foldAll('#permissionTable');
+        });
+
+        $('#btn-refresh').click(function () {
+            renderTable();
+        });
+
+
+        function complain(d){//操作中显示的内容
+			if(d.pid=="0") {
+				if(1 == d.operationSign) {
+					return [
+						'<a href="javascript:void(0)" onclick="openDialogreAudit(\'新增工作内容\', \'${ctx}/project/monthlyConsultationReport/form?view=before&dictType=&parentIds=&projectContentId='+d.projectContentId+'&project.id=' + d.id +'\',\'95%\',\'95%\')" style=\"color: white;background: darkseagreen\" class="op-btn op-btn-add" ><i class="fa fa-plus"></i> 新增</a>',
+					].join('');
+				}else{
+					return [
+						'',
+					].join('');
+				}
+			} else if (d.pid!="0"){
+				if(1 == d.operationSign) {
+					if(d.status ==null){
+						//子级内容
+						return [
+							'<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改工作内容\', \'${ctx}/project/monthlyConsultationReport/form?dictType=&id='+d.id+'&project.id='+d.pid+'&infoId='+d.id+'\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 编辑</a>',
+							'<a href="${ctx}/project/monthlyConsultationReport/delete?id='+d.id+'" onclick="return confirmx(\'确认要删除该月报信息吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+						].join('');
+
+					}else{
+						return [
+							'',
+						].join('');
+					}
+
+				}else{
+					return [
+						'',
+					].join('');
+				}
+			}else{
+				return[''].join('');
+			}
+        }
+        //监听工具条
+        table.on('tool(permissionTable)', function (obj) {
+            var data = obj.data;
+            var layEvent = obj.event;
+            if(data.permissionName!=null){
+                if (layEvent === 'del') {
+                    layer.msg('删除' + data.id);
+                } else if (layEvent === 'edit') {
+                    layer.msg('修改' + data.id);
+                }
+            }
+        });
+    });
+
+</script>
+<script>
+	function openDialogres(title,url,width,height,target){
+
+		if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+			width='auto';
+			height='auto';
+		}else{//如果是PC端,根据用户设置的width和height显示。
+
+		}
+		top.layer.open({
+			type: 2,
+			area: [width, height],
+			title: title,
+			skin: 'three-btns',
+			maxmin: true, //开启最大化最小化按钮
+			content: url ,
+			btn: ['提交','暂存','关闭'],
+			btn1: function(index, layero){
+				var body = top.layer.getChildFrame('body', index);
+				var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+				var inputForm = body.find('#inputForm');
+				var top_iframe;
+				if(target){
+					top_iframe = target;//如果指定了iframe,则在改frame中跳转
+				}else{
+					top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+				}
+				inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+				if(iframeWin.contentWindow.doSubmit(1) ){
+					//top.layer.close(index);//关闭对话框。
+					setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+				}
+			},
+			btn2:function(index,layero){
+				var body = top.layer.getChildFrame('body', index);
+				var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+				var inputForm = body.find('#inputForm');
+				var top_iframe;
+				if(target){
+					top_iframe = target;//如果指定了iframe,则在改frame中跳转
+				}else{
+					top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+				}
+				inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+				if(iframeWin.contentWindow.doSubmit(2) ){
+					// top.layer.close(index);//关闭对话框。
+					setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+				}
+				return false;
+			},
+			btn3: function(index){
+			}
+		});
+	}
+	function openDialogreAudit(title,url,width,height,target){
+
+		if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+			width='auto';
+			height='auto';
+		}else{//如果是PC端,根据用户设置的width和height显示。
+
+		}
+		top.layer.open({
+			type: 2,
+			area: [width, height],
+			title: title,
+			skin: 'three-btns',
+			maxmin: true, //开启最大化最小化按钮
+			content: url ,
+			btn: ['提交','关闭'],
+			btn1: function(index, layero){
+				var body = top.layer.getChildFrame('body', index);
+				var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+				var inputForm = body.find('#inputForm');
+				var top_iframe;
+				if(target){
+					top_iframe = target;//如果指定了iframe,则在改frame中跳转
+				}else{
+					top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+				}
+				inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+				if(iframeWin.contentWindow.doSubmit(1) ){
+					top.layer.close(index);//关闭对话框。
+					setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+				}
+			},
+			btn2: function(index){
+			}
+		});
+	}
+	// 确认对话框
+	function confirmxRefresh(mess, href){
+		top.layer.confirm(mess, {icon: 3, title:'系统提示'}, function(index){
+			//do something
+			if (typeof href == 'function') {
+				href();
+			}else{
+				resetTip(); //loading();
+				$.ajax({
+					url:href,
+					data:$('#loginForm').serialize(),
+					type:"post",
+					success:function(data){
+						if(data.status){
+							parent.layer.msg(data.msg,{icon:1});
+						}else {
+							parent.layer.msg(data.msg,{icon:2});
+						}
+						location = '${ctx}/project/projectRecords/list';
+					}
+				});
+			}
+			top.layer.close(index);
+		});
+		return false;
+	}
+</script>
+</body>
+</html>

+ 921 - 0
src/main/webapp/webpage/modules/projectrecord/monthly/monthlyContentForm.jsp

@@ -0,0 +1,921 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作内容详情管理</title>
+	<meta name="decorator" content="default"/>
+    <script src="${ctxStatic}/layer-v2.3/layui/xmSelect.js" charset="utf-8"></script>
+    <style>
+        #projectContentDataType-error{
+            left:0;
+            top:40px;
+        }
+    </style>
+	<script type="text/javascript">
+        $.fn.serializeJson=function(){
+            var serializeObj={};
+            var array=this.serializeArray();
+            var str=this.serialize();
+            $(array).each(function(){
+                if(serializeObj[this.name]){
+                    if($.isArray(serializeObj[this.name])){
+                        serializeObj[this.name].push(this.value);
+                    }else{
+                        serializeObj[this.name]=[serializeObj[this.name],this.value];
+                    }
+                }else{
+                    serializeObj[this.name]=this.value;
+                }
+            });
+            return serializeObj;
+        };
+
+        var validateForm;
+        var detailFlag =0;
+        function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+
+                var length = document.getElementById("file_monthly");
+                var rows = length.rows.length;
+                if(rows<=0){
+                    layer.msg('请上传月报附件信息', {icon: 5});
+                    return false;
+                }
+
+                beforeSubmit();
+                $("#inputForm").submit();
+                return true;
+            }
+
+            return false;
+        }
+        function beforeSubmit() {
+            var contentDetaStr = '';
+            var contentTypeId = $("#projectContentDataSign").val();
+            /*if(contentTypeId !=24){
+                if(null !=encodeURIComponent(genDetailStr()) && '' != encodeURIComponent(genDetailStr())){
+                    contentDetaStr += encodeURIComponent(genDetailStr());
+                }
+                if(null !=encodeURIComponent(genSecondDetailStr()) && '' != encodeURIComponent(genSecondDetailStr())){
+                    contentDetaStr += encodeURIComponent(genSecondDetailStr());
+                }
+            }*/
+            if(detailFlag==1){
+                $("#contentDeta").val(contentDetaStr);
+            }
+            $(document.getElementById("projectContentDataType")).removeAttr("disabled");
+        }
+
+        $(function() {
+            var editVal = '${projectcontentinfo.edit}';
+
+            if($("#createDate").val()==null || $("#createDate").val()==''){
+                $("#createDate").val(getNowFormatDate());
+            }
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            var tp = "${projectcontentinfo.dictType}";
+            var tp2 = "${projectcontentinfo.projectContentData.id}"
+            if((tp!=null && tp!='')||(tp2!=null && tp2!='')){
+                $(document.getElementById("projectContentDataType")).attr("disabled","disabled");
+            }
+            initControlData("1");
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+            $("#monthly_btn").click(function () {
+                $("#monthly_file").click();
+            });
+        });
+
+
+        function openDialogre(title,url,width,height,formId){
+
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                skin: 'three-btns',
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                btn: ['提交','关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    inputForm.attr("action","${ctx}/projectcontentinfo/projectcontentinfo/ajaxsaveBaseData");//表单提交成功后,从服务器返回的url在当前tab中展示
+                    var $document = iframeWin.contentWindow.document;
+                    formSubmitAjax($document,formId,index);
+                },
+                btn2: function(index){
+                }
+            });
+        }
+
+        function formSubmitAjax($document,inputForm,index){
+            var validateForm = $($document.getElementById(inputForm)).validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $($document.getElementById("#messageBox")).text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            if(validateForm.form()){
+                $($document.getElementById(inputForm)).ajaxSubmit({
+                    success:function(data) {
+                        if(!data.success){
+                            top.layer.msg("保存依据资料信息异常!",{icon:2});
+                            return false;
+                        }
+                        var idx = $("#workBaseDataList tr").length;
+                        addRowBaseData("#workBaseDataList",idx,workBaseDataTpl,data.body.workBasedData);
+                        parent.layer.msg(data.msg,{icon:1});
+                        top.layer.close(index)
+                    }
+                });
+            }
+        }
+
+        function getNowFormatDate() {
+            var date = new Date();
+            var seperator1 = "-";
+            var month = date.getMonth() + 1;
+            var strDate = date.getDate();
+            month = (month < 10)?"0"+month:month;
+            strDate = (strDate < 10)?"0"+strDate:strDate;
+            var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate;
+            return currentdate;
+        }
+
+        function accordingBtn(obj, prefix){
+            //var id = $(prefix+"_id").val();
+            $(prefix+"_file").click();
+        }
+
+        function insertAccording(tValue,idx,prefix) {
+            var files = $(prefix+"_file")[0].files;
+            for(var i=0;i<files.length;i++) {
+                var file = files[i];
+                var attachmentId = "";
+                var attachmentFlag = "132";
+                console.log(file);
+                var timestamp = new Date().getTime();
+
+                var storeAs = "attachment-file/basedData/" + timestamp + "/" + file['name'];
+                var uploadPath = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/" + storeAs;
+                /*将这段字符串存到数据库即可*/
+                var divId = "_attachment";
+                multipartUploadWithSts(storeAs, file, attachmentId, attachmentFlag, uploadPath, divId, "0",1,idx,prefix);
+            }
+            $(prefix+"_file").val(123)
+        }
+
+
+
+        function addFile() {
+            $("#attachment_file").click();
+        }
+        function addMonthlyFile() {
+            $("#monthly_file").click();
+        }
+
+        function insertTitle(tValue){
+            var files = $("#attachment_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "94";
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/projectContentData/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,0);}
+        }
+
+        function insertMonthlyTitle(tValue){
+            var files = $("#monthly_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var monthlyId = "";
+            var monthlyFlag = "94";
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/projectContentData/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_monthly";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,monthlyId,monthlyFlag,uploadPath,divId,0);}
+        }
+
+        function openDialogreControl(title,url,width,height,target){
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                skin: 'three-btns',
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                btn: ['提交','关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    var $document = iframeWin.contentWindow.document;
+                    var index1 = parent.layer.load(0, {shade: [0.1, 'tranparent']});
+                    formSubmit($document,"inputForm",index,index1);
+                },
+                btn2: function(index){
+                    parent.layer.close(index)
+                },
+                end:function(index){
+                    parent.layer.close(index)
+                }
+            });
+        }
+        function formSubmit($document,inputForm,index,index1){
+            var validateForm = $($document.getElementById(inputForm)).validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $($document.getElementById("#messageBox")).text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            if(validateForm.form()){
+                $($document.getElementById(inputForm)).ajaxSubmit({
+                    success:function(data) {
+                        parent.parent.layer.msg("操作成功",{icon:1})
+                        parent.parent.layer.close(index1)
+                        parent.layer.close(index1)
+                        parent.parent.layer.close(index)
+                        parent.layer.close(index)
+                        initGetControlData();
+                    },error:function(){
+                        parent.parent.layer.msg("操作失败",{icon:2})
+                        parent.parent.layer.close(index1)
+                        parent.layer.close(index1)
+                        parent.parent.layer.close(index)
+                        parent.layer.close(index)
+                        initControlData("1");
+                    }
+                });
+            }else {
+                parent.parent.layer.msg("信息未填写完整!", {icon: 2});
+                parent.layer.close(index1)
+                parent.parent.layer.close(index1)
+            }
+        }
+        /**
+         * 删除临时数据
+         */
+        function initControlData(obj,othis,del,tableId){
+            if(del == "del"){
+                proId = tableId;
+			}else{
+                proId = "";
+			}
+            $.ajax({
+                type:'post',
+                url:'${ctx}/projectcontroltable/projectControlTable/delControlData',
+                data:{
+                    "projectId":"${projectcontentinfo.project.id}",
+					"projectContentId":proId,
+					"flag":del
+                },
+                success:function(data){
+                    if(obj != "1"){
+                        if(data.flag){
+                            //$(othis).parent().parent().parent().remove();
+                            parent.layer.msg("数据删除成功",{icon:1})
+                            $(othis).remove()
+                        }else{
+                            parent.layer.msg("数据删除失败",{icon:2})
+                        }
+                    }
+                }
+            })
+        }
+
+        function getMatchDate(str){
+            var reDateTime = /^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1]))/
+            var date = (""+str).match(reDateTime);
+            if(date){
+                return date[0]
+            }else{
+                return "";
+            }
+        }
+
+        /**
+         * 获取临时数据
+         * @param obj
+         * @param othis
+         */
+        function initGetControlData(){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/projectcontroltable/projectControlTable/getControlData',
+                data:{
+                    "projectId":"${projectcontentinfo.project.id}",
+                    "proId":"${projectcontentinfo.projectContentData.id}"
+                },
+                success:function(data){
+                    if(data){
+                        var htmlStr = '';
+                        data = data.list.projectControlTableList;
+                        for(var i=0;i<data.length;i++){
+                            htmlStr += "<tr id='tr"+i+"'>"+
+                                "   <td style='text-align:center;'>"+
+                                "	   "+data[i].tName+
+                                "	   <input type='hidden' name='projectContentData.projectControlTableList["+i+"].id' value='"+data[i].id+"'>"+
+                                "	   <input type='hidden' name='projectContentData.projectControlTableList["+i+"].tName' value='"+data[i].tName+"'>"+
+                                "	   <input type='hidden' name='projectContentData.projectControlTableList["+i+"].processName' value='"+data[i].processName+"'>"+
+                                "	   <input type='hidden' name='projectContentData.projectControlTableList["+i+"].pfId' value='"+data[i].pfId+"'>"+
+                                "   </td>"+
+                                "   <td style='text-align:center;'>" +
+                                "  			"+data[i].processName+
+                                "	   		<input type='hidden' name='projectContentData.projectControlTableList["+i+"].tType' value='"+data[i].tType+"'>"+
+                                "	</td>"+
+                                "   <td style='text-align:center;'>"+
+                                "  		"+data[i].tUser.name+
+                                "   </td>"+
+                                "   <td style='text-align:center;'>"+
+                                "  "+ getMatchDate(data[i].createDate)+
+                                //										"	    <input type='hidden' name='projectControlTableList["+i+"].createDate' value='"+data[i].createDate+"'>"+
+                                //										"	    <input type='hidden' name='projectControlTableList["+i+"].updateDate' value='"+data[i].updateDate+"'>"+
+                                //										"	    <input type='hidden' name='projectControlTableList["+i+"].delFlag' value='"+data[i].delFlag+"'>"+
+                                //										"	    <input type='hidden' name='projectControlTableList["+i+"].createBy.id' value='"+data[i].createBy.id+"'>"+
+                                "   </td>"+
+                                "   <td style='text-align:center;'>"+
+                                "   	<a href='javascript:void(0)' onclick=\"openDialogView('查看过程控制明细', '${ctx}/projectcontroltable/projectControlTable/form?view=view&id="+data[i].id+"','90%', '90%')\" class='btn btn-info btn-xs' ><i class='fa fa-search-plus'></i> 查看</a>"+
+                                "  		<a href=\"javascript:initControlData('0','#tr"+i+"','del','"+data[i].id+"')\" onclick=\"return confirmx('确认要删除该过程控制数据吗?', this.href)\"   class='btn btn-danger btn-xs'><i class='fa fa-trash'></i> 删除</a>"+
+                                "  </td>"+
+                                "</tr>";
+                        }
+                        if(htmlStr){
+                            $("#projectControlTables").html(htmlStr);
+                        }
+                    }
+                }
+            })
+        }
+
+        function formatNum(obj) {
+            var val = $(obj).val();
+            console.log("-----------val"+val);
+            if(!isNumber(val))return;
+            var money = parseFloat((val + "").replace(/[^\d\.-]/g, "")).toFixed(2) + "";
+            var l = money.split(".")[0].split("").reverse(),
+                r = money.split(".")[1];
+            t = "";
+            for(i = 0; i < l.length; i ++ )
+            {
+                t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
+            }
+            $(obj).val(t.split("").reverse().join("") + "." + r);
+        }
+        function isNumber(val){
+            if(val === "" || val ==null){
+                return false;
+            }
+            var regPos = /^\d+(\.\d+)?$/; //非负浮点数
+            var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数
+            if(regPos.test(val) || regNeg.test(val)){
+                return true;
+            }else{
+                return false;
+            }
+
+        }
+        $(document).ready(function() {
+            laydate.render({
+                elem: '#monthlyDate',
+                event: 'focus',
+                type: 'month'
+            });
+        })
+    </script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container${container}">
+        <form:form id="inputForm" modelAttribute="projectcontentinfo" action="${ctx}/project/monthlyConsultationReport/save?view=content&condition=${flag}" method="post" class="form-horizontal">
+            <form:hidden path="id"/>
+            <form:hidden path="edit"/>
+            <form:hidden path="parentIds"/>
+            <form:hidden path="project.id"/>
+            <form:hidden path="projectContentData.id"/>
+            <form:hidden path="projectContentData.contractId"/>
+            <input type="hidden" id="contentDeta" name="projectContentData.contentDetail">
+            <input type="hidden" id="dataBodyList" name="dataBodyList" value="">
+            <input type="hidden" id="projectContentDataSign" name="projectContentDataSign" value="">
+            <input type="hidden" id="modify"  value="${modify}">
+            <sys:message content="${message}"/>
+            <div class="form-group layui-row first lw12">
+                <div class="form-group-label"><h2>基本信息</h2></div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">项目名称:</label>
+                    <div class="layui-input-block">
+                        <form:input path="project.projectName" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">项目编号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="project.projectId" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">类型:</label>
+                    <div class="layui-input-block">
+                        <form:input path="projectContentData.type" value="按月出具跟踪咨询报告" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">月报内容编号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="monthlyNumber" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>月报内容名称:</label>
+                    <div class="layui-input-block">
+                        <form:input path="monthlyName" htmlEscape="false" class="form-control required layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>负责人:</label>
+                    <div class="layui-input-block">
+                        <form:input path="projectContentData.master.name" htmlEscape="false"  readonly="true"  class="form-control layui-input required"/>
+                        <form:hidden path="projectContentData.master.id" htmlEscape="false"  readonly="true"  class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>月报时间:</label>
+                    <div class="layui-input-block">
+                        <input  id="monthlyDate" name="monthlyDate"  type="text" class="form-control layui-input required"
+                               value="<fmt:formatDate value="${projectcontentinfo.monthlyDate}" pattern="yyyy-MM"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>创建日期:</label>
+                    <div class="layui-input-block">
+                        <input id="createDate" name="projectContentData.createDate" type="text" readonly="true" maxlength="20" class="form-control layui-input required"
+                               value="<fmt:formatDate value="${createDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>月报基本内容信息</h2></div>
+                <div class="layui-item layui-col-sm12 with-textarea">
+                    <div class="layui-input-block">
+                        <form:textarea path="monthlyContent" htmlEscape="false" maxlength="1000" rows="6"    class="form-control"/>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>依据性资料明细</h2></div>
+                <div class="layui-item nav-btns">
+                    <a href="javascript:void(0)" onclick="openDialogre('新增依据性资料', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=basedData&dictType=${projectcontentinfo.dictType}&id=${projectcontentinfo.id}&parentIds=${projectcontentinfo.parentIds}&project.id=${projectcontentinfo.project.id}','90%','90%','inputForm')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
+
+                    <sys:gridselectBaseData url="${ctx}/projectcontentinfo/projectBasedData/selectList" id="baseData" title="选择依据资料"
+                                            cssClass="form-control" projectId="${projectcontentinfo.project.id}" fieldLabels="" fieldKeys=""  searchLabel="${fns:urlEncode('依据资料名称')}" searchKey="name"></sys:gridselectBaseData>
+                </div>
+                <div class="layui-item layui-col-xs12 form-table-container">
+                    <table id="contentTableBase" class="table table-bordered table-condensed details">
+                        <thead>
+                        <tr>
+                            <th class="hide"></th>
+                            <th >资料编号</th>
+                            <th >资料名称</th>
+                            <th >资料类别</th>
+                            <th >上传人</th>
+                            <th >上传日期</th>
+                            <th>操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workBaseDataList">
+                        <c:forEach items="${projectcontentinfo.projectContentData.projectBasedDataList}" var="projectBasedData" varStatus="idx">
+                            <tr>
+                                <td class="hide">
+                                    <input type="hidden" id="workBaseDataList${idx.index}_id" value="${projectBasedData.id}" class="clientId">
+                                </td>
+                                <td style="text-align:center;">
+                                        ${projectBasedData.number}
+                                </td>
+                                <td style="text-align:center;">
+                                        ${projectBasedData.name}
+                                </td>
+                                <td style="text-align:center;">
+                                        ${fns:getDictLabel(projectBasedData.type, 'project_document_type', '')}
+                                </td>
+                                <td style="text-align:center;">
+                                        ${projectBasedData.uploadUser.name}
+                                </td>
+                                <td style="text-align:center;">
+                                    <fmt:formatDate value="${projectBasedData.uploadDate}" pattern="yyyy-MM-dd"/>
+                                </td>
+
+                                <td class="text-center op-td">
+                                    <a href=javascript:void(0); onclick="delRowBaseData(this, '#workBaseDataList${idx.index}','${projectBasedData.uploadUser.id}')"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+            <script type="text/template" id="workBaseDataTpl">//<!--
+                <tr id="budgetList{{idx}}">
+                    <td class="hide">
+                        <input id="workBaseDataList{{idx}}_id" name="projectContentData.projectBasedDataList[{{idx}}].id" type="hidden" value="{{row.id}}" class="clientId"/>
+                        <input id="workBaseDataList{{idx}}_number" name="projectContentData.projectBasedDataList[{{idx}}].number" type="hidden" value="{{row.number}}"/>
+                        <input id="workBaseDataList{{idx}}_name" name="projectContentData.projectBasedDataList[{{idx}}].name" type="hidden" value="{{row.name}}"/>
+                        <input id="workBaseDataList{{idx}}_type" name="projectContentData.projectBasedDataList[{{idx}}].type" type="hidden" value="{{row.type}}"/>
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.number}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.name}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.typeLabel}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.uploadUser.name}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.uploadDate}}
+                    </td>
+                    <td class="text-center op-td">
+                        <a href=javascript:void(0); onclick="delRowBaseData(this, '#workBaseDataList{{idx}}','{{row.uploadUser.id}}')"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
+                    </td>
+                </tr>//-->
+            </script>
+            <script type="text/javascript">
+                var workBaseDataTpl = $("#workBaseDataTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+                var workBaseDataRowIdx = ${fn:length(projectcontentinfo.projectReportData.projectBasedDataList)};
+                function setValuee(obj){
+                    for(var i=0;i<obj.length;i++){
+                        var idArr = $("#workBaseDataList tr:visible .clientId");
+                        if(obj[i].id!=''&&!hasInArr(obj[i].id,idArr)){
+                            addRowBaseData("#workBaseDataList",workBaseDataRowIdx,workBaseDataTpl,obj[i]);
+                            workBaseDataRowIdx=workBaseDataRowIdx+1;
+                        }
+                    }
+                }
+                function hasInArr(id,idArr) {
+                    for(var i=0;i<idArr.length;i++){
+                        if(id==$(idArr[i]).val()){
+                            return true;
+                        }
+                    }
+                    return false;
+                }
+                function existBaseData(id,length) {
+                    for (var i=0;i<length;i++) {
+                        var val = $('#workBaseDataList'+i+'_id').val();
+                        if(id==val){
+                            return true;
+                        }
+                    }
+                    return false;
+                }
+
+                function addRowBaseData(list, idx, tpl, row){
+                    bornTemplete(list, idx, tpl, row, idx);
+                }
+
+                function bornTemplete(list, idx, tpl, row, idx1){
+                    var idx1 = $("#workBaseDataList tr").length +1;
+                    $(list).append(Mustache.render(tpl, {
+                        idx: idx, delBtn: true, row: row,
+                        order:idx1 + 1, idx1:idx1
+                    }));
+                    $(list+idx).find("select").each(function(){
+                        $(this).val($(this).attr("data-value"));
+                    });
+                    $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                        var ss = $(this).attr("data-value").split(',');
+                        for (var i=0; i<ss.length; i++){
+                            if($(this).val() == ss[i]){
+                                $(this).attr("checked","checked");
+                            }
+                        }
+                    });
+                }
+                function delRowBaseData(obj, prefix,userId){
+                    var id = $(prefix+"_id").val();
+                    var currentUser = '${fns:getUser().id}';
+                    var contentId = '${projectcontentinfo.projectContentData.id}';
+                    console.log(contentId);
+                    var condition = "${flag}";
+                    $.ajax({
+                        type:"post",
+                        url:'${ctx}/projectcontentinfo/projectContentData/ajaxdelete',
+                        data:{"contentId":contentId,"basedId":id,"condition":condition},
+                        dataType:"json",
+                        success:function(data){
+                            if(data.success) {
+                                if("according" == condition || "completion" == condition || "early" == condition || "claim" == condition || "design" == condition || "visa" == condition || "interim" == condition || "distribution" == condition ){
+                                    $(obj).parent().parent().parent().remove();
+                                }else{
+                                    $(obj).parent().parent().remove();
+                                }
+                                if(data.body.inuse){
+                                    return;
+                                }
+                                if (currentUser == userId) {
+                                    confirmDelete('是否同步删除资料库的文件?','${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+id+'&id=${projectcontentinfo.id}&type=1');
+                                }
+                            }else {
+                                top.layer.msg("删除依据资料失败!", {icon: 0});
+                            }
+                        }
+                    })
+                    return;
+                }
+
+                function confirmDelete(mess, href){
+                    top.layer.confirm(mess, {icon: 3, title:'系统提示'}, function(index){
+                        //do something
+                        if (typeof href == 'function') {
+                            href();
+                        }else{
+                            $.ajax({
+                                url:href,
+                                type:"post",
+                                success:function(data){
+                                    if(data.success){
+                                        top.layer.msg("删除依据资料成功!", {icon: 0});
+                                    }
+                                }
+                            });
+                        }
+                        top.layer.close(index);
+                    });
+                    return false;
+                }
+            </script>
+            <%--<div class="form-group layui-row">
+                <div class="form-group-label"><h2>过程控制明细</h2></div>
+                <div class="layui-item nav-btns">
+                    <a href="javascript:void(0)" onclick="openDialogreControl('新增控制表格', '${ctx}/projectcontroltable/projectControlTable/form?pfId=${projectcontentinfo.project.id}','90%','90%',false,'inputForm')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
+                </div>
+                <div class="layui-item layui-col-xs12 form-table-container">
+                    <table id="contentTable" class="table table-bordered table-condensed details">
+                        <thead>
+                            <tr>
+                                <th  >表格名称</th>
+                                <th  >表格类型</th>
+                                <th  >负责人</th>
+                                <th  >创建日期</th>
+                                <th>操作</th>
+                            </tr>
+                        </thead>
+                        <tbody id="projectControlTables">
+                    <c:choose>
+                        <c:when test="${not empty projectcontentinfo.projectContentData.projectControlTableList}">
+                            <c:forEach items="${projectcontentinfo.projectContentData.projectControlTableList}" var="projectControlTable" varStatus="status">
+                                <tr id="tr${status.index}">
+                                    <td style="text-align:center;">
+                                            ${projectControlTable.tName}
+                                        <input type="hidden" name="projectContentData.projectControlTableList[${status.index}].id" value="${projectControlTable.id}">
+                                        <input type="hidden" name="projectContentData.projectControlTableList[${status.index}].tName" value="${projectControlTable.tName}">
+                                        <input type="hidden" name="projectContentData.projectControlTableList[${status.index}].pfId" value="${projectControlTable.pfId}">
+                                    </td>
+                                    <td style="text-align:center;">
+                                            ${projectControlTable.processName}
+                                        <input type="hidden" name="projectContentData.projectControlTableList[${status.index}].tType" value="${projectControlTable.tType}">
+                                    </td>
+                                    <td style="text-align:center;">
+                                            ${projectControlTable.tUser.name}
+                                    </td>
+                                    <td style="text-align:center;">
+                                        <fmt:formatDate value="${projectControlTable.createDate}" pattern="yyyy-MM-dd" />
+                                            &lt;%&ndash;<input type="hidden" name="projectControlTableList[${status.index}].createDate" value="${projectControlTable.createDate}">&ndash;%&gt;
+                                            &lt;%&ndash;<input type="hidden" name="projectControlTableList[${status.index}].updateDate" value="${projectControlTable.updateDate}">&ndash;%&gt;
+                                            &lt;%&ndash;<input type="hidden" name="projectControlTableList[${status.index}].delFlag" value="${projectControlTable.delFlag}">&ndash;%&gt;
+                                            &lt;%&ndash;<input type="hidden" name="projectControlTableList[${status.index}].createBy.id" value="${projectControlTable.createBy.id}">&ndash;%&gt;
+                                    </td>
+                                    <td class="op-td text-center">
+                                        <div class="op-btn-box">
+                                        <a href="#" onclick="openDialogView('查看过程控制明细', '${ctx}/projectcontroltable/projectControlTable/form?id=${projectControlTable.id}&view=view','90%', '90%')" class="op-btn op-btn-view" ><i class="fa fa-search-plus"></i> 查看</a>
+                                        <a href="javascript:initControlData('0','#tr${status.index}','del','${projectControlTable.id}')" onclick="return confirmx('确认要删除该过程控制数据吗?', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
+                                        </div>
+                                    </td>
+                                </tr>
+                            </c:forEach>
+                        </c:when>
+                        <c:otherwise>
+                            <tr>
+                                <td colspan="5" align="center">暂无数据</td>
+                            </tr>
+                        </c:otherwise>
+                    </c:choose>
+                    </tbody>
+                    </table>
+                </div>
+            </div>--%>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2><span class="require-item">*</span>月报附件信息</h2></div>
+                <div class="layui-item nav-btns">
+                    <a id="monthly_btn" class="nav-btn nav-btn-add" title="添加月报附件"><i class="fa fa-plus"></i>&nbsp;添加月报附件</a>
+                    <a class="nav-btn nav-btn-export" title="下载月报模板"  onclick="window.location.href='${ctx}/project/monthlyConsultationReport/downloadTemplate';"><i class="fa fa-download"></i>&nbsp;下载模板</a>
+                </div>
+                <div id="addFile_monthly" style="display: none" class="upload-progress">
+                    <span id="fileName_monthly" ></span>
+                    <b><span id="baifenbi_monthly" ></span></b>
+                    <div class="progress">
+                        <div id="jindutiao_monthly" class="progress-bar" style="width: 0%" aria-valuenow="0">
+                        </div>
+                    </div>
+                </div>
+                <input id="monthly_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertMonthlyTitle(this.value);"/>
+                <span id="monthly_title"></span>
+                <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+                    <table id="upMonthlyTable" class="table table-bordered table-condensed details">
+                        <thead>
+                        <tr>
+                            <th>文件名称</th>
+                            <th>上传人</th>
+                            <th>上传时间</th>
+                            <th width="150px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="file_monthly">
+                        <c:forEach items="${projectcontentinfo.projectContentData.workAttachments}" var = "workAttachment" varStatus="status">
+                            <c:if test="${workAttachment.divIdType =='_monthly'}">
+                                <tr>
+                                    <c:choose>
+                                        <c:when test="${fn:containsIgnoreCase(workAttachment.attachmentName,'jpg')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'png')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'gif')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'bmp')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'jpeg')}">
+                                            <td><img src="${workAttachment.url}" width="50" height="50" alt="${workAttachment.attachmentName}"/></td>
+                                        </c:when>
+                                        <c:otherwise>
+                                            <c:choose>
+                                                <c:when test="${fn:containsIgnoreCase(workAttachment.attachmentName,'pdf')}">
+                                                    <td><a href="javascript:void(0)" onclick="preview('预览','${workAttachment.url}','90%','90%','1')">${workAttachment.attachmentName}</a></td>
+                                                </c:when>
+                                                <c:otherwise>
+                                                    <td><a href="javascript:void(0)" onclick="preview('预览','${workAttachment.url}','90%','90%')">${workAttachment.attachmentName}</a></td>
+                                                </c:otherwise>
+                                            </c:choose>
+                                        </c:otherwise>
+                                    </c:choose>
+                                    <td>${workAttachment.createBy.name}</td>
+                                    <td><fmt:formatDate value="${workAttachment.createDate}" type="both"/></td>
+                                    <td class="op-td">
+                                        <div class="op-btn-box" >
+                                            <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${workAttachment.url}');" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+                                            <c:if test="${workAttachment.createBy.id eq fns:getUser().id}">
+                                                <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workAttachment.url}&id=${workAttachment.id}&type=2','addMonthlyFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i> 删除</a>
+                                            </c:if>
+                                        </div>
+                                    </td>
+                                </tr>
+                            </c:if>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>附件信息</h2></div>
+                <div class="layui-item nav-btns">
+                    <a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+                </div>
+                <div id="addFile_attachment" style="display: none" class="upload-progress">
+                    <span id="fileName_attachment" ></span>
+                    <b><span id="baifenbi_attachment" ></span></b>
+                    <div class="progress">
+                        <div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+                        </div>
+                    </div>
+                </div>
+                <input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+                <span id="attachment_title"></span>
+                <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+                    <table id="upTable" class="table table-bordered table-condensed details">
+                        <thead>
+                            <tr>
+                            <th>文件名称</th>
+                            <th>上传人</th>
+                            <th>上传时间</th>
+                            <th width="150px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="file_attachment">
+                        <c:forEach items="${projectcontentinfo.projectContentData.workAttachments}" var = "workAttachment" varStatus="status">
+                            <c:if test="${workAttachment.divIdType =='_attachment'}">
+                                <tr>
+                                    <c:choose>
+                                        <c:when test="${fn:containsIgnoreCase(workAttachment.attachmentName,'jpg')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'png')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'gif')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'bmp')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'jpeg')}">
+                                            <td><img src="${workAttachment.url}" width="50" height="50" alt="${workAttachment.attachmentName}"/></td>
+                                        </c:when>
+                                        <c:otherwise>
+                                            <c:choose>
+                                                <c:when test="${fn:containsIgnoreCase(workAttachment.attachmentName,'pdf')}">
+                                                    <td><a href="javascript:void(0)" onclick="preview('预览','${workAttachment.url}','90%','90%','1')">${workAttachment.attachmentName}</a></td>
+                                                </c:when>
+                                                <c:otherwise>
+                                                    <td><a href="javascript:void(0)" onclick="preview('预览','${workAttachment.url}','90%','90%')">${workAttachment.attachmentName}</a></td>
+                                                </c:otherwise>
+                                            </c:choose>
+                                        </c:otherwise>
+                                    </c:choose>
+                                    <td>${workAttachment.createBy.name}</td>
+                                    <td><fmt:formatDate value="${workAttachment.createDate}" type="both"/></td>
+                                    <td class="op-td">
+                                        <div class="op-btn-box" >
+                                            <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${workAttachment.url}');" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+                                            <c:if test="${workAttachment.createBy.id eq fns:getUser().id}">
+                                                <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workAttachment.url}&id=${workAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i> 删除</a>
+                                            </c:if>
+                                        </div>
+                                    </td>
+                                </tr>
+                            </c:if>
+                        </c:forEach>
+                </tbody>
+                    </table>
+                </div>
+            </div>
+
+
+
+
+            <c:if test="${projectcontentinfo.infoId !=null and projectcontentinfo.edit  == 'edit'}">
+                <div class="pull-right">
+                    <button id="btnSubmit" class="nav-btn nav-btn-add" type="submit" onclick="$('#edit').val('edit');beforeSubmit();"><i class="fa fa-chevron-up"></i> 提 交</button>
+                </div>
+            </c:if>
+            <div class="form-group layui-row page-end">
+            <br>
+            <br>
+            <br>
+            </div>
+        </form:form>
+    </div>
+</div>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+</body>
+</html>

+ 879 - 0
src/main/webapp/webpage/modules/projectrecord/monthly/monthlyContentView.jsp

@@ -0,0 +1,879 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作内容详情管理</title>
+	<meta name="decorator" content="default"/>
+    <script src="${ctxStatic}/layer-v2.3/layui/xmSelect.js" charset="utf-8"></script>
+    <style>
+        #projectContentDataType-error{
+            left:0;
+            top:40px;
+        }
+    </style>
+	<script type="text/javascript">
+        $.fn.serializeJson=function(){
+            var serializeObj={};
+            var array=this.serializeArray();
+            var str=this.serialize();
+            $(array).each(function(){
+                if(serializeObj[this.name]){
+                    if($.isArray(serializeObj[this.name])){
+                        serializeObj[this.name].push(this.value);
+                    }else{
+                        serializeObj[this.name]=[serializeObj[this.name],this.value];
+                    }
+                }else{
+                    serializeObj[this.name]=this.value;
+                }
+            });
+            return serializeObj;
+        };
+
+        var validateForm;
+        var detailFlag =0;
+        function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+
+                var length = document.getElementById("file_monthly");
+                var rows = length.rows.length;
+                if(rows<=0){
+                    layer.msg('请上传月报附件信息', {icon: 5});
+                    return false;
+                }
+
+                beforeSubmit();
+                $("#inputForm").submit();
+                return true;
+            }
+
+            return false;
+        }
+        function beforeSubmit() {
+            var contentDetaStr = '';
+            var contentTypeId = $("#projectContentDataSign").val();
+            /*if(contentTypeId !=24){
+                if(null !=encodeURIComponent(genDetailStr()) && '' != encodeURIComponent(genDetailStr())){
+                    contentDetaStr += encodeURIComponent(genDetailStr());
+                }
+                if(null !=encodeURIComponent(genSecondDetailStr()) && '' != encodeURIComponent(genSecondDetailStr())){
+                    contentDetaStr += encodeURIComponent(genSecondDetailStr());
+                }
+            }*/
+            if(detailFlag==1){
+                $("#contentDeta").val(contentDetaStr);
+            }
+            $(document.getElementById("projectContentDataType")).removeAttr("disabled");
+        }
+
+        $(function() {
+            var editVal = '${projectcontentinfo.edit}';
+
+            if($("#createDate").val()==null || $("#createDate").val()==''){
+                $("#createDate").val(getNowFormatDate());
+            }
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            var tp = "${projectcontentinfo.dictType}";
+            var tp2 = "${projectcontentinfo.projectContentData.id}"
+            if((tp!=null && tp!='')||(tp2!=null && tp2!='')){
+                $(document.getElementById("projectContentDataType")).attr("disabled","disabled");
+            }
+            initControlData("1");
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+            $("#monthly_btn").click(function () {
+                $("#monthly_file").click();
+            });
+        });
+
+
+        function openDialogre(title,url,width,height,formId){
+
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                skin: 'three-btns',
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                btn: ['提交','关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    inputForm.attr("action","${ctx}/projectcontentinfo/projectcontentinfo/ajaxsaveBaseData");//表单提交成功后,从服务器返回的url在当前tab中展示
+                    var $document = iframeWin.contentWindow.document;
+                    formSubmitAjax($document,formId,index);
+                },
+                btn2: function(index){
+                }
+            });
+        }
+
+        function formSubmitAjax($document,inputForm,index){
+            var validateForm = $($document.getElementById(inputForm)).validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $($document.getElementById("#messageBox")).text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            if(validateForm.form()){
+                $($document.getElementById(inputForm)).ajaxSubmit({
+                    success:function(data) {
+                        if(!data.success){
+                            top.layer.msg("保存依据资料信息异常!",{icon:2});
+                            return false;
+                        }
+                        var idx = $("#workBaseDataList tr").length;
+                        addRowBaseData("#workBaseDataList",idx,workBaseDataTpl,data.body.workBasedData);
+                        parent.layer.msg(data.msg,{icon:1});
+                        top.layer.close(index)
+                    }
+                });
+            }
+        }
+
+        function getNowFormatDate() {
+            var date = new Date();
+            var seperator1 = "-";
+            var month = date.getMonth() + 1;
+            var strDate = date.getDate();
+            month = (month < 10)?"0"+month:month;
+            strDate = (strDate < 10)?"0"+strDate:strDate;
+            var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate;
+            return currentdate;
+        }
+
+        function accordingBtn(obj, prefix){
+            //var id = $(prefix+"_id").val();
+            $(prefix+"_file").click();
+        }
+
+        function insertAccording(tValue,idx,prefix) {
+            var files = $(prefix+"_file")[0].files;
+            for(var i=0;i<files.length;i++) {
+                var file = files[i];
+                var attachmentId = "";
+                var attachmentFlag = "132";
+                console.log(file);
+                var timestamp = new Date().getTime();
+
+                var storeAs = "attachment-file/basedData/" + timestamp + "/" + file['name'];
+                var uploadPath = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/" + storeAs;
+                /*将这段字符串存到数据库即可*/
+                var divId = "_attachment";
+                multipartUploadWithSts(storeAs, file, attachmentId, attachmentFlag, uploadPath, divId, "0",1,idx,prefix);
+            }
+            $(prefix+"_file").val(123)
+        }
+
+
+
+        function addFile() {
+            $("#attachment_file").click();
+        }
+        function addMonthlyFile() {
+            $("#monthly_file").click();
+        }
+
+        function insertTitle(tValue){
+            var files = $("#attachment_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "94";
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/projectContentData/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,0);}
+        }
+
+        function insertMonthlyTitle(tValue){
+            var files = $("#monthly_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var monthlyId = "";
+            var monthlyFlag = "94";
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/projectContentData/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_monthly";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,monthlyId,monthlyFlag,uploadPath,divId,0);}
+        }
+
+        function openDialogreControl(title,url,width,height,target){
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                skin: 'three-btns',
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                btn: ['提交','关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    var $document = iframeWin.contentWindow.document;
+                    var index1 = parent.layer.load(0, {shade: [0.1, 'tranparent']});
+                    formSubmit($document,"inputForm",index,index1);
+                },
+                btn2: function(index){
+                    parent.layer.close(index)
+                },
+                end:function(index){
+                    parent.layer.close(index)
+                }
+            });
+        }
+        function formSubmit($document,inputForm,index,index1){
+            var validateForm = $($document.getElementById(inputForm)).validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $($document.getElementById("#messageBox")).text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            if(validateForm.form()){
+                $($document.getElementById(inputForm)).ajaxSubmit({
+                    success:function(data) {
+                        parent.parent.layer.msg("操作成功",{icon:1})
+                        parent.parent.layer.close(index1)
+                        parent.layer.close(index1)
+                        parent.parent.layer.close(index)
+                        parent.layer.close(index)
+                        initGetControlData();
+                    },error:function(){
+                        parent.parent.layer.msg("操作失败",{icon:2})
+                        parent.parent.layer.close(index1)
+                        parent.layer.close(index1)
+                        parent.parent.layer.close(index)
+                        parent.layer.close(index)
+                        initControlData("1");
+                    }
+                });
+            }else {
+                parent.parent.layer.msg("信息未填写完整!", {icon: 2});
+                parent.layer.close(index1)
+                parent.parent.layer.close(index1)
+            }
+        }
+        /**
+         * 删除临时数据
+         */
+        function initControlData(obj,othis,del,tableId){
+            if(del == "del"){
+                proId = tableId;
+			}else{
+                proId = "";
+			}
+            $.ajax({
+                type:'post',
+                url:'${ctx}/projectcontroltable/projectControlTable/delControlData',
+                data:{
+                    "projectId":"${projectcontentinfo.project.id}",
+					"projectContentId":proId,
+					"flag":del
+                },
+                success:function(data){
+                    if(obj != "1"){
+                        if(data.flag){
+                            //$(othis).parent().parent().parent().remove();
+                            parent.layer.msg("数据删除成功",{icon:1})
+                            $(othis).remove()
+                        }else{
+                            parent.layer.msg("数据删除失败",{icon:2})
+                        }
+                    }
+                }
+            })
+        }
+
+        function getMatchDate(str){
+            var reDateTime = /^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1]))/
+            var date = (""+str).match(reDateTime);
+            if(date){
+                return date[0]
+            }else{
+                return "";
+            }
+        }
+
+        /**
+         * 获取临时数据
+         * @param obj
+         * @param othis
+         */
+        function initGetControlData(){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/projectcontroltable/projectControlTable/getControlData',
+                data:{
+                    "projectId":"${projectcontentinfo.project.id}",
+                    "proId":"${projectcontentinfo.projectContentData.id}"
+                },
+                success:function(data){
+                    if(data){
+                        var htmlStr = '';
+                        data = data.list.projectControlTableList;
+                        for(var i=0;i<data.length;i++){
+                            htmlStr += "<tr id='tr"+i+"'>"+
+                                "   <td style='text-align:center;'>"+
+                                "	   "+data[i].tName+
+                                "	   <input type='hidden' name='projectContentData.projectControlTableList["+i+"].id' value='"+data[i].id+"'>"+
+                                "	   <input type='hidden' name='projectContentData.projectControlTableList["+i+"].tName' value='"+data[i].tName+"'>"+
+                                "	   <input type='hidden' name='projectContentData.projectControlTableList["+i+"].processName' value='"+data[i].processName+"'>"+
+                                "	   <input type='hidden' name='projectContentData.projectControlTableList["+i+"].pfId' value='"+data[i].pfId+"'>"+
+                                "   </td>"+
+                                "   <td style='text-align:center;'>" +
+                                "  			"+data[i].processName+
+                                "	   		<input type='hidden' name='projectContentData.projectControlTableList["+i+"].tType' value='"+data[i].tType+"'>"+
+                                "	</td>"+
+                                "   <td style='text-align:center;'>"+
+                                "  		"+data[i].tUser.name+
+                                "   </td>"+
+                                "   <td style='text-align:center;'>"+
+                                "  "+ getMatchDate(data[i].createDate)+
+                                //										"	    <input type='hidden' name='projectControlTableList["+i+"].createDate' value='"+data[i].createDate+"'>"+
+                                //										"	    <input type='hidden' name='projectControlTableList["+i+"].updateDate' value='"+data[i].updateDate+"'>"+
+                                //										"	    <input type='hidden' name='projectControlTableList["+i+"].delFlag' value='"+data[i].delFlag+"'>"+
+                                //										"	    <input type='hidden' name='projectControlTableList["+i+"].createBy.id' value='"+data[i].createBy.id+"'>"+
+                                "   </td>"+
+                                "   <td style='text-align:center;'>"+
+                                "   	<a href='javascript:void(0)' onclick=\"openDialogView('查看过程控制明细', '${ctx}/projectcontroltable/projectControlTable/form?view=view&id="+data[i].id+"','90%', '90%')\" class='btn btn-info btn-xs' ><i class='fa fa-search-plus'></i> 查看</a>"+
+                                "  		<a href=\"javascript:initControlData('0','#tr"+i+"','del','"+data[i].id+"')\" onclick=\"return confirmx('确认要删除该过程控制数据吗?', this.href)\"   class='btn btn-danger btn-xs'><i class='fa fa-trash'></i> 删除</a>"+
+                                "  </td>"+
+                                "</tr>";
+                        }
+                        if(htmlStr){
+                            $("#projectControlTables").html(htmlStr);
+                        }
+                    }
+                }
+            })
+        }
+
+        function formatNum(obj) {
+            var val = $(obj).val();
+            console.log("-----------val"+val);
+            if(!isNumber(val))return;
+            var money = parseFloat((val + "").replace(/[^\d\.-]/g, "")).toFixed(2) + "";
+            var l = money.split(".")[0].split("").reverse(),
+                r = money.split(".")[1];
+            t = "";
+            for(i = 0; i < l.length; i ++ )
+            {
+                t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
+            }
+            $(obj).val(t.split("").reverse().join("") + "." + r);
+        }
+        function isNumber(val){
+            if(val === "" || val ==null){
+                return false;
+            }
+            var regPos = /^\d+(\.\d+)?$/; //非负浮点数
+            var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数
+            if(regPos.test(val) || regNeg.test(val)){
+                return true;
+            }else{
+                return false;
+            }
+
+        }
+    </script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container${container}">
+        <form:form id="inputForm" modelAttribute="projectcontentinfo" action="#" method="post" class="form-horizontal">
+            <form:hidden path="id"/>
+            <form:hidden path="edit"/>
+            <form:hidden path="parentIds"/>
+            <form:hidden path="project.id"/>
+            <form:hidden path="projectContentData.id"/>
+            <form:hidden path="projectContentData.contractId"/>
+            <input type="hidden" id="contentDeta" name="projectContentData.contentDetail">
+            <input type="hidden" id="dataBodyList" name="dataBodyList" value="">
+            <input type="hidden" id="projectContentDataSign" name="projectContentDataSign" value="">
+            <input type="hidden" id="modify"  value="${modify}">
+            <sys:message content="${message}"/>
+            <div class="form-group layui-row first lw12">
+                <div class="form-group-label"><h2>基本信息</h2></div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">项目名称:</label>
+                    <div class="layui-input-block">
+                        <form:input path="project.projectName" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">项目编号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="project.projectId" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">类型:</label>
+                    <div class="layui-input-block">
+                        <form:input path="projectContentData.type" value="按月出具跟踪咨询报告" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">月报内容编号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="monthlyNumber" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>月报内容名称:</label>
+                    <div class="layui-input-block">
+                        <form:input path="monthlyName" readonly="true" htmlEscape="false" class="form-control required layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>负责人:</label>
+                    <div class="layui-input-block">
+                        <form:input path="projectContentData.master.name" htmlEscape="false"  readonly="true"  class="form-control layui-input required"/>
+                        <form:hidden path="projectContentData.master.id" htmlEscape="false"  readonly="true"  class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>月报时间:</label>
+                    <div class="layui-input-block">
+                        <input  id="monthlyDate" name="monthlyDate" readonly="true"  type="text" class="form-control layui-input required"
+                               value="<fmt:formatDate value="${projectcontentinfo.monthlyDate}" pattern="yyyy-MM"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>创建日期:</label>
+                    <div class="layui-input-block">
+                        <input id="createDate" name="projectContentData.createDate" type="text" readonly="true" maxlength="20" class="form-control layui-input required"
+                               value="<fmt:formatDate value="${createDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>月报基本内容信息</h2></div>
+                <div class="layui-item layui-col-sm12 with-textarea">
+                    <div class="layui-input-block">
+                        <form:textarea path="monthlyContent" readonly="true" htmlEscape="false" maxlength="1000" rows="6"    class="form-control"/>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>依据性资料明细</h2></div>
+                <div class="layui-item layui-col-xs12 form-table-container">
+                    <table id="contentTableBase" class="table table-bordered table-condensed details">
+                        <thead>
+                        <tr>
+                            <th class="hide"></th>
+                            <th >资料编号</th>
+                            <th >资料名称</th>
+                            <th >资料类别</th>
+                            <th >上传人</th>
+                            <th >上传日期</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workBaseDataList">
+                        <c:forEach items="${projectcontentinfo.projectContentData.projectBasedDataList}" var="projectBasedData" varStatus="idx">
+                            <tr>
+                                <td class="hide">
+                                    <input type="hidden" id="workBaseDataList${idx.index}_id" value="${projectBasedData.id}" class="clientId">
+                                </td>
+                                <td style="text-align:center;">
+                                        ${projectBasedData.number}
+                                </td>
+                                <td style="text-align:center;">
+                                        ${projectBasedData.name}
+                                </td>
+                                <td style="text-align:center;">
+                                        ${fns:getDictLabel(projectBasedData.type, 'project_document_type', '')}
+                                </td>
+                                <td style="text-align:center;">
+                                        ${projectBasedData.uploadUser.name}
+                                </td>
+                                <td style="text-align:center;">
+                                    <fmt:formatDate value="${projectBasedData.uploadDate}" pattern="yyyy-MM-dd"/>
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+            <script type="text/template" id="workBaseDataTpl">//<!--
+                <tr id="budgetList{{idx}}">
+                    <td class="hide">
+                        <input id="workBaseDataList{{idx}}_id" name="projectContentData.projectBasedDataList[{{idx}}].id" type="hidden" value="{{row.id}}" class="clientId"/>
+                        <input id="workBaseDataList{{idx}}_number" name="projectContentData.projectBasedDataList[{{idx}}].number" type="hidden" value="{{row.number}}"/>
+                        <input id="workBaseDataList{{idx}}_name" name="projectContentData.projectBasedDataList[{{idx}}].name" type="hidden" value="{{row.name}}"/>
+                        <input id="workBaseDataList{{idx}}_type" name="projectContentData.projectBasedDataList[{{idx}}].type" type="hidden" value="{{row.type}}"/>
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.number}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.name}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.typeLabel}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.uploadUser.name}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.uploadDate}}
+                    </td>
+                    <td class="text-center op-td">
+                        <a href=javascript:void(0); onclick="delRowBaseData(this, '#workBaseDataList{{idx}}','{{row.uploadUser.id}}')"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
+                    </td>
+                </tr>//-->
+            </script>
+            <script type="text/javascript">
+                var workBaseDataTpl = $("#workBaseDataTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+                var workBaseDataRowIdx = ${fn:length(projectcontentinfo.projectReportData.projectBasedDataList)};
+                function setValuee(obj){
+                    for(var i=0;i<obj.length;i++){
+                        var idArr = $("#workBaseDataList tr:visible .clientId");
+                        if(obj[i].id!=''&&!hasInArr(obj[i].id,idArr)){
+                            addRowBaseData("#workBaseDataList",workBaseDataRowIdx,workBaseDataTpl,obj[i]);
+                            workBaseDataRowIdx=workBaseDataRowIdx+1;
+                        }
+                    }
+                }
+                function hasInArr(id,idArr) {
+                    for(var i=0;i<idArr.length;i++){
+                        if(id==$(idArr[i]).val()){
+                            return true;
+                        }
+                    }
+                    return false;
+                }
+                function existBaseData(id,length) {
+                    for (var i=0;i<length;i++) {
+                        var val = $('#workBaseDataList'+i+'_id').val();
+                        if(id==val){
+                            return true;
+                        }
+                    }
+                    return false;
+                }
+
+                function addRowBaseData(list, idx, tpl, row){
+                    bornTemplete(list, idx, tpl, row, idx);
+                }
+
+                function bornTemplete(list, idx, tpl, row, idx1){
+                    var idx1 = $("#workBaseDataList tr").length +1;
+                    $(list).append(Mustache.render(tpl, {
+                        idx: idx, delBtn: true, row: row,
+                        order:idx1 + 1, idx1:idx1
+                    }));
+                    $(list+idx).find("select").each(function(){
+                        $(this).val($(this).attr("data-value"));
+                    });
+                    $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                        var ss = $(this).attr("data-value").split(',');
+                        for (var i=0; i<ss.length; i++){
+                            if($(this).val() == ss[i]){
+                                $(this).attr("checked","checked");
+                            }
+                        }
+                    });
+                }
+                function delRowBaseData(obj, prefix,userId){
+                    var id = $(prefix+"_id").val();
+                    var currentUser = '${fns:getUser().id}';
+                    var contentId = '${projectcontentinfo.projectContentData.id}';
+                    console.log(contentId);
+                    var condition = "${flag}";
+                    $.ajax({
+                        type:"post",
+                        url:'${ctx}/projectcontentinfo/projectContentData/ajaxdelete',
+                        data:{"contentId":contentId,"basedId":id,"condition":condition},
+                        dataType:"json",
+                        success:function(data){
+                            if(data.success) {
+                                if("according" == condition || "completion" == condition || "early" == condition || "claim" == condition || "design" == condition || "visa" == condition || "interim" == condition || "distribution" == condition ){
+                                    $(obj).parent().parent().parent().remove();
+                                }else{
+                                    $(obj).parent().parent().remove();
+                                }
+                                if(data.body.inuse){
+                                    return;
+                                }
+                                if (currentUser == userId) {
+                                    confirmDelete('是否同步删除资料库的文件?','${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+id+'&id=${projectcontentinfo.id}&type=1');
+                                }
+                            }else {
+                                top.layer.msg("删除依据资料失败!", {icon: 0});
+                            }
+                        }
+                    })
+                    return;
+                }
+
+                function confirmDelete(mess, href){
+                    top.layer.confirm(mess, {icon: 3, title:'系统提示'}, function(index){
+                        //do something
+                        if (typeof href == 'function') {
+                            href();
+                        }else{
+                            $.ajax({
+                                url:href,
+                                type:"post",
+                                success:function(data){
+                                    if(data.success){
+                                        top.layer.msg("删除依据资料成功!", {icon: 0});
+                                    }
+                                }
+                            });
+                        }
+                        top.layer.close(index);
+                    });
+                    return false;
+                }
+            </script>
+            <%--<div class="form-group layui-row">
+                <div class="form-group-label"><h2>过程控制明细</h2></div>
+                <div class="layui-item nav-btns">
+                    <a href="javascript:void(0)" onclick="openDialogreControl('新增控制表格', '${ctx}/projectcontroltable/projectControlTable/form?pfId=${projectcontentinfo.project.id}','90%','90%',false,'inputForm')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
+                </div>
+                <div class="layui-item layui-col-xs12 form-table-container">
+                    <table id="contentTable" class="table table-bordered table-condensed details">
+                        <thead>
+                            <tr>
+                                <th  >表格名称</th>
+                                <th  >表格类型</th>
+                                <th  >负责人</th>
+                                <th  >创建日期</th>
+                                <th>操作</th>
+                            </tr>
+                        </thead>
+                        <tbody id="projectControlTables">
+                    <c:choose>
+                        <c:when test="${not empty projectcontentinfo.projectContentData.projectControlTableList}">
+                            <c:forEach items="${projectcontentinfo.projectContentData.projectControlTableList}" var="projectControlTable" varStatus="status">
+                                <tr id="tr${status.index}">
+                                    <td style="text-align:center;">
+                                            ${projectControlTable.tName}
+                                        <input type="hidden" name="projectContentData.projectControlTableList[${status.index}].id" value="${projectControlTable.id}">
+                                        <input type="hidden" name="projectContentData.projectControlTableList[${status.index}].tName" value="${projectControlTable.tName}">
+                                        <input type="hidden" name="projectContentData.projectControlTableList[${status.index}].pfId" value="${projectControlTable.pfId}">
+                                    </td>
+                                    <td style="text-align:center;">
+                                            ${projectControlTable.processName}
+                                        <input type="hidden" name="projectContentData.projectControlTableList[${status.index}].tType" value="${projectControlTable.tType}">
+                                    </td>
+                                    <td style="text-align:center;">
+                                            ${projectControlTable.tUser.name}
+                                    </td>
+                                    <td style="text-align:center;">
+                                        <fmt:formatDate value="${projectControlTable.createDate}" pattern="yyyy-MM-dd" />
+                                            &lt;%&ndash;<input type="hidden" name="projectControlTableList[${status.index}].createDate" value="${projectControlTable.createDate}">&ndash;%&gt;
+                                            &lt;%&ndash;<input type="hidden" name="projectControlTableList[${status.index}].updateDate" value="${projectControlTable.updateDate}">&ndash;%&gt;
+                                            &lt;%&ndash;<input type="hidden" name="projectControlTableList[${status.index}].delFlag" value="${projectControlTable.delFlag}">&ndash;%&gt;
+                                            &lt;%&ndash;<input type="hidden" name="projectControlTableList[${status.index}].createBy.id" value="${projectControlTable.createBy.id}">&ndash;%&gt;
+                                    </td>
+                                    <td class="op-td text-center">
+                                        <div class="op-btn-box">
+                                        <a href="#" onclick="openDialogView('查看过程控制明细', '${ctx}/projectcontroltable/projectControlTable/form?id=${projectControlTable.id}&view=view','90%', '90%')" class="op-btn op-btn-view" ><i class="fa fa-search-plus"></i> 查看</a>
+                                        <a href="javascript:initControlData('0','#tr${status.index}','del','${projectControlTable.id}')" onclick="return confirmx('确认要删除该过程控制数据吗?', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
+                                        </div>
+                                    </td>
+                                </tr>
+                            </c:forEach>
+                        </c:when>
+                        <c:otherwise>
+                            <tr>
+                                <td colspan="5" align="center">暂无数据</td>
+                            </tr>
+                        </c:otherwise>
+                    </c:choose>
+                    </tbody>
+                    </table>
+                </div>
+            </div>--%>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2><span class="require-item">*</span>月报附件信息</h2></div>
+                <div id="addFile_monthly" style="display: none" class="upload-progress">
+                    <span id="fileName_monthly" ></span>
+                    <b><span id="baifenbi_monthly" ></span></b>
+                    <div class="progress">
+                        <div id="jindutiao_monthly" class="progress-bar" style="width: 0%" aria-valuenow="0">
+                        </div>
+                    </div>
+                </div>
+                <input id="monthly_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertMonthlyTitle(this.value);"/>
+                <span id="monthly_title"></span>
+                <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+                    <table id="upMonthlyTable" class="table table-bordered table-condensed details">
+                        <thead>
+                        <tr>
+                            <th>文件名称</th>
+                            <th>上传人</th>
+                            <th>上传时间</th>
+                            <th width="150px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="file_monthly">
+                        <c:forEach items="${projectcontentinfo.projectContentData.workAttachments}" var = "workAttachment" varStatus="status">
+                            <c:if test="${workAttachment.divIdType =='_monthly'}">
+                                <tr>
+                                    <c:choose>
+                                        <c:when test="${fn:containsIgnoreCase(workAttachment.attachmentName,'jpg')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'png')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'gif')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'bmp')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'jpeg')}">
+                                            <td><img src="${workAttachment.url}" width="50" height="50" alt="${workAttachment.attachmentName}"/></td>
+                                        </c:when>
+                                        <c:otherwise>
+                                            <c:choose>
+                                                <c:when test="${fn:containsIgnoreCase(workAttachment.attachmentName,'pdf')}">
+                                                    <td><a href="javascript:void(0)" onclick="preview('预览','${workAttachment.url}','90%','90%','1')">${workAttachment.attachmentName}</a></td>
+                                                </c:when>
+                                                <c:otherwise>
+                                                    <td><a href="javascript:void(0)" onclick="preview('预览','${workAttachment.url}','90%','90%')">${workAttachment.attachmentName}</a></td>
+                                                </c:otherwise>
+                                            </c:choose>
+                                        </c:otherwise>
+                                    </c:choose>
+                                    <td>${workAttachment.createBy.name}</td>
+                                    <td><fmt:formatDate value="${workAttachment.createDate}" type="both"/></td>
+                                    <td class="op-td">
+                                        <div class="op-btn-box" >
+                                            <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${workAttachment.url}');" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                        </div>
+                                    </td>
+                                </tr>
+                            </c:if>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>附件信息</h2></div>
+                <div id="addFile_attachment" style="display: none" class="upload-progress">
+                    <span id="fileName_attachment" ></span>
+                    <b><span id="baifenbi_attachment" ></span></b>
+                    <div class="progress">
+                        <div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+                        </div>
+                    </div>
+                </div>
+                <input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+                <span id="attachment_title"></span>
+                <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+                    <table id="upTable" class="table table-bordered table-condensed details">
+                        <thead>
+                            <tr>
+                            <th>文件名称</th>
+                            <th>上传人</th>
+                            <th>上传时间</th>
+                            <th width="150px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="file_attachment">
+                        <c:forEach items="${projectcontentinfo.projectContentData.workAttachments}" var = "workAttachment" varStatus="status">
+                            <c:if test="${workAttachment.divIdType =='_attachment'}">
+                                <tr>
+                                    <c:choose>
+                                        <c:when test="${fn:containsIgnoreCase(workAttachment.attachmentName,'jpg')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'png')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'gif')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'bmp')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'jpeg')}">
+                                            <td><img src="${workAttachment.url}" width="50" height="50" alt="${workAttachment.attachmentName}"/></td>
+                                        </c:when>
+                                        <c:otherwise>
+                                            <c:choose>
+                                                <c:when test="${fn:containsIgnoreCase(workAttachment.attachmentName,'pdf')}">
+                                                    <td><a href="javascript:void(0)" onclick="preview('预览','${workAttachment.url}','90%','90%','1')">${workAttachment.attachmentName}</a></td>
+                                                </c:when>
+                                                <c:otherwise>
+                                                    <td><a href="javascript:void(0)" onclick="preview('预览','${workAttachment.url}','90%','90%')">${workAttachment.attachmentName}</a></td>
+                                                </c:otherwise>
+                                            </c:choose>
+                                        </c:otherwise>
+                                    </c:choose>
+                                    <td>${workAttachment.createBy.name}</td>
+                                    <td><fmt:formatDate value="${workAttachment.createDate}" type="both"/></td>
+                                    <td class="op-td">
+                                        <div class="op-btn-box" >
+                                            <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${workAttachment.url}');" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                        </div>
+                                    </td>
+                                </tr>
+                            </c:if>
+                        </c:forEach>
+                </tbody>
+                    </table>
+                </div>
+            </div>
+            <div class="form-group layui-row page-end">
+            <br>
+            <br>
+            <br>
+            </div>
+        </form:form>
+    </div>
+</div>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+</body>
+</html>

+ 371 - 0
src/main/webapp/webpage/modules/projectrecord/summarizing/armorProjectRecordsList.jsp

@@ -0,0 +1,371 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目登记</title>
+	<meta name="decorator" content="default"/>
+    <link href="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.css" rel="stylesheet" />
+	<%--<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>--%>
+    <style>
+        .layui-table th{
+            font-size: 14px;
+            /*表头内容居中显示*/
+            text-align: center;
+        }
+		.pid{
+			font-size:14px;
+			font-weight:400;
+		}
+    </style>
+	<script type="text/javascript">
+        $(document).ready(function() {
+
+            //搜索框收放
+            $('#moresee').click(function(){
+                if($('#moresees').is(':visible'))
+                {
+                    $('#moresees').slideUp(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+                }else{
+                    $('#moresees').slideDown(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+                }
+            });
+            laydate.render({
+                elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+        });
+
+        function reset() {
+            $("#searchForm").resetForm();
+        }
+
+        function openDialog(title,url,width,height,target) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url,
+                skin: 'three-btns',
+                btn: ['送审', '暂存', '关闭'],
+                /*yes: function (index, layero) {
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if (target) {
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    } else {
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target", top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+
+                    if (iframeWin.contentWindow.doSubmit()) {
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function () {
+                            top.layer.close(index)
+                        }, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+
+                },*/
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+
+        function openDialogre(title,url,width,height,target,buttons) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            var split = buttons.split(",");
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                skin: 'three-btns',
+                content: url,
+                btn: split,
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    if(split.length==2){return}
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="list-form-tab contentShadow shadowLTR" id="tabDiv">
+				<ul class="list-tabs" >
+					<li><a href="${ctx}/project/interimPaymentSummarizing/list">工程进度款汇总表</a></li>
+					<li><a href="${ctx}/project/designSummarizing/list">设计变更汇总表</a></li>
+					<li><a href="${ctx}/project/visaSummarizing/list">现场签证汇总表</a></li>
+					<li><a href="${ctx}/project/claimSummarizing/list">索赔汇总表</a></li>
+					<li><a href="${ctx}/project/distributionSummarizing/list">分布结算汇总表</a></li>
+					<li><a href="${ctx}/project/materialSummarizing/list">暂定材料价汇总表</a></li>
+					<li class="active"><a href="${ctx}/project/armorSummarizing/list">甲供物资汇总表</a></li>
+					<li><a href="${ctx}/project/concealSummarizing/list">隐蔽工程量汇总表</a></li>
+				</ul>
+			</div>
+			<div class="layui-row contentShadow shadowLR" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="projectRecords" action="${ctx}/project/armorSummarizing/" method="post" class="form-inline">
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+					<div class="commonQuery lw6">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">项目名称:</label>
+							<div class="layui-input-block">
+								<form:input path="projectName" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">项目负责人:</label>
+							<div class="layui-input-block">
+								<form:input path="leaderNameStr" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+								<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+					<div id="moresees" style="clear:both;display:none;" class="lw6">
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">合同名称:</label>
+							<div class="layui-input-block">
+								<input type="text" input="workContractInfoName" name="workContractInfo.name" value="" htmlEscape="false" maxlength="255"  class=" form-control layui-input">
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">委托方:</label>
+							<div class="layui-input-block">
+								<input type="text" input="workContractInfoClientName" name="workContractInfo.client.name" value="" htmlEscape="false" maxlength="255"  class=" form-control layui-input">
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">创建时间:</label>
+							<div class="layui-input-block">
+								<input id="beginDate" name="beginDate" placeholder="开始时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${projectRecords.beginDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+                                <span class="group-sep">-</span>
+                                <input id="endDate" name="endDate" placeholder="结束时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+                                       value="<fmt:formatDate value="${projectRecords.endDate}" pattern="yyyy-MM-dd"/>"/>
+                                </input>
+							</div>
+						</div>
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-form contentDetails contentShadow shadowLBR">
+				<div class="nav-btns">
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+				</div>
+				<table class="oa-table layui-table" id="contentTable1"></table>
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable1'
+            ,page: false
+            ,cols: [[
+                {field:'index',align:'center', title: '序号',width:40}
+                ,{field:'projName',align:'center', title: '项目名称',minWidth:200,templet:function(d){
+                        return "<a class=\"attention-info\" title=\"" + d.projName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目', '${ctx}/project/projectRecords/view?id=" + d.id +"','95%', '95%')\">" + d.projName + "</a>";
+                    }}
+                ,{field:'projId',align:'center', title: '项目编号',minWidth:150,templet:function(d){
+                        return "<a class=\"attention-info\" title=\"" + d.projId + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看甲供物资信息', '${ctx}/project/armorSummarizing/form?view=contentView&condition=interim&type=411&infoId="+d.id+"&id="+d.contentPId+"','95%', '95%')\">" + d.projId + "</a>";
+                    }}
+                ,{field:'contract', align:'center',title: '合同名称',minWidth:150,templet:function(d){
+                    	return "<span title='"+ d.contract +"'>" + d.contract + "</span>";
+					}}
+                ,{field:'projMaster', align:'center',title: '负责人', width:85,templet:function(d){
+                        return "<span title=\"" + d.projMaster + "\">" + d.projMaster + "</span>";
+                    }}
+                ,{field:'client',align:'center', title: '主委托方',  width:150,templet:function(d){
+                        return "<span title=\"" + d.client + "\">" + d.client + "</span>";
+                    }}
+                ,{field:'createDate',align:'center', title: '创建日期',  width:80}
+                ,{field:'op',align:'center',title:"操作",width:130,templet:function(d){
+                        ////对操作进行初始化
+                        var xml="";
+                        /*if(d.canedit3 != undefined && d.canedit3 =="1")
+                        {*/
+							xml+="<a href=\"javascript:void(0)\" onclick=\"openDialogView('查看甲供物资信息', '${ctx}/project/armorSummarizing/form?view=contentView&condition=interim&type=411&infoId="+d.id+"&id="+d.contentPId+"','95%','95%')\" style=\"color: white;background: darkseagreen\" class=\"op-btn op-btn-op-btn-revert\" ><i class=\"fa fa-edit\"></i> 详情</a>"
+                        /*}*/
+                        return xml;
+
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="projectRecords" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${projectRecords.id}"
+                    ,"projId":"${projectRecords.projectId}"
+                    ,"projName":"<c:out value="${projectRecords.projectName}" escapeXml="true"/>"
+                    ,"projMaster":"<c:forEach items="${projectRecords.projectLeaders}" var="leader" varStatus="status"><c:choose><c:when test="${status.last}">${leader.name}</c:when><c:otherwise>${leader.name},</c:otherwise></c:choose></c:forEach>"
+                    ,"contract":"${projectRecords.workContractInfo.name}"
+                    ,"client":"${projectRecords.workContractInfo.client.name}"
+                    ,"createDate":"<fmt:formatDate value="${projectRecords.createDate}" pattern="yyyy-MM-dd"/>"
+                    ,"projectStatus":"${projectRecords.projectStatus}"
+                    ,"procId":"${projectRecords.processInstanceId}"
+                    ,"contentPId":"${projectRecords.contentPId}"
+                    ,"dictType":"${projectRecords.dictType}"
+                    <c:choose><c:when test="${flag == '1' or fns:getUser().id == projectRecords.createBy.id}">
+                    <shiro:hasPermission name="project:projectRecords:del">,"candel":	<c:choose><c:when test="${projectRecords.projectStatus == 1 or projectRecords.projectStatus == 3 or projectRecords.projectStatus == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose></shiro:hasPermission>
+                    <shiro:hasPermission name="project:projectRecords:edit">,"canedit1":	<c:choose><c:when test="${projectRecords.projectStatus == 1 }">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    ,"canedit2":<c:choose><c:when test="${projectRecords.projectStatus == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    ,"canrecall":<c:choose><c:when test="${projectRecords.projectStatus == 3}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </shiro:hasPermission>
+                    ,"cancancel":<c:choose><c:when test="${projectRecords.projectStatus == 2 && fns:getUser().id == projectRecords.createBy.id}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </c:when>
+                    <c:otherwise>
+                    ,"candel":"0"
+                    ,"canedit1":"0"
+                    ,"canedit2":"0"
+                    ,"canrecall":"0"
+                    ,"cancancel":"0"
+                    </c:otherwise>
+                    </c:choose>
+                    <shiro:hasPermission name="project:projectRecords:edit">,"canedit3":<c:choose><c:when test="${projectRecords.projectStatus == 5 && fn:contains(projectRecords.leaderIds,fns:getUser().id)}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose></shiro:hasPermission>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+        });
+    })
+
+    resizeListTable();
+    $("a").on("click",addLinkVisied);
+</script>
+<script>
+    resizeListWindow2();
+    $(window).resize(function(){
+        resizeListWindow2();
+    });
+</script>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script src="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.js" charset="utf-8"></script>
+</body>
+</html>

+ 371 - 0
src/main/webapp/webpage/modules/projectrecord/summarizing/claimSumamarizingProjectRecordsList.jsp

@@ -0,0 +1,371 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目登记</title>
+	<meta name="decorator" content="default"/>
+    <link href="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.css" rel="stylesheet" />
+	<%--<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>--%>
+    <style>
+        .layui-table th{
+            font-size: 14px;
+            /*表头内容居中显示*/
+            text-align: center;
+        }
+		.pid{
+			font-size:14px;
+			font-weight:400;
+		}
+    </style>
+	<script type="text/javascript">
+        $(document).ready(function() {
+
+            //搜索框收放
+            $('#moresee').click(function(){
+                if($('#moresees').is(':visible'))
+                {
+                    $('#moresees').slideUp(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+                }else{
+                    $('#moresees').slideDown(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+                }
+            });
+            laydate.render({
+                elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+        });
+
+        function reset() {
+            $("#searchForm").resetForm();
+        }
+
+        function openDialog(title,url,width,height,target) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url,
+                skin: 'three-btns',
+                btn: ['送审', '暂存', '关闭'],
+                /*yes: function (index, layero) {
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if (target) {
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    } else {
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target", top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+
+                    if (iframeWin.contentWindow.doSubmit()) {
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function () {
+                            top.layer.close(index)
+                        }, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+
+                },*/
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+
+        function openDialogre(title,url,width,height,target,buttons) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            var split = buttons.split(",");
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                skin: 'three-btns',
+                content: url,
+                btn: split,
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    if(split.length==2){return}
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="list-form-tab contentShadow shadowLTR" id="tabDiv">
+				<ul class="list-tabs" >
+					<li><a href="${ctx}/project/interimPaymentSummarizing/list">工程进度款汇总表</a></li>
+					<li><a href="${ctx}/project/designSummarizing/list">设计变更汇总表</a></li>
+					<li><a href="${ctx}/project/visaSummarizing/list">现场签证汇总表</a></li>
+					<li class="active"><a href="${ctx}/project/claimSummarizing/list">索赔汇总表</a></li>
+					<li><a href="${ctx}/project/distributionSummarizing/list">分布结算汇总表</a></li>
+					<li><a href="${ctx}/project/materialSummarizing/list">暂定材料价汇总表</a></li>
+					<li><a href="${ctx}/project/armorSummarizing/list">甲供物资汇总表</a></li>
+					<li><a href="${ctx}/project/concealSummarizing/list">隐蔽工程量汇总表</a></li>
+				</ul>
+			</div>
+			<div class="layui-row contentShadow shadowLR" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="projectRecords" action="${ctx}/project/claimSummarizing/" method="post" class="form-inline">
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+					<div class="commonQuery lw6">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">项目名称:</label>
+							<div class="layui-input-block">
+								<form:input path="projectName" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">项目负责人:</label>
+							<div class="layui-input-block">
+								<form:input path="leaderNameStr" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+								<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+					<div id="moresees" style="clear:both;display:none;" class="lw6">
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">合同名称:</label>
+							<div class="layui-input-block">
+								<input type="text" input="workContractInfoName" name="workContractInfo.name" value="" htmlEscape="false" maxlength="255"  class=" form-control layui-input">
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">委托方:</label>
+							<div class="layui-input-block">
+								<input type="text" input="workContractInfoClientName" name="workContractInfo.client.name" value="" htmlEscape="false" maxlength="255"  class=" form-control layui-input">
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">创建时间:</label>
+							<div class="layui-input-block">
+								<input id="beginDate" name="beginDate" placeholder="开始时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${projectRecords.beginDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+                                <span class="group-sep">-</span>
+                                <input id="endDate" name="endDate" placeholder="结束时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+                                       value="<fmt:formatDate value="${projectRecords.endDate}" pattern="yyyy-MM-dd"/>"/>
+                                </input>
+							</div>
+						</div>
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-form contentDetails contentShadow shadowLBR">
+				<div class="nav-btns">
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+				</div>
+				<table class="oa-table layui-table" id="contentTable1"></table>
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable1'
+            ,page: false
+            ,cols: [[
+                {field:'index',align:'center', title: '序号',width:40}
+                ,{field:'projName',align:'center', title: '项目名称',minWidth:200,templet:function(d){
+                        return "<a class=\"attention-info\" title=\"" + d.projName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目', '${ctx}/project/projectRecords/view?id=" + d.id +"','95%', '95%')\">" + d.projName + "</a>";
+                    }}
+                ,{field:'projId',align:'center', title: '项目编号',minWidth:150,templet:function(d){
+                        return "<a class=\"attention-info\" title=\"" + d.projId + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看工程进度款信息', '${ctx}/project/designSummarizing/form?view=contentView&condition=interim&type=46&infoId="+d.id+"&id="+d.contentPId+"','95%', '95%')\">" + d.projId + "</a>";
+                    }}
+                ,{field:'contract', align:'center',title: '合同名称',minWidth:150,templet:function(d){
+                    	return "<span title='"+ d.contract +"'>" + d.contract + "</span>";
+					}}
+                ,{field:'projMaster', align:'center',title: '负责人', width:85,templet:function(d){
+                        return "<span title=\"" + d.projMaster + "\">" + d.projMaster + "</span>";
+                    }}
+                ,{field:'client',align:'center', title: '主委托方',  width:150,templet:function(d){
+                        return "<span title=\"" + d.client + "\">" + d.client + "</span>";
+                    }}
+                ,{field:'createDate',align:'center', title: '创建日期',  width:80}
+                ,{field:'op',align:'center',title:"操作",width:130,templet:function(d){
+                        ////对操作进行初始化
+                        var xml="";
+                        /*if(d.canedit3 != undefined && d.canedit3 =="1")
+                        {*/
+							xml+="<a href=\"javascript:void(0)\" onclick=\"openDialogView('查看工程进度款信息', '${ctx}/project/claimSummarizing/form?view=contentView&condition=interim&type=46&infoId="+d.id+"&id="+d.contentPId+"','95%','95%')\" style=\"color: white;background: darkseagreen\" class=\"op-btn op-btn-op-btn-revert\" ><i class=\"fa fa-edit\"></i> 详情</a>"
+                        /*}*/
+                        return xml;
+
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="projectRecords" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${projectRecords.id}"
+                    ,"projId":"${projectRecords.projectId}"
+                    ,"projName":"<c:out value="${projectRecords.projectName}" escapeXml="true"/>"
+                    ,"projMaster":"<c:forEach items="${projectRecords.projectLeaders}" var="leader" varStatus="status"><c:choose><c:when test="${status.last}">${leader.name}</c:when><c:otherwise>${leader.name},</c:otherwise></c:choose></c:forEach>"
+                    ,"contract":"${projectRecords.workContractInfo.name}"
+                    ,"client":"${projectRecords.workContractInfo.client.name}"
+                    ,"createDate":"<fmt:formatDate value="${projectRecords.createDate}" pattern="yyyy-MM-dd"/>"
+                    ,"projectStatus":"${projectRecords.projectStatus}"
+                    ,"procId":"${projectRecords.processInstanceId}"
+                    ,"contentPId":"${projectRecords.contentPId}"
+                    ,"dictType":"${projectRecords.dictType}"
+                    <c:choose><c:when test="${flag == '1' or fns:getUser().id == projectRecords.createBy.id}">
+                    <shiro:hasPermission name="project:projectRecords:del">,"candel":	<c:choose><c:when test="${projectRecords.projectStatus == 1 or projectRecords.projectStatus == 3 or projectRecords.projectStatus == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose></shiro:hasPermission>
+                    <shiro:hasPermission name="project:projectRecords:edit">,"canedit1":	<c:choose><c:when test="${projectRecords.projectStatus == 1 }">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    ,"canedit2":<c:choose><c:when test="${projectRecords.projectStatus == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    ,"canrecall":<c:choose><c:when test="${projectRecords.projectStatus == 3}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </shiro:hasPermission>
+                    ,"cancancel":<c:choose><c:when test="${projectRecords.projectStatus == 2 && fns:getUser().id == projectRecords.createBy.id}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </c:when>
+                    <c:otherwise>
+                    ,"candel":"0"
+                    ,"canedit1":"0"
+                    ,"canedit2":"0"
+                    ,"canrecall":"0"
+                    ,"cancancel":"0"
+                    </c:otherwise>
+                    </c:choose>
+                    <shiro:hasPermission name="project:projectRecords:edit">,"canedit3":<c:choose><c:when test="${projectRecords.projectStatus == 5 && fn:contains(projectRecords.leaderIds,fns:getUser().id)}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose></shiro:hasPermission>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+        });
+    })
+
+    resizeListTable();
+    $("a").on("click",addLinkVisied);
+</script>
+<script>
+    resizeListWindow2();
+    $(window).resize(function(){
+        resizeListWindow2();
+    });
+</script>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script src="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.js" charset="utf-8"></script>
+</body>
+</html>

+ 371 - 0
src/main/webapp/webpage/modules/projectrecord/summarizing/concealProjectRecordsList.jsp

@@ -0,0 +1,371 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目登记</title>
+	<meta name="decorator" content="default"/>
+    <link href="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.css" rel="stylesheet" />
+	<%--<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>--%>
+    <style>
+        .layui-table th{
+            font-size: 14px;
+            /*表头内容居中显示*/
+            text-align: center;
+        }
+		.pid{
+			font-size:14px;
+			font-weight:400;
+		}
+    </style>
+	<script type="text/javascript">
+        $(document).ready(function() {
+
+            //搜索框收放
+            $('#moresee').click(function(){
+                if($('#moresees').is(':visible'))
+                {
+                    $('#moresees').slideUp(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+                }else{
+                    $('#moresees').slideDown(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+                }
+            });
+            laydate.render({
+                elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+        });
+
+        function reset() {
+            $("#searchForm").resetForm();
+        }
+
+        function openDialog(title,url,width,height,target) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url,
+                skin: 'three-btns',
+                btn: ['送审', '暂存', '关闭'],
+                /*yes: function (index, layero) {
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if (target) {
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    } else {
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target", top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+
+                    if (iframeWin.contentWindow.doSubmit()) {
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function () {
+                            top.layer.close(index)
+                        }, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+
+                },*/
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+
+        function openDialogre(title,url,width,height,target,buttons) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            var split = buttons.split(",");
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                skin: 'three-btns',
+                content: url,
+                btn: split,
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    if(split.length==2){return}
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="list-form-tab contentShadow shadowLTR" id="tabDiv">
+				<ul class="list-tabs" >
+					<li><a href="${ctx}/project/interimPaymentSummarizing/list">工程进度款汇总表</a></li>
+					<li><a href="${ctx}/project/designSummarizing/list">设计变更汇总表</a></li>
+					<li><a href="${ctx}/project/visaSummarizing/list">现场签证汇总表</a></li>
+					<li><a href="${ctx}/project/claimSummarizing/list">索赔汇总表</a></li>
+					<li><a href="${ctx}/project/distributionSummarizing/list">分布结算汇总表</a></li>
+					<li><a href="${ctx}/project/materialSummarizing/list">暂定材料价汇总表</a></li>
+					<li><a href="${ctx}/project/armorSummarizing/list">甲供物资汇总表</a></li>
+					<li class="active"><a href="${ctx}/project/concealSummarizing/list">隐蔽工程量汇总表</a></li>
+				</ul>
+			</div>
+			<div class="layui-row contentShadow shadowLR" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="projectRecords" action="${ctx}/project/concealSummarizing/" method="post" class="form-inline">
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+					<div class="commonQuery lw6">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">项目名称:</label>
+							<div class="layui-input-block">
+								<form:input path="projectName" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">项目负责人:</label>
+							<div class="layui-input-block">
+								<form:input path="leaderNameStr" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+								<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+					<div id="moresees" style="clear:both;display:none;" class="lw6">
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">合同名称:</label>
+							<div class="layui-input-block">
+								<input type="text" input="workContractInfoName" name="workContractInfo.name" value="" htmlEscape="false" maxlength="255"  class=" form-control layui-input">
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">委托方:</label>
+							<div class="layui-input-block">
+								<input type="text" input="workContractInfoClientName" name="workContractInfo.client.name" value="" htmlEscape="false" maxlength="255"  class=" form-control layui-input">
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">创建时间:</label>
+							<div class="layui-input-block">
+								<input id="beginDate" name="beginDate" placeholder="开始时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${projectRecords.beginDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+                                <span class="group-sep">-</span>
+                                <input id="endDate" name="endDate" placeholder="结束时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+                                       value="<fmt:formatDate value="${projectRecords.endDate}" pattern="yyyy-MM-dd"/>"/>
+                                </input>
+							</div>
+						</div>
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-form contentDetails contentShadow shadowLBR">
+				<div class="nav-btns">
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+				</div>
+				<table class="oa-table layui-table" id="contentTable1"></table>
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable1'
+            ,page: false
+            ,cols: [[
+                {field:'index',align:'center', title: '序号',width:40}
+                ,{field:'projName',align:'center', title: '项目名称',minWidth:200,templet:function(d){
+                        return "<a class=\"attention-info\" title=\"" + d.projName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目', '${ctx}/project/projectRecords/view?id=" + d.id +"','95%', '95%')\">" + d.projName + "</a>";
+                    }}
+                ,{field:'projId',align:'center', title: '项目编号',minWidth:150,templet:function(d){
+                        return "<a class=\"attention-info\" title=\"" + d.projId + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看隐蔽工程量信息', '${ctx}/project/concealSummarizing/form?view=contentView&condition=interim&type=410&infoId="+d.id+"&id="+d.contentPId+"','95%', '95%')\">" + d.projId + "</a>";
+                    }}
+                ,{field:'contract', align:'center',title: '合同名称',minWidth:150,templet:function(d){
+                    	return "<span title='"+ d.contract +"'>" + d.contract + "</span>";
+					}}
+                ,{field:'projMaster', align:'center',title: '负责人', width:85,templet:function(d){
+                        return "<span title=\"" + d.projMaster + "\">" + d.projMaster + "</span>";
+                    }}
+                ,{field:'client',align:'center', title: '主委托方',  width:150,templet:function(d){
+                        return "<span title=\"" + d.client + "\">" + d.client + "</span>";
+                    }}
+                ,{field:'createDate',align:'center', title: '创建日期',  width:80}
+                ,{field:'op',align:'center',title:"操作",width:130,templet:function(d){
+                        ////对操作进行初始化
+                        var xml="";
+                        /*if(d.canedit3 != undefined && d.canedit3 =="1")
+                        {*/
+							xml+="<a href=\"javascript:void(0)\" onclick=\"openDialogView('查看隐蔽工程量信息', '${ctx}/project/concealSummarizing/form?view=contentView&condition=interim&type=410&infoId="+d.id+"&id="+d.contentPId+"','95%','95%')\" style=\"color: white;background: darkseagreen\" class=\"op-btn op-btn-op-btn-revert\" ><i class=\"fa fa-edit\"></i> 详情</a>"
+                        /*}*/
+                        return xml;
+
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="projectRecords" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${projectRecords.id}"
+                    ,"projId":"${projectRecords.projectId}"
+                    ,"projName":"<c:out value="${projectRecords.projectName}" escapeXml="true"/>"
+                    ,"projMaster":"<c:forEach items="${projectRecords.projectLeaders}" var="leader" varStatus="status"><c:choose><c:when test="${status.last}">${leader.name}</c:when><c:otherwise>${leader.name},</c:otherwise></c:choose></c:forEach>"
+                    ,"contract":"${projectRecords.workContractInfo.name}"
+                    ,"client":"${projectRecords.workContractInfo.client.name}"
+                    ,"createDate":"<fmt:formatDate value="${projectRecords.createDate}" pattern="yyyy-MM-dd"/>"
+                    ,"projectStatus":"${projectRecords.projectStatus}"
+                    ,"procId":"${projectRecords.processInstanceId}"
+                    ,"contentPId":"${projectRecords.contentPId}"
+                    ,"dictType":"${projectRecords.dictType}"
+                    <c:choose><c:when test="${flag == '1' or fns:getUser().id == projectRecords.createBy.id}">
+                    <shiro:hasPermission name="project:projectRecords:del">,"candel":	<c:choose><c:when test="${projectRecords.projectStatus == 1 or projectRecords.projectStatus == 3 or projectRecords.projectStatus == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose></shiro:hasPermission>
+                    <shiro:hasPermission name="project:projectRecords:edit">,"canedit1":	<c:choose><c:when test="${projectRecords.projectStatus == 1 }">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    ,"canedit2":<c:choose><c:when test="${projectRecords.projectStatus == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    ,"canrecall":<c:choose><c:when test="${projectRecords.projectStatus == 3}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </shiro:hasPermission>
+                    ,"cancancel":<c:choose><c:when test="${projectRecords.projectStatus == 2 && fns:getUser().id == projectRecords.createBy.id}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </c:when>
+                    <c:otherwise>
+                    ,"candel":"0"
+                    ,"canedit1":"0"
+                    ,"canedit2":"0"
+                    ,"canrecall":"0"
+                    ,"cancancel":"0"
+                    </c:otherwise>
+                    </c:choose>
+                    <shiro:hasPermission name="project:projectRecords:edit">,"canedit3":<c:choose><c:when test="${projectRecords.projectStatus == 5 && fn:contains(projectRecords.leaderIds,fns:getUser().id)}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose></shiro:hasPermission>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+        });
+    })
+
+    resizeListTable();
+    $("a").on("click",addLinkVisied);
+</script>
+<script>
+    resizeListWindow2();
+    $(window).resize(function(){
+        resizeListWindow2();
+    });
+</script>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script src="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.js" charset="utf-8"></script>
+</body>
+</html>

+ 371 - 0
src/main/webapp/webpage/modules/projectrecord/summarizing/designSumamarizingProjectRecordsList.jsp

@@ -0,0 +1,371 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目登记</title>
+	<meta name="decorator" content="default"/>
+    <link href="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.css" rel="stylesheet" />
+	<%--<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>--%>
+    <style>
+        .layui-table th{
+            font-size: 14px;
+            /*表头内容居中显示*/
+            text-align: center;
+        }
+		.pid{
+			font-size:14px;
+			font-weight:400;
+		}
+    </style>
+	<script type="text/javascript">
+        $(document).ready(function() {
+
+            //搜索框收放
+            $('#moresee').click(function(){
+                if($('#moresees').is(':visible'))
+                {
+                    $('#moresees').slideUp(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+                }else{
+                    $('#moresees').slideDown(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+                }
+            });
+            laydate.render({
+                elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+        });
+
+        function reset() {
+            $("#searchForm").resetForm();
+        }
+
+        function openDialog(title,url,width,height,target) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url,
+                skin: 'three-btns',
+                btn: ['送审', '暂存', '关闭'],
+                /*yes: function (index, layero) {
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if (target) {
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    } else {
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target", top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+
+                    if (iframeWin.contentWindow.doSubmit()) {
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function () {
+                            top.layer.close(index)
+                        }, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+
+                },*/
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+
+        function openDialogre(title,url,width,height,target,buttons) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            var split = buttons.split(",");
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                skin: 'three-btns',
+                content: url,
+                btn: split,
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    if(split.length==2){return}
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="list-form-tab contentShadow shadowLTR" id="tabDiv">
+				<ul class="list-tabs" >
+					<li><a href="${ctx}/project/interimPaymentSummarizing/list">工程进度款汇总表</a></li>
+					<li class="active"><a href="${ctx}/project/designSummarizing/list">设计变更汇总表</a></li>
+					<li><a href="${ctx}/project/visaSummarizing/list">现场签证汇总表</a></li>
+					<li><a href="${ctx}/project/claimSummarizing/list">索赔汇总表</a></li>
+					<li><a href="${ctx}/project/distributionSummarizing/list">分布结算汇总表</a></li>
+					<li><a href="${ctx}/project/materialSummarizing/list">暂定材料价汇总表</a></li>
+					<li><a href="${ctx}/project/armorSummarizing/list">甲供物资汇总表</a></li>
+					<li><a href="${ctx}/project/concealSummarizing/list">隐蔽工程量汇总表</a></li>
+				</ul>
+			</div>
+			<div class="layui-row contentShadow shadowLR" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="projectRecords" action="${ctx}/project/designSummarizing/" method="post" class="form-inline">
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+					<div class="commonQuery lw6">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">项目名称:</label>
+							<div class="layui-input-block">
+								<form:input path="projectName" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">项目负责人:</label>
+							<div class="layui-input-block">
+								<form:input path="leaderNameStr" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+								<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+					<div id="moresees" style="clear:both;display:none;" class="lw6">
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">合同名称:</label>
+							<div class="layui-input-block">
+								<input type="text" input="workContractInfoName" name="workContractInfo.name" value="" htmlEscape="false" maxlength="255"  class=" form-control layui-input">
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">委托方:</label>
+							<div class="layui-input-block">
+								<input type="text" input="workContractInfoClientName" name="workContractInfo.client.name" value="" htmlEscape="false" maxlength="255"  class=" form-control layui-input">
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">创建时间:</label>
+							<div class="layui-input-block">
+								<input id="beginDate" name="beginDate" placeholder="开始时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${projectRecords.beginDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+                                <span class="group-sep">-</span>
+                                <input id="endDate" name="endDate" placeholder="结束时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+                                       value="<fmt:formatDate value="${projectRecords.endDate}" pattern="yyyy-MM-dd"/>"/>
+                                </input>
+							</div>
+						</div>
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-form contentDetails contentShadow shadowLBR">
+				<div class="nav-btns">
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+				</div>
+				<table class="oa-table layui-table" id="contentTable1"></table>
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable1'
+            ,page: false
+            ,cols: [[
+                {field:'index',align:'center', title: '序号',width:40}
+                ,{field:'projName',align:'center', title: '项目名称',minWidth:200,templet:function(d){
+                        return "<a class=\"attention-info\" title=\"" + d.projName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目', '${ctx}/project/projectRecords/view?id=" + d.id +"','95%', '95%')\">" + d.projName + "</a>";
+                    }}
+                ,{field:'projId',align:'center', title: '项目编号',minWidth:150,templet:function(d){
+                        return "<a class=\"attention-info\" title=\"" + d.projId + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看工程进度款信息', '${ctx}/project/designSummarizing/form?view=contentView&condition=interim&type=43&infoId="+d.id+"&id="+d.contentPId+"','95%', '95%')\">" + d.projId + "</a>";
+                    }}
+                ,{field:'contract', align:'center',title: '合同名称',minWidth:150,templet:function(d){
+                    	return "<span title='"+ d.contract +"'>" + d.contract + "</span>";
+					}}
+                ,{field:'projMaster', align:'center',title: '负责人', width:85,templet:function(d){
+                        return "<span title=\"" + d.projMaster + "\">" + d.projMaster + "</span>";
+                    }}
+                ,{field:'client',align:'center', title: '主委托方',  width:150,templet:function(d){
+                        return "<span title=\"" + d.client + "\">" + d.client + "</span>";
+                    }}
+                ,{field:'createDate',align:'center', title: '创建日期',  width:80}
+                ,{field:'op',align:'center',title:"操作",width:130,templet:function(d){
+                        ////对操作进行初始化
+                        var xml="";
+                        /*if(d.canedit3 != undefined && d.canedit3 =="1")
+                        {*/
+							xml+="<a href=\"javascript:void(0)\" onclick=\"openDialogView('查看工程进度款信息', '${ctx}/project/designSummarizing/form?view=contentView&condition=interim&type=43&infoId="+d.id+"&id="+d.contentPId+"','95%','95%')\" style=\"color: white;background: darkseagreen\" class=\"op-btn op-btn-op-btn-revert\" ><i class=\"fa fa-edit\"></i> 详情</a>"
+                        /*}*/
+                        return xml;
+
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="projectRecords" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${projectRecords.id}"
+                    ,"projId":"${projectRecords.projectId}"
+                    ,"projName":"<c:out value="${projectRecords.projectName}" escapeXml="true"/>"
+                    ,"projMaster":"<c:forEach items="${projectRecords.projectLeaders}" var="leader" varStatus="status"><c:choose><c:when test="${status.last}">${leader.name}</c:when><c:otherwise>${leader.name},</c:otherwise></c:choose></c:forEach>"
+                    ,"contract":"${projectRecords.workContractInfo.name}"
+                    ,"client":"${projectRecords.workContractInfo.client.name}"
+                    ,"createDate":"<fmt:formatDate value="${projectRecords.createDate}" pattern="yyyy-MM-dd"/>"
+                    ,"projectStatus":"${projectRecords.projectStatus}"
+                    ,"procId":"${projectRecords.processInstanceId}"
+                    ,"contentPId":"${projectRecords.contentPId}"
+                    ,"dictType":"${projectRecords.dictType}"
+                    <c:choose><c:when test="${flag == '1' or fns:getUser().id == projectRecords.createBy.id}">
+                    <shiro:hasPermission name="project:projectRecords:del">,"candel":	<c:choose><c:when test="${projectRecords.projectStatus == 1 or projectRecords.projectStatus == 3 or projectRecords.projectStatus == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose></shiro:hasPermission>
+                    <shiro:hasPermission name="project:projectRecords:edit">,"canedit1":	<c:choose><c:when test="${projectRecords.projectStatus == 1 }">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    ,"canedit2":<c:choose><c:when test="${projectRecords.projectStatus == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    ,"canrecall":<c:choose><c:when test="${projectRecords.projectStatus == 3}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </shiro:hasPermission>
+                    ,"cancancel":<c:choose><c:when test="${projectRecords.projectStatus == 2 && fns:getUser().id == projectRecords.createBy.id}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </c:when>
+                    <c:otherwise>
+                    ,"candel":"0"
+                    ,"canedit1":"0"
+                    ,"canedit2":"0"
+                    ,"canrecall":"0"
+                    ,"cancancel":"0"
+                    </c:otherwise>
+                    </c:choose>
+                    <shiro:hasPermission name="project:projectRecords:edit">,"canedit3":<c:choose><c:when test="${projectRecords.projectStatus == 5 && fn:contains(projectRecords.leaderIds,fns:getUser().id)}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose></shiro:hasPermission>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+        });
+    })
+
+    resizeListTable();
+    $("a").on("click",addLinkVisied);
+</script>
+<script>
+    resizeListWindow2();
+    $(window).resize(function(){
+        resizeListWindow2();
+    });
+</script>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script src="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.js" charset="utf-8"></script>
+</body>
+</html>

+ 371 - 0
src/main/webapp/webpage/modules/projectrecord/summarizing/distributionSumamarizingProjectRecordsList.jsp

@@ -0,0 +1,371 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目登记</title>
+	<meta name="decorator" content="default"/>
+    <link href="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.css" rel="stylesheet" />
+	<%--<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>--%>
+    <style>
+        .layui-table th{
+            font-size: 14px;
+            /*表头内容居中显示*/
+            text-align: center;
+        }
+		.pid{
+			font-size:14px;
+			font-weight:400;
+		}
+    </style>
+	<script type="text/javascript">
+        $(document).ready(function() {
+
+            //搜索框收放
+            $('#moresee').click(function(){
+                if($('#moresees').is(':visible'))
+                {
+                    $('#moresees').slideUp(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+                }else{
+                    $('#moresees').slideDown(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+                }
+            });
+            laydate.render({
+                elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+        });
+
+        function reset() {
+            $("#searchForm").resetForm();
+        }
+
+        function openDialog(title,url,width,height,target) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url,
+                skin: 'three-btns',
+                btn: ['送审', '暂存', '关闭'],
+                /*yes: function (index, layero) {
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if (target) {
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    } else {
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target", top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+
+                    if (iframeWin.contentWindow.doSubmit()) {
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function () {
+                            top.layer.close(index)
+                        }, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+
+                },*/
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+
+        function openDialogre(title,url,width,height,target,buttons) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            var split = buttons.split(",");
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                skin: 'three-btns',
+                content: url,
+                btn: split,
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    if(split.length==2){return}
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="list-form-tab contentShadow shadowLTR" id="tabDiv">
+				<ul class="list-tabs" >
+					<li><a href="${ctx}/project/interimPaymentSummarizing/list">工程进度款汇总表</a></li>
+					<li><a href="${ctx}/project/designSummarizing/list">设计变更汇总表</a></li>
+					<li><a href="${ctx}/project/visaSummarizing/list">现场签证汇总表</a></li>
+					<li><a href="${ctx}/project/claimSummarizing/list">索赔汇总表</a></li>
+					<li class="active"><a href="${ctx}/project/distributionSummarizing/list">分布结算汇总表</a></li>
+					<li><a href="${ctx}/project/materialSummarizing/list">暂定材料价汇总表</a></li>
+					<li><a href="${ctx}/project/armorSummarizing/list">甲供物资汇总表</a></li>
+					<li><a href="${ctx}/project/concealSummarizing/list">隐蔽工程量汇总表</a></li>
+				</ul>
+			</div>
+			<div class="layui-row contentShadow shadowLR" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="projectRecords" action="${ctx}/project/distributionSummarizing/" method="post" class="form-inline">
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+					<div class="commonQuery lw6">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">项目名称:</label>
+							<div class="layui-input-block">
+								<form:input path="projectName" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">项目负责人:</label>
+							<div class="layui-input-block">
+								<form:input path="leaderNameStr" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+								<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+					<div id="moresees" style="clear:both;display:none;" class="lw6">
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">合同名称:</label>
+							<div class="layui-input-block">
+								<input type="text" input="workContractInfoName" name="workContractInfo.name" value="" htmlEscape="false" maxlength="255"  class=" form-control layui-input">
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">委托方:</label>
+							<div class="layui-input-block">
+								<input type="text" input="workContractInfoClientName" name="workContractInfo.client.name" value="" htmlEscape="false" maxlength="255"  class=" form-control layui-input">
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">创建时间:</label>
+							<div class="layui-input-block">
+								<input id="beginDate" name="beginDate" placeholder="开始时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${projectRecords.beginDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+                                <span class="group-sep">-</span>
+                                <input id="endDate" name="endDate" placeholder="结束时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+                                       value="<fmt:formatDate value="${projectRecords.endDate}" pattern="yyyy-MM-dd"/>"/>
+                                </input>
+							</div>
+						</div>
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-form contentDetails contentShadow shadowLBR">
+				<div class="nav-btns">
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+				</div>
+				<table class="oa-table layui-table" id="contentTable1"></table>
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable1'
+            ,page: false
+            ,cols: [[
+                {field:'index',align:'center', title: '序号',width:40}
+                ,{field:'projName',align:'center', title: '项目名称',minWidth:200,templet:function(d){
+                        return "<a class=\"attention-info\" title=\"" + d.projName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目', '${ctx}/project/projectRecords/view?id=" + d.id +"','95%', '95%')\">" + d.projName + "</a>";
+                    }}
+                ,{field:'projId',align:'center', title: '项目编号',minWidth:150,templet:function(d){
+                        return "<a class=\"attention-info\" title=\"" + d.projId + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看工程进度款信息', '${ctx}/project/designSummarizing/form?view=contentView&condition=interim&type=412&infoId="+d.id+"&id="+d.contentPId+"','95%', '95%')\">" + d.projId + "</a>";
+                    }}
+                ,{field:'contract', align:'center',title: '合同名称',minWidth:150,templet:function(d){
+                    	return "<span title='"+ d.contract +"'>" + d.contract + "</span>";
+					}}
+                ,{field:'projMaster', align:'center',title: '负责人', width:85,templet:function(d){
+                        return "<span title=\"" + d.projMaster + "\">" + d.projMaster + "</span>";
+                    }}
+                ,{field:'client',align:'center', title: '主委托方',  width:150,templet:function(d){
+                        return "<span title=\"" + d.client + "\">" + d.client + "</span>";
+                    }}
+                ,{field:'createDate',align:'center', title: '创建日期',  width:80}
+                ,{field:'op',align:'center',title:"操作",width:130,templet:function(d){
+                        ////对操作进行初始化
+                        var xml="";
+                        /*if(d.canedit3 != undefined && d.canedit3 =="1")
+                        {*/
+							xml+="<a href=\"javascript:void(0)\" onclick=\"openDialogView('查看工程进度款信息', '${ctx}/project/distributionSummarizing/form?view=contentView&condition=interim&type=412&infoId="+d.id+"&id="+d.contentPId+"','95%','95%')\" style=\"color: white;background: darkseagreen\" class=\"op-btn op-btn-op-btn-revert\" ><i class=\"fa fa-edit\"></i> 详情</a>"
+                        /*}*/
+                        return xml;
+
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="projectRecords" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${projectRecords.id}"
+                    ,"projId":"${projectRecords.projectId}"
+                    ,"projName":"<c:out value="${projectRecords.projectName}" escapeXml="true"/>"
+                    ,"projMaster":"<c:forEach items="${projectRecords.projectLeaders}" var="leader" varStatus="status"><c:choose><c:when test="${status.last}">${leader.name}</c:when><c:otherwise>${leader.name},</c:otherwise></c:choose></c:forEach>"
+                    ,"contract":"${projectRecords.workContractInfo.name}"
+                    ,"client":"${projectRecords.workContractInfo.client.name}"
+                    ,"createDate":"<fmt:formatDate value="${projectRecords.createDate}" pattern="yyyy-MM-dd"/>"
+                    ,"projectStatus":"${projectRecords.projectStatus}"
+                    ,"procId":"${projectRecords.processInstanceId}"
+                    ,"contentPId":"${projectRecords.contentPId}"
+                    ,"dictType":"${projectRecords.dictType}"
+                    <c:choose><c:when test="${flag == '1' or fns:getUser().id == projectRecords.createBy.id}">
+                    <shiro:hasPermission name="project:projectRecords:del">,"candel":	<c:choose><c:when test="${projectRecords.projectStatus == 1 or projectRecords.projectStatus == 3 or projectRecords.projectStatus == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose></shiro:hasPermission>
+                    <shiro:hasPermission name="project:projectRecords:edit">,"canedit1":	<c:choose><c:when test="${projectRecords.projectStatus == 1 }">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    ,"canedit2":<c:choose><c:when test="${projectRecords.projectStatus == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    ,"canrecall":<c:choose><c:when test="${projectRecords.projectStatus == 3}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </shiro:hasPermission>
+                    ,"cancancel":<c:choose><c:when test="${projectRecords.projectStatus == 2 && fns:getUser().id == projectRecords.createBy.id}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </c:when>
+                    <c:otherwise>
+                    ,"candel":"0"
+                    ,"canedit1":"0"
+                    ,"canedit2":"0"
+                    ,"canrecall":"0"
+                    ,"cancancel":"0"
+                    </c:otherwise>
+                    </c:choose>
+                    <shiro:hasPermission name="project:projectRecords:edit">,"canedit3":<c:choose><c:when test="${projectRecords.projectStatus == 5 && fn:contains(projectRecords.leaderIds,fns:getUser().id)}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose></shiro:hasPermission>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+        });
+    })
+
+    resizeListTable();
+    $("a").on("click",addLinkVisied);
+</script>
+<script>
+    resizeListWindow2();
+    $(window).resize(function(){
+        resizeListWindow2();
+    });
+</script>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script src="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.js" charset="utf-8"></script>
+</body>
+</html>

+ 371 - 0
src/main/webapp/webpage/modules/projectrecord/summarizing/materialProjectRecordsList.jsp

@@ -0,0 +1,371 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目登记</title>
+	<meta name="decorator" content="default"/>
+    <link href="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.css" rel="stylesheet" />
+	<%--<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>--%>
+    <style>
+        .layui-table th{
+            font-size: 14px;
+            /*表头内容居中显示*/
+            text-align: center;
+        }
+		.pid{
+			font-size:14px;
+			font-weight:400;
+		}
+    </style>
+	<script type="text/javascript">
+        $(document).ready(function() {
+
+            //搜索框收放
+            $('#moresee').click(function(){
+                if($('#moresees').is(':visible'))
+                {
+                    $('#moresees').slideUp(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+                }else{
+                    $('#moresees').slideDown(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+                }
+            });
+            laydate.render({
+                elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+        });
+
+        function reset() {
+            $("#searchForm").resetForm();
+        }
+
+        function openDialog(title,url,width,height,target) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url,
+                skin: 'three-btns',
+                btn: ['送审', '暂存', '关闭'],
+                /*yes: function (index, layero) {
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if (target) {
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    } else {
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target", top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+
+                    if (iframeWin.contentWindow.doSubmit()) {
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function () {
+                            top.layer.close(index)
+                        }, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+
+                },*/
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+
+        function openDialogre(title,url,width,height,target,buttons) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            var split = buttons.split(",");
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                skin: 'three-btns',
+                content: url,
+                btn: split,
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    if(split.length==2){return}
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="list-form-tab contentShadow shadowLTR" id="tabDiv">
+				<ul class="list-tabs" >
+					<li><a href="${ctx}/project/interimPaymentSummarizing/list">工程进度款汇总表</a></li>
+					<li><a href="${ctx}/project/designSummarizing/list">设计变更汇总表</a></li>
+					<li><a href="${ctx}/project/visaSummarizing/list">现场签证汇总表</a></li>
+					<li><a href="${ctx}/project/claimSummarizing/list">索赔汇总表</a></li>
+					<li><a href="${ctx}/project/distributionSummarizing/list">分布结算汇总表</a></li>
+					<li class="active"><a href="${ctx}/project/materialSummarizing/list">暂定材料价汇总表</a></li>
+					<li><a href="${ctx}/project/armorSummarizing/list">甲供物资汇总表</a></li>
+					<li><a href="${ctx}/project/concealSummarizing/list">隐蔽工程量汇总表</a></li>
+				</ul>
+			</div>
+			<div class="layui-row contentShadow shadowLR" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="projectRecords" action="${ctx}/project/materialSummarizing/" method="post" class="form-inline">
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+					<div class="commonQuery lw6">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">项目名称:</label>
+							<div class="layui-input-block">
+								<form:input path="projectName" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">项目负责人:</label>
+							<div class="layui-input-block">
+								<form:input path="leaderNameStr" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+								<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+					<div id="moresees" style="clear:both;display:none;" class="lw6">
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">合同名称:</label>
+							<div class="layui-input-block">
+								<input type="text" input="workContractInfoName" name="workContractInfo.name" value="" htmlEscape="false" maxlength="255"  class=" form-control layui-input">
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">委托方:</label>
+							<div class="layui-input-block">
+								<input type="text" input="workContractInfoClientName" name="workContractInfo.client.name" value="" htmlEscape="false" maxlength="255"  class=" form-control layui-input">
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">创建时间:</label>
+							<div class="layui-input-block">
+								<input id="beginDate" name="beginDate" placeholder="开始时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${projectRecords.beginDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+                                <span class="group-sep">-</span>
+                                <input id="endDate" name="endDate" placeholder="结束时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+                                       value="<fmt:formatDate value="${projectRecords.endDate}" pattern="yyyy-MM-dd"/>"/>
+                                </input>
+							</div>
+						</div>
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-form contentDetails contentShadow shadowLBR">
+				<div class="nav-btns">
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+				</div>
+				<table class="oa-table layui-table" id="contentTable1"></table>
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable1'
+            ,page: false
+            ,cols: [[
+                {field:'index',align:'center', title: '序号',width:40}
+                ,{field:'projName',align:'center', title: '项目名称',minWidth:200,templet:function(d){
+                        return "<a class=\"attention-info\" title=\"" + d.projName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目', '${ctx}/project/projectRecords/view?id=" + d.id +"','95%', '95%')\">" + d.projName + "</a>";
+                    }}
+                ,{field:'projId',align:'center', title: '项目编号',minWidth:150,templet:function(d){
+                        return "<a class=\"attention-info\" title=\"" + d.projId + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看工程进度款信息', '${ctx}/project/interimPaymentSummarizing/form?view=contentView&condition=material&type=421&infoId="+d.id+"&id="+d.contentPId+"','95%', '95%')\">" + d.projId + "</a>";
+                    }}
+                ,{field:'contract', align:'center',title: '合同名称',minWidth:150,templet:function(d){
+                    	return "<span title='"+ d.contract +"'>" + d.contract + "</span>";
+					}}
+                ,{field:'projMaster', align:'center',title: '负责人', width:85,templet:function(d){
+                        return "<span title=\"" + d.projMaster + "\">" + d.projMaster + "</span>";
+                    }}
+                ,{field:'client',align:'center', title: '主委托方',  width:150,templet:function(d){
+                        return "<span title=\"" + d.client + "\">" + d.client + "</span>";
+                    }}
+                ,{field:'createDate',align:'center', title: '创建日期',  width:80}
+                ,{field:'op',align:'center',title:"操作",width:130,templet:function(d){
+                        ////对操作进行初始化
+                        var xml="";
+                        /*if(d.canedit3 != undefined && d.canedit3 =="1")
+                        {*/
+							xml+="<a href=\"javascript:void(0)\" onclick=\"openDialogView('查看工程进度款信息', '${ctx}/project/materialSummarizing/form?view=contentView&condition=material&type=421&infoId="+d.id+"&id="+d.contentPId+"','95%','95%')\" style=\"color: white;background: darkseagreen\" class=\"op-btn op-btn-op-btn-revert\" ><i class=\"fa fa-edit\"></i> 详情</a>"
+                        /*}*/
+                        return xml;
+
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="projectRecords" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${projectRecords.id}"
+                    ,"projId":"${projectRecords.projectId}"
+                    ,"projName":"<c:out value="${projectRecords.projectName}" escapeXml="true"/>"
+                    ,"projMaster":"<c:forEach items="${projectRecords.projectLeaders}" var="leader" varStatus="status"><c:choose><c:when test="${status.last}">${leader.name}</c:when><c:otherwise>${leader.name},</c:otherwise></c:choose></c:forEach>"
+                    ,"contract":"${projectRecords.workContractInfo.name}"
+                    ,"client":"${projectRecords.workContractInfo.client.name}"
+                    ,"createDate":"<fmt:formatDate value="${projectRecords.createDate}" pattern="yyyy-MM-dd"/>"
+                    ,"projectStatus":"${projectRecords.projectStatus}"
+                    ,"procId":"${projectRecords.processInstanceId}"
+                    ,"contentPId":"${projectRecords.contentPId}"
+                    ,"dictType":"${projectRecords.dictType}"
+                    <c:choose><c:when test="${flag == '1' or fns:getUser().id == projectRecords.createBy.id}">
+                    <shiro:hasPermission name="project:projectRecords:del">,"candel":	<c:choose><c:when test="${projectRecords.projectStatus == 1 or projectRecords.projectStatus == 3 or projectRecords.projectStatus == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose></shiro:hasPermission>
+                    <shiro:hasPermission name="project:projectRecords:edit">,"canedit1":	<c:choose><c:when test="${projectRecords.projectStatus == 1 }">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    ,"canedit2":<c:choose><c:when test="${projectRecords.projectStatus == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    ,"canrecall":<c:choose><c:when test="${projectRecords.projectStatus == 3}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </shiro:hasPermission>
+                    ,"cancancel":<c:choose><c:when test="${projectRecords.projectStatus == 2 && fns:getUser().id == projectRecords.createBy.id}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </c:when>
+                    <c:otherwise>
+                    ,"candel":"0"
+                    ,"canedit1":"0"
+                    ,"canedit2":"0"
+                    ,"canrecall":"0"
+                    ,"cancancel":"0"
+                    </c:otherwise>
+                    </c:choose>
+                    <shiro:hasPermission name="project:projectRecords:edit">,"canedit3":<c:choose><c:when test="${projectRecords.projectStatus == 5 && fn:contains(projectRecords.leaderIds,fns:getUser().id)}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose></shiro:hasPermission>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+        });
+    })
+
+    resizeListTable();
+    $("a").on("click",addLinkVisied);
+</script>
+<script>
+    resizeListWindow2();
+    $(window).resize(function(){
+        resizeListWindow2();
+    });
+</script>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script src="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.js" charset="utf-8"></script>
+</body>
+</html>

+ 15 - 3
src/main/webapp/webpage/modules/projectrecord/summarizing/sumamarizingProjectRecordsList.jsp

@@ -195,8 +195,20 @@
 	<sys:message content="${message}"/>
 	<div class="layui-row">
 		<div class="full-width fl">
+			<div class="list-form-tab contentShadow shadowLTR" id="tabDiv">
+				<ul class="list-tabs" >
+					<li class="active"><a href="${ctx}/project/interimPaymentSummarizing/list">工程进度款汇总表</a></li>
+					<li><a href="${ctx}/project/designSummarizing/list">设计变更汇总表</a></li>
+					<li><a href="${ctx}/project/visaSummarizing/list">现场签证汇总表</a></li>
+					<li><a href="${ctx}/project/claimSummarizing/list">索赔汇总表</a></li>
+					<li><a href="${ctx}/project/distributionSummarizing/list">分布结算汇总表</a></li>
+					<li><a href="${ctx}/project/materialSummarizing/list">暂定材料价汇总表</a></li>
+					<li><a href="${ctx}/project/armorSummarizing/list">甲供物资汇总表</a></li>
+					<li><a href="${ctx}/project/concealSummarizing/list">隐蔽工程量汇总表</a></li>
+				</ul>
+			</div>
 			<div class="layui-row contentShadow shadowLR" id="queryDiv">
-				<form:form id="searchForm" modelAttribute="projectRecords" action="${ctx}/project/designSummarizing/" method="post" class="form-inline">
+				<form:form id="searchForm" modelAttribute="projectRecords" action="${ctx}/project/interimPaymentSummarizing/" method="post" class="form-inline">
 					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
 					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
 					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
@@ -280,7 +292,7 @@
                         return "<a class=\"attention-info\" title=\"" + d.projName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目', '${ctx}/project/projectRecords/view?id=" + d.id +"','95%', '95%')\">" + d.projName + "</a>";
                     }}
                 ,{field:'projId',align:'center', title: '项目编号',minWidth:150,templet:function(d){
-                        return "<a class=\"attention-info\" title=\"" + d.projId + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看工程进度款信息', '${ctx}/project/designSummarizing/form?view=contentView&condition=interim&type=420&infoId="+d.id+"&id="+d.contentPId+"','95%', '95%')\">" + d.projId + "</a>";
+                        return "<a class=\"attention-info\" title=\"" + d.projId + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看工程进度款信息', '${ctx}/project/interimPaymentSummarizing/form?view=contentView&condition=interim&type=420&infoId="+d.id+"&id="+d.contentPId+"','95%', '95%')\">" + d.projId + "</a>";
                     }}
                 ,{field:'contract', align:'center',title: '合同名称',minWidth:150,templet:function(d){
                     	return "<span title='"+ d.contract +"'>" + d.contract + "</span>";
@@ -297,7 +309,7 @@
                         var xml="";
                         /*if(d.canedit3 != undefined && d.canedit3 =="1")
                         {*/
-							xml+="<a href=\"javascript:void(0)\" onclick=\"openDialogView('查看工程进度款信息', '${ctx}/project/designSummarizing/form?view=contentView&condition=interim&type=420&infoId="+d.id+"&id="+d.contentPId+"','95%','95%')\" style=\"color: white;background: darkseagreen\" class=\"op-btn op-btn-op-btn-revert\" ><i class=\"fa fa-edit\"></i> 详情</a>"
+							xml+="<a href=\"javascript:void(0)\" onclick=\"openDialogView('查看工程进度款信息', '${ctx}/project/interimPaymentSummarizing/form?view=contentView&condition=interim&type=420&infoId="+d.id+"&id="+d.contentPId+"','95%','95%')\" style=\"color: white;background: darkseagreen\" class=\"op-btn op-btn-op-btn-revert\" ><i class=\"fa fa-edit\"></i> 详情</a>"
                         /*}*/
                         return xml;
 

+ 371 - 0
src/main/webapp/webpage/modules/projectrecord/summarizing/visaSumamarizingProjectRecordsList.jsp

@@ -0,0 +1,371 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目登记</title>
+	<meta name="decorator" content="default"/>
+    <link href="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.css" rel="stylesheet" />
+	<%--<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>--%>
+    <style>
+        .layui-table th{
+            font-size: 14px;
+            /*表头内容居中显示*/
+            text-align: center;
+        }
+		.pid{
+			font-size:14px;
+			font-weight:400;
+		}
+    </style>
+	<script type="text/javascript">
+        $(document).ready(function() {
+
+            //搜索框收放
+            $('#moresee').click(function(){
+                if($('#moresees').is(':visible'))
+                {
+                    $('#moresees').slideUp(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+                }else{
+                    $('#moresees').slideDown(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+                }
+            });
+            laydate.render({
+                elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+        });
+
+        function reset() {
+            $("#searchForm").resetForm();
+        }
+
+        function openDialog(title,url,width,height,target) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url,
+                skin: 'three-btns',
+                btn: ['送审', '暂存', '关闭'],
+                /*yes: function (index, layero) {
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if (target) {
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    } else {
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target", top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+
+                    if (iframeWin.contentWindow.doSubmit()) {
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function () {
+                            top.layer.close(index)
+                        }, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+
+                },*/
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+
+        function openDialogre(title,url,width,height,target,buttons) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            var split = buttons.split(",");
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                skin: 'three-btns',
+                content: url,
+                btn: split,
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    if(split.length==2){return}
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="list-form-tab contentShadow shadowLTR" id="tabDiv">
+				<ul class="list-tabs" >
+					<li><a href="${ctx}/project/interimPaymentSummarizing/list">工程进度款汇总表</a></li>
+					<li><a href="${ctx}/project/designSummarizing/list">设计变更汇总表</a></li>
+					<li class="active"><a href="${ctx}/project/visaSummarizing/list">现场签证汇总表</a></li>
+					<li><a href="${ctx}/project/claimSummarizing/list">索赔汇总表</a></li>
+					<li><a href="${ctx}/project/distributionSummarizing/list">分布结算汇总表</a></li>
+					<li><a href="${ctx}/project/materialSummarizing/list">暂定材料价汇总表</a></li>
+					<li><a href="${ctx}/project/armorSummarizing/list">甲供物资汇总表</a></li>
+					<li><a href="${ctx}/project/concealSummarizing/list">隐蔽工程量汇总表</a></li>
+				</ul>
+			</div>
+			<div class="layui-row contentShadow shadowLR" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="projectRecords" action="${ctx}/project/visaSummarizing/" method="post" class="form-inline">
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+					<div class="commonQuery lw6">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">项目名称:</label>
+							<div class="layui-input-block">
+								<form:input path="projectName" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">项目负责人:</label>
+							<div class="layui-input-block">
+								<form:input path="leaderNameStr" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+								<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+					<div id="moresees" style="clear:both;display:none;" class="lw6">
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">合同名称:</label>
+							<div class="layui-input-block">
+								<input type="text" input="workContractInfoName" name="workContractInfo.name" value="" htmlEscape="false" maxlength="255"  class=" form-control layui-input">
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">委托方:</label>
+							<div class="layui-input-block">
+								<input type="text" input="workContractInfoClientName" name="workContractInfo.client.name" value="" htmlEscape="false" maxlength="255"  class=" form-control layui-input">
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">创建时间:</label>
+							<div class="layui-input-block">
+								<input id="beginDate" name="beginDate" placeholder="开始时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${projectRecords.beginDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+                                <span class="group-sep">-</span>
+                                <input id="endDate" name="endDate" placeholder="结束时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+                                       value="<fmt:formatDate value="${projectRecords.endDate}" pattern="yyyy-MM-dd"/>"/>
+                                </input>
+							</div>
+						</div>
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-form contentDetails contentShadow shadowLBR">
+				<div class="nav-btns">
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+				</div>
+				<table class="oa-table layui-table" id="contentTable1"></table>
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable1'
+            ,page: false
+            ,cols: [[
+                {field:'index',align:'center', title: '序号',width:40}
+                ,{field:'projName',align:'center', title: '项目名称',minWidth:200,templet:function(d){
+                        return "<a class=\"attention-info\" title=\"" + d.projName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目', '${ctx}/project/projectRecords/view?id=" + d.id +"','95%', '95%')\">" + d.projName + "</a>";
+                    }}
+                ,{field:'projId',align:'center', title: '项目编号',minWidth:150,templet:function(d){
+                        return "<a class=\"attention-info\" title=\"" + d.projId + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看工程进度款信息', '${ctx}/project/visaSummarizing/form?view=contentView&condition=interim&type=45&infoId="+d.id+"&id="+d.contentPId+"','95%', '95%')\">" + d.projId + "</a>";
+                    }}
+                ,{field:'contract', align:'center',title: '合同名称',minWidth:150,templet:function(d){
+                    	return "<span title='"+ d.contract +"'>" + d.contract + "</span>";
+					}}
+                ,{field:'projMaster', align:'center',title: '负责人', width:85,templet:function(d){
+                        return "<span title=\"" + d.projMaster + "\">" + d.projMaster + "</span>";
+                    }}
+                ,{field:'client',align:'center', title: '主委托方',  width:150,templet:function(d){
+                        return "<span title=\"" + d.client + "\">" + d.client + "</span>";
+                    }}
+                ,{field:'createDate',align:'center', title: '创建日期',  width:80}
+                ,{field:'op',align:'center',title:"操作",width:130,templet:function(d){
+                        ////对操作进行初始化
+                        var xml="";
+                        /*if(d.canedit3 != undefined && d.canedit3 =="1")
+                        {*/
+							xml+="<a href=\"javascript:void(0)\" onclick=\"openDialogView('查看工程进度款信息', '${ctx}/project/visaSummarizing/form?view=contentView&condition=interim&type=45&infoId="+d.id+"&id="+d.contentPId+"','95%','95%')\" style=\"color: white;background: darkseagreen\" class=\"op-btn op-btn-op-btn-revert\" ><i class=\"fa fa-edit\"></i> 详情</a>"
+                        /*}*/
+                        return xml;
+
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="projectRecords" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${projectRecords.id}"
+                    ,"projId":"${projectRecords.projectId}"
+                    ,"projName":"<c:out value="${projectRecords.projectName}" escapeXml="true"/>"
+                    ,"projMaster":"<c:forEach items="${projectRecords.projectLeaders}" var="leader" varStatus="status"><c:choose><c:when test="${status.last}">${leader.name}</c:when><c:otherwise>${leader.name},</c:otherwise></c:choose></c:forEach>"
+                    ,"contract":"${projectRecords.workContractInfo.name}"
+                    ,"client":"${projectRecords.workContractInfo.client.name}"
+                    ,"createDate":"<fmt:formatDate value="${projectRecords.createDate}" pattern="yyyy-MM-dd"/>"
+                    ,"projectStatus":"${projectRecords.projectStatus}"
+                    ,"procId":"${projectRecords.processInstanceId}"
+                    ,"contentPId":"${projectRecords.contentPId}"
+                    ,"dictType":"${projectRecords.dictType}"
+                    <c:choose><c:when test="${flag == '1' or fns:getUser().id == projectRecords.createBy.id}">
+                    <shiro:hasPermission name="project:projectRecords:del">,"candel":	<c:choose><c:when test="${projectRecords.projectStatus == 1 or projectRecords.projectStatus == 3 or projectRecords.projectStatus == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose></shiro:hasPermission>
+                    <shiro:hasPermission name="project:projectRecords:edit">,"canedit1":	<c:choose><c:when test="${projectRecords.projectStatus == 1 }">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    ,"canedit2":<c:choose><c:when test="${projectRecords.projectStatus == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    ,"canrecall":<c:choose><c:when test="${projectRecords.projectStatus == 3}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </shiro:hasPermission>
+                    ,"cancancel":<c:choose><c:when test="${projectRecords.projectStatus == 2 && fns:getUser().id == projectRecords.createBy.id}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </c:when>
+                    <c:otherwise>
+                    ,"candel":"0"
+                    ,"canedit1":"0"
+                    ,"canedit2":"0"
+                    ,"canrecall":"0"
+                    ,"cancancel":"0"
+                    </c:otherwise>
+                    </c:choose>
+                    <shiro:hasPermission name="project:projectRecords:edit">,"canedit3":<c:choose><c:when test="${projectRecords.projectStatus == 5 && fn:contains(projectRecords.leaderIds,fns:getUser().id)}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose></shiro:hasPermission>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+        });
+    })
+
+    resizeListTable();
+    $("a").on("click",addLinkVisied);
+</script>
+<script>
+    resizeListWindow2();
+    $(window).resize(function(){
+        resizeListWindow2();
+    });
+</script>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script src="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.js" charset="utf-8"></script>
+</body>
+</html>

+ 21 - 21
src/main/webapp/webpage/modules/projectrecord/summarizing/workContentView.jsp

@@ -179,13 +179,13 @@
                     $("#contentDetail").load("${ctx}/workcontent/workContentPricemanage/form",param2);
                     break;
                 case '43':
-                    $("#contentDetail").load("${ctx}/project/projectDesignChange/visaList",param2);
+                    $("#contentDetail").load("${ctx}/project/projectDesignChange/listByProjectId",param2);
                     break;
                 case '45':
-                    $("#contentDetail").load("${ctx}/project/projectVisa/visaList",param2);
+                    $("#contentDetail").load("${ctx}/project/projectVisa/listByProjectId",param2);
                     break;
                 case '46':
-                    $("#contentDetail").load("${ctx}/project/projectClaim/visaList",param2);
+                    $("#contentDetail").load("${ctx}/project/projectClaim/listByProjectId",param2);
                     break;
                 case '47':
                     $("#contentDetail").load("${ctx}/workcontent/workContentFundplan/form",param2);
@@ -206,14 +206,14 @@
                     $("#contentDetail").load("${ctx}/workcontent/workContentContractSum/form",param2);
                     break;*/
                 case '410':
-                    $("#contentDetail").load("${ctx}/workConcealProject/workConcealProject/list",param2);
+                    $("#contentDetail").load("${ctx}/workConcealProject/workConcealProject/listByProjectId",param2);
                     break;
                 case '411':
-                    $("#contentDetail").load("${ctx}/fiveDirectionsAffirm/workFiveDirectionsAffirm/list",param2);
+                    $("#contentDetail").load("${ctx}/fiveDirectionsAffirm/workFiveDirectionsAffirm/listByProjectId",param2);
                     break;
                 /*新加代码*/
                 case '412':
-                    $("#contentDetail").load("${ctx}/workcontentbranchaccount/workcontentBranchAccount/list",param2);
+                    $("#contentDetail").load("${ctx}/workcontentbranchaccount/workcontentBranchAccount/listByProjectId",param2);
                     break;
                 /*新加代码*/
                 case '510':
@@ -223,7 +223,7 @@
                     $("#contentDetail").load("${ctx}/workSchedule/workSchedule/listByProjectId",param2);
                     break;
                 case '421':
-                    $("#contentDetail").load("${ctx}/workMaterialsPrice/workMaterialsPrice/list",param2);
+                    $("#contentDetail").load("${ctx}/workMaterialsPrice/workMaterialsPrice/listByProjectId",param2);
                     break;
                 default:
                     detailFlag=0;
@@ -607,13 +607,13 @@
                 break;
 
             case '43':
-                $("#contentDetail").load("${ctx}/project/projectDesignChange/visaList",param2);
+                $("#contentDetail").load("${ctx}/project/projectDesignChange/listByProjectId",param2);
                 break;
             case '45':
-                $("#contentDetail").load("${ctx}/project/projectVisa/visaList",param2);
+                $("#contentDetail").load("${ctx}/project/projectVisa/listByProjectId",param2);
                 break;
             case '46':
-                $("#contentDetail").load("${ctx}/project/projectClaim/visaList",param2);
+                $("#contentDetail").load("${ctx}/project/projectClaim/listByProjectId",param2);
                 break;
             case '47':
                 $("#contentDetail").load("${ctx}/workcontent/workContentFundplan/form",param2);
@@ -634,13 +634,13 @@
                 $("#contentDetail").load("${ctx}/workcontent/workContentContractSum/form",param2);
                 break;*/
             case '410':
-                $("#contentDetail").load("${ctx}/workConcealProject/workConcealProject/list",param2);
+                $("#contentDetail").load("${ctx}/workConcealProject/workConcealProject/listByProjectId",param2);
                 break;
             case '411':
-                $("#contentDetail").load("${ctx}/fiveDirectionsAffirm/workFiveDirectionsAffirm/list",param2);
+                $("#contentDetail").load("${ctx}/fiveDirectionsAffirm/workFiveDirectionsAffirm/listByProjectId",param2);
                 break;
             case '412':
-                $("#contentDetail").load("${ctx}/workcontentbranchaccount/workContentBranchAccount/list",param2);
+                $("#contentDetail").load("${ctx}/workcontentbranchaccount/workContentBranchAccount/listByProjectId",param2);
                 break;
             case '510':
                 $("#contentDetail").load("${ctx}/workContent/workContentCompleteAccount/list",param2);
@@ -649,7 +649,7 @@
                 $("#contentDetail").load("${ctx}/workSchedule/workSchedule/listByProjectId",param2);
                 break;
             case '421':
-                $("#contentDetail").load("${ctx}/workMaterialsPrice/workMaterialsPrice/list",param2);
+                $("#contentDetail").load("${ctx}/workMaterialsPrice/workMaterialsPrice/listByProjectId",param2);
                 break;
             default:
                 detailFlag=0;
@@ -689,13 +689,13 @@
                 break;
 
             case '43':
-                $("#contentDetail").load("${ctx}/project/projectDesignChange/visaList",param2);
+                $("#contentDetail").load("${ctx}/project/projectDesignChange/listByProjectId",param2);
                 break;
             case '45':
-                $("#contentDetail").load("${ctx}/project/projectVisa/visaList",param2);
+                $("#contentDetail").load("${ctx}/project/projectVisa/listByProjectId",param2);
                 break;
             case '46':
-                $("#contentDetail").load("${ctx}/project/projectClaim/visaList",param2);
+                $("#contentDetail").load("${ctx}/project/projectClaim/listByProjectId",param2);
                 break;
             case '47':
                 $("#contentDetail").load("${ctx}/workcontent/workContentFundplan/form",param2);
@@ -716,13 +716,13 @@
                 $("#contentDetail").load("${ctx}/workcontent/workContentContractSum/form",param2);
                 break;*/
             case '410':
-                $("#contentDetail").load("${ctx}/workConcealProject/workConcealProject/list",param2);
+                $("#contentDetail").load("${ctx}/workConcealProject/workConcealProject/listByProjectId",param2);
                 break;
             case '411':
-                $("#contentDetail").load("${ctx}/fiveDirectionsAffirm/workFiveDirectionsAffirm/list",param2);
+                $("#contentDetail").load("${ctx}/fiveDirectionsAffirm/workFiveDirectionsAffirm/listByProjectId",param2);
                 break;
             case '412':
-                $("#contentDetail").load("${ctx}/workcontentbranchaccount/workcontentBranchAccount/list",param2);
+                $("#contentDetail").load("${ctx}/workcontentbranchaccount/workcontentBranchAccount/listByProjectId",param2);
                 break;
             case '510':
                 $("#contentDetail").load("${ctx}/workContent/workContentCompleteAccount/list",param2);
@@ -731,7 +731,7 @@
                 $("#contentDetail").load("${ctx}/workSchedule/workSchedule/listByProjectId",param2);
                 break;
             case '421':
-                $("#contentDetail").load("${ctx}/workMaterialsPrice/workMaterialsPrice/list",param2);
+                $("#contentDetail").load("${ctx}/workMaterialsPrice/workMaterialsPrice/listByProjectId",param2);
                 break;
             default:
                 detailFlag=0;

+ 1 - 1
src/main/webapp/webpage/modules/projectrecord/visa/projectVisaForm.jsp

@@ -487,7 +487,7 @@
             <form:hidden path="project.id"/>
             <form:hidden path="contract.id"/>
             <form:hidden path="projectContentData.id"/>
-            <input type="hidden" name="project.workContractInfo.id" value="${concealProjectInfo.contract.id}">
+            <input type="hidden" name="projectContentData.contractId" value="${concealProjectInfo.contract.id}">
             <input type="hidden" name="projectContentData.type" value="45">
             <input type="hidden" id="contentDeta" name="projectContentData.contentDetail">
             <input type="hidden" id="dataBodyList" name="dataBodyList" value="">

+ 8 - 1
src/main/webapp/webpage/modules/projectrecord/workContentFromAndView/workContentForm.jsp

@@ -569,6 +569,7 @@
             <form:hidden path="parentIds"/>
             <form:hidden path="project.id"/>
             <form:hidden path="projectContentData.id"/>
+            <form:hidden path="projectContentData.contractId"/>
             <input type="hidden" id="contentDeta" name="projectContentData.contentDetail">
             <input type="hidden" id="dataBodyList" name="dataBodyList" value="">
             <input type="hidden" id="projectContentDataSign" name="projectContentDataSign" value="">
@@ -1141,13 +1142,19 @@
 <script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
 <script>
     function contentDetailTypeShow(obj) {
+        var type = null;
+        if(obj == '410' || obj == '411' || obj == '421'){
+            type = 2;
+        }else{
+            type = 3;
+        }
         var projectContentDataId = '${projectcontentinfo.projectContentData.id}';
         $.ajax({
             type:'post',
             url:'${ctx}/projectcontentinfo/projectcontentinfo/getAchievementTypeList2',
             data:{
                 "achievementParentId":obj,
-                "type":3
+                "type":type
             },
             success:function(data){
                 if(data.success) {

+ 122 - 0
src/main/webapp/webpage/modules/workcontent/workProjectArmorListView.jsp

@@ -0,0 +1,122 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<form id="subForm"  action="#" onsubmit="return false;" method="post" class="form-horizontal">
+    <table id="contentTable" class="table table-bordered table-condensed">
+        <thead>
+        <tr>
+            <th colspan="22" style="font-size: 20px">甲供物资五方确认表</th>
+        </tr>
+        <tr>
+            <th rowspan="2" class="hide"></th>
+            <th rowspan="2" >序号</th>
+            <th rowspan="2" >实施合同名称</th>
+            <th rowspan="2" >实施合同编号</th>
+            <th colspan="5" >一、业主项目部填写栏</th>
+            <th colspan="5" >二、设计单位确认栏</th>
+            <th colspan="5" >三、施工单位申报需求栏</th>
+            <th colspan="5" >四、咨询单位审核</th>
+        </tr>
+        <tr>
+            <th>采购申请号</th>
+            <th>物料编码</th>
+            <th>物料描述</th>
+            <th>单位</th>
+            <th>招标量</th>
+
+            <th>施工图物料名称及规格型号</th>
+            <th>图纸净量</th>
+            <th>损耗率</th>
+            <th>确认合计量</th>
+            <th>备注</th>
+
+            <th>图纸净量</th>
+            <th>损耗率</th>
+            <th>需求用量</th>
+            <th>需求日期</th>
+            <th>备注</th>
+
+            <th>图纸净量</th>
+            <th>损耗率</th>
+            <th>审核合计量</th>
+            <th>备注</th>
+        </tr>
+        </thead>
+        <tbody id="preliminaryList">
+        <c:forEach items="${fiveDirectionsAffirmList}" var="row" varStatus="status">
+            <tr>
+                <td style='text-align:center;'>
+                        ${status.index+1}
+                </td>
+
+                <td style='text-align:center;' title="${row.contractName}">
+                        ${row.contractName}
+                </td>
+                <td style='text-align:center;' title="${row.contractNumber}">
+                        ${row.contractNumber}
+                </td>
+                <td style='text-align:center;' title="${row.ownerPurchasingRequisitionNum}">
+                        ${row.ownerPurchasingRequisitionNum}
+                </td>
+                <td style='text-align:center;' title="${row.ownerMaterialCode}">
+                        ${row.ownerMaterialCode}
+                </td>
+                <td style='text-align:center;' title="${row.ownerMaterialDescription}">
+                        ${row.ownerMaterialDescription}
+                </td>
+                <td style='text-align:center;' title="${row.ownerUnits}">
+                        ${row.ownerUnits}
+                </td>
+                <td style='text-align:center;' title="${row.ownerTenderNum}">
+                        ${row.ownerTenderNum}
+                </td>
+
+                <td style='text-align:center;' title="${row.designMaterialName}">
+                        ${row.designMaterialName}
+                </td>
+                <td style='text-align:center;' title="${row.designDrawingAmount}">
+                         ${row.designDrawingAmount}
+                </td>
+                <td style='text-align:center;' title="${row.designAttritionRate}">
+                        ${row.designAttritionRate}
+                </td>
+                <td style='text-align:center;' title="${row.designAffirmTotal}">
+                        ${row.designAffirmTotal}
+                </td>
+                <td style='text-align:center;' title="${row.designRemarks}">
+                        ${row.designRemarks}
+                </td>
+
+                <td style='text-align:center;' title=" ${row.roadworkDrawingAmount}">
+                        ${row.roadworkDrawingAmount}
+                </td>
+                <td style='text-align:center;' title="${row.roadworkAttritionRate}">
+                        ${row.roadworkAttritionRate}
+                </td>
+                <td style='text-align:center;' title="${row.roadworkDemandDosage}">
+                        ${row.roadworkDemandDosage}
+                </td>
+                <td style='text-align:center;' title="<fmt:formatDate value="${row.roadworkDemandDate}" pattern="yyyy-MM-dd" />">
+                        <fmt:formatDate value="${row.roadworkDemandDate}" pattern="yyyy-MM-dd" />
+                </td>
+                <td style='text-align:center;' title="${row.roadworkRemarks}">
+                        ${row.roadworkRemarks}
+                </td>
+
+                <td style='text-align:center;' title="${row.consultDrawingAmount}">
+                        ${row.consultDrawingAmount}
+                </td>
+                <td style='text-align:center;' title="${row.consultAttritionRate}">
+                        ${row.consultAttritionRate}
+                </td>
+                <td style='text-align:center;' title="${row.consultAuditTotal}">
+                        ${row.consultAuditTotal}
+                </td>
+                <td style='text-align:center;' title="${row.consultRemarks}">
+                        ${row.consultRemarks}
+                </td>
+
+            </tr>
+        </c:forEach>
+        </tbody>
+    </table>
+</form>

+ 63 - 0
src/main/webapp/webpage/modules/workcontent/workProjectBranchListView.jsp

@@ -0,0 +1,63 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<form id="subForm"  action="#" onsubmit="return false;" method="post" class="form-horizontal">
+    <table id="contentTable" class="table table-bordered table-condensed">
+        <thead>
+        <tr>
+            <th colspan="10" style="font-size: 20px">分布结算审核单</th>
+        </tr>
+        <tr>
+            <th class="hide"></th>
+            <th>序号</th>
+            <th>实施合同名称</th>
+            <th>合同名称编号</th>
+            <th>单位工程名称</th>
+            <th>合同价(元)</th>
+            <th>送审价(元)</th>
+            <th>审定价(元)</th>
+            <th>核增额(元)</th>
+            <th>核减额(元)</th>
+            <th>核增、核减额(%)</th>
+        </tr>
+        </thead>
+        <tbody id="investmentCostList">
+        <c:forEach items="${investmentCostList}" var="row" varStatus="status">
+            <tr>
+                <td style='text-align:center;'>
+                        ${status.index+1}
+                </td>
+
+                <td style="text-align:center;">
+                        ${row.contractName}
+                </td>
+                <td style="text-align:center;">
+                        ${row.contractNumber}
+                </td>
+                <td style='text-align:center;'>
+                        ${row.accountName}
+                </td>
+                <td style='text-align:center;'>
+                    <fmt:formatNumber value="${row.contractAccount}" pattern="#,##0.00#"/>
+                </td>
+                <td style='text-align:center;'>
+                    <fmt:formatNumber value="${row.submitAccount}" pattern="#,##0.00#"/>
+                </td>
+                <td style='text-align:center;'>
+                    <fmt:formatNumber value="${row.setAccount}" pattern="#,##0.00#"/>
+                </td>
+                <td style='text-align:center;'>
+                    <fmt:formatNumber value="${row.businessAdd}" pattern="#,##0.00#"/>
+                </td>
+                <td style='text-align:center;'>
+                    <fmt:formatNumber value="${row.businessReduce}" pattern="#,##0.00#"/>
+                </td>
+                <td style='text-align:center;'>
+                    <fmt:formatNumber value="${row.businessRate}" pattern="#,##0.00#"/>
+                </td>
+
+
+            </tr>
+        </c:forEach>
+        </tbody>
+    </table>
+</form>

+ 58 - 0
src/main/webapp/webpage/modules/workcontent/workProjectClaimListView.jsp

@@ -0,0 +1,58 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+
+<form id="subForm"  action="#" onsubmit="return false;" method="post" class="form-horizontal">
+    <table id="contentTable" class="table table-bordered table-condensed can-edit">
+        <thead>
+            <tr>
+                <th colspan="10" style="font-size: 20px">索赔一览表</th>
+            </tr>
+            <tr>
+                <th class="hide"></th>
+                <th>序号</th>
+                <th>实施合同名称</th>
+                <th>合同名称编号</th>
+                <th>索赔编号</th>
+                <th>索赔时间</th>
+                <th>主要内容</th>
+                <th>送审金额(万元)</th>
+                <th>审批手续合规性</th>
+                <th>审定金额(万元)</th>
+            </tr>
+        </thead>
+        <tbody id="investmentCostList">
+            <c:forEach items="${investmentCostList}" var="row" varStatus="status">
+                <tr>
+                    <td style="text-align:center; vertical-align: middle">
+                            ${status.index+1}
+                    </td>
+
+                    <td style="text-align:center; vertical-align: middle">
+                            ${row.contractName}
+                    </td>
+                    <td style="text-align:center; vertical-align: middle">
+                            ${row.contractNumber}
+                    </td>
+                    <td style="text-align:center; vertical-align: middle">
+                            ${row.number}
+                    </td>
+                    <td style="text-align:center; vertical-align: middle">
+                            ${row.dateStr}
+                    </td>
+                    <td style="text-align:center; vertical-align: middle">
+                            ${row.content}
+                    </td>
+                    <td style="text-align:center; vertical-align: middle">
+                        <fmt:formatNumber value="${row.sendMoney}" pattern="#,##0.00#"/>
+                    </td>
+                    <td style="text-align:center; vertical-align: middle">
+                            ${row.procedure}
+                    </td>
+                    <td style="text-align:center; vertical-align: middle">
+                        <fmt:formatNumber value="${row.confirmMoney}" pattern="#,##0.00#"/>
+                    </td>
+                </tr>
+            </c:forEach>
+        </tbody>
+    </table>
+</form>

+ 51 - 0
src/main/webapp/webpage/modules/workcontent/workProjectConcealListView.jsp

@@ -0,0 +1,51 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<form id="subForm"  action="#" onsubmit="return false;" method="post" class="form-horizontal">
+    <table class="table table-bordered table-condensed">
+        <thead>
+        <tr>
+            <th colspan="8" style="font-size: 20px">隐蔽工程量确认单</th>
+        </tr>
+        <tr>
+            <th>序号</th>
+            <th>实施合同名称</th>
+            <th>实施合同编号</th>
+            <th>工程类型</th>
+            <th>工程部位</th>
+            <th>工程量</th>
+            <th>隐蔽工程验收记录编号</th>
+            <th>备注</th>
+        </tr>
+        </thead>
+        <tbody id="workConcealProject">
+        <c:forEach items="${workConcealProject}" var="row" varStatus="status">
+            <tr>
+                <td style='text-align:center;'>
+                        ${status.index+1}
+                </td>
+                <td style='text-align:center;' title="${row.contractName}">
+                        ${row.contractName}
+                </td>
+                <td style='text-align:center;' title="${row.contractNumber}">
+                        ${row.contractNumber}
+                </td>
+                <td style='text-align:center;' title="${row.typeName}">
+                        ${row.typeName}
+                </td>
+                <td style='text-align:center;'>
+                        ${row.costPart}
+                </td>
+                <td style='text-align:center;'>
+                        ${row.workAmount}
+                </td>
+                <td style='text-align:center;'>
+                        ${row.workConcealProjectSerialNum}
+                </td>
+                <td style='text-align:center;'>
+                        ${row.remarks}
+                </td>
+            </tr>
+        </c:forEach>
+        </tbody>
+    </table>
+</form>

+ 59 - 0
src/main/webapp/webpage/modules/workcontent/workProjectDesignListView.jsp

@@ -0,0 +1,59 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+
+<form id="subForm"  action="#" onsubmit="return false;" method="post" class="form-horizontal">
+    <table id="contentTable" class="table table-bordered table-condensed can-edit">
+        <thead>
+            <tr>
+                <th colspan="10" style="font-size: 20px">设计变更一览表</th>
+            </tr>
+            <tr>
+                <th class="hide"></th>
+                <th>序号</th>
+                <th>实施合同名称</th>
+                <th>合同名称编号</th>
+                <th>设计变更编号</th>
+                <th>设计变更时间</th>
+                <th>主要内容</th>
+                <th>送审金额(万元)</th>
+                <th>审批手续合规性</th>
+                <th>审定金额(万元)</th>
+            </tr>
+        </thead>
+        <tbody id="investmentCostList">
+            <c:forEach items="${investmentCostList}" var="row" varStatus="status">
+                <tr>
+                    <td style="text-align:center; vertical-align: middle">
+                            ${status.index+1}
+                    </td>
+
+                    <td style="text-align:center; vertical-align: middle">
+                            ${row.contractName}
+                    </td>
+                    <td style="text-align:center; vertical-align: middle">
+                            ${row.contractNumber}
+                    </td>
+
+                    <td style="text-align:center; vertical-align: middle">
+                            ${row.number}
+                    </td>
+                    <td style="text-align:center; vertical-align: middle">
+                            ${row.dateStr}
+                    </td>
+                    <td style="text-align:center; vertical-align: middle">
+                            ${row.content}
+                    </td>
+                    <td style="text-align:center; vertical-align: middle">
+                        <fmt:formatNumber value="${row.sendMoney}" pattern="#,##0.00#"/>
+                    </td>
+                    <td style="text-align:center; vertical-align: middle">
+                            ${row.procedure}
+                    </td>
+                    <td style="text-align:center; vertical-align: middle">
+                        <fmt:formatNumber value="${row.confirmMoney}" pattern="#,##0.00#"/>
+                    </td>
+                </tr>
+            </c:forEach>
+        </tbody>
+    </table>
+</form>

+ 56 - 0
src/main/webapp/webpage/modules/workcontent/workProjectMaterialListView.jsp

@@ -0,0 +1,56 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<form id="subForm"  action="#" onsubmit="return false;" method="post" class="form-horizontal">
+    <table id="contentTable" class="table table-bordered table-condensed">
+        <thead>
+            <tr>
+                <th colspan="9" style="font-size: 20px">暂定材料价的审核、特殊材料价格的询价审核</th>
+            </tr>
+            <tr>
+                <th class="hide"></th>
+                <th>序号</th>
+                <th>实施合同名称</th>
+                <th>实施合同编号</th>
+                <th>材料名称</th>
+                <th>规格及名称</th>
+                <th>施工工艺使用部位</th>
+                <th>材料单价</th>
+                <th>甲方、咨询核定价(不含税价)</th>
+                <th>备注</th>
+            </tr>
+        </thead>
+        <tbody id="preliminaryList">
+        <c:forEach items="${workScheduleList}" var="row" varStatus="status">
+            <tr>
+                <td style='text-align:center;'>
+                        ${status.index+1}
+                </td>
+                <td style='text-align:center;'>
+                        ${row.contractName}
+                </td>
+                <td style='text-align:center;'>
+                        ${row.contractNumber}
+                </td>
+                <td style='text-align:center;'>
+                        ${row.materialsName}
+                </td>
+                <td style='text-align:center;'>
+                        ${row.specificationName}
+                </td>
+                <td style='text-align:center;'>
+                        ${row.partUsed}
+                </td>
+                <td style='text-align:center;'>
+                        ${row.materialPrice}
+                </td>
+                <td style='text-align:center;'>
+                    <fmt:formatNumber value="${row.nuclearPrice}" pattern="#,##0.00#"/>
+                </td>
+                <td style='text-align:center;'>
+                        ${row.remarks}
+                </td>
+            </tr>
+        </c:forEach>
+        </tbody>
+    </table>
+</form>

+ 1 - 1
src/main/webapp/webpage/modules/workcontent/workProjectScheduleListView.jsp

@@ -10,7 +10,7 @@
                         <th rowspan="2" class="hide"></th>
                         <th rowspan="2" >序号</th>
                         <th rowspan="2" >签约合同价款</th>
-                        <th rowspan="2" >合同名称价款</th>
+                        <th rowspan="2" >实施合同名称</th>
                         <th rowspan="2" >合同编号</th>
                         <th colspan="3" >截至上期末</th>
                         <th colspan="5">本期</th>

+ 59 - 0
src/main/webapp/webpage/modules/workcontent/workProjectVisaListView.jsp

@@ -0,0 +1,59 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+
+<form id="subForm"  action="#" onsubmit="return false;" method="post" class="form-horizontal">
+    <table id="contentTable" class="table table-bordered table-condensed can-edit">
+        <thead>
+            <tr>
+                <th colspan="10" style="font-size: 20px">现场签证一览表</th>
+            </tr>
+            <tr>
+                <th class="hide"></th>
+                <th>序号</th>
+                <th>实施合同名称</th>
+                <th>合同名称编号</th>
+                <th>现场签证编号</th>
+                <th>现场签证时间</th>
+                <th>主要内容</th>
+                <th>送审金额(万元)</th>
+                <th>审批手续合规性</th>
+                <th>审定金额(万元)</th>
+            </tr>
+        </thead>
+        <tbody id="investmentCostList">
+            <c:forEach items="${investmentCostList}" var="row" varStatus="status">
+                <tr>
+                    <td style="text-align:center; vertical-align: middle">
+                            ${status.index+1}
+                    </td>
+
+                    <td style="text-align:center; vertical-align: middle">
+                            ${row.contractName}
+                    </td>
+                    <td style="text-align:center; vertical-align: middle">
+                            ${row.contractNumber}
+                    </td>
+
+                    <td style="text-align:center; vertical-align: middle">
+                            ${row.number}
+                    </td>
+                    <td style="text-align:center; vertical-align: middle">
+                            ${row.dateStr}
+                    </td>
+                    <td style="text-align:center; vertical-align: middle">
+                            ${row.content}
+                    </td>
+                    <td style="text-align:center; vertical-align: middle">
+                        <fmt:formatNumber value="${row.sendMoney}" pattern="#,##0.00#"/>
+                    </td>
+                    <td style="text-align:center; vertical-align: middle">
+                            ${row.procedure}
+                    </td>
+                    <td style="text-align:center; vertical-align: middle">
+                        <fmt:formatNumber value="${row.confirmMoney}" pattern="#,##0.00#"/>
+                    </td>
+                </tr>
+            </c:forEach>
+        </tbody>
+    </table>
+</form>