Explorar o código

实施阶段项目复核

user5 %!s(int64=4) %!d(string=hai) anos
pai
achega
bc32666ee1
Modificáronse 45 ficheiros con 6666 adicións e 132 borrados
  1. 55 0
      src/main/java/com/jeeplus/modules/projectVisa/entity/VisaTreeData.java
  2. 39 6
      src/main/java/com/jeeplus/modules/projectVisa/web/ProjectClaimController.java
  3. 39 7
      src/main/java/com/jeeplus/modules/projectVisa/web/ProjectDesignController.java
  4. 36 20
      src/main/java/com/jeeplus/modules/projectVisa/web/ProjectVisaController.java
  5. 16 0
      src/main/java/com/jeeplus/modules/projectcontentinfo/dao/ProjectContentDataDao.java
  6. 16 0
      src/main/java/com/jeeplus/modules/projectcontentinfo/service/ProjectContentDataService.java
  7. 7 5
      src/main/java/com/jeeplus/modules/projectcontentinfo/service/ProjectcontentinfoService.java
  8. 41 1
      src/main/java/com/jeeplus/modules/projectcontentinfo/web/ProjectcontentinfoController.java
  9. 7 7
      src/main/java/com/jeeplus/modules/projectrecord/service/implementStage/ProjectInterimPaymentService.java
  10. 356 0
      src/main/java/com/jeeplus/modules/projectrecord/web/check/ChechDesignController.java
  11. 317 0
      src/main/java/com/jeeplus/modules/projectrecord/web/check/CheckClaimController.java
  12. 333 0
      src/main/java/com/jeeplus/modules/projectrecord/web/check/CheckDistributionSettlementController.java
  13. 350 0
      src/main/java/com/jeeplus/modules/projectrecord/web/check/CheckInterimPaymentController.java
  14. 370 0
      src/main/java/com/jeeplus/modules/projectrecord/web/check/CheckVisaController.java
  15. 41 7
      src/main/java/com/jeeplus/modules/projectrecord/web/distributionSettlement/DistributionSettlementController.java
  16. 40 9
      src/main/java/com/jeeplus/modules/projectrecord/web/implementStage/ProjectInterimPaymentController.java
  17. 2 2
      src/main/java/com/jeeplus/modules/projectreportnum/web/ProjectReportNumController.java
  18. 11 3
      src/main/java/com/jeeplus/modules/workcontent/common/WorkContentDetailFactory.java
  19. 6 0
      src/main/java/com/jeeplus/modules/workcontent/dao/WorkConcealProjectDao.java
  20. 5 1
      src/main/java/com/jeeplus/modules/workcontent/service/ProjectVisaInfoService.java
  21. 33 0
      src/main/resources/mappings/modules/projectcontentinfo/ProjectContentDataDao.xml
  22. 9 7
      src/main/resources/mappings/modules/projectrecord/implementStage/ProjectInterimPaymentDao.xml
  23. 5 0
      src/main/resources/mappings/modules/workcontent/WorkConcealProjectDao.xml
  24. 12 12
      src/main/webapp/webpage/modules/projectcontentinfo/workContentView.jsp
  25. 548 0
      src/main/webapp/webpage/modules/projectrecord/check/checkClaimList.jsp
  26. 551 0
      src/main/webapp/webpage/modules/projectrecord/check/checkDesignList.jsp
  27. 546 0
      src/main/webapp/webpage/modules/projectrecord/check/checkDistributionSettlementList.jsp
  28. 586 0
      src/main/webapp/webpage/modules/projectrecord/check/checkInterimPayment.jsp
  29. 548 0
      src/main/webapp/webpage/modules/projectrecord/check/checkVisaList.jsp
  30. 1180 0
      src/main/webapp/webpage/modules/projectrecord/check/reportForm.jsp
  31. 414 0
      src/main/webapp/webpage/modules/projectrecord/check/reportView.jsp
  32. 3 2
      src/main/webapp/webpage/modules/projectrecord/claim/projectClaimForm.jsp
  33. 4 5
      src/main/webapp/webpage/modules/projectrecord/claim/projectClaimList.jsp
  34. 4 2
      src/main/webapp/webpage/modules/projectrecord/design/projectDesignForm.jsp
  35. 3 1
      src/main/webapp/webpage/modules/projectrecord/distributionSettlement/distributionSettlementForm.jsp
  36. 3 4
      src/main/webapp/webpage/modules/projectrecord/distributionSettlement/distributionSettlementList.jsp
  37. 4 5
      src/main/webapp/webpage/modules/projectrecord/implementStage/projectDesignList.jsp
  38. 3 1
      src/main/webapp/webpage/modules/projectrecord/implementStage/projectInterimPaymentForm.jsp
  39. 4 4
      src/main/webapp/webpage/modules/projectrecord/implementStage/projectInterimPaymentList.jsp
  40. 3 4
      src/main/webapp/webpage/modules/projectrecord/implementStage/projectVisaList.jsp
  41. 3 2
      src/main/webapp/webpage/modules/projectrecord/visa/projectVisaForm.jsp
  42. 12 12
      src/main/webapp/webpage/modules/projectrecord/workContentFromAndView/workContentForm.jsp
  43. 3 3
      src/main/webapp/webpage/modules/projectrecord/workContentFromAndView/workContentView.jsp
  44. 49 0
      src/main/webapp/webpage/modules/workcontent/workClaimListView.jsp
  45. 49 0
      src/main/webapp/webpage/modules/workcontent/workDesignChangeListView.jsp

+ 55 - 0
src/main/java/com/jeeplus/modules/projectVisa/entity/VisaTreeData.java

@@ -21,6 +21,13 @@ public class VisaTreeData extends DataEntity<VisaTreeData> {
     private String type;//汇总类型1是签证2是设计
     private Integer condition;   //标识 (1:代表第1级,剩下的以此类推)
     private String projectId;   //项目id
+    private String projectContentId;  //工作内容id
+    private String status;  //复核状态
+    private String reportId;  //报告id
+    private String contentPId;      //保留工作内容id
+
+    private String dictType;
+    private String parentIds;
 
     public String getContractId() {
         return contractId;
@@ -133,4 +140,52 @@ public class VisaTreeData extends DataEntity<VisaTreeData> {
     public void setProjectId(String projectId) {
         this.projectId = projectId;
     }
+
+    public String getProjectContentId() {
+        return projectContentId;
+    }
+
+    public void setProjectContentId(String projectContentId) {
+        this.projectContentId = projectContentId;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getReportId() {
+        return reportId;
+    }
+
+    public void setReportId(String reportId) {
+        this.reportId = reportId;
+    }
+
+    public String getContentPId() {
+        return contentPId;
+    }
+
+    public void setContentPId(String contentPId) {
+        this.contentPId = contentPId;
+    }
+
+    public String getDictType() {
+        return dictType;
+    }
+
+    public void setDictType(String dictType) {
+        this.dictType = dictType;
+    }
+
+    public String getParentIds() {
+        return parentIds;
+    }
+
+    public void setParentIds(String parentIds) {
+        this.parentIds = parentIds;
+    }
 }

+ 39 - 6
src/main/java/com/jeeplus/modules/projectVisa/web/ProjectClaimController.java

@@ -10,11 +10,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.sys.entity.MainDictDetail;
 import com.jeeplus.modules.sys.entity.User;
@@ -51,6 +55,8 @@ public class ProjectClaimController extends BaseController {
     private ProjectControlTableService projectControlTableService;
     @Autowired
     private ProjectContentDataService projectContentDataService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
 
     @ModelAttribute
     public ConstructionContract get(@RequestParam(required=false) String id) {
@@ -103,6 +109,8 @@ public class ProjectClaimController extends BaseController {
                 recordTreeData.setCnumber(record.getProjectId());
                 recordTreeData.setNumber("");
                 recordTreeData.setPid("0");
+                //添加工作内容id
+                recordTreeData.setProjectContentId(record.getProjectContentId());
                 //将项目设置为第一级数据
                 recordTreeData.setCondition(1);
                 //将项目信息放入
@@ -128,6 +136,8 @@ public class ProjectClaimController extends BaseController {
                         visaTreeData.setNumber("");
                         visaTreeData.setPid(record.getId());
                         visaTreeData.setCnumber(contract.getCnumber());
+                        //添加工作内容id
+                        visaTreeData.setProjectContentId(record.getProjectContentId());
 
                         //将项目设置为第二级数据
                         visaTreeData.setCondition(2);
@@ -153,18 +163,37 @@ public class ProjectClaimController extends BaseController {
                         //将项目信息放入
                         treeList.add(visaTreeData);
 
+                        //获取阶段Type父节点信息
+                        String projectType = projectImplementEarlyService.getProjectType(record.getProjectTypeId(), "实施阶段");
+                        //根据项目id查询相关的项目阶段内容
+                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentDataListOnImplement(record.getId(),projectType,"46");
+
+                        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> projectVisaList=projectVisaService.getVisaList(contract.getId(),"3");
-                        for (int j=0;j<projectVisaList.size();j++){
+                        //List<ProjectContentData> projectVisaList=projectVisaService.getVisaList(contract.getId(),"3");
+                        for (int j=0;j<reportDataList.size();j++){
                             VisaTreeData contentData=new VisaTreeData();
-                            ProjectContentData data=projectVisaList.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());
+                            //添加工作内容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) {
@@ -205,6 +234,10 @@ public class ProjectClaimController extends BaseController {
             projectContentDataService.queryBasedData(projectContentData);
         }
 
+        if(StringUtils.isBlank(concealProjectInfo.getId()) && StringUtils.isNotBlank(concealProjectInfo.getProjectContentId())){
+            concealProjectInfo.setId(concealProjectInfo.getProjectContentId());
+        }
+        concealProjectInfo.setCondition("claim");
         concealProjectInfo.setProjectContentData(projectContentData);
         model.addAttribute("concealProjectInfo", concealProjectInfo);
         if("view".equals(concealProjectInfo.getView())){

+ 39 - 7
src/main/java/com/jeeplus/modules/projectVisa/web/ProjectDesignController.java

@@ -10,12 +10,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.sys.entity.MainDictDetail;
 import com.jeeplus.modules.sys.entity.User;
@@ -55,6 +58,8 @@ public class ProjectDesignController extends BaseController {
     private ProjectControlTableService projectControlTableService;
     @Autowired
     private ProjectContentDataService projectContentDataService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
 
     @ModelAttribute
     public ConstructionContract get(@RequestParam(required=false) String id) {
@@ -99,7 +104,10 @@ public class ProjectDesignController extends BaseController {
             projectContentData.setProjectControlTableList(controlData);
             projectContentDataService.queryBasedData(projectContentData);
         }
-
+        if(StringUtils.isBlank(concealProjectInfo.getId()) && StringUtils.isNotBlank(concealProjectInfo.getProjectContentId())){
+            concealProjectInfo.setId(concealProjectInfo.getProjectContentId());
+        }
+        concealProjectInfo.setCondition("design");
         concealProjectInfo.setProjectContentData(projectContentData);
         model.addAttribute("concealProjectInfo", concealProjectInfo);
         if("view".equals(concealProjectInfo.getView())){
@@ -219,6 +227,8 @@ public class ProjectDesignController extends BaseController {
                 recordTreeData.setCnumber(record.getProjectId());
                 recordTreeData.setNumber("");
                 recordTreeData.setPid("0");
+                //添加工作内容id
+                recordTreeData.setProjectContentId(record.getProjectContentId());
                 //将项目设置为第一级数据
                 recordTreeData.setCondition(1);
                 //将项目信息放入
@@ -244,6 +254,8 @@ public class ProjectDesignController extends BaseController {
                         visaTreeData.setNumber("");
                         visaTreeData.setPid(record.getId());
                         visaTreeData.setCnumber(contract.getCnumber());
+                        //添加工作内容id
+                        visaTreeData.setProjectContentId(record.getProjectContentId());
 
                         //将项目设置为第二级数据
                         visaTreeData.setCondition(2);
@@ -268,19 +280,39 @@ public class ProjectDesignController extends BaseController {
 
                         //将项目信息放入
                         treeList.add(visaTreeData);
+                        //获取阶段Type父节点信息
+                        String projectType = projectImplementEarlyService.getProjectType(record.getProjectTypeId(), "实施阶段");
+                        //根据项目id查询相关的项目阶段内容
+                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentDataListOnImplement(record.getId(),projectType,"43");
+
+
+                        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> projectVisaList=projectVisaService.getVisaList(contract.getId(),"2");
-                        for (int j=0;j<projectVisaList.size();j++){
+                        //List<ProjectContentData> projectVisaList=projectVisaService.getVisaList(contract.getId(),"2");
+                        for (int j=0;j<reportDataList.size();j++){
                             VisaTreeData contentData=new VisaTreeData();
-                            ProjectContentData data=projectVisaList.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());
+                            //添加工作内容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) {

+ 36 - 20
src/main/java/com/jeeplus/modules/projectVisa/web/ProjectVisaController.java

@@ -63,24 +63,12 @@ public class ProjectVisaController extends BaseController {
     @Autowired
     private WorkClientAttachmentDao workClientAttachmentDao;
     @Autowired
-    private ConcealProjectService concealProjectService;
-    @Autowired
     private ProjectControlTableService projectControlTableService;
     @Autowired
     private ProjectContentDataService projectContentDataService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
 
-
-    /*@ModelAttribute
-    public ProjectVisa get(@RequestParam(required=false) String id) {
-        ProjectVisa entity = null;
-        if (StringUtils.isNotBlank(id)){
-            entity = projectVisaService.get(id);
-        }
-        if (entity == null){
-            entity = new ProjectVisa();
-        }
-        return entity;
-    }*/
     @ModelAttribute
     public ConstructionContract get(@RequestParam(required=false) String id) {
         ConstructionContract entity = null;
@@ -125,6 +113,10 @@ public class ProjectVisaController extends BaseController {
             projectContentDataService.queryBasedData(projectContentData);
         }
 
+        if(StringUtils.isBlank(concealProjectInfo.getId()) && StringUtils.isNotBlank(concealProjectInfo.getProjectContentId())){
+            concealProjectInfo.setId(concealProjectInfo.getProjectContentId());
+        }
+        concealProjectInfo.setCondition("visa");
         concealProjectInfo.setProjectContentData(projectContentData);
         model.addAttribute("concealProjectInfo", concealProjectInfo);
         if("view".equals(concealProjectInfo.getView())){
@@ -253,6 +245,8 @@ public class ProjectVisaController extends BaseController {
                 recordTreeData.setCnumber(record.getProjectId());
                 recordTreeData.setNumber("");
                 recordTreeData.setPid("0");
+                //添加工作内容id
+                recordTreeData.setProjectContentId(record.getProjectContentId());
                 //将项目设置为第一级数据
                 recordTreeData.setCondition(1);
                 //将项目信息放入
@@ -278,6 +272,8 @@ public class ProjectVisaController extends BaseController {
                         visaTreeData.setNumber("");
                         visaTreeData.setPid(record.getId());
                         visaTreeData.setCnumber(contract.getCnumber());
+                        //添加工作内容id
+                        visaTreeData.setProjectContentId(record.getProjectContentId());
 
                         //将项目设置为第二级数据
                         visaTreeData.setCondition(2);
@@ -303,18 +299,38 @@ public class ProjectVisaController extends BaseController {
                         //将项目信息放入
                         treeList.add(visaTreeData);
 
+                        //获取阶段Type父节点信息
+                        String projectType = projectImplementEarlyService.getProjectType(record.getProjectTypeId(), "实施阶段");
+                        //根据项目id查询相关的项目阶段内容
+                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentDataListOnImplement(record.getId(),projectType,"45");
+
+                        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> projectVisaList=projectVisaService.getVisaList(contract.getId(),"1");
-                        for (int j=0;j<projectVisaList.size();j++){
+                        //List<ProjectContentData> projectVisaList=projectVisaService.getVisaList(contract.getId(),"1");
+                        for (int j=0;j<reportDataList.size();j++){
                             VisaTreeData contentData=new VisaTreeData();
-                            ProjectContentData data=projectVisaList.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());
+                            //添加工作内容id
+                            contentData.setProjectContentId(record.getProjectContentId());
+
+                            if(p.size()>0){
+                                contentData.setContentPId(p.get(0).getId());
+                                contentData.setParentIds("0,");
+                                contentData.setDictType("");
+                            }
 
                             //将项目设置为第二级数据
                             contentData.setCondition(3);

+ 16 - 0
src/main/java/com/jeeplus/modules/projectcontentinfo/dao/ProjectContentDataDao.java

@@ -46,6 +46,14 @@ public interface ProjectContentDataDao extends CrudDao<ProjectContentData> {
     List<ProjectRecordTreeData> getProjectContentDataList(@Param("projectId")String projectId,@Param("projectTypeParentId")String projectTypeParentId);
 
     /**
+     * 根据项目编号和阶段Type获取信息(实施阶段)
+     * @param projectId 项目id
+     * @param projectTypeParentId 阶段type
+     * @return
+     */
+    List<ProjectRecordTreeData> getProjectContentDataListOnImplement(@Param("projectId")String projectId,@Param("projectTypeParentId")String projectTypeParentId,@Param("typeId") String typeId);
+
+    /**
      * 根据项目编号和阶段Type获取信息(项目复核)
      * @param projectId
      * @param projectTypeParentId
@@ -54,6 +62,14 @@ public interface ProjectContentDataDao extends CrudDao<ProjectContentData> {
     List<ProjectRecordTreeData> getProjectContentReportDataList(@Param("projectId")String projectId,@Param("projectTypeParentId")String projectTypeParentId);
 
     /**
+     * 根据项目编号和阶段Type获取信息(项目复核,实施阶段)
+     * @param projectId
+     * @param projectTypeParentId
+     * @return
+     */
+    List<ProjectRecordTreeData> getProjectContentReportDataListOnImplement(@Param("projectId")String projectId,@Param("projectTypeParentId")String projectTypeParentId,@Param("typeId") String typeId);
+
+    /**
      * 根据项目编号和阶段Type获取信息(项目归档)
      * @param projectId
      * @param projectTypeParentId

+ 16 - 0
src/main/java/com/jeeplus/modules/projectcontentinfo/service/ProjectContentDataService.java

@@ -201,6 +201,11 @@ public class ProjectContentDataService extends CrudService<ProjectContentDataDao
         List<ProjectRecordTreeData> projectRecordTreeDataList = dao.getProjectContentDataList(projectId,projectTypeParentId);
         return projectRecordTreeDataList;
     }
+
+    public List<ProjectRecordTreeData> getProjectContentDataListOnImplement(String projectId,String projectTypeParentId,String typeId) {
+        List<ProjectRecordTreeData> projectRecordTreeDataList = dao.getProjectContentDataListOnImplement(projectId,projectTypeParentId,typeId);
+        return projectRecordTreeDataList;
+    }
     public List<ProjectContentData> getProjectContentData(String id) {
         List<ProjectContentData> projectRecordTreeDataList = dao.getProjectContentData(id);
         return projectRecordTreeDataList;
@@ -217,6 +222,17 @@ public class ProjectContentDataService extends CrudService<ProjectContentDataDao
         return projectRecordTreeDataList;
     }
 
+    /**
+     * 根据项目编号和阶段Type获取信息(项目复核,实施阶段)
+     * @param projectId
+     * @param projectTypeParentId
+     * @return
+     */
+    public List<ProjectRecordTreeData> getProjectContentReportDataListOnImplement(String projectId,String projectTypeParentId,String typeId) {
+        List<ProjectRecordTreeData> projectRecordTreeDataList = dao.getProjectContentReportDataListOnImplement(projectId,projectTypeParentId,typeId);
+        return projectRecordTreeDataList;
+    }
+
 
     /**
      * 根据项目编号和阶段Type获取信息(项目归档)

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

@@ -460,10 +460,12 @@ public class ProjectcontentinfoService extends CrudService<ProjectcontentinfoDao
 				}
 			}
 			//添加工作内容和报告关系
-			if("according".equals(projectcontentinfo.getCondition()) || "completion".equals(projectcontentinfo.getCondition())){
-				Integer contentAndReportCount = projectImplementEarlyService.getProjectContrntAndReport(projectReportData.getProjectContentDataList().get(0).getId(), projectReportData.getId());
-				if(contentAndReportCount==0){
-					projectImplementEarlyService.saveProjectContrntAndReport(projectReportData.getProjectContentDataList().get(0).getId(),projectReportData.getId());
+			if ("according".equals(projectcontentinfo.getCondition()) || "completion".equals(projectcontentinfo.getCondition()) || "early".equals(projectcontentinfo.getCondition()) || "claim".equals(projectcontentinfo.getCondition()) || "design".equals(projectcontentinfo.getCondition()) || "visa".equals(projectcontentinfo.getCondition()) || "interim".equals(projectcontentinfo.getCondition()) || "distribution".equals(projectcontentinfo.getCondition())){
+				if(null != projectReportData.getProjectContentDataList() && null != projectReportData){
+					Integer contentAndReportCount = projectImplementEarlyService.getProjectContrntAndReport(projectReportData.getProjectContentDataList().get(0).getId(), projectReportData.getId());
+					if(contentAndReportCount==0){
+						projectImplementEarlyService.saveProjectContrntAndReport(projectReportData.getProjectContentDataList().get(0).getId(),projectReportData.getId());
+					}
 				}
 			}
 			//生成报告送审tree数据
@@ -501,7 +503,7 @@ public class ProjectcontentinfoService extends CrudService<ProjectcontentinfoDao
 				}
 			}
 			//保存tree数据
-			if(!"according".equals(projectcontentinfo.getCondition()) && !"completion".equals(projectcontentinfo.getCondition())){
+			if ("according".equals(projectcontentinfo.getCondition()) || "completion".equals(projectcontentinfo.getCondition()) || "early".equals(projectcontentinfo.getCondition()) || "claim".equals(projectcontentinfo.getCondition()) || "design".equals(projectcontentinfo.getCondition()) || "visa".equals(projectcontentinfo.getCondition()) || "interim".equals(projectcontentinfo.getCondition()) || "distribution".equals(projectcontentinfo.getCondition())){
 				saveReportTree(projectcontentinfo,status,company,office,reportDataName,infoId,attachmentList,projectReportData.getReviewStandard(),1);
 			}
 		}

+ 41 - 1
src/main/java/com/jeeplus/modules/projectcontentinfo/web/ProjectcontentinfoController.java

@@ -700,7 +700,7 @@ public class ProjectcontentinfoController extends BaseController {
 				}
 				return "modules/projectcontentinfo/workContentView";
 			}else {
-				if ("according".equals(projectcontentinfo.getCondition()) || "completion".equals(projectcontentinfo.getCondition()) || "early".equals(projectcontentinfo.getCondition())){
+				if ("according".equals(projectcontentinfo.getCondition()) || "completion".equals(projectcontentinfo.getCondition()) || "early".equals(projectcontentinfo.getCondition()) || "claim".equals(projectcontentinfo.getCondition()) || "design".equals(projectcontentinfo.getCondition()) || "visa".equals(projectcontentinfo.getCondition()) || "interim".equals(projectcontentinfo.getCondition()) || "distribution".equals(projectcontentinfo.getCondition())){
 					model.addAttribute("flag",projectcontentinfo.getCondition());
 					return "modules/projectrecord/workContentFromAndView/workContentForm";
 				}
@@ -937,6 +937,26 @@ public class ProjectcontentinfoController extends BaseController {
 					if("completion".equals(projectcontentinfo.getCondition())){
 						return "redirect:"+Global.getAdminPath()+"/project/projectCompletionReview/?repage";
 					}
+					//跳转索赔管理页面
+					if("claim".equals(projectcontentinfo.getCondition())){
+						return "redirect:"+Global.getAdminPath()+"/project/projectClaim/?repage";
+					}
+					//跳转设计变更页面
+					if("design".equals(projectcontentinfo.getCondition())){
+						return "redirect:"+Global.getAdminPath()+"/project/projectDesignChange/?repage";
+					}
+					//跳转签证页面
+					if("visa".equals(projectcontentinfo.getCondition())){
+						return "redirect:"+Global.getAdminPath()+"/project/projectVisa/?repage";
+					}
+					//跳转工程进度款页面
+					if("interim".equals(projectcontentinfo.getCondition())){
+						return "redirect:"+Global.getAdminPath()+"/project/projectInterimPayment/?repage";
+					}
+					//跳转分布结算页面
+					if("distribution".equals(projectcontentinfo.getCondition())){
+						return "redirect:"+Global.getAdminPath()+"/project/distributionSettlement/?repage";
+					}
 					if("early".equals(projectcontentinfo.getCondition())){
 						return "redirect:"+Global.getAdminPath()+"/project/projectImplementEarly/?repage";
 					}else if("stage".equals(projectcontentinfo.getCondition())){
@@ -1000,6 +1020,26 @@ public class ProjectcontentinfoController extends BaseController {
 				if("completion".equals(projectcontentinfo.getCondition())){
 					return "redirect:"+Global.getAdminPath()+"/project/projectCompletionReview/?repage";
 				}
+				//跳转索赔管理页面
+				if("claim".equals(projectcontentinfo.getCondition())){
+					return "redirect:"+Global.getAdminPath()+"/project/checkClaim/?repage";
+				}
+				//跳转设计变更页面
+				if("design".equals(projectcontentinfo.getCondition())){
+					return "redirect:"+Global.getAdminPath()+"/project/checkDesign/?repage";
+				}
+				//跳转签证页面
+				if("visa".equals(projectcontentinfo.getCondition())){
+					return "redirect:"+Global.getAdminPath()+"/project/checkVisa/?repage";
+				}
+				//跳转工程进度款页面
+				if("interim".equals(projectcontentinfo.getCondition())){
+					return "redirect:"+Global.getAdminPath()+"/project/checkInterimPayment/?repage";
+				}
+				//跳转分布结算页面
+				if("distribution".equals(projectcontentinfo.getCondition())){
+					return "redirect:"+Global.getAdminPath()+"/project/checkDistributionSettlement/?repage";
+				}
 				return "redirect:"+Global.getAdminPath()+"/projectcontentinfo/projectcontentinfo/?id="+projectcontentinfo.getId();
 			}
 		}catch (Exception e){

+ 7 - 7
src/main/java/com/jeeplus/modules/projectrecord/service/implementStage/ProjectInterimPaymentService.java

@@ -10,6 +10,7 @@ import com.jeeplus.modules.projectcontentinfo.service.ProjectContentDataService;
 import com.jeeplus.modules.projectrecord.dao.implementStage.ProjectInterimPaymentDao;
 import com.jeeplus.modules.projectrecord.entity.ConcealProjectInfo;
 import com.jeeplus.modules.projectrecord.entity.ProjectPaymentTreeData;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
 import com.jeeplus.modules.sys.dao.WorkattachmentDao;
 import com.jeeplus.modules.sys.entity.Workattachment;
 import com.jeeplus.modules.sys.utils.UserUtils;
@@ -95,13 +96,12 @@ public class ProjectInterimPaymentService extends CrudService<ProjectInterimPaym
         projectContentData.setCompanyId(contentinfo.getCompanyId());
         projectContentData.setOfficeId(contentinfo.getOfficeId());
         projectContentData.setContractId(concealProjectInfo.getContract().getId());
-        if(com.jeeplus.common.utils.StringUtils.isNotBlank(projectContentData.getId())){
-            projectContentData.preUpdate();
-            dao.upodateInterimPayment(projectContentData);
-        }else{
-            projectContentData.preInsert();
-            dao.saveInterimPayment(projectContentData);
-        }
+
+        ProjectRecords project = new ProjectRecords();
+        project.setId(projectContentData.getContractId());
+        projectContentData.setProject(project);
+
+        projectContentDataService.save(projectContentData);
         //保存工作内容详情
         if(com.jeeplus.common.utils.StringUtils.isNotBlank(projectContentData.getContentDetail())) {
             workScheduleService.saveDetails(URLDecoder.decode(projectContentData.getContentDetail(),"UTF-8"), concealProjectInfo.getProject().getId(), projectContentData.getId());

+ 356 - 0
src/main/java/com/jeeplus/modules/projectrecord/web/check/ChechDesignController.java

@@ -0,0 +1,356 @@
+package com.jeeplus.modules.projectrecord.web.check;
+
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.projectConstruction.entity.ConstructionContract;
+import com.jeeplus.modules.projectConstruction.service.ContractService;
+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.sys.entity.MainDictDetail;
+import com.jeeplus.modules.sys.entity.User;
+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 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
+@RequestMapping(value = "${adminPath}/project/checkDesign")
+public class ChechDesignController extends BaseController {
+
+    @Autowired
+    private ProjectVisaService  projectVisaService;
+    @Autowired
+    private ProjectImplementEarlyService projectImplementEarlyService;
+    @Autowired
+    private ContractService contractService;
+    @Autowired
+    private WorkClientAttachmentDao workClientAttachmentDao;
+    @Autowired
+    private ProjectControlTableService projectControlTableService;
+    @Autowired
+    private ProjectContentDataService projectContentDataService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
+
+    @ModelAttribute
+    public ConstructionContract get(@RequestParam(required=false) String id) {
+        ConstructionContract entity = null;
+        if (StringUtils.isNotBlank(id)){
+            entity = contractService.get(id);
+        }
+        if (entity == null){
+            entity = new ConstructionContract();
+        }
+        return entity;
+    }
+
+    /**
+     * 签证汇总表列表页面
+     */
+    @RequestMapping(value = {"list", ""})
+    public String list(ConstructionContract constructionContract, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        Page<ConstructionContract> page = contractService.findPage(new Page<ConstructionContract>(request, response), constructionContract);
+        model.addAttribute("page", page);
+        model.addAttribute("reportType","3");
+        model.addAttribute("contractName",constructionContract.getContractName());
+        return "modules/projectrecord/check/checkDesignList";
+    }
+
+    //添加签证汇总页面
+    @RequestMapping(value = "form")
+    public String form(ConcealProjectInfo concealProjectInfo, Model model) {
+
+        ProjectContentData projectContentData = new ProjectContentData();
+        projectContentData.setType("");
+        if (StringUtils.isNotBlank(concealProjectInfo.getInfoId())){
+            projectContentData = projectVisaService.getProjectContentData(concealProjectInfo.getInfoId());
+        }else if (concealProjectInfo.getProjectContentData()!=null && StringUtils.isNotBlank(concealProjectInfo.getProjectContentData().getId())) {
+            projectContentData = projectVisaService.getProjectContentData(concealProjectInfo.getProjectContentData().getId());
+        }
+        projectContentData.setMaster(UserUtils.getUser());
+        if(StringUtils.isNotBlank(projectContentData.getId())){
+            List<ProjectControlTable> controlData = projectControlTableService.getControlData(projectContentData.getId(),"");
+            projectContentData.setProjectControlTableList(controlData);
+            projectContentDataService.queryBasedData(projectContentData);
+        }
+
+        concealProjectInfo.setProjectContentData(projectContentData);
+        model.addAttribute("concealProjectInfo", concealProjectInfo);
+        if("view".equals(concealProjectInfo.getView())){
+            return "modules/projectrecord/design/projectDesignView";
+        }
+        return "modules/projectrecord/design/projectDesignForm";
+    }
+
+    /**
+     * 工程费用列表页面
+     */
+    @RequestMapping(value = {"visaList"})
+    public String list(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<>();
+        if(StringUtils.isNotBlank(projectVisa.getContentId())){
+            list = projectVisaService.findList(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/workDesignChangeList";
+        if("view".equals(view)){
+            viewPath+="View";
+        }
+        List<MainDictDetail> unitList= DictUtils.getMainDictList("unit_type");
+        model.addAttribute("unitList", unitList);
+        List<MainDictDetail> nodeList=DictUtils.getMainDictList("node_type");
+        model.addAttribute("nodeList", nodeList);
+        List<MainDictDetail> costList=DictUtils.getMainDictList("cost_type");
+        model.addAttribute("costList", costList);
+        return viewPath;
+    }
+
+    //编辑签证汇总页面
+    @RequestMapping(value = "updateTable")
+    public String updateTable(ProjectVisa projectVisa, Model model) {
+
+        if(StringUtils.isNotEmpty(projectVisa.getId())){
+            ProjectVisa visa=projectVisaService.getDesign(projectVisa);
+            WorkClientAttachment attchment = new WorkClientAttachment();
+            attchment.setAttachmentId(projectVisa.getId());
+            List<WorkClientAttachment> attachments = workClientAttachmentDao.findList(attchment);
+            visa.setWorkAttachments(attachments);
+            model.addAttribute("projectVisa", visa);
+        }else{
+            model.addAttribute("projectVisa", projectVisa);
+        }
+
+        return "modules/projectrecord/implementStage/projectDesignForm";
+    }
+
+    //编辑签证汇总页面
+    @RequestMapping(value = "view")
+    public String view(ProjectVisa projectVisa, Model model) {
+
+        if(StringUtils.isNotEmpty(projectVisa.getId())){
+
+            ProjectVisa visa=projectVisaService.getDesign(projectVisa);
+            WorkClientAttachment attchment = new WorkClientAttachment();
+            attchment.setAttachmentId(projectVisa.getId());
+            List<WorkClientAttachment> attachments = workClientAttachmentDao.findList(attchment);
+            visa.setWorkAttachments(attachments);
+            model.addAttribute("projectVisa", visa);
+        }else{
+            model.addAttribute("projectVisa", projectVisa);
+        }
+
+        return "modules/projectrecord/implementStage/projectDesignView";
+    }
+
+
+    /**
+     * 保存客户管理
+     */
+    @RequestMapping(value = "save")
+    public String save(ConcealProjectInfo concealProjectInfo, RedirectAttributes redirectAttributes) throws Exception {
+
+        String str = projectVisaService.saveData(concealProjectInfo);
+        addMessage(redirectAttributes, "保存设计变更信息"+(str.equals("true")?"成功":"失败"));
+        return "redirect:"+Global.getAdminPath()+"/project/checkDesign/?repage";
+    }
+
+
+    //获取树状图
+    @RequestMapping(value = "getVisaList")
+    @ResponseBody
+    public Map<String,List> getTreeList(ConstructionContract constructionContract, HttpServletRequest request, HttpServletResponse response, Model model){
+
+        Map<String,List> map = new HashMap<>();
+        ProjectImplementEarly projectRecords = new ProjectImplementEarly();
+        if(StringUtils.isNotBlank(constructionContract.getProjectName())){
+            projectRecords.setProjectName(constructionContract.getProjectName());
+        }
+        Page<ProjectImplementEarly> recordPage = projectImplementEarlyService.findProjectPage(new Page<ProjectImplementEarly>(request, response), projectRecords);
+        //获取项目信息
+        List<ProjectImplementEarly> recordList = recordPage.getList();
+        //新建树形列表集合
+        List<VisaTreeData> treeList=new ArrayList<>();
+        if(recordList.size()>0){
+            for (ProjectImplementEarly record:recordList) {
+                //将项目信息放入树形列表集合中
+                VisaTreeData recordTreeData = new VisaTreeData();
+                //将界面需要展示数据放入类中
+                recordTreeData.setId(record.getId());
+                recordTreeData.setContractName(record.getProjectName());
+                recordTreeData.setCnumber(record.getProjectId());
+                recordTreeData.setNumber("");
+                recordTreeData.setPid("0");
+                //添加工作内容id
+                recordTreeData.setProjectContentId(record.getProjectContentId());
+                //将项目设置为第一级数据
+                recordTreeData.setCondition(1);
+                //将项目信息放入
+                treeList.add(recordTreeData);
+
+                //处理合同信息数据
+                ConstructionContract conditionContract = new ConstructionContract();
+                conditionContract.setProjectId(record.getId());
+
+                if(StringUtils.isNotBlank(constructionContract.getContractName())){
+                    conditionContract.setContractName(constructionContract.getContractName());
+                }
+                //获取合同信息
+                List<ConstructionContract> contractList = contractService.getConstructionContractList(conditionContract);
+                if(contractList.size()>0){
+                    //遍历项目中的合同信息
+                    for (ConstructionContract contract:contractList) {
+                        VisaTreeData visaTreeData=new VisaTreeData();
+                        visaTreeData.setContractId(contract.getId());
+                        visaTreeData.setId(contract.getId());
+                        visaTreeData.setContractName(contract.getContractName());
+                        visaTreeData.setDate(contract.getCreateDate());
+                        visaTreeData.setNumber("");
+                        visaTreeData.setPid(record.getId());
+                        visaTreeData.setCnumber(contract.getCnumber());
+                        //添加工作内容id
+                        visaTreeData.setProjectContentId(record.getProjectContentId());
+
+                        //将项目设置为第二级数据
+                        visaTreeData.setCondition(2);
+                        //遍历项目负责人信息
+                        List<User> masterUserList = record.getProjectLeaders();
+                        List<String> masterList = new ArrayList<>();
+                        Set masterIdSet = new HashSet();
+                        for (User masterUser:masterUserList) {
+                            masterList.add(masterUser.getName());
+                            masterIdSet.add(masterUser.getId());
+                        }
+                        //Set转List
+                        List<String> masterIdList = new ArrayList<>(masterIdSet);
+                        for (String masterId : masterIdList) {
+                            if(masterId.equals(UserUtils.getUser().getId())){
+                                visaTreeData.setOperationSign(1);
+                                break;
+                            }else{
+                                visaTreeData.setOperationSign(0);
+                            }
+                        }
+
+                        //将项目信息放入
+                        treeList.add(visaTreeData);
+
+                        //获取阶段Type父节点信息
+                        String projectType = projectImplementEarlyService.getProjectType(record.getProjectTypeId(), "实施阶段");
+                        //根据项目id查询相关的项目阶段内容
+                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentReportDataListOnImplement(record.getId(),projectType,"43");
+
+                        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> projectVisaList=projectVisaService.getVisaList(contract.getId(),"2");
+                        for (int j=0;j<reportDataList.size();j++){
+                            VisaTreeData contentData=new VisaTreeData();
+                            ProjectRecordTreeData data=reportDataList.get(j);
+                            contentData.setPid(visaTreeData.getId());
+                            contentData.setId(data.getId());
+                            contentData.setContractName(data.getProjectName());
+                            contentData.setCnumber(contract.getCnumber());
+                            contentData.setStatus(data.getStatus());
+                            contentData.setNumber(data.getReportName());
+                            contentData.setProjectId(record.getId());
+                            contentData.setReportId(data.getReportId());
+
+                            if(p.size()>0){
+                                contentData.setContentPId(p.get(0).getId());
+                                contentData.setParentIds("0,");
+                                contentData.setDictType("");
+                            }
+                            //添加工作内容id
+                            contentData.setProjectContentId(record.getProjectContentId());
+
+                            //将项目设置为第二级数据
+                            contentData.setCondition(3);
+                            for (String masterId : masterIdList) {
+                                if(masterId.equals(UserUtils.getUser().getId())){
+                                    contentData.setOperationSign(1);
+                                    break;
+                                }else{
+                                    contentData.setOperationSign(0);
+                                }
+                            }
+                            treeList.add(contentData);
+                        }
+
+                    }
+                }
+            }
+
+        }
+        map.put("data",treeList);
+        return map;
+    }
+
+    /**
+     * 删除依据性资料
+     */
+    @RequestMapping(value = "delete")
+    @ResponseBody
+    public Map<String,Object> delete(ProjectVisa projectVisa, RedirectAttributes redirectAttributes) {
+        Map<String,Object> j= new HashMap<>();
+        try {
+            projectVisaService.deleteByLogic(projectVisa.getId(),projectVisa.getType());
+            j.put("status",true);
+            j.put("msg","删除成功");
+            addMessage(redirectAttributes, "删除成功");
+        }catch (Exception e){
+            j.put("status",false);
+            j.put("msg","删除失败");
+            addMessage(redirectAttributes, "删除失败");
+        }
+        return j;
+    }
+
+}

+ 317 - 0
src/main/java/com/jeeplus/modules/projectrecord/web/check/CheckClaimController.java

@@ -0,0 +1,317 @@
+package com.jeeplus.modules.projectrecord.web.check;
+
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.projectConstruction.entity.ConstructionContract;
+import com.jeeplus.modules.projectConstruction.service.ContractService;
+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.sys.entity.MainDictDetail;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.utils.DictUtils;
+import com.jeeplus.modules.sys.utils.UserUtils;
+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
+@RequestMapping(value = "${adminPath}/project/checkClaim")
+public class CheckClaimController extends BaseController {
+
+    @Autowired
+    private ProjectVisaService  projectVisaService;
+    @Autowired
+    private ProjectImplementEarlyService projectImplementEarlyService;
+    @Autowired
+    private ContractService contractService;
+    @Autowired
+    private ProjectControlTableService projectControlTableService;
+    @Autowired
+    private ProjectContentDataService projectContentDataService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
+
+    @ModelAttribute
+    public ConstructionContract get(@RequestParam(required=false) String id) {
+        ConstructionContract entity = null;
+        if (StringUtils.isNotBlank(id)){
+            entity = contractService.get(id);
+        }
+        if (entity == null){
+            entity = new ConstructionContract();
+        }
+        return entity;
+    }
+
+    /**
+     * 签证汇总表列表页面
+     */
+    @RequestMapping(value = {"list", ""})
+    public String list(ConstructionContract constructionContract, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        Page<ConstructionContract> page = contractService.findPage(new Page<ConstructionContract>(request, response), constructionContract);
+        model.addAttribute("page", page);
+        model.addAttribute("reportType","3");
+        model.addAttribute("contractName",constructionContract.getContractName());
+        return "modules/projectrecord/check/checkClaimList";
+    }
+
+    //获取树状图
+    @RequestMapping(value = "getVisaList")
+    @ResponseBody
+    public Map<String,List> getTreeList(ConstructionContract constructionContract, HttpServletRequest request, HttpServletResponse response, Model model){
+
+        Map<String,List> map = new HashMap<>();
+        ProjectImplementEarly projectRecords = new ProjectImplementEarly();
+        if(StringUtils.isNotBlank(constructionContract.getProjectName())){
+            projectRecords.setProjectName(constructionContract.getProjectName());
+        }
+        Page<ProjectImplementEarly> recordPage = projectImplementEarlyService.findProjectPage(new Page<ProjectImplementEarly>(request, response), projectRecords);
+        //获取项目信息
+        List<ProjectImplementEarly> recordList = recordPage.getList();
+        //新建树形列表集合
+        List<VisaTreeData> treeList=new ArrayList<>();
+        if(recordList.size()>0){
+            for (ProjectImplementEarly record:recordList) {
+                //将项目信息放入树形列表集合中
+                VisaTreeData recordTreeData = new VisaTreeData();
+                //将界面需要展示数据放入类中
+                recordTreeData.setId(record.getId());
+                recordTreeData.setContractName(record.getProjectName());
+                recordTreeData.setCnumber(record.getProjectId());
+                recordTreeData.setNumber("");
+                recordTreeData.setPid("0");
+                //添加工作内容id
+                recordTreeData.setProjectContentId(record.getProjectContentId());
+                //将项目设置为第一级数据
+                recordTreeData.setCondition(1);
+                //将项目信息放入
+                treeList.add(recordTreeData);
+
+                //处理合同信息数据
+                ConstructionContract conditionContract = new ConstructionContract();
+                conditionContract.setProjectId(record.getId());
+
+                if(StringUtils.isNotBlank(constructionContract.getContractName())){
+                    conditionContract.setContractName(constructionContract.getContractName());
+                }
+                //获取合同信息
+                List<ConstructionContract> contractList = contractService.getConstructionContractList(conditionContract);
+                if(contractList.size()>0){
+                    //遍历项目中的合同信息
+                    for (ConstructionContract contract:contractList) {
+                        VisaTreeData visaTreeData=new VisaTreeData();
+                        visaTreeData.setContractId(contract.getId());
+                        visaTreeData.setId(contract.getId());
+                        visaTreeData.setContractName(contract.getContractName());
+                        visaTreeData.setDate(contract.getCreateDate());
+                        visaTreeData.setNumber("");
+                        visaTreeData.setPid(record.getId());
+                        visaTreeData.setCnumber(contract.getCnumber());
+                        //添加工作内容id
+                        visaTreeData.setProjectContentId(record.getProjectContentId());
+
+                        //将项目设置为第二级数据
+                        visaTreeData.setCondition(2);
+                        //遍历项目负责人信息
+                        List<User> masterUserList = record.getProjectLeaders();
+                        List<String> masterList = new ArrayList<>();
+                        Set masterIdSet = new HashSet();
+                        for (User masterUser:masterUserList) {
+                            masterList.add(masterUser.getName());
+                            masterIdSet.add(masterUser.getId());
+                        }
+                        //Set转List
+                        List<String> masterIdList = new ArrayList<>(masterIdSet);
+                        for (String masterId : masterIdList) {
+                            if(masterId.equals(UserUtils.getUser().getId())){
+                                visaTreeData.setOperationSign(1);
+                                break;
+                            }else{
+                                visaTreeData.setOperationSign(0);
+                            }
+                        }
+
+                        //将项目信息放入
+                        treeList.add(visaTreeData);
+
+                        //获取阶段Type父节点信息
+                        String projectType = projectImplementEarlyService.getProjectType(record.getProjectTypeId(), "实施阶段");
+                        //根据项目id查询相关的项目阶段内容
+                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentReportDataListOnImplement(record.getId(),projectType,"46");
+
+                        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> projectVisaList=projectVisaService.getVisaList(contract.getId(),"3");
+                        for (int j=0;j<reportDataList.size();j++){
+                            VisaTreeData contentData=new VisaTreeData();
+                            ProjectRecordTreeData data=reportDataList.get(j);
+                            contentData.setPid(visaTreeData.getId());
+                            contentData.setId(data.getId());
+                            contentData.setContractName(data.getProjectName());
+                            contentData.setCnumber(contract.getCnumber());
+                            contentData.setStatus(data.getStatus());
+                            contentData.setNumber(data.getReportName());
+                            contentData.setProjectId(record.getId());
+                            contentData.setReportId(data.getReportId());
+
+                            if(p.size()>0){
+                                contentData.setContentPId(p.get(0).getId());
+                                contentData.setParentIds("0,");
+                                contentData.setDictType("");
+                            }
+                            //添加工作内容id
+                            contentData.setProjectContentId(record.getProjectContentId());
+
+                            //将项目设置为第二级数据
+                            contentData.setCondition(3);
+                            for (String masterId : masterIdList) {
+                                if(masterId.equals(UserUtils.getUser().getId())){
+                                    contentData.setOperationSign(1);
+                                    break;
+                                }else{
+                                    contentData.setOperationSign(0);
+                                }
+                            }
+                            treeList.add(contentData);
+                        }
+
+                    }
+                }
+            }
+
+        }
+        map.put("data",treeList);
+        return map;
+    }
+
+    //添加签证汇总页面
+    @RequestMapping(value = "form")
+    public String form(ConcealProjectInfo concealProjectInfo, Model model) {
+
+        ProjectContentData projectContentData = new ProjectContentData();
+        projectContentData.setType("");
+        if (StringUtils.isNotBlank(concealProjectInfo.getInfoId())){
+            projectContentData = projectVisaService.getProjectContentData(concealProjectInfo.getInfoId());
+        }else if (concealProjectInfo.getProjectContentData()!=null && StringUtils.isNotBlank(concealProjectInfo.getProjectContentData().getId())) {
+            projectContentData = projectVisaService.getProjectContentData(concealProjectInfo.getProjectContentData().getId());
+        }
+        projectContentData.setMaster(UserUtils.getUser());
+        if(StringUtils.isNotBlank(projectContentData.getId())){
+            List<ProjectControlTable> controlData = projectControlTableService.getControlData(projectContentData.getId(),"");
+            projectContentData.setProjectControlTableList(controlData);
+            projectContentDataService.queryBasedData(projectContentData);
+        }
+
+        concealProjectInfo.setProjectContentData(projectContentData);
+        model.addAttribute("concealProjectInfo", concealProjectInfo);
+        if("view".equals(concealProjectInfo.getView())){
+            return "modules/projectrecord/claim/projectClaimView";
+        }
+        return "modules/projectrecord/claim/projectClaimForm";
+    }
+
+    /**
+     * 工程费用列表页面
+     */
+    @RequestMapping(value = {"visaList"})
+    public String list(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<>();
+        if(StringUtils.isNotBlank(projectVisa.getContentId())){
+            list = projectVisaService.findList(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/workClaimList";
+        if("view".equals(view)){
+            viewPath+="View";
+        }
+        List<MainDictDetail> unitList= DictUtils.getMainDictList("unit_type");
+        model.addAttribute("unitList", unitList);
+        List<MainDictDetail> nodeList=DictUtils.getMainDictList("node_type");
+        model.addAttribute("nodeList", nodeList);
+        List<MainDictDetail> costList=DictUtils.getMainDictList("cost_type");
+        model.addAttribute("costList", costList);
+        return viewPath;
+    }
+
+    /**
+     * 保存信息
+     */
+    @RequestMapping(value = "save")
+    public String save(ConcealProjectInfo concealProjectInfo, RedirectAttributes redirectAttributes) throws Exception {
+
+        String str = projectVisaService.saveData(concealProjectInfo);
+        addMessage(redirectAttributes, "保存索赔信息"+(str.equals("true")?"成功":"失败"));
+        return "redirect:"+Global.getAdminPath()+"/project/projectClaim/?repage";
+    }
+
+
+
+
+    /**
+     * 删除
+     */
+    @RequestMapping(value = "delete")
+    @ResponseBody
+    public Map<String,Object> delete(ProjectVisa projectVisa, RedirectAttributes redirectAttributes) {
+        Map<String,Object> j= new HashMap<>();
+        try {
+            projectVisaService.deleteByLogic(projectVisa.getId(),projectVisa.getType());
+            j.put("status",true);
+            j.put("msg","删除成功");
+            addMessage(redirectAttributes, "删除成功");
+        }catch (Exception e){
+            j.put("status",false);
+            j.put("msg","删除失败");
+            addMessage(redirectAttributes, "删除失败");
+        }
+        return j;
+    }
+
+}

+ 333 - 0
src/main/java/com/jeeplus/modules/projectrecord/web/check/CheckDistributionSettlementController.java

@@ -0,0 +1,333 @@
+package com.jeeplus.modules.projectrecord.web.check;
+
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.projectConstruction.entity.ConstructionContract;
+import com.jeeplus.modules.projectConstruction.service.ContractService;
+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.distributionSettlement.DistributionSettlementService;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.utils.UserUtils;
+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-07-30
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/project/checkDistributionSettlement")
+public class CheckDistributionSettlementController extends BaseController {
+    @Autowired
+    private ProjectVisaService projectVisaService;
+    @Autowired
+    private ProjectImplementEarlyService projectImplementEarlyService;
+    @Autowired
+    private ContractService contractService;
+    @Autowired
+    private DistributionSettlementService distributionSettlementService;
+    @Autowired
+    private ProjectControlTableService projectControlTableService;
+    @Autowired
+    private ProjectContentDataService projectContentDataService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
+
+    @ModelAttribute
+    public ConstructionContract get(@RequestParam(required=false) String id) {
+        ConstructionContract entity = null;
+        if (StringUtils.isNotBlank(id)){
+            entity = contractService.get(id);
+        }
+        if (entity == null){
+            entity = new ConstructionContract();
+        }
+        return entity;
+    }
+
+    /**
+     * 签证汇总表列表页面
+     */
+    @RequestMapping(value = {"list", ""})
+    public String list(ConstructionContract constructionContract, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        ProjectImplementEarly projectRecords = new ProjectImplementEarly();
+        if(StringUtils.isNotBlank(constructionContract.getProjectName())){
+            projectRecords.setProjectName(constructionContract.getProjectName());
+        }
+        Page<ProjectImplementEarly> page = projectImplementEarlyService.findProjectPage(new Page<ProjectImplementEarly>(request, response), projectRecords);
+        model.addAttribute("page", page);
+        model.addAttribute("reportType","3");
+        model.addAttribute("contractName",constructionContract.getContractName());
+        return "modules/projectrecord/check/checkDistributionSettlementList";
+    }
+
+    //获取树状图
+    @RequestMapping(value = "getProjectList")
+    @ResponseBody
+    public Map<String, List> getTreeList(ConstructionContract constructionContract, HttpServletRequest request, HttpServletResponse response, Model model){
+
+        Map<String,List> map = new HashMap<>();
+        ProjectImplementEarly projectRecords = new ProjectImplementEarly();
+        if(StringUtils.isNotBlank(constructionContract.getProjectName())){
+            projectRecords.setProjectName(constructionContract.getProjectName());
+        }
+        Page<ProjectImplementEarly> recordPage = projectImplementEarlyService.findProjectPage(new Page<ProjectImplementEarly>(request, response), projectRecords);
+        //获取项目信息
+        List<ProjectImplementEarly> recordList = recordPage.getList();
+        //新建树形列表集合
+        List<VisaTreeData> treeList=new ArrayList<>();
+        if(recordList.size()>0){
+            for (ProjectImplementEarly record:recordList) {
+                //将项目信息放入树形列表集合中
+                VisaTreeData recordTreeData = new VisaTreeData();
+                //将界面需要展示数据放入类中
+                recordTreeData.setId(record.getId());
+                recordTreeData.setContractName(record.getProjectName());
+                recordTreeData.setCnumber(record.getProjectId());
+                recordTreeData.setNumber("");
+                recordTreeData.setPid("0");
+                //添加工作内容id
+                recordTreeData.setProjectContentId(record.getProjectContentId());
+                //将项目设置为第一级数据
+                recordTreeData.setCondition(1);
+                //将项目信息放入
+                treeList.add(recordTreeData);
+
+                //处理合同信息数据
+                ConstructionContract conditionContract = new ConstructionContract();
+                conditionContract.setProjectId(record.getId());
+
+                if(StringUtils.isNotBlank(constructionContract.getContractName())){
+                    conditionContract.setContractName(constructionContract.getContractName());
+                }
+                //获取合同信息
+                List<ConstructionContract> contractList = contractService.getConstructionContractList(conditionContract);
+                if(contractList.size()>0){
+                    //遍历项目中的合同信息
+                    for (ConstructionContract contract:contractList) {
+                        VisaTreeData visaTreeData=new VisaTreeData();
+                        visaTreeData.setContractId(contract.getId());
+                        visaTreeData.setId(contract.getId());
+                        visaTreeData.setContractName(contract.getContractName());
+                        visaTreeData.setDate(contract.getCreateDate());
+                        visaTreeData.setNumber("");
+                        visaTreeData.setPid(record.getId());
+                        visaTreeData.setCnumber(contract.getCnumber());
+                        //添加工作内容id
+                        visaTreeData.setProjectContentId(record.getProjectContentId());
+
+                        //将项目设置为第二级数据
+                        visaTreeData.setCondition(2);
+                        //遍历项目负责人信息
+                        List<User> masterUserList = record.getProjectLeaders();
+                        List<String> masterList = new ArrayList<>();
+                        Set masterIdSet = new HashSet();
+                        for (User masterUser:masterUserList) {
+                            masterList.add(masterUser.getName());
+                            masterIdSet.add(masterUser.getId());
+                        }
+                        //Set转List
+                        List<String> masterIdList = new ArrayList<>(masterIdSet);
+                        for (String masterId : masterIdList) {
+                            if(masterId.equals(UserUtils.getUser().getId())){
+                                visaTreeData.setOperationSign(1);
+                                break;
+                            }else{
+                                visaTreeData.setOperationSign(0);
+                            }
+                        }
+
+                        //将项目信息放入
+                        treeList.add(visaTreeData);
+
+
+                        //获取阶段Type父节点信息
+                        String projectType = projectImplementEarlyService.getProjectType(record.getProjectTypeId(), "实施阶段");
+                        //根据项目id查询相关的项目阶段内容
+                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentReportDataListOnImplement(record.getId(),projectType,"412");
+                        //根据获取的合同的id去查找汇总表获取汇总表信息
+                        //List<ProjectContentData> contentDataList=distributionSettlementService.getConcealProjectList(contract.getId());
+
+                        Projectcontentinfo select = new Projectcontentinfo();
+                        ProjectRecords project = new ProjectRecords();
+                        project.setId(record.getId());
+                        select.setParentIds("0,");
+                        select.setProject(project);
+                        List<Projectcontentinfo> p = projectcontentinfoService.findListByProject(select);
+
+                        for (int j=0;j<reportDataList.size();j++){
+                            VisaTreeData contentData=new VisaTreeData();
+                            ProjectRecordTreeData data=reportDataList.get(j);
+                            contentData.setPid(visaTreeData.getId());
+                            contentData.setId(data.getId());
+                            contentData.setContractName(data.getProjectName());
+                            contentData.setCnumber(contract.getCnumber());
+                            if(StringUtils.isNotBlank(data.getReportName())){
+                                contentData.setNumber(data.getReportName());
+                            }else{
+                                contentData.setNumber("");
+                            }
+                            contentData.setStatus(data.getStatus());
+                            contentData.setProjectId(record.getId());
+                            contentData.setReportId(data.getReportId());
+
+                            if(p.size()>0){
+                                contentData.setContentPId(p.get(0).getId());
+                                contentData.setParentIds("0,");
+                                contentData.setDictType("");
+                            }
+                            //添加工作内容id
+                            contentData.setProjectContentId(record.getProjectContentId());
+
+                            //将项目设置为第二级数据
+                            contentData.setCondition(3);
+                            for (String masterId : masterIdList) {
+                                if(masterId.equals(UserUtils.getUser().getId())){
+                                    contentData.setOperationSign(1);
+                                    break;
+                                }else{
+                                    contentData.setOperationSign(0);
+                                }
+                            }
+                            treeList.add(contentData);
+                        }
+
+                    }
+                }
+            }
+
+        }
+        map.put("data",treeList);
+        return map;
+    }
+
+    /**
+     * 甲供物资查方法
+     * @param concealProjectInfo
+     * @param model
+     * @return
+     */
+    @RequestMapping(value = "form")
+    public String form(ConcealProjectInfo concealProjectInfo, Model model) {
+
+        ProjectContentData projectContentData = new ProjectContentData();
+        projectContentData.setType("");
+        if (StringUtils.isNotBlank(concealProjectInfo.getInfoId())){
+            projectContentData = distributionSettlementService.getProjectContentData(concealProjectInfo.getInfoId());
+        }else if (concealProjectInfo.getProjectContentData()!=null && StringUtils.isNotBlank(concealProjectInfo.getProjectContentData().getId())) {
+            projectContentData = distributionSettlementService.getProjectContentData(concealProjectInfo.getProjectContentData().getId());
+        }
+        projectContentData.setMaster(UserUtils.getUser());
+        if(StringUtils.isNotBlank(projectContentData.getId())){
+            List<ProjectControlTable> controlData = projectControlTableService.getControlData(projectContentData.getId(),"");
+            projectContentData.setProjectControlTableList(controlData);
+            projectContentDataService.queryBasedData(projectContentData);
+        }
+
+        if(StringUtils.isBlank(concealProjectInfo.getId()) && StringUtils.isNotBlank(concealProjectInfo.getProjectContentId())){
+            concealProjectInfo.setId(concealProjectInfo.getProjectContentId());
+        }
+        concealProjectInfo.setProjectContentData(projectContentData);
+        model.addAttribute("concealProjectInfo", concealProjectInfo);
+        if("view".equals(concealProjectInfo.getType())){
+            return "modules/projectrecord/distributionSettlement/distributionSettlementView";
+        }
+        return "modules/projectrecord/distributionSettlement/distributionSettlementForm";
+    }
+
+    /**
+     * 甲供物资增改方法
+     * @param concealProjectInfo
+     * @param redirectAttributes
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = {"save"})
+    public String save(ConcealProjectInfo concealProjectInfo, RedirectAttributes redirectAttributes) throws Exception {
+
+        String str = distributionSettlementService.saveData(concealProjectInfo);
+        addMessage(redirectAttributes, "保存分布结算内容信息"+(str.equals("true")?"成功":"失败"));
+        return "redirect:"+Global.getAdminPath()+"/project/distributionSettlement/?repage";
+    }
+
+    @RequestMapping("ajaxdelete")
+    @ResponseBody
+    public AjaxJson deleteBased(String contentId, String basedId){
+        AjaxJson ajaxJson = new AjaxJson();
+        try {
+            if (StringUtils.isNotBlank(contentId)) {
+                distributionSettlementService.deleteBased(contentId, basedId);
+            }
+            Integer count = projectContentDataService.countBased(basedId);
+            ajaxJson.getBody().put("inuse", count == null ? true : count > 0);
+        }catch (Exception e){
+            logger.error("删除依据资料异常!",e);
+            ajaxJson.setSuccess(false);
+            ajaxJson.setMsg("删除依据资料失败");
+        }
+        return  ajaxJson;
+    }
+
+
+    /**
+     * 甲供物资删除方法
+     * @param concealProjectInfo
+     * @return
+     */
+    @RequestMapping(value = {"deleteConcealProject"})
+    public String deleteConcealProject(ConcealProjectInfo concealProjectInfo) {
+        distributionSettlementService.deleteConcealProject(concealProjectInfo);
+        return "redirect:"+ Global.getAdminPath()+"/project/distributionSettlement/?repage";
+    }
+    /**
+     * 删除依据性资料
+     */
+    @RequestMapping(value = "delete")
+    @ResponseBody
+    public Map<String,Object> delete(ProjectVisa projectVisa, RedirectAttributes redirectAttributes) {
+        Map<String,Object> j= new HashMap<>();
+        try {
+            projectVisaService.deleteByLogic(projectVisa.getId(),projectVisa.getType());
+            j.put("status",true);
+            j.put("msg","删除成功");
+            addMessage(redirectAttributes, "删除成功");
+        }catch (Exception e){
+            j.put("status",false);
+            j.put("msg","删除失败");
+            addMessage(redirectAttributes, "删除失败");
+        }
+        return j;
+    }
+}

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

@@ -0,0 +1,350 @@
+package com.jeeplus.modules.projectrecord.web.check;
+
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.json.AjaxJson;
+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.projectConstruction.entity.ConstructionContract;
+import com.jeeplus.modules.projectConstruction.service.ContractService;
+import com.jeeplus.modules.projectType.service.ProjectTypeService;
+import com.jeeplus.modules.projectVisa.entity.VisaTreeData;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectBasedData;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectContentData;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportData;
+import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectContentDataService;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectReportChangeService;
+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.*;
+import com.jeeplus.modules.projectrecord.service.ProjectImplementEarlyService;
+import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
+import com.jeeplus.modules.projectrecord.service.early.ProjectEarlyReviewService;
+import com.jeeplus.modules.projectrecord.service.implementStage.ProjectInterimPaymentService;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.utils.UserUtils;
+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.RequestMapping;
+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-07-27
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/project/checkInterimPayment")
+public class CheckInterimPaymentController extends BaseController {
+    @Autowired
+    private ContractService contractService;
+    @Autowired
+    private ProjectInterimPaymentService service;
+    @Autowired
+    private ProjectImplementEarlyService projectImplementEarlyService;
+    @Autowired
+    private ProjectContentDataService projectContentDataService;
+    @Autowired
+    private ProjectTypeService projectTypeService;
+    @Autowired
+    private ProjectEarlyReviewService projectEarlyReviewService;
+    @Autowired
+    private ProjectRecordsService projectRecordsService;
+    @Autowired
+    private ProjectReportChangeService projectReportChangeService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
+
+    /**
+     * 合同列表页面
+     */
+    @RequiresPermissions("project:checkInterimPayment:list")
+    @RequestMapping(value = {"list", ""})
+    public String list(ConstructionContract constructionContract, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        Page<ConstructionContract> page = contractService.findPage(new Page<ConstructionContract>(request, response), constructionContract);
+        //无合同状态下,获取委托方的名称
+        List<ConstructionContract> list = page.getList();
+        model.addAttribute("page", page);
+        model.addAttribute("reportType","3");
+        model.addAttribute("contractName",constructionContract.getContractName());
+        return "modules/projectrecord/check/checkInterimPayment";
+    }
+
+    //获取树状图
+    @RequestMapping(value = "getProjectList")
+    @ResponseBody
+    public Map<String, List> getTreeList(ConstructionContract constructionContract, HttpServletRequest request, HttpServletResponse response, Model model){
+
+        Map<String,List> map = new HashMap<>();
+        ProjectImplementEarly projectRecords = new ProjectImplementEarly();
+        if(StringUtils.isNotBlank(constructionContract.getProjectName())){
+            projectRecords.setProjectName(constructionContract.getProjectName());
+        }
+        Page<ProjectImplementEarly> recordPage = projectImplementEarlyService.findProjectPage(new Page<ProjectImplementEarly>(request, response), projectRecords);
+        //获取项目信息
+        List<ProjectImplementEarly> recordList = recordPage.getList();
+        //新建树形列表集合
+        List<VisaTreeData> treeList=new ArrayList<>();
+        if(recordList.size()>0){
+            for (ProjectImplementEarly record:recordList) {
+                //将项目信息放入树形列表集合中
+                VisaTreeData recordTreeData = new VisaTreeData();
+                //将界面需要展示数据放入类中
+                recordTreeData.setId(record.getId());
+                recordTreeData.setContractName(record.getProjectName());
+                recordTreeData.setCnumber(record.getProjectId());
+                recordTreeData.setNumber("");
+                recordTreeData.setPid("0");
+                //添加工作内容id
+                recordTreeData.setProjectContentId(record.getProjectContentId());
+                //将项目设置为第一级数据
+                recordTreeData.setCondition(1);
+                //将项目信息放入
+                treeList.add(recordTreeData);
+
+                //处理合同信息数据
+                ConstructionContract conditionContract = new ConstructionContract();
+                conditionContract.setProjectId(record.getId());
+
+                if(StringUtils.isNotBlank(constructionContract.getContractName())){
+                    conditionContract.setContractName(constructionContract.getContractName());
+                }
+                //获取合同信息
+                List<ConstructionContract> contractList = contractService.getConstructionContractList(conditionContract);
+                if(contractList.size()>0){
+                    //遍历项目中的合同信息
+                    for (ConstructionContract contract:contractList) {
+                        VisaTreeData visaTreeData=new VisaTreeData();
+                        visaTreeData.setContractId(contract.getId());
+                        visaTreeData.setId(contract.getId());
+                        visaTreeData.setContractName(contract.getContractName());
+                        visaTreeData.setDate(contract.getCreateDate());
+                        visaTreeData.setNumber("");
+                        visaTreeData.setPid(record.getId());
+                        visaTreeData.setCnumber(contract.getCnumber());
+                        //添加工作内容id
+                        visaTreeData.setProjectContentId(record.getProjectContentId());
+
+                        //将项目设置为第二级数据
+                        visaTreeData.setCondition(2);
+                        //遍历项目负责人信息
+                        List<User> masterUserList = record.getProjectLeaders();
+                        List<String> masterList = new ArrayList<>();
+                        Set masterIdSet = new HashSet();
+                        for (User masterUser:masterUserList) {
+                            masterList.add(masterUser.getName());
+                            masterIdSet.add(masterUser.getId());
+                        }
+                        //Set转List
+                        List<String> masterIdList = new ArrayList<>(masterIdSet);
+                        for (String masterId : masterIdList) {
+                            if(masterId.equals(UserUtils.getUser().getId())){
+                                visaTreeData.setOperationSign(1);
+                                break;
+                            }else{
+                                visaTreeData.setOperationSign(0);
+                            }
+                        }
+
+                        //将项目信息放入
+                        treeList.add(visaTreeData);
+
+                        //获取阶段Type父节点信息
+                        String projectType = projectImplementEarlyService.getProjectType(record.getProjectTypeId(), "实施阶段");
+                        //根据项目id查询相关的项目阶段内容
+                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentReportDataListOnImplement(record.getId(),projectType,"420");
+                        //根据获取的合同的id去查找汇总表获取汇总表信息
+                        //List<ProjectContentData> contentDataList=service.getInterimPaymentList(contract.getId());
+
+                        Projectcontentinfo select = new Projectcontentinfo();
+                        ProjectRecords project = new ProjectRecords();
+                        project.setId(record.getId());
+                        select.setParentIds("0,");
+                        select.setProject(project);
+                        List<Projectcontentinfo> p = projectcontentinfoService.findListByProject(select);
+
+                        for (int j=0;j<reportDataList.size();j++){
+                            VisaTreeData contentData=new VisaTreeData();
+                            ProjectRecordTreeData data=reportDataList.get(j);
+                            contentData.setPid(visaTreeData.getId());
+                            contentData.setId(data.getId());
+                            contentData.setContractName(data.getProjectName());
+                            contentData.setCnumber(contract.getCnumber());
+                            contentData.setStatus(data.getStatus());
+                            if(StringUtils.isNotBlank(data.getReportName())){
+                                contentData.setNumber(data.getReportName());
+                            }else{
+                                contentData.setNumber("");
+                            }
+                            contentData.setProjectId(record.getId());
+                            contentData.setReportId(data.getReportId());
+
+                            if(p.size()>0){
+                                contentData.setContentPId(p.get(0).getId());
+                                contentData.setParentIds("0,");
+                                contentData.setDictType("");
+                            }
+                            //添加工作内容id
+                            contentData.setProjectContentId(record.getProjectContentId());
+
+                            //将项目设置为第二级数据
+                            contentData.setCondition(3);
+                            for (String masterId : masterIdList) {
+                                if(masterId.equals(UserUtils.getUser().getId())){
+                                    contentData.setOperationSign(1);
+                                    break;
+                                }else{
+                                    contentData.setOperationSign(0);
+                                }
+                            }
+                            treeList.add(contentData);
+                        }
+
+                    }
+                }
+            }
+
+        }
+        map.put("data",treeList);
+        return map;
+    }
+
+
+    /**
+     * 跳转方法
+     * @param projectcontentinfo
+     * @param model
+     * @return
+     */
+    @RequestMapping(value = {"reviewForm"})
+    public String form(Projectcontentinfo projectcontentinfo, HttpServletRequest request, HttpServletResponse response, Model model, RedirectAttributes attr, String projectId) {
+
+        //ProjectRecordTreeData中的项目编号(根据类型名称)获取项目类型表的type_id
+        if(StringUtils.isNotEmpty(projectId)){
+            String projectTypeId=projectEarlyReviewService.getTypeId(projectId);
+            model.addAttribute("projectTypeId",projectTypeId);
+        }
+
+        String dictType = projectcontentinfo.getDictType();
+        ProjectRecords records = projectRecordsService.getQueryProjectUsers(projectcontentinfo.getProject().getId());
+        projectcontentinfo.setProject(records);
+
+
+        ProjectReportData projectReportData = new ProjectReportData();
+        projectReportData.setType(dictType);
+        if (projectcontentinfo.getView().equals("reportChangeForm")){
+            projectReportData = projectReportChangeService.get(projectcontentinfo.getProjectReportData().getId());
+        }else {
+            projectReportData.setNumber("");
+        }
+
+        if (projectReportData.getMaster()==null || StringUtils.isBlank(projectReportData.getMaster().getId())){
+            projectReportData.setMaster(UserUtils.getUser());
+        }
+        if (StringUtils.isBlank(projectReportData.getStatus())){
+            projectReportData.setFileStatus("1");
+        }
+        List<ProjectContentData> projectContentDataList = projectContentDataService.getProjectContentData(projectcontentinfo.getInfoId());
+        //获取需要复核工作内容的对应typeId
+        String typeId = projectContentDataList.get(0).getType();
+        //获取该工作内容的依据性资料信息
+        List<ProjectBasedData> projectBasedDataList =  projectTypeService.getAccrdingDataList(typeId);
+        for (ProjectBasedData projectBasedData: projectBasedDataList) {
+            ProjectBasedData contentAttachmentData =  projectTypeService.getBasedData(projectContentDataList.get(0).getId(),projectBasedData.getId());
+            if (null != contentAttachmentData) {
+                try {
+                    MyBeanUtils.copyBeanNotNull2Bean(contentAttachmentData, projectBasedData);
+                }catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+            projectBasedData.setFlag("according");
+            if (StringUtils.isNotBlank(projectBasedData.getFileAttachmentId())) {
+                projectBasedData.setUploadUser(UserUtils.get(projectBasedData.getFileAttachmentId()));
+            }
+            //判断是否有上传文件 如果没有上传文件则添加当前登录人信息 和当前时间作为上传时间
+            if(StringUtils.isBlank(projectBasedData.getFileUrl())){
+                projectBasedData.setUploadDate(new Date());
+                projectBasedData.setUploadUser(UserUtils.getUser());
+            }
+        }
+        projectReportData.setProjectBasedDataList(projectBasedDataList);
+        projectReportData.setProjectContentDataList(projectContentDataList);
+        projectcontentinfo.setProjectReportData(projectReportData);
+        model.addAttribute("projectcontentinfo", projectcontentinfo);
+        model.addAttribute("achievementParentId", projectReportData.getType());
+        model.addAttribute("achievementId", projectReportData.getAchievementType());
+        model.addAttribute("reviewStandard", projectReportData.getReviewStandard());
+        model.addAttribute("projectId", projectcontentinfo.getProject().getId());
+        model.addAttribute("reportType", projectcontentinfo.getReportType());
+        if (projectReportData == null || StringUtils.isBlank(projectReportData.getId())) {
+            model.addAttribute("condition", projectcontentinfo.getCondition());
+            return "modules/projectrecord/check/reportForm";
+        } else {
+            return "modules/projectcontentinfo/reportView";
+        }
+    }
+
+    /**
+     * 添加工程款信息
+     */
+    @RequestMapping(value = "save")
+    public String save(ConcealProjectInfo concealProjectInfo, RedirectAttributes redirectAttributes) throws Exception {
+
+        String str = service.saveData(concealProjectInfo);
+        addMessage(redirectAttributes, "保存工程进度款信息"+(str.equals("true")?"成功":"失败"));
+        return "redirect:"+Global.getAdminPath()+"/project/checkInterimPayment/?repage";
+    }
+
+    @RequestMapping("ajaxdelete")
+    @ResponseBody
+    public AjaxJson deleteBased(String contentId, String basedId){
+        AjaxJson ajaxJson = new AjaxJson();
+        try {
+            if (StringUtils.isNotBlank(contentId)) {
+                service.deleteBased(contentId, basedId);
+            }
+            Integer count = projectContentDataService.countBased(basedId);
+            ajaxJson.getBody().put("inuse", count == null ? true : count > 0);
+        }catch (Exception e){
+            logger.error("删除依据资料异常!",e);
+            ajaxJson.setSuccess(false);
+            ajaxJson.setMsg("删除依据资料失败");
+        }
+        return  ajaxJson;
+    }
+
+    /**
+     * 工程进度款删除方法
+     * @param concealProjectInfo
+     * @return
+     */
+    @RequestMapping(value = {"deleteInterimPayment"})
+    public String deleteInterimPayment(ConcealProjectInfo concealProjectInfo) {
+        service.deleteInterimPayment(concealProjectInfo);
+        return "redirect:"+ Global.getAdminPath()+"/project/checkInterimPayment/?repage";
+    }
+
+    /**
+     * 删除工程款信息
+     */
+    @RequestMapping(value = "delete")
+    public String delete(ProjectPaymentTreeData projectPaymentTreeData) {
+        service.delete(projectPaymentTreeData);
+        return "redirect:"+ Global.getAdminPath()+"/project/checkInterimPayment/?repage";
+    }
+
+}

+ 370 - 0
src/main/java/com/jeeplus/modules/projectrecord/web/check/CheckVisaController.java

@@ -0,0 +1,370 @@
+package com.jeeplus.modules.projectrecord.web.check;
+
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.projectConstruction.entity.ConstructionContract;
+import com.jeeplus.modules.projectConstruction.service.ContractService;
+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.MainDictDetail;
+import com.jeeplus.modules.sys.entity.User;
+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 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
+@RequestMapping(value = "${adminPath}/project/checkVisa")
+public class CheckVisaController extends BaseController {
+
+    @Autowired
+    private ProjectVisaService  projectVisaService;
+    @Autowired
+    private ProjectImplementEarlyService projectImplementEarlyService;
+    @Autowired
+    private ContractService contractService;
+    @Autowired
+    private WorkClientAttachmentDao workClientAttachmentDao;
+    @Autowired
+    private ConcealProjectService concealProjectService;
+    @Autowired
+    private ProjectControlTableService projectControlTableService;
+    @Autowired
+    private ProjectContentDataService projectContentDataService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
+
+    @ModelAttribute
+    public ConstructionContract get(@RequestParam(required=false) String id) {
+        ConstructionContract entity = null;
+        if (StringUtils.isNotBlank(id)){
+            entity = contractService.get(id);
+        }
+        if (entity == null){
+            entity = new ConstructionContract();
+        }
+        return entity;
+    }
+
+    /**
+     * 签证汇总表列表页面
+     */
+    @RequestMapping(value = {"list", ""})
+    public String list(ConstructionContract constructionContract, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        Page<ConstructionContract> page = contractService.findPage(new Page<ConstructionContract>(request, response), constructionContract);
+        model.addAttribute("page", page);
+        model.addAttribute("reportType","3");
+        model.addAttribute("contractName",constructionContract.getContractName());
+        return "modules/projectrecord/check/checkVisaList";
+    }
+
+    //添加签证汇总页面
+    @RequestMapping(value = "form")
+    public String form(ConcealProjectInfo concealProjectInfo, Model model) {
+
+        ProjectContentData projectContentData = new ProjectContentData();
+        projectContentData.setType("");
+        if (StringUtils.isNotBlank(concealProjectInfo.getInfoId())){
+            projectContentData = projectVisaService.getProjectContentData(concealProjectInfo.getInfoId());
+        }else if (concealProjectInfo.getProjectContentData()!=null && StringUtils.isNotBlank(concealProjectInfo.getProjectContentData().getId())) {
+            projectContentData = projectVisaService.getProjectContentData(concealProjectInfo.getProjectContentData().getId());
+        }
+        projectContentData.setMaster(UserUtils.getUser());
+        if(StringUtils.isNotBlank(projectContentData.getId())){
+            List<ProjectControlTable> controlData = projectControlTableService.getControlData(projectContentData.getId(),"");
+            projectContentData.setProjectControlTableList(controlData);
+            projectContentDataService.queryBasedData(projectContentData);
+        }
+
+        concealProjectInfo.setProjectContentData(projectContentData);
+        model.addAttribute("concealProjectInfo", concealProjectInfo);
+        if("view".equals(concealProjectInfo.getView())){
+            return "modules/projectrecord/visa/projectVisaView";
+        }
+        return "modules/projectrecord/visa/projectVisaForm";
+    }
+
+    /**
+     * 工程费用列表页面
+     */
+    @RequestMapping(value = {"visaList"})
+    public String list(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<>();
+        if(StringUtils.isNotBlank(projectVisa.getContentId())){
+            list = projectVisaService.findList(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/workSiteVisaList";
+        if("view".equals(view)){
+            viewPath+="View";
+        }
+        List<MainDictDetail> unitList= DictUtils.getMainDictList("unit_type");
+        model.addAttribute("unitList", unitList);
+        List<MainDictDetail> nodeList=DictUtils.getMainDictList("node_type");
+        model.addAttribute("nodeList", nodeList);
+        List<MainDictDetail> costList=DictUtils.getMainDictList("cost_type");
+        model.addAttribute("costList", costList);
+        return viewPath;
+    }
+
+    //编辑签证汇总页面
+    @RequestMapping(value = "updateTable")
+    public String updateTable(ProjectVisa projectVisa, Model model) {
+
+        if(StringUtils.isNotEmpty(projectVisa.getId())){
+            ProjectVisa visa=projectVisaService.getVisa(projectVisa);
+            WorkClientAttachment attchment = new WorkClientAttachment();
+            attchment.setAttachmentId(projectVisa.getId());
+            List<WorkClientAttachment> attachments = workClientAttachmentDao.findList(attchment);
+            visa.setWorkAttachments(attachments);
+            model.addAttribute("projectVisa", visa);
+        }else{
+            model.addAttribute("projectVisa", projectVisa);
+        }
+
+        return "modules/projectrecord/visa/projectVisaForm";
+    }
+
+    //编辑签证汇总页面
+    @RequestMapping(value = "view")
+    public String view(ProjectVisa projectVisa, Model model) {
+
+        if(StringUtils.isNotEmpty(projectVisa.getId())){
+            ProjectVisa visa=projectVisaService.getVisa(projectVisa);
+            WorkClientAttachment attchment = new WorkClientAttachment();
+            attchment.setAttachmentId(projectVisa.getId());
+            List<WorkClientAttachment> attachments = workClientAttachmentDao.findList(attchment);
+            visa.setWorkAttachments(attachments);
+            model.addAttribute("projectVisa", visa);
+        }else{
+            model.addAttribute("projectVisa", projectVisa);
+        }
+
+        return "modules/projectrecord/implementStage/projectVisaView";
+    }
+
+    /**
+     * 保存签证信息
+     * @param concealProjectInfo
+     * @param redirectAttributes
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = {"save"})
+    public String save(ConcealProjectInfo concealProjectInfo, RedirectAttributes redirectAttributes) throws Exception {
+
+        String str = projectVisaService.saveData(concealProjectInfo);
+        addMessage(redirectAttributes, "保存签证信息"+(str.equals("true")?"成功":"失败"));
+        return "redirect:"+Global.getAdminPath()+"/project/checkVisa/?repage";
+    }
+
+    //显示签证页面
+    public String getVisa(ProjectVisa projectVisa,Model model){
+        ProjectVisa projectVisa1=projectVisaService.getVisa(projectVisa);
+        model.addAttribute("projectVisa",projectVisa1);
+        return "";
+    }
+
+
+    //获取树状图
+    @RequestMapping(value = "getVisaList")
+    @ResponseBody
+    public Map<String,List> getTreeList(ConstructionContract constructionContract, HttpServletRequest request, HttpServletResponse response, Model model){
+
+        Map<String,List> map = new HashMap<>();
+        ProjectImplementEarly projectRecords = new ProjectImplementEarly();
+        if(StringUtils.isNotBlank(constructionContract.getProjectName())){
+            projectRecords.setProjectName(constructionContract.getProjectName());
+        }
+        Page<ProjectImplementEarly> recordPage = projectImplementEarlyService.findProjectPage(new Page<ProjectImplementEarly>(request, response), projectRecords);
+        //获取项目信息
+        List<ProjectImplementEarly> recordList = recordPage.getList();
+        //新建树形列表集合
+        List<VisaTreeData> treeList=new ArrayList<>();
+        if(recordList.size()>0){
+            for (ProjectImplementEarly record:recordList) {
+                //将项目信息放入树形列表集合中
+                VisaTreeData recordTreeData = new VisaTreeData();
+                //将界面需要展示数据放入类中
+                recordTreeData.setId(record.getId());
+                recordTreeData.setContractName(record.getProjectName());
+                recordTreeData.setCnumber(record.getProjectId());
+                recordTreeData.setNumber("");
+                recordTreeData.setPid("0");
+                //添加工作内容id
+                recordTreeData.setProjectContentId(record.getProjectContentId());
+                //将项目设置为第一级数据
+                recordTreeData.setCondition(1);
+                //将项目信息放入
+                treeList.add(recordTreeData);
+
+                //处理合同信息数据
+                ConstructionContract conditionContract = new ConstructionContract();
+                conditionContract.setProjectId(record.getId());
+
+                if(StringUtils.isNotBlank(constructionContract.getContractName())){
+                    conditionContract.setContractName(constructionContract.getContractName());
+                }
+                //获取合同信息
+                List<ConstructionContract> contractList = contractService.getConstructionContractList(conditionContract);
+                if(contractList.size()>0){
+                    //遍历项目中的合同信息
+                    for (ConstructionContract contract:contractList) {
+                        VisaTreeData visaTreeData=new VisaTreeData();
+                        visaTreeData.setContractId(contract.getId());
+                        visaTreeData.setId(contract.getId());
+                        visaTreeData.setContractName(contract.getContractName());
+                        visaTreeData.setDate(contract.getCreateDate());
+                        visaTreeData.setNumber("");
+                        visaTreeData.setPid(record.getId());
+                        visaTreeData.setCnumber(contract.getCnumber());
+                        //添加工作内容id
+                        visaTreeData.setProjectContentId(record.getProjectContentId());
+
+                        //将项目设置为第二级数据
+                        visaTreeData.setCondition(2);
+                        //遍历项目负责人信息
+                        List<User> masterUserList = record.getProjectLeaders();
+                        List<String> masterList = new ArrayList<>();
+                        Set masterIdSet = new HashSet();
+                        for (User masterUser:masterUserList) {
+                            masterList.add(masterUser.getName());
+                            masterIdSet.add(masterUser.getId());
+                        }
+                        //Set转List
+                        List<String> masterIdList = new ArrayList<>(masterIdSet);
+                        for (String masterId : masterIdList) {
+                            if(masterId.equals(UserUtils.getUser().getId())){
+                                visaTreeData.setOperationSign(1);
+                                break;
+                            }else{
+                                visaTreeData.setOperationSign(0);
+                            }
+                        }
+
+                        //将项目信息放入
+                        treeList.add(visaTreeData);
+
+
+                        //获取阶段Type父节点信息
+                        String projectType = projectImplementEarlyService.getProjectType(record.getProjectTypeId(), "实施阶段");
+                        //根据项目id查询相关的项目阶段内容
+                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentReportDataListOnImplement(record.getId(),projectType,"45");
+                        //根据获取的合同的id去查找汇总表获取汇总表信息
+                        //List<ProjectContentData> projectVisaList=projectVisaService.getVisaList(contract.getId(),"1");
+
+                        Projectcontentinfo select = new Projectcontentinfo();
+                        ProjectRecords project = new ProjectRecords();
+                        project.setId(record.getId());
+                        select.setParentIds("0,");
+                        select.setProject(project);
+                        List<Projectcontentinfo> p = projectcontentinfoService.findListByProject(select);
+
+                        for (int j=0;j<reportDataList.size();j++){
+                            VisaTreeData contentData=new VisaTreeData();
+                            ProjectRecordTreeData data=reportDataList.get(j);
+                            contentData.setPid(visaTreeData.getId());
+                            contentData.setId(data.getId());
+                            contentData.setContractName(data.getProjectName());
+                            contentData.setCnumber(contract.getCnumber());
+                            contentData.setStatus(data.getStatus());
+                            contentData.setNumber(data.getReportName());
+                            contentData.setProjectId(record.getId());
+                            contentData.setReportId(data.getReportId());
+
+                            if(p.size()>0){
+                                contentData.setContentPId(p.get(0).getId());
+                                contentData.setParentIds("0,");
+                                contentData.setDictType("");
+                            }
+                            //添加工作内容id
+                            contentData.setProjectContentId(record.getProjectContentId());
+
+                            //将项目设置为第二级数据
+                            contentData.setCondition(3);
+                            for (String masterId : masterIdList) {
+                                if(masterId.equals(UserUtils.getUser().getId())){
+                                    contentData.setOperationSign(1);
+                                    break;
+                                }else{
+                                    contentData.setOperationSign(0);
+                                }
+                            }
+                            treeList.add(contentData);
+                        }
+
+                    }
+                }
+            }
+
+        }
+        map.put("data",treeList);
+        return map;
+    }
+
+    /**
+     * 删除依据性资料
+     */
+    @RequestMapping(value = "delete")
+    @ResponseBody
+    public Map<String,Object> delete(ProjectVisa projectVisa, RedirectAttributes redirectAttributes) {
+        Map<String,Object> j= new HashMap<>();
+        try {
+            projectVisaService.deleteByLogic(projectVisa.getId(),projectVisa.getType());
+            j.put("status",true);
+            j.put("msg","删除成功");
+            addMessage(redirectAttributes, "删除成功");
+        }catch (Exception e){
+            j.put("status",false);
+            j.put("msg","删除失败");
+            addMessage(redirectAttributes, "删除失败");
+        }
+        return j;
+    }
+
+}

+ 41 - 7
src/main/java/com/jeeplus/modules/projectrecord/web/distributionSettlement/DistributionSettlementController.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.projectrecord.service.distributionSettlement.DistributionSettlementService;
@@ -37,7 +41,7 @@ import java.util.*;
 
 
 /**
- * 甲供物资Controller
+ * 分布结算Controller
  * @author 徐滕
  * @version 2020-07-30
  */
@@ -56,6 +60,8 @@ public class DistributionSettlementController extends BaseController {
     private ProjectControlTableService projectControlTableService;
     @Autowired
     private ProjectContentDataService projectContentDataService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
 
     @ModelAttribute
     public ConstructionContract get(@RequestParam(required=false) String id) {
@@ -112,6 +118,8 @@ public class DistributionSettlementController extends BaseController {
                 recordTreeData.setCnumber(record.getProjectId());
                 recordTreeData.setNumber("");
                 recordTreeData.setPid("0");
+                //添加工作内容id
+                recordTreeData.setProjectContentId(record.getProjectContentId());
                 //将项目设置为第一级数据
                 recordTreeData.setCondition(1);
                 //将项目信息放入
@@ -137,6 +145,8 @@ public class DistributionSettlementController extends BaseController {
                         visaTreeData.setNumber("");
                         visaTreeData.setPid(record.getId());
                         visaTreeData.setCnumber(contract.getCnumber());
+                        //添加工作内容id
+                        visaTreeData.setProjectContentId(record.getProjectContentId());
 
                         //将项目设置为第二级数据
                         visaTreeData.setCondition(2);
@@ -163,17 +173,37 @@ public class DistributionSettlementController extends BaseController {
                         treeList.add(visaTreeData);
 
 
+                        //获取阶段Type父节点信息
+                        String projectType = projectImplementEarlyService.getProjectType(record.getProjectTypeId(), "实施阶段");
+                        //根据项目id查询相关的项目阶段内容
+                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentDataListOnImplement(record.getId(),projectType,"412");
+
+                        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=distributionSettlementService.getConcealProjectList(contract.getId());
-                        for (int j=0;j<contentDataList.size();j++){
+                        //List<ProjectContentData> contentDataList=distributionSettlementService.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());
+                            //添加工作内容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 +250,10 @@ public class DistributionSettlementController extends BaseController {
             projectContentDataService.queryBasedData(projectContentData);
         }
 
+        if(StringUtils.isBlank(concealProjectInfo.getId()) && StringUtils.isNotBlank(concealProjectInfo.getProjectContentId())){
+            concealProjectInfo.setId(concealProjectInfo.getProjectContentId());
+        }
+        concealProjectInfo.setCondition("distribution");
         concealProjectInfo.setProjectContentData(projectContentData);
         model.addAttribute("concealProjectInfo", concealProjectInfo);
         if("view".equals(concealProjectInfo.getType())){

+ 40 - 9
src/main/java/com/jeeplus/modules/projectrecord/web/implementStage/ProjectInterimPaymentController.java

@@ -9,12 +9,12 @@ import com.jeeplus.modules.projectConstruction.entity.ConstructionContract;
 import com.jeeplus.modules.projectConstruction.service.ContractService;
 import com.jeeplus.modules.projectVisa.entity.VisaTreeData;
 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.ProjectPaymentTreeData;
+import com.jeeplus.modules.projectrecord.entity.*;
 import com.jeeplus.modules.projectrecord.service.ProjectImplementEarlyService;
 import com.jeeplus.modules.projectrecord.service.implementStage.ProjectInterimPaymentService;
 import com.jeeplus.modules.sys.entity.User;
@@ -51,6 +51,8 @@ public class ProjectInterimPaymentController extends BaseController {
     private ProjectControlTableService projectControlTableService;
     @Autowired
     private ProjectContentDataService projectContentDataService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
 
     /**
      * 合同列表页面
@@ -95,6 +97,8 @@ public class ProjectInterimPaymentController extends BaseController {
                 recordTreeData.setCnumber(record.getProjectId());
                 recordTreeData.setNumber("");
                 recordTreeData.setPid("0");
+                //添加工作内容id
+                recordTreeData.setProjectContentId(record.getProjectContentId());
                 //将项目设置为第一级数据
                 recordTreeData.setCondition(1);
                 //将项目信息放入
@@ -120,6 +124,8 @@ public class ProjectInterimPaymentController extends BaseController {
                         visaTreeData.setNumber("");
                         visaTreeData.setPid(record.getId());
                         visaTreeData.setCnumber(contract.getCnumber());
+                        //添加工作内容id
+                        visaTreeData.setProjectContentId(record.getProjectContentId());
 
                         //将项目设置为第二级数据
                         visaTreeData.setCondition(2);
@@ -146,17 +152,37 @@ public class ProjectInterimPaymentController extends BaseController {
                         treeList.add(visaTreeData);
 
 
+                        //获取阶段Type父节点信息
+                        String projectType = projectImplementEarlyService.getProjectType(record.getProjectTypeId(), "实施阶段");
+                        //根据项目id查询相关的项目阶段内容
+                        List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentDataListOnImplement(record.getId(),projectType,"420");
+
+                        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=service.getInterimPaymentList(contract.getId());
-                        for (int j=0;j<contentDataList.size();j++){
+                        //List<ProjectContentData> contentDataList=service.getInterimPaymentList(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());
+                            //添加工作内容id
+                            contentData.setProjectContentId(record.getProjectContentId());
+
+                            if(p.size()>0){
+                                contentData.setContentPId(p.get(0).getId());
+                                contentData.setParentIds("0,");
+                                contentData.setDictType("");
+                            }
 
                             //将项目设置为第二级数据
                             contentData.setCondition(3);
@@ -365,6 +391,11 @@ public class ProjectInterimPaymentController extends BaseController {
             projectContentDataService.queryBasedData(projectContentData);
         }
 
+        if(StringUtils.isBlank(concealProjectInfo.getId()) && StringUtils.isNotBlank(concealProjectInfo.getProjectContentId())){
+            concealProjectInfo.setId(concealProjectInfo.getProjectContentId());
+        }
+        model.addAttribute("flag", "early");
+        concealProjectInfo.setCondition("interim");
         concealProjectInfo.setProjectContentData(projectContentData);
         model.addAttribute("concealProjectInfo", concealProjectInfo);
         if("view".equals(concealProjectInfo.getType())){

+ 2 - 2
src/main/java/com/jeeplus/modules/projectreportnum/web/ProjectReportNumController.java

@@ -143,8 +143,8 @@ public class ProjectReportNumController extends BaseController {
 					}else{
 						String typeId = treeData.getNum().split("-")[1];
 						//截取获取
-						String typeStage=typeId.split("")[0];
-						if(reportType.equals(typeStage)){
+						//String typeStage=typeId.split("")[0];
+						if(reportType.equals(reportNum.getReportType())){
 							List<WorkClientAttachment> workClientAttachmentList = projectResultsFileTemplateService.getWorkClientAttachmentList(typeId);
 							if(null != workClientAttachmentList){
 								for (WorkClientAttachment workClientAttachment: workClientAttachmentList) {

+ 11 - 3
src/main/java/com/jeeplus/modules/workcontent/common/WorkContentDetailFactory.java

@@ -30,6 +30,8 @@ public class WorkContentDetailFactory {
     private static WorkContentBiddingplanService biddingplanService = SpringContextHolder.getBean(WorkContentBiddingplanService.class);
     //变更管理Service
     private static WorkContentAltermanageService altermanageService = SpringContextHolder.getBean(WorkContentAltermanageService.class);
+    //变更管理Service变更后
+    private static ProjectVisaInfoService projectVisaInfoService = SpringContextHolder.getBean(ProjectVisaInfoService.class);
     //签证管理Service
     private static WorkContentVisamanageService visamanageService = SpringContextHolder.getBean(WorkContentVisamanageService.class);
     //价差管理Service
@@ -69,11 +71,17 @@ public class WorkContentDetailFactory {
             case "42":
                 return pricemanageService;
             case "43":
-                return altermanageService;
+                //return altermanageService;
+                //变更后
+                return projectVisaInfoService;
             case "45":
-                return visamanageService;
+                //return visamanageService;
+                //变更后
+                return projectVisaInfoService;
             case "46":
-                return contentClaimService;
+                //return contentClaimService;
+                //变更后
+                return projectVisaInfoService;
             case "47":
                 return fundplanService;
             case "48":

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

@@ -34,4 +34,10 @@ public interface WorkConcealProjectDao extends CrudDao<WorkConcealProject> {
      * @return
      */
     List<String> getTableType(String contentId);
+
+    /**
+     * 根据id删除设计变更、现场签证、索赔管理模块内容详情
+     * @param id
+     */
+    void deleteContractById(String id);
 }

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

@@ -11,6 +11,7 @@ import com.jeeplus.modules.projectVisa.dao.ProjectVisaDao;
 import com.jeeplus.modules.projectVisa.entity.ProjectVisa;
 import com.jeeplus.modules.workcontent.dao.WorkConcealProjectDao;
 import com.jeeplus.modules.workcontent.entity.WorkConcealProject;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -25,6 +26,9 @@ import java.util.List;
 @Transactional(readOnly = true)
 public class ProjectVisaInfoService extends CrudService<ProjectVisaDao, ProjectVisa> implements WorkContentDetailBaseService{
 
+	@Autowired
+	private WorkConcealProjectDao workConcealProjectDao;
+
 	public ProjectVisa get(String id) {
 		return super.get(id);
 	}
@@ -57,7 +61,7 @@ public class ProjectVisaInfoService extends CrudService<ProjectVisaDao, ProjectV
         List<ProjectVisa> workConcealProjectList = JSON.parseArray(detailStr, ProjectVisa.class);
         for (ProjectVisa workConcealProject : workConcealProjectList) {
             if(WorkConcealProject.DEL_FLAG_DELETE.equals(workConcealProject.getDelFlag())){
-                dao.delete(workConcealProject);
+				workConcealProjectDao.deleteContractById(workConcealProject.getId());
                 continue;
             }
 			workConcealProject.setContentId(contentId);

+ 33 - 0
src/main/resources/mappings/modules/projectcontentinfo/ProjectContentDataDao.xml

@@ -303,6 +303,24 @@
 		where a.project_id = #{projectId} and pt.parent_id =#{projectTypeParentId} and a.del_flag = 0 order by a.update_date desc
 	</select>
 
+
+	<select id="getProjectContentDataListOnImplement" resultType="com.jeeplus.modules.projectrecord.entity.ProjectRecordTreeData">
+		select a.id as "id", a.create_by as "createBy.id", a.create_date as "createDate",
+		a.project_id as "pid", a.name as "projectName", "" as projectId,
+		"0" as projectStatus,su.name as "projectRegistrant" ,
+		pt.type_name as projectLeader,
+		ppt.type_name as clientName,prd.status as status
+		from project_content_data a
+		left join sys_user su on su.id = a.create_by
+		left join project_type pt on a.type = pt.type_id
+		left join project_type ppt on pt.parent_id = ppt.id
+		left join project_content_report pcr on pcr.content_id = a.id
+		left join project_report_data prd on prd.id = pcr.report_id
+		where a.project_id = #{projectId} and pt.parent_id =#{projectTypeParentId}
+		and pt.type_id = #{typeId}
+		and a.del_flag = 0 order by a.update_date desc
+	</select>
+
 	<select id="getProjectContentReportDataList" resultType="com.jeeplus.modules.projectrecord.entity.ProjectRecordTreeData">
 		select a.id as "id", a.create_by as "createBy.id", a.create_date as "createDate", a.project_id as "pid",
 		a.name as "projectName", "" as projectId, "0" as projectStatus,su.name as "projectRegistrant" ,
@@ -316,6 +334,21 @@
 		where a.project_id = #{projectId} and pt.parent_id =#{projectTypeParentId} and a.del_flag = 0 order by prd.status, a.update_date desc, prd.update_date desc
 	</select>
 
+	<select id="getProjectContentReportDataListOnImplement" resultType="com.jeeplus.modules.projectrecord.entity.ProjectRecordTreeData">
+		select a.id as "id", a.create_by as "createBy.id", a.create_date as "createDate", a.project_id as "pid",
+		a.name as "projectName", "" as projectId, "0" as projectStatus,su.name as "projectRegistrant" ,
+		pt.type_name as projectLeader, ppt.type_name as clientName,ifnull(prd.status,'10') as status,prd.id as reportId,ifnull(prd.name,'') as reportName
+		from project_content_data a
+		left join sys_user su on su.id = a.create_by
+		left join project_type pt on a.type = pt.type_id
+		left join project_type ppt on pt.parent_id = ppt.id
+		left join project_content_report pcr on pcr.content_id = a.id
+		left join project_report_data prd on prd.id = pcr.report_id
+		where a.project_id = #{projectId} and pt.parent_id =#{projectTypeParentId}
+		and pt.type_id = #{typeId}
+		and a.del_flag = 0 order by prd.status, a.update_date desc, prd.update_date desc
+	</select>
+
 	<select id="getProjectContentReportArchiveDataList" resultType="com.jeeplus.modules.projectrecord.entity.ProjectRecordTreeData">
 		select a.id as "id", a.create_by as "createBy.id", a.create_date as "createDate", a.project_id as "pid",
 		a.name as "projectName", "" as projectId, "0" as projectStatus,su.name as "projectRegistrant" ,

+ 9 - 7
src/main/resources/mappings/modules/projectrecord/implementStage/ProjectInterimPaymentDao.xml

@@ -65,17 +65,19 @@
 	</select>
 
 	<select id="getInterimPaymentList" resultType="ProjectContentData">
-		SELECT
-		<include refid="projectInterimPaymentColumns"/>
-		from project_interim_payment_info a
-		where a.contract_id = #{contractId}  and del_flag=0
+		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.company_id as "companyId",
+		a.office_id as "officeId", a.name as "name", a.project_id as "contractId"
+		from project_content_data a
+		where a.project_id = #{contractId}  and del_flag=0
 		ORDER BY a.update_date DESC
 	</select>
 
 	<select id="getInterimPaymentData" resultType="ProjectContentData">
-		SELECT
-		<include refid="projectInterimPaymentColumns"/>
-		from project_interim_payment_info a
+		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.company_id as "companyId",
+		a.office_id as "officeId", a.name as "name", a.project_id as "contractId"
+		from project_content_data a
 		where a.id = #{id} and del_flag=0
 	</select>
 

+ 5 - 0
src/main/resources/mappings/modules/workcontent/WorkConcealProjectDao.xml

@@ -165,6 +165,11 @@
 		DELETE FROM work_conceal_project
 		WHERE content_id = #{id}
 	</delete>
+
+	<delete id="deleteContractById">
+		DELETE FROM contract_visa_design
+		WHERE id = #{id}
+	</delete>
 	
 	
 	<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->

+ 12 - 12
src/main/webapp/webpage/modules/projectcontentinfo/workContentView.jsp

@@ -179,13 +179,13 @@
                     $("#contentDetail").load("${ctx}/workcontent/workContentPricemanage/form",param2);
                     break;
                 case '43':
-                    $("#contentDetail").load("${ctx}/workcontent/workContentAltermanage/form",param2);
+                    $("#contentDetail").load("${ctx}/project/projectDesignChange/visaList",param2);
                     break;
                 case '45':
-                    $("#contentDetail").load("${ctx}/workcontent/workContentVisamanage/form",param2);
+                    $("#contentDetail").load("${ctx}/project/projectVisa/visaList",param2);
                     break;
                 case '46':
-                    $("#contentDetail").load("${ctx}/workcontent/workContentClaim/form",param2);
+                    $("#contentDetail").load("${ctx}/project/projectClaim/visaList",param2);
                     break;
                 case '47':
                     $("#contentDetail").load("${ctx}/workcontent/workContentFundplan/form",param2);
@@ -914,11 +914,11 @@
             case '42':
                 return "${ctx}/workcontent/workContentPricemanage/form";
             case '43':
-                return "${ctx}/workcontent/workContentAltermanage/form";
+                return "${ctx}/project/projectDesignChange/visaList";
             case '45':
-                return "${ctx}/workcontent/workContentVisamanage/form";
+                return "${ctx}/project/projectVisa/visaList";
             case '46':
-                return "${ctx}/workcontent/workContentClaim/form";
+                return "${ctx}/project/projectClaim/visaList";
             case '47':
                 return "${ctx}/workcontent/workContentFundplan/form";
             case '48':
@@ -985,13 +985,13 @@
                 $("#contentDetail").load("${ctx}/workcontent/workContentPricemanage/form",param2);
                 break;
             case '43':
-                $("#contentDetail").load("${ctx}/workcontent/workContentAltermanage/form",param2);
+                $("#contentDetail").load("${ctx}/project/projectDesignChange/visaList",param2);
                 break;
             case '45':
-                $("#contentDetail").load("${ctx}/workcontent/workContentVisamanage/form",param2);
+                $("#contentDetail").load("${ctx}/project/projectVisa/visaList",param2);
                 break;
             case '46':
-                $("#contentDetail").load("${ctx}/workcontent/workContentClaim/form",param2);
+                $("#contentDetail").load("${ctx}/project/projectClaim/visaList",param2);
                 break;
             case '47':
                 $("#contentDetail").load("${ctx}/workcontent/workContentFundplan/form",param2);
@@ -1066,13 +1066,13 @@
                 $("#contentDetail").load("${ctx}/workcontent/workContentPricemanage/form",param2);
                 break;
             case '43':
-                $("#contentDetail").load("${ctx}/workcontent/workContentAltermanage/form",param2);
+                $("#contentDetail").load("${ctx}/project/projectDesignChange/visaList",param2);
                 break;
             case '45':
-                $("#contentDetail").load("${ctx}/workcontent/workContentVisamanage/form",param2);
+                $("#contentDetail").load("${ctx}/project/projectVisa/visaList",param2);
                 break;
             case '46':
-                $("#contentDetail").load("${ctx}/workcontent/workContentClaim/form",param2);
+                $("#contentDetail").load("${ctx}/project/projectClaim/visaList",param2);
                 break;
             case '47':
                 $("#contentDetail").load("${ctx}/workcontent/workContentFundplan/form",param2);

+ 548 - 0
src/main/webapp/webpage/modules/projectrecord/check/checkClaimList.jsp

@@ -0,0 +1,548 @@
+<%@ 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) {
+                }
+            });
+        }
+
+
+        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/checkInterimPayment/list">工程进度款复核</a></li>
+                    <li><a href="${ctx}/project/checkDesign/list">设计变更复核</a></li>
+                    <li><a href="${ctx}/project/checkVisa/list">现场签证复核</a></li>
+                    <li class="active"><a href="${ctx}/project/checkClaim/list">索赔复核</a></li>
+                    <li><a href="${ctx}/project/checkDistributionSettlement/list">分布结算复核</a></li>
+                </ul>
+            </div>
+            <div class="layui-row contentShadow shadowLR" id="queryDiv">
+                <form:form id="searchForm" modelAttribute="constructionContract" action="${ctx}/project/checkClaim/list" 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}"/>
+                    <div class="commonQuery lw14">
+                        <div class="layui-item query athird">
+                            <label class="layui-form-label">项目名称:</label>
+                            <div class="layui-input-block">
+                                <form:input path="projectName" 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">
+                                <form:input path="contractName" 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>
+                </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();
+            if(undefined == projectName){
+                projectName = "";
+            }
+            var contractName = $("#contractName").val();
+            if(undefined == contractName){
+                contractName = "";
+            }
+            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/checkClaim/getVisaList?pageNo=${page.pageNo}&projectName='+projectName+'&contractName='+contractName,
+                page: false,
+                cols: [[
+                    {type: 'numbers', align:'center', title: '序号' ,width:80},
+                    {field: 'cnumber', title: '项目编号/合同编号',templet:function(d){
+                            if(d.condition ==1){
+                                return "<font>"+d.cnumber+"</font>";
+                            }else if(d.condition ==2){
+                                return "<font>"+d.cnumber+"</font>";
+                            }else{
+                                return "<font>"+d.cnumber+"</font>";
+                            }
+                        }},
+                    {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){
+                                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=\"#\" onclick=\"openDialogView('查看工作内容详情', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=contentView&dictType=${dictType}&id="+d.contentPId+"&parentIds=${parentIds}&infoId="+d.id+"','95%', '95%')\">" + d.contractName + "</a>";
+                            }
+                        }},
+                    {field: 'reportName', align:'center', title: '成果文件名称',templet:function(d){
+                            if(d.condition ==1){
+                                return  "";
+                            }else if(d.condition ==2){
+                                return  "";
+                            }else if(d.condition ==3){
+                                return "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看工作内容', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=contentView&condition=according&dictType=&id="+d.contentPId+"&parentIds="+d.parentIds+"&infoId="+d.id+"&reportId="+d.reportId+"','95%', '95%')\">" + d.number + "</a>";
+                            }else{
+                                return "";
+                            }
+                        }},
+                    {field: 'date', align:'center', title: '签证日期',width:100,templet: function(d){
+                            var date=d.date;
+                            /*date=date.replace(new RegExp(/-/gm) ,"/");*/
+
+                            if(d.condition ==1){
+                                return "";
+                            }else if(d.condition ==2){
+                                return "";
+                            }else{
+                                return "<font>"+layui.util.toDateString(date,'yyyy-MM-dd')+"</font>";
+                            }
+                        }},
+                    {align:'center', title: '状态',  width:70,templet:function(d){
+                            var st = getAuditState(""+d.projectStatus);
+                            if(d.condition ==1){
+                                return "";
+                            }else if(d.condition ==2){
+                                return "";
+                            }else if(d.condition ==3){
+                                st = getAuditState(""+d.status);
+                                if(st.action)
+                                    var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/projectcontentinfo/projectcontentinfo/getProcessOne?id=" + d.id + "&projectReportData.id="+ d.reportId + "&type="+d.status+"','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                                else
+                                    var xml = "<span style=\"cursor:default;\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                                return xml;
+                            }else{
+                                return '';
+                            }
+                        }},
+                    {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.condition ==1) {
+                return [
+                    '',
+                ].join('');
+            } else if(d.condition ==2) {
+                if(1 == d.operationSign) {
+                    return [
+                        '<a href="javascript:void(0)" onclick="openDialogWork1(\'领取报告号\', \'${ctx}/projectreportnum/projectReportNum/skipMethod?reportType=${reportType}&projectId='+d.pid+'\',\'60%\',\'95%\',false,\'inputForm\')" 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.condition ==3){
+                if(d.status == 1){
+                    return [
+                        '<a href="javascript:void(0)" onclick="openDialogres(\'修改报告\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=report&condition=according&flag=edit&dictType=${dictType}&reportType=${reportType}&id='+d.contentPId+'&parentIds=${parentIds}&projectReportData.id='+d.reportId+'\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+                        '<a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+d.reportId+'&condition=according&id='+d.contentPId+'&type=8" onclick="return confirmxRefresh(\'确认要删除该工作内容报告吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+                    ].join('');
+                }else if(d.status == 2){
+                    return [
+                        '<a href="${ctx}/projectcontentinfo/projectcontentinfo/cancelInvalidate?infoId='+d.reportId+'&id='+d.contentPId+'&type=8" onclick="return confirmxRefresh(\'确认要撤回该工作内容报告吗?\', this.href)"   class="op-btn op-btn-cancel"><i class="glyphicon glyphicon-share-alt"></i> 撤回</a>',
+                    ].join('');
+                }else if(d.status == 3){
+                    return [
+                        '<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改报告\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=report&condition=according&flag=edit&dictType=${dictType}&reportType=${reportType}&id='+d.contentPId+'&parentIds=${parentIds}&projectReportData.id='+d.reportId+'&projectId='+d.projectId+ '\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+                        '<a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+d.reportId+'&condition=according&id='+d.contentPId+'&type=8" onclick="return confirmxRefresh(\'确认要删除该工作内容报告吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+                    ].join('');
+                }else if(d.status == 4){
+                    return [
+                        '<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改报告\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=reportModify&flag=edit&condition=according&dictType=${dictType}&reportType=${reportType}&id='+d.contentPId+'&parentIds=${parentIds}&projectReportData.id='+d.reportId+'&projectId='+d.projectId+ '\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+                        '<a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+d.reportId+'&condition=according&id='+d.contentPId+'&type=8" onclick="return confirmxRefresh(\'确认要删除该工作内容报告吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+                    ].join('');
+                }else if(d.status == 5){
+                    return [''].join('');
+                }else if(d.status == null || d.status == '' || d.status == 10){
+                    return [
+                        '<a href="javascript:void(0)" onclick="openDialogres(\'复核\', \'${ctx}/project/checkInterimPayment/reviewForm?view=report&condition=claim&dictType=&reportType=${reportType}&project.id='+d.projectId+'&id='+d.id+'&parentIds=&infoId='+d.id+'&projectId='+d.projectId+'&project.projectName='+d.projectName+ '\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-plus"></i> 复核</a>',
+                    ].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});
+                        }
+                        //parent.refreshTrees();
+                        location = '${ctx}/project/projectClaim/list';
+                    }
+                });
+            }
+            top.layer.close(index);
+        });
+        return false;
+    }
+    function openDialogWork1(title,url,width,height,target){
+        top.layer.open({
+            type: 2,
+            area: [width, height],
+            title: title,
+            maxmin: true, //开启最大化最小化按钮
+            content: url ,
+            btn: ['关闭'],
+            end:function(index){
+                top.layer.close(index)
+            }
+        });
+    }
+</script>
+</body>
+</html>

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

@@ -0,0 +1,551 @@
+<%@ 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: ['保存','关闭'],
+
+                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 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/checkInterimPayment/list">工程进度款复核</a></li>
+                    <li class="active"><a href="${ctx}/project/checkDesign/list">设计变更复核</a></li>
+                    <li><a href="${ctx}/project/checkVisa/list">现场签证复核</a></li>
+                    <li><a href="${ctx}/project/checkClaim/list">索赔复核</a></li>
+                    <li><a href="${ctx}/project/checkDistributionSettlement/list">分布结算复核</a></li>
+                </ul>
+            </div>
+            <div class="layui-row contentShadow shadowLR" id="queryDiv">
+                <form:form id="searchForm" modelAttribute="constructionContract" action="${ctx}/project/checkDesign/list" 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}"/>
+                    <div class="commonQuery lw14">
+                        <div class="layui-item query athird">
+                            <label class="layui-form-label">项目名称:</label>
+                            <div class="layui-input-block">
+                                <form:input path="projectName" 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">
+                                <form:input path="contractName" 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>
+                </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-add" title="签证汇总" onclick="openVisa('签证汇总','${ctx}/project/projectVisa/form','95%','95%')"><i class="fa fa-plus"></i>&nbsp;添加</button>--%>
+                    <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();
+            if(undefined == projectName){
+                projectName = "";
+            }
+            var contractName = $("#contractName").val();
+            if(undefined == contractName){
+                contractName = "";
+            }
+            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/checkDesign/getVisaList?pageNo=${page.pageNo}&projectName='+projectName+'&contractName='+contractName,
+                page: false,
+                cols: [[
+                    {type: 'numbers', align:'center', title: '序号' ,width:80},
+                    {field: 'cnumber', title: '项目编号/合同编号',templet:function(d){
+                            if(d.condition ==1){
+                                return "<font>"+d.cnumber+"</font>";
+                            }else if(d.condition ==2){
+                                return "<font>"+d.cnumber+"</font>";
+                            }else{
+                                return "<font>"+d.cnumber+"</font>";
+                            }
+                        }},
+                    {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){
+                                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=\"#\" onclick=\"openDialogView('查看工作内容详情', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=contentView&dictType=${dictType}&id="+d.contentPId+"&parentIds=${parentIds}&infoId="+d.id+"','95%', '95%')\">" + d.contractName + "</a>";
+                            }
+                        }},
+                    {field: 'reportName', align:'center', title: '成果文件名称',templet:function(d){
+                            if(d.condition ==1){
+                                return  "";
+                            }else if(d.condition ==2){
+                                return  "";
+                            }else if(d.condition ==3){
+                                return "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看工作内容', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=contentView&condition=according&dictType=&id="+d.contentPId+"&parentIds="+d.parentIds+"&infoId="+d.id+"&reportId="+d.reportId+"','95%', '95%')\">" + d.number + "</a>";
+                            }else{
+                                return "";
+                            }
+                        }},
+                    {field: 'date', align:'center', title: '变更日期',width:100,templet: function(d){
+                            var date=d.date;
+                            /*date=date.replace(new RegExp(/-/gm) ,"/");*/
+
+                            if(d.condition ==1){
+                                return "";
+                            }else if(d.condition ==2){
+                                return "";
+                            }else{
+                                return "<font>"+layui.util.toDateString(date,'yyyy-MM-dd')+"</font>";
+                            }
+                        }},
+                    {align:'center', title: '状态',  width:70,templet:function(d){
+                            var st = getAuditState(""+d.projectStatus);
+                            if(d.condition ==1){
+                                return "";
+                            }else if(d.condition ==2){
+                                return "";
+                            }else if(d.condition ==3){
+                                st = getAuditState(""+d.status);
+                                if(st.action)
+                                    var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/projectcontentinfo/projectcontentinfo/getProcessOne?id=" + d.id + "&projectReportData.id="+ d.reportId + "&type="+d.status+"','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                                else
+                                    var xml = "<span style=\"cursor:default;\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                                return xml;
+                            }else{
+                                return '';
+                            }
+                        }},
+                    {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.condition ==1) {
+                return [
+                    '',
+                ].join('');
+            } else if(d.condition ==2) {
+                if(1 == d.operationSign) {
+                    return [
+                        '<a href="javascript:void(0)" onclick="openDialogWork1(\'领取报告号\', \'${ctx}/projectreportnum/projectReportNum/skipMethod?reportType=${reportType}&projectId='+d.pid+'\',\'60%\',\'95%\',false,\'inputForm\')" 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.condition ==3){
+                if(d.status == 1){
+                    return [
+                        '<a href="javascript:void(0)" onclick="openDialogres(\'修改报告\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=report&condition=according&flag=edit&dictType=${dictType}&reportType=${reportType}&id='+d.contentPId+'&parentIds=${parentIds}&projectReportData.id='+d.reportId+'\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+                        '<a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+d.reportId+'&condition=according&id='+d.contentPId+'&type=8" onclick="return confirmxRefresh(\'确认要删除该工作内容报告吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+                    ].join('');
+                }else if(d.status == 2){
+                    return [
+                        '<a href="${ctx}/projectcontentinfo/projectcontentinfo/cancelInvalidate?infoId='+d.reportId+'&id='+d.contentPId+'&type=8" onclick="return confirmxRefresh(\'确认要撤回该工作内容报告吗?\', this.href)"   class="op-btn op-btn-cancel"><i class="glyphicon glyphicon-share-alt"></i> 撤回</a>',
+                    ].join('');
+                }else if(d.status == 3){
+                    return [
+                        '<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改报告\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=report&condition=according&flag=edit&dictType=${dictType}&reportType=${reportType}&id='+d.contentPId+'&parentIds=${parentIds}&projectReportData.id='+d.reportId+'&projectId='+d.projectId+ '\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+                        '<a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+d.reportId+'&condition=according&id='+d.contentPId+'&type=8" onclick="return confirmxRefresh(\'确认要删除该工作内容报告吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+                    ].join('');
+                }else if(d.status == 4){
+                    return [
+                        '<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改报告\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=reportModify&flag=edit&condition=according&dictType=${dictType}&reportType=${reportType}&id='+d.contentPId+'&parentIds=${parentIds}&projectReportData.id='+d.reportId+'&projectId='+d.projectId+ '\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+                        '<a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+d.reportId+'&condition=according&id='+d.contentPId+'&type=8" onclick="return confirmxRefresh(\'确认要删除该工作内容报告吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+                    ].join('');
+                }else if(d.status == 5){
+                    return [''].join('');
+                }else if(d.status == null || d.status == '' || d.status == 10){
+                    return [
+                        '<a href="javascript:void(0)" onclick="openDialogres(\'复核\', \'${ctx}/project/checkInterimPayment/reviewForm?view=report&condition=design&dictType=&reportType=${reportType}&project.id='+d.projectId+'&id='+d.id+'&parentIds=&infoId='+d.id+'&projectId='+d.projectId+'&project.projectName='+d.projectName+ '\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-plus"></i> 复核</a>',
+                    ].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});
+                        }
+                        //parent.refreshTrees();
+                        location = '${ctx}/project/projectDesignChange/list';
+                    }
+                });
+            }
+            top.layer.close(index);
+        });
+        return false;
+    }
+
+
+    function openDialogWork1(title,url,width,height,target){
+        top.layer.open({
+            type: 2,
+            area: [width, height],
+            title: title,
+            maxmin: true, //开启最大化最小化按钮
+            content: url ,
+            btn: ['关闭'],
+            end:function(index){
+                top.layer.close(index)
+            }
+        });
+    }
+</script>
+</body>
+</html>

+ 546 - 0
src/main/webapp/webpage/modules/projectrecord/check/checkDistributionSettlementList.jsp

@@ -0,0 +1,546 @@
+<%@ 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) {
+                }
+            });
+        }
+
+
+        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/checkInterimPayment/list">工程进度款复核</a></li>
+                    <li><a href="${ctx}/project/checkDesign/list">设计变更复核</a></li>
+                    <li><a href="${ctx}/project/checkVisa/list">现场签证复核</a></li>
+                    <li><a href="${ctx}/project/checkClaim/list">索赔复核</a></li>
+                    <li class="active"><a href="${ctx}/project/checkDistributionSettlement/list">分布结算复核</a></li>
+                </ul>
+            </div>
+            <div class="layui-row contentShadow shadowLR" id="queryDiv">
+                <form:form id="searchForm" modelAttribute="constructionContract" action="${ctx}/project/distributionSettlement/list" 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}"/>
+                    <div class="commonQuery lw14">
+                        <div class="layui-item query athird">
+                            <label class="layui-form-label">项目名称:</label>
+                            <div class="layui-input-block">
+                                <form:input path="projectName" 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">
+                                <form:input path="contractName" 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>
+                </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();
+            if(undefined == projectName){
+                projectName = "";
+            }
+            var contractName = $("#contractName").val();
+            if(undefined == contractName){
+                contractName = "";
+            }
+            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/checkDistributionSettlement/getProjectList?pageNo=${page.pageNo}&projectName='+projectName+'&contractName='+contractName,
+                page: false,
+                cols: [[
+                    {type: 'numbers', align:'center', title: '序号' ,width:80},
+                    {field: 'cnumber', title: '项目编号/合同编号',templet:function(d){
+                            if(d.condition ==1){
+                                return "<font>"+d.cnumber+"</font>";
+                            }else if(d.condition ==2){
+                                return "<font>"+d.cnumber+"</font>";
+                            }else{
+                                return "<font>"+d.cnumber+"</font>";
+                            }
+                        }},
+                    {field: 'contractName',align:'center', 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){
+                                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=\"#\" onclick=\"openDialogView('查看工作内容详情', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=contentView&dictType=${dictType}&id="+d.contentPId+"&parentIds=${parentIds}&infoId="+d.id+"','95%', '95%')\">" + d.contractName + "</a>";
+                            }
+                        }},
+                    {field: 'reportName', align:'center', title: '成果文件名称',templet:function(d){
+                            if(d.condition ==1){
+                                return  "";
+                            }else if(d.condition ==2){
+                                return  "";
+                            }else if(d.condition ==3){
+                                return "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看成果文件', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=contentView&condition=according&dictType=&id="+d.contentPId+"&parentIds="+d.parentIds+"&infoId="+d.id+"&reportId="+d.reportId+"','95%', '95%')\">" + d.number + "</a>";
+                            }else{
+                                return "";
+                            }
+                        }},
+                    {field: 'date', align:'center', title: '创建日期',width:100,templet: function(d){
+                            var date=d.createDate;
+                            if(d.condition ==1){
+                                return "";
+                            }else if(d.condition ==2){
+                                return "";
+                            }else{
+                                return "<font>"+layui.util.toDateString(date,'yyyy-MM-dd')+"</font>";
+                            }
+                        }},
+                    {align:'center', title: '状态',  width:70,templet:function(d){
+                            var st = getAuditState(""+d.projectStatus);
+                            if(d.condition ==1){
+                                return "";
+                            }else if(d.condition ==2){
+                                return "";
+                            }else if(d.condition ==3){
+                                st = getAuditState(""+d.status);
+                                if(st.action)
+                                    var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/projectcontentinfo/projectcontentinfo/getProcessOne?id=" + d.id + "&projectReportData.id="+ d.reportId + "&type="+d.status+"','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                                else
+                                    var xml = "<span style=\"cursor:default;\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                                return xml;
+                            }else{
+                                return '';
+                            }
+                        }},
+                    {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.condition ==1) {
+                return [
+                    '',
+                ].join('');
+            } else if(d.condition ==2) {
+                if(1 == d.operationSign) {
+                    return [
+                        '<a href="javascript:void(0)" onclick="openDialogWork1(\'领取报告号\', \'${ctx}/projectreportnum/projectReportNum/skipMethod?reportType=${reportType}&projectId='+d.pid+'\',\'60%\',\'95%\',false,\'inputForm\')" 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.condition ==3){
+                if(d.status == 1){
+                    return [
+                        '<a href="javascript:void(0)" onclick="openDialogres(\'修改报告\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=report&condition=according&flag=edit&dictType=${dictType}&reportType=${reportType}&id='+d.contentPId+'&parentIds=${parentIds}&projectReportData.id='+d.reportId+'\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+                        '<a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+d.reportId+'&condition=according&id='+d.contentPId+'&type=8" onclick="return confirmxRefresh(\'确认要删除该工作内容报告吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+                    ].join('');
+                }else if(d.status == 2){
+                    return [
+                        '<a href="${ctx}/projectcontentinfo/projectcontentinfo/cancelInvalidate?infoId='+d.reportId+'&id='+d.contentPId+'&type=8" onclick="return confirmxRefresh(\'确认要撤回该工作内容报告吗?\', this.href)"   class="op-btn op-btn-cancel"><i class="glyphicon glyphicon-share-alt"></i> 撤回</a>',
+                    ].join('');
+                }else if(d.status == 3){
+                    return [
+                        '<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改报告\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=report&condition=according&flag=edit&dictType=${dictType}&reportType=${reportType}&id='+d.contentPId+'&parentIds=${parentIds}&projectReportData.id='+d.reportId+'&projectId='+d.projectId+ '\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+                        '<a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+d.reportId+'&condition=according&id='+d.contentPId+'&type=8" onclick="return confirmxRefresh(\'确认要删除该工作内容报告吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+                    ].join('');
+                }else if(d.status == 4){
+                    return [
+                        '<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改报告\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=reportModify&flag=edit&condition=according&dictType=${dictType}&reportType=${reportType}&id='+d.contentPId+'&parentIds=${parentIds}&projectReportData.id='+d.reportId+'&projectId='+d.projectId+ '\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+                        '<a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+d.reportId+'&condition=according&id='+d.contentPId+'&type=8" onclick="return confirmxRefresh(\'确认要删除该工作内容报告吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+                    ].join('');
+                }else if(d.status == 5){
+                    return [''].join('');
+                }else if(d.status == null || d.status == '' || d.status == 10){
+                    return [
+                        '<a href="javascript:void(0)" onclick="openDialogres(\'复核\', \'${ctx}/project/checkInterimPayment/reviewForm?view=report&condition=distribution&dictType=&reportType=${reportType}&project.id='+d.projectId+'&id='+d.id+'&parentIds=&infoId='+d.id+'&projectId='+d.projectId+'&project.projectName='+d.projectName+ '\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-plus"></i> 复核</a>',
+                    ].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});
+                        }
+                        //parent.refreshTrees();
+                        location = '${ctx}/project/projectVisa/list';
+                    }
+                });
+            }
+            top.layer.close(index);
+        });
+        return false;
+    }
+
+    function openDialogWork1(title,url,width,height,target){
+        top.layer.open({
+            type: 2,
+            area: [width, height],
+            title: title,
+            maxmin: true, //开启最大化最小化按钮
+            content: url ,
+            btn: ['关闭'],
+            end:function(index){
+                top.layer.close(index)
+            }
+        });
+    }
+</script>
+</body>
+</html>

+ 586 - 0
src/main/webapp/webpage/modules/projectrecord/check/checkInterimPayment.jsp

@@ -0,0 +1,586 @@
+<%@ 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 class="active"><a href="${ctx}/project/checkInterimPayment/list">工程进度款复核</a></li>
+					<li><a href="${ctx}/project/checkDesign/list">设计变更复核</a></li>
+					<li><a href="${ctx}/project/checkVisa/list">现场签证复核</a></li>
+					<li><a href="${ctx}/project/checkClaim/list">索赔复核</a></li>
+					<li><a href="${ctx}/project/checkDistributionSettlement/list">分布结算复核</a></li>
+				</ul>
+			</div>
+			<div class="layui-row contentShadow shadowLR" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="constructionContract" action="${ctx}/project/checkInterimPayment/" 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="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">
+								<form:input path="contractName" 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 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 contractName = $("#contractName").val();
+        	if(undefined == contractName){
+				contractName = "";
+			}
+        	var projectName = $("#projectName").val();
+        	if(undefined == projectName){
+				projectName = "";
+			}
+            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/checkInterimPayment/getProjectList?pageNo=${page.pageNo}&contractName='+contractName+'&projectName='+projectName,
+                page: false,
+				cols: [[
+					{type: 'numbers', align:'center', title: '序号' ,width:80},
+					{field: 'cnumber', title: '项目编号/实施合同编号',templet:function(d){
+							if(d.condition ==1){
+								return "<font>"+d.cnumber+"</font>";
+							}else if(d.condition ==2){
+								return "<font>"+d.cnumber+"</font>";
+							}else{
+								return "<font>"+d.cnumber+"</font>";
+							}
+						}},
+					{field: 'contractName',align:'center', 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){
+								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=\"#\" onclick=\"openDialogView('查看工作内容详情', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=contentView&dictType=${dictType}&id="+d.contentPId+"&parentIds=${parentIds}&infoId="+d.id+"','95%', '95%')\">" + d.contractName + "</a>";
+							}
+						}},
+					{field: 'reportName', align:'center', title: '成果文件名称',templet:function(d){
+							if(d.condition ==1){
+								return  "";
+							}else if(d.condition ==2){
+								return  "";
+							}else if(d.condition ==3){
+								return "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看工作内容', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=contentView&condition=according&dictType=&id="+d.contentPId+"&parentIds="+d.parentIds+"&infoId="+d.id+"&reportId="+d.reportId+"','95%', '95%')\">" + d.number + "</a>";
+							}else{
+								return "";
+							}
+						}},
+					{field: 'date', align:'center', title: '创建日期',width:100,templet: function(d){
+							var date=d.createDate;
+							if(d.condition ==1){
+								return "";
+							}else if(d.condition ==2){
+								return "";
+							}else{
+								return "<font>"+layui.util.toDateString(date,'yyyy-MM-dd')+"</font>";
+							}
+						}},
+					{align:'center', title: '状态',  width:70,templet:function(d){
+							var st = getAuditState(""+d.projectStatus);
+							if(d.condition ==1){
+								return "";
+							}else if(d.condition ==2){
+								return "";
+							}else if(d.condition ==3){
+								st = getAuditState(""+d.status);
+								if(st.action)
+									var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/projectcontentinfo/projectcontentinfo/getProcessOne?id=" + d.id + "&projectReportData.id="+ d.reportId + "&type="+d.status+"','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+								else
+									var xml = "<span style=\"cursor:default;\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+								return xml;
+							}else{
+								return '';
+							}
+						}},
+					{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.condition ==1) {
+					return [
+						'',
+					].join('');
+			} else if (d.condition ==2){
+
+				if(1 == d.operationSign) {
+					return [
+						'<a href="javascript:void(0)" onclick="openDialogWork1(\'领取报告号\', \'${ctx}/projectreportnum/projectReportNum/skipMethod?reportType=${reportType}&projectId='+d.pid+'\',\'60%\',\'95%\',false,\'inputForm\')" 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.condition ==3){
+				if(1 == d.operationSign) {
+					if(d.status == 1){
+						return [
+							'<a href="javascript:void(0)" onclick="openDialogres(\'修改报告\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=report&condition=according&flag=edit&dictType=${dictType}&reportType=${reportType}&id='+d.contentPId+'&parentIds=${parentIds}&projectReportData.id='+d.reportId+'\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+							'<a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+d.reportId+'&condition=according&id='+d.contentPId+'&type=8" onclick="return confirmxRefresh(\'确认要删除该工作内容报告吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+						].join('');
+					}else if(d.status == 2){
+						return [
+							'<a href="${ctx}/projectcontentinfo/projectcontentinfo/cancelInvalidate?infoId='+d.reportId+'&id='+d.contentPId+'&type=8" onclick="return confirmxRefresh(\'确认要撤回该工作内容报告吗?\', this.href)"   class="op-btn op-btn-cancel"><i class="glyphicon glyphicon-share-alt"></i> 撤回</a>',
+						].join('');
+					}else if(d.status == 3){
+						return [
+							'<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改报告\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=report&condition=according&flag=edit&dictType=${dictType}&reportType=${reportType}&id='+d.contentPId+'&parentIds=${parentIds}&projectReportData.id='+d.reportId+'&projectId='+d.projectId+ '\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+							'<a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+d.reportId+'&condition=according&id='+d.contentPId+'&type=8" onclick="return confirmxRefresh(\'确认要删除该工作内容报告吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+						].join('');
+					}else if(d.status == 4){
+						return [
+							'<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改报告\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=reportModify&flag=edit&condition=according&dictType=${dictType}&reportType=${reportType}&id='+d.contentPId+'&parentIds=${parentIds}&projectReportData.id='+d.reportId+'&projectId='+d.projectId+ '\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+							'<a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+d.reportId+'&condition=according&id='+d.contentPId+'&type=8" onclick="return confirmxRefresh(\'确认要删除该工作内容报告吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+						].join('');
+					}else if(d.status == 5){
+						return [''].join('');
+					}else if(d.status == null || d.status == '' || d.status == 10){
+						return [
+							'<a href="javascript:void(0)" onclick="openDialogres(\'复核\', \'${ctx}/project/checkInterimPayment/reviewForm?view=report&condition=interim&dictType=&reportType=${reportType}&project.id='+d.projectId+'&id='+d.id+'&parentIds=&infoId='+d.id+'&projectId='+d.projectId+'&project.projectName='+d.projectName+ '\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-plus"></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});
+						}
+						//parent.refreshTrees();
+						location = '${ctx}/project/projectEarlyReview/list';
+					}
+				});
+			}
+			top.layer.close(index);
+		});
+		return false;
+	}
+
+	function openDialogWork1(title,url,width,height,target){
+		top.layer.open({
+			type: 2,
+			area: [width, height],
+			title: title,
+			maxmin: true, //开启最大化最小化按钮
+			content: url ,
+			btn: ['关闭'],
+			end:function(index){
+				top.layer.close(index)
+			}
+		});
+	}
+</script>
+</body>
+</html>

+ 548 - 0
src/main/webapp/webpage/modules/projectrecord/check/checkVisaList.jsp

@@ -0,0 +1,548 @@
+<%@ 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: ['保存','关闭'],
+
+                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 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/checkInterimPayment/list">工程进度款复核</a></li>
+                    <li><a href="${ctx}/project/checkDesign/list">设计变更复核</a></li>
+                    <li class="active"><a href="${ctx}/project/checkVisa/list">现场签证复核</a></li>
+                    <li><a href="${ctx}/project/checkClaim/list">索赔复核</a></li>
+                    <li><a href="${ctx}/project/checkDistributionSettlement/list">分布结算复核</a></li>
+                </ul>
+            </div>
+            <div class="layui-row contentShadow shadowLR" id="queryDiv">
+                <form:form id="searchForm" modelAttribute="constructionContract" action="${ctx}/project/checkVisa/list" 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}"/>
+                    <div class="commonQuery lw14">
+                        <div class="layui-item query athird">
+                            <label class="layui-form-label">项目名称:</label>
+                            <div class="layui-input-block">
+                                <form:input path="projectName" 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">
+                                <form:input path="contractName" 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>
+                </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-add" title="签证汇总" onclick="openVisa('签证汇总','${ctx}/project/projectVisa/form','95%','95%')"><i class="fa fa-plus"></i>&nbsp;添加</button>--%>
+                    <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();
+            if(undefined == projectName){
+                projectName = "";
+            }
+            var contractName = $("#contractName").val();
+            if(undefined == contractName){
+                contractName = "";
+            }
+            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/checkVisa/getVisaList?pageNo=${page.pageNo}&projectName='+projectName+'&contractName='+contractName,
+                page: false,
+                cols: [[
+                    {type: 'numbers', align:'center', title: '序号' ,width:80},
+                    {field: 'cnumber', title: '项目编号/合同编号',templet:function(d){
+                            if(d.condition ==1){
+                                return "<font>"+d.cnumber+"</font>";
+                            }else if(d.condition ==2){
+                                return "<font>"+d.cnumber+"</font>";
+                            }else{
+                                return "<font>"+d.cnumber+"</font>";
+                            }
+                        }},
+                    {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){
+                                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=\"#\" onclick=\"openDialogView('查看工作内容详情', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=contentView&dictType=${dictType}&id="+d.contentPId+"&parentIds=${parentIds}&infoId="+d.id+"','95%', '95%')\">" + d.contractName + "</a>";
+                            }
+                        }},
+                    {field: 'reportName', align:'center', title: '成果文件名称',templet:function(d){
+                            if(d.condition ==1){
+                                return  "";
+                            }else if(d.condition ==2){
+                                return  "";
+                            }else if(d.condition ==3){
+                                return "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看工作内容', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=contentView&condition=according&dictType=&id="+d.contentPId+"&parentIds="+d.parentIds+"&infoId="+d.id+"&reportId="+d.reportId+"','95%', '95%')\">" + d.number + "</a>";
+                            }else{
+                                return "";
+                            }
+                        }},
+                    {field: 'date', align:'center', title: '签证日期',width:100,templet: function(d){
+                            var date=d.date;
+
+                            if(d.condition ==1){
+                                return "";
+                            }else if(d.condition ==2){
+                                return "";
+                            }else{
+                                return "<font>"+layui.util.toDateString(date,'yyyy-MM-dd')+"</font>";
+                            }
+                        }},
+                    {align:'center', title: '状态',  width:70,templet:function(d){
+                            var st = getAuditState(""+d.projectStatus);
+                            if(d.condition ==1){
+                                return "";
+                            }else if(d.condition ==2){
+                                return "";
+                            }else if(d.condition ==3){
+                                st = getAuditState(""+d.status);
+                                if(st.action)
+                                    var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/projectcontentinfo/projectcontentinfo/getProcessOne?id=" + d.id + "&projectReportData.id="+ d.reportId + "&type="+d.status+"','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                                else
+                                    var xml = "<span style=\"cursor:default;\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                                return xml;
+                            }else{
+                                return '';
+                            }
+                        }},
+                    {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.condition ==1) {
+                return [
+                    '',
+                ].join('');
+            } else if(d.condition ==2) {
+                if(1 == d.operationSign) {
+                    return [
+                        '<a href="javascript:void(0)" onclick="openDialogWork1(\'领取报告号\', \'${ctx}/projectreportnum/projectReportNum/skipMethod?reportType=${reportType}&projectId='+d.pid+'\',\'60%\',\'95%\',false,\'inputForm\')" 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.condition ==3){
+                if(d.status == 1){
+                    return [
+                        '<a href="javascript:void(0)" onclick="openDialogres(\'修改报告\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=report&condition=according&flag=edit&dictType=${dictType}&reportType=${reportType}&id='+d.contentPId+'&parentIds=${parentIds}&projectReportData.id='+d.reportId+'\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+                        '<a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+d.reportId+'&condition=according&id='+d.contentPId+'&type=8" onclick="return confirmxRefresh(\'确认要删除该工作内容报告吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+                    ].join('');
+                }else if(d.status == 2){
+                    return [
+                        '<a href="${ctx}/projectcontentinfo/projectcontentinfo/cancelInvalidate?infoId='+d.reportId+'&id='+d.contentPId+'&type=8" onclick="return confirmxRefresh(\'确认要撤回该工作内容报告吗?\', this.href)"   class="op-btn op-btn-cancel"><i class="glyphicon glyphicon-share-alt"></i> 撤回</a>',
+                    ].join('');
+                }else if(d.status == 3){
+                    return [
+                        '<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改报告\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=report&condition=according&flag=edit&dictType=${dictType}&reportType=${reportType}&id='+d.contentPId+'&parentIds=${parentIds}&projectReportData.id='+d.reportId+'&projectId='+d.projectId+ '\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+                        '<a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+d.reportId+'&condition=according&id='+d.contentPId+'&type=8" onclick="return confirmxRefresh(\'确认要删除该工作内容报告吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+                    ].join('');
+                }else if(d.status == 4){
+                    return [
+                        '<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改报告\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=reportModify&flag=edit&condition=according&dictType=${dictType}&reportType=${reportType}&id='+d.contentPId+'&parentIds=${parentIds}&projectReportData.id='+d.reportId+'&projectId='+d.projectId+ '\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+                        '<a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+d.reportId+'&condition=according&id='+d.contentPId+'&type=8" onclick="return confirmxRefresh(\'确认要删除该工作内容报告吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+                    ].join('');
+                }else if(d.status == 5){
+                    return [''].join('');
+                }else if(d.status == null || d.status == '' || d.status == 10){
+                    return [
+                        '<a href="javascript:void(0)" onclick="openDialogres(\'复核\', \'${ctx}/project/checkInterimPayment/reviewForm?view=report&condition=visa&dictType=&reportType=${reportType}&project.id='+d.projectId+'&id='+d.id+'&parentIds=&infoId='+d.id+'&projectId='+d.projectId+'&project.projectName='+d.projectName+ '\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-plus"></i> 复核</a>',
+                    ].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});
+                        }
+                        //parent.refreshTrees();
+                        location = '${ctx}/project/checkVisa/list';
+                    }
+                });
+            }
+            top.layer.close(index);
+        });
+        return false;
+    }
+    function openDialogWork1(title,url,width,height,target){
+        top.layer.open({
+            type: 2,
+            area: [width, height],
+            title: title,
+            maxmin: true, //开启最大化最小化按钮
+            content: url ,
+            btn: ['关闭'],
+            end:function(index){
+                top.layer.close(index)
+            }
+        });
+    }
+</script>
+</body>
+</html>

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1180 - 0
src/main/webapp/webpage/modules/projectrecord/check/reportForm.jsp


+ 414 - 0
src/main/webapp/webpage/modules/projectrecord/check/reportView.jsp

@@ -0,0 +1,414 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>报告详情管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+
+	</script>
+</head>
+
+<body>
+<div class="single-form">
+	<div class="container${container}  view-form">
+		<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"><span class="require-item">*</span>报告名称:</label>
+				<div class="layui-input-block with-icon">
+					<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${projectcontentinfo.projectReportData.name}"/>
+				</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">
+					<div class="input-group">
+					<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${projectcontentinfo.projectReportData.number}"/>
+					<span class="input-group-btn">
+								<label class="form-status">
+									<c:choose>
+										<c:when test="${not empty projectcontentinfo.projectReportData.status}">${fns:getDictLabel(projectcontentinfo.projectReportData.status, 'audit_state', '')}
+										</c:when>
+										<c:otherwise>新添</c:otherwise>
+									</c:choose></label>
+							 </span>
+					</div>
+				</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  htmlEscape="false" readonly="true" class="form-control  layui-input" value="${fns:getContentTypeName(projectcontentinfo.projectReportData.type,"")}"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">成果类型:</label>
+				<div class="layui-input-block">
+					<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${projectcontentinfo.projectReportData.templateTypeName}"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">复核标准:</label>
+				<div class="layui-input-block">
+					<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${fns:getMainDictLabel(projectcontentinfo.projectReportData.reviewStandard, 'reviewStandard', '')}"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">报告日期:</label>
+				<div class="layui-input-block">
+					<input id="provideDate" name="projectReportData.provideDate" type="text" htmlEscape="false" readonly="true" class="laydate-icondate form-control layer-date required layui-input laydate-icon"
+						   value="<fmt:formatDate value="${projectcontentinfo.projectReportData.reportDate}" pattern="yyyy-MM-dd"/>"/>
+				</div>
+			</div>
+			<%--<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">签字造价师一:</label>
+				<div class="layui-input-block">
+					<input  htmlEscape="false" readonly="true" class="form-control  layui-input" value="${projectcontentinfo.projectReportData.signCostOne.name}"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">签字造价师二:</label>
+				<div class="layui-input-block">
+					<input  htmlEscape="false" readonly="true" class="form-control  layui-input" value="${projectcontentinfo.projectReportData.signCostTwo.name}"/>
+				</div>
+			</div>--%>
+			<%--<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">签章类型:</label>
+				<div class="layui-input-block">
+					<input  htmlEscape="false" readonly="true" class="form-control  layui-input" value="${projectcontentinfo.projectReportData.reportType}"/>
+				</div>
+			</div>--%>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">归档状态:</label>
+				<div class="layui-input-block">
+					<input  htmlEscape="false" readonly="true" class="form-control  layui-input" value="${fns:getDictLabel(projectcontentinfo.projectReportData.fileStatus, 'record_state', '')}"/>
+				</div>
+			</div>
+			<c:if test="${not empty projectcontentinfo.projectReportData.invalidStatus}">
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">作废原因:</label>
+					<div class="layui-input-block">
+						<textarea path="remarks" htmlEscape="false" readonly="true" rows="3" maxlength="20" class="form-control" >${projectcontentinfo.projectReportData.remarks}</textarea>
+					</div>
+				</div>
+			</c:if>
+		</div>
+		<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 with-icon">
+					<input  id="projectReportData.reviewFee" readonly="true" class="form-control layui-input number" value="<fmt:formatNumber value="${projectcontentinfo.projectReportData.reviewFee}" pattern="#,##0.00#"/>" />
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">审定价(元):</label>
+				<div class="layui-input-block with-icon">
+					<input  id="projectReportData.approvalFee" readonly="true" class="form-control layui-input number" value="<fmt:formatNumber value="${projectcontentinfo.projectReportData.approvalFee}" pattern="#,##0.00#"/>" />
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">合同价(元):</label>
+				<div class="layui-input-block with-icon">
+					<input  id="projectReportData.contractFee"  readonly="true" class="form-control layui-input number" value="<fmt:formatNumber value="${projectcontentinfo.projectReportData.contractFee}" pattern="#,##0.00#"/>" />
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">核增核减额(元):</label>
+				<div class="layui-input-block with-icon">
+					<input id="projectReportData.verifyFee"  readonly="true" class="form-control layui-input number" value="<fmt:formatNumber value="${projectcontentinfo.projectReportData.verifyFee}" pattern="#,##0.00#"/>" />
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">核增核减率(%):</label>
+				<div class="layui-input-block with-icon">
+					<input  id="projectReportData.verifyRate"  readonly="true" class="form-control layui-input number" value="${projectcontentinfo.projectReportData.verifyRate}"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">咨询标的额(元):</label>
+				<div class="layui-input-block with-icon">
+					<input  id="projectReportData.consultFee" readonly="true" class="form-control layui-input number" value="<fmt:formatNumber value="${projectcontentinfo.projectReportData.consultFee}" pattern="#,##0.00#"/>" />
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">土建造价(元):</label>
+				<div class="layui-input-block with-icon">
+					<input  id="projectReportData.buildingFee"  readonly="true" class="form-control layui-input number" value="<fmt:formatNumber value="${projectcontentinfo.projectReportData.buildingFee}" pattern="#,##0.00#"/>" />
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">安装造价(元):</label>
+				<div class="layui-input-block with-icon">
+					<input  id="projectReportData.installFee"  readonly="true" class="form-control layui-input number" value="<fmt:formatNumber value="${projectcontentinfo.projectReportData.installFee}" pattern="#,##0.00#"/>"/>
+				</div>
+			</div>
+		</div>
+		<div class="form-group layui-row first lw12">
+			<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>
+						<th >上传日期</th>
+						<th >操作</th>
+					</tr>
+					</thead>
+					<tbody id="workBaseDataList">
+					<c:forEach items="${projectcontentinfo.projectReportData.projectBasedDataList}" var="projectBasedData" varStatus="idx">
+						<tr>
+							<td class="hide">
+								<input type="hidden" id="workBaseDataList${idx.index}_id" value="${projectBasedData.id}">
+							</td>
+							<%--<td style="text-align:center;">
+									${projectBasedData.number}
+							</td>--%>
+							<td style="text-align:center;">
+									${projectBasedData.name}
+							</td>
+							<td style="text-align:center;">
+									${projectBasedData.type}
+							</td>
+							<td style="text-align:center;">
+
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(projectBasedData.fileName,'jpg')
+															   or fn:containsIgnoreCase(projectBasedData.fileName,'png')
+															   or fn:containsIgnoreCase(projectBasedData.fileName,'gif')
+															   or fn:containsIgnoreCase(projectBasedData.fileName,'bmp')
+															   or fn:containsIgnoreCase(projectBasedData.fileName,'jpeg')}">
+										<img src="${projectBasedData.fileUrl}" width="50" height="50" title ="${projectBasedData.fileName}" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${projectBasedData.fileUrl}','90%','90%')" alt="${projectBasedData.fileName}">
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(projectBasedData.fileName,'pdf')}">
+												<a class="attention-info" href="javascript:void(0)" title ="${projectBasedData.fileName}" onclick="preview('预览','${projectBasedData.fileUrl}','90%','90%','1')">${projectBasedData.fileName}</a>
+											</c:when>
+											<c:otherwise>
+												<a class="attention-info" href="javascript:void(0)" title ="${projectBasedData.fileName}" onclick="preview('预览','${projectBasedData.fileUrl}','90%','90%')">${projectBasedData.fileName}</a>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+
+							</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 style="text-align:center;">
+								<div id="workBaseDataList${idx.index}_operation">
+									<c:choose>
+										<c:when test="${ projectBasedData.flag =='according'}">
+											<c:choose>
+												<c:when test="${not empty projectBasedData.fileUrl}">
+													<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${projectBasedData.fileUrl}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+												</c:when>
+												<c:otherwise>
+												</c:otherwise>
+											</c:choose>
+
+										</c:when>
+										<c:otherwise>
+										</c:otherwise>
+									</c:choose>
+								</div>
+							</td>
+						</tr>
+					</c:forEach>
+					</tbody>
+				</table>
+			</div>
+		</div>
+		<div class="form-group layui-row first lw12">
+			<div class="form-group-label"><h2>依据工作内容</h2></div>
+			<!-- 表格 -->
+			<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+			<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+				<thead>
+				<tr>
+					<th style="text-align: center;width:20%">工作内容编号</th>
+					<th style="text-align: center;width:20%">工作内容名称</th>
+					<th style="text-align: center;width:20%">工作内容类型</th>
+					<th style="text-align: center;width:20%">负责人</th>
+					<th style="text-align: center;width:20%">创建时间</th>
+				</tr>
+				</thead>
+				<tbody id="projectContentDataList">
+				<c:forEach items="${projectcontentinfo.projectReportData.projectContentDataList}" var="projectContentData" varStatus="index">
+					<tr>
+						<td style="text-align:center;">
+								${projectContentData.number}
+						</td>
+						<td style="text-align:center;">
+								${projectContentData.name}
+						</td>
+						<td style="text-align:center;">
+								${fns:getContentTypeName(projectContentData.type,"")}
+						</td>
+						<td style="text-align:center;">
+								${projectContentData.master.name}
+						</td>
+						<td style="text-align:center;">
+							<fmt:formatDate value="${projectContentData.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+						</td>
+					</tr>
+				</c:forEach>
+				</tbody>
+			</table>
+			</div>
+		</div>
+		<div class="form-group layui-row">
+			<div class="form-group-label"><h2>报告文件</h2></div>
+			<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>上传时间</th>
+						<th width="200px">操作</th>
+					</tr>
+					</thead>
+					<tbody id="file_attachment">
+					<c:forEach items="${projectcontentinfo.projectReportData.workAttachments}" var = "workClientAttachment" varStatus="status">
+						<tr>
+								<%-- <td>${status.index + 1}</td>--%>
+							<c:choose>
+								<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+									<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+								</c:when>
+								<c:otherwise>
+									<c:choose>
+										<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+											<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+										</c:when>
+										<c:otherwise>
+											<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+										</c:otherwise>
+									</c:choose>
+								</c:otherwise>
+							</c:choose>
+							<td>${workClientAttachment.createBy.name}</td>
+							<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+							<td class="op-td">
+								<div class="op-btn-box" >
+                                    <c:set var="signflag" value="${fns:getSysParam('sign_flag',fns:getUser())}"/>
+                                    <c:choose>
+                                        <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'doc')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'docx')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'xls')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'xlsx')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'ppt')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'pptx')}">
+                                            <c:if test="${not empty gzr && gzr eq 'gzr'}">
+                                                <a href="${ctx}/isignature/iSignatureDocument/sign?recordId=${workClientAttachment.id}&type=report" class="op-btn op-btn-sign" target="_blank">签章</a>
+                                            </c:if>
+											<a href="javascript:void(0);" onclick="preview('查看电子签章信息','${workClientAttachment.url}','90%','90%')" class="op-btn op-btn-view" ><i class="fa fa-search-plus"></i> 查看</a>
+                                            <c:choose>
+                                                <c:when test="${signflag == '是'}">
+                                                    <a href="javascript:location.href='${ctx}/isignature/iSignatureDocument/download?recordId=${workClientAttachment.id}'" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                                </c:when>
+                                                <c:otherwise>
+                                                    <a href="javascript:location.href='${ctx}/workcontractinfo/workContractInfo/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                                </c:otherwise>
+                                            </c:choose>
+                                        </c:when>
+                                        <c:otherwise>
+                                            <a href="javascript:location.href='${ctx}/workcontractinfo/workContractInfo/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                        </c:otherwise>
+                                    </c:choose>
+								</div>
+							</td>
+						</tr>
+					</c:forEach>
+					</tbody>
+				</table>
+			</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="contentTable2" class="table details table-bordered table-condensed">
+					<thead>
+					<tr>
+						<th style="text-align: center;width:15%">序号</th>
+						<th style="text-align: center;width:70%">复核内容及评分标准</th>
+						<th style="text-align: center;width:15%">操作</th>
+					</tr>
+					</thead>
+					<tbody id="projectContentDataList2">
+					<c:forEach items="${projectcontentinfo.projectReportData.projectReviewList}" var="projectReview" varStatus="index">
+						<tr>
+							<td>
+								<input id="projectReviewList${index.index}_id" name="projectReportData.projectReviewList[${index.index}].id" type="hidden" value="${projectReview.id}"/>
+								<input id="projectReviewList${index.index}_delFalg" name="projectReportData.projectReviewList[${index.index}].delFalg" type="hidden" value="1"/>
+								<input id="projectReviewList${index.index}_remarks" name="projectReportData.projectReviewList[${index.index}].remarks" type="hidden" value="${projectReview.remarks}"/>
+									${index.index + 1}
+							</td>
+							<td>
+									${projectReview.standardDetail}
+							</td>
+
+							<td>
+								<c:choose>
+									<c:when test="${not empty projectReview.remarks}">
+										<div class="check-ok">
+											<i class="fa fa-check"></i>
+										</div>
+									</c:when>
+									<c:otherwise>
+										<div id = "check1${projectReview.id}">
+										</div>
+										<div id = "check2${projectReview.id}" class="check-ok" style="display: none">
+											<i class="fa fa-check"></i>
+										</div>
+									</c:otherwise>
+								</c:choose>
+							</td>
+						</tr>
+					</c:forEach>
+					</tbody>
+				</table>
+			</div>
+		</div>
+		<c:if test="${not empty projectcontentinfo.projectReportData.act.procInsId}">
+		<div class="form-group layui-row">
+			<div class="form-group-label"><h2>审批意见</h2></div>
+			<div class="layui-item layui-col-xs12 with-textarea" >
+				<label class="layui-form-label">审批意见:</label>
+				<div class="layui-input-block">
+					<textarea name="projectReportData.act.comment" class="form-control" rows="4" maxlength="127" ></textarea>
+				</div>
+			</div>
+		</div>
+		</c:if>
+		<c:if test="${not empty projectcontentinfo.projectReportData.act.procInsId}">
+		<div class="form-group layui-row">
+			<div class="form-group-label"><h2>审批流程</h2></div>
+			<div class="layui-item layui-col-xs12 form-table-container" >
+				<act:flowChart procInsId="${projectcontentinfo.projectReportData.act.procInsId}"/>
+				<act:histoicFlow procInsId="${projectcontentinfo.projectReportData.act.procInsId}"/>
+			</div>
+		</div>
+		</c:if>
+		<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

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

@@ -419,7 +419,7 @@
 <body>
 <div class="single-form">
     <div class="container${container}">
-        <form:form id="inputForm" modelAttribute="concealProjectInfo" action="${ctx}/project/projectClaim/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"/>
@@ -427,10 +427,11 @@
             <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.type" value="46">
             <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="type" name="projectContentData.type" value="3">
             <sys:message content="${message}"/>
             <div class="form-group layui-row first lw12">
                 <div class="form-group-label"><h2>基本信息</h2></div>

+ 4 - 5
src/main/webapp/webpage/modules/projectrecord/claim/projectClaimList.jsp

@@ -159,7 +159,7 @@
     <div class="layui-row">
         <div class="full-width fl">
             <div class="layui-row contentShadow shadowLR" id="queryDiv">
-                <form:form id="searchForm" modelAttribute="constructionContract" action="${ctx}/project/projectVisa/list" method="post" class="form-inline">
+                <form:form id="searchForm" modelAttribute="constructionContract" action="${ctx}/project/projectClaim/list" 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}"/>
                     <div class="commonQuery lw14">
@@ -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/projectClaim/form?type=3&view=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&dictType=${dictType}&id="+d.contentPId+"&parentIds=${parentIds}&infoId="+d.id+"','95%', '95%')\">" + d.contractName + "</a>";
                             }
                         }},
                     /*{field: 'sendMoney', align:'center', title: '送审金额',templet: function(d){
@@ -335,12 +335,11 @@
                 ].join('');
             } else if(d.condition ==2) {
                 return [
-                    '<a href="javascript:void(0)" onclick="openDialogreAudit(\'新增索赔内容\', \'${ctx}/project/projectClaim/form?type=3&project.id='+d.pid+'&contract.id='+d.id+'&contract.contractName='+d.contractName+' \',\'95%\',\'95%\')" style=\"color: white;background: darkseagreen\" class="op-btn op-btn-add" ><i class="fa fa-plus"></i> 新增</a>',
+                    '<a href="javascript:void(0)" onclick="openDialogreAudit(\'新增索赔内容\', \'${ctx}/project/projectClaim/form?type=3&project.id='+d.pid+'&contract.id='+d.id+'&projectContentId='+d.projectContentId+'&contract.contractName='+d.contractName+' \',\'95%\',\'95%\')" style=\"color: white;background: darkseagreen\" class="op-btn op-btn-add" ><i class="fa fa-plus"></i> 新增</a>',
                 ].join('');
             } else if (d.condition ==3){
                 return [
-                    '<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改索赔内容\', \'${ctx}/project/projectClaim/form?type=3&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/projectClaim/delete?type=3&id='+d.id+'" onclick="return confirmxRefresh(\'确认要删除该索赔信息表吗?\', 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=claim&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{

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

@@ -419,7 +419,7 @@
 <body>
 <div class="single-form">
     <div class="container${container}">
-        <form:form id="inputForm" modelAttribute="concealProjectInfo" action="${ctx}/project/projectDesignChange/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"/>
@@ -427,10 +427,12 @@
             <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.type" value="43">
             <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="type" name="projectContentData.type" value="2">
+            <%--<input type="hidden" id="type" name="projectContentData.type" value="2">--%>
             <sys:message content="${message}"/>
             <div class="form-group layui-row first lw12">
                 <div class="form-group-label"><h2>基本信息</h2></div>

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

@@ -423,7 +423,7 @@
 <body>
 <div class="single-form">
     <div class="container${container}">
-        <form:form id="inputForm" modelAttribute="concealProjectInfo" action="${ctx}/project/distributionSettlement/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"/>
@@ -431,6 +431,8 @@
             <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.type" value="412">
             <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="">

+ 3 - 4
src/main/webapp/webpage/modules/projectrecord/distributionSettlement/distributionSettlementList.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/distributionSettlement/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&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){
@@ -316,7 +316,7 @@
             } else if(d.condition ==2) {
                 if(1 == d.operationSign) {
                     return [
-                        '<a href="javascript:void(0)" onclick="openDialogreAudit(\'新增分布结算信息\', \'${ctx}/project/distributionSettlement/form?project.id='+d.pid+'&contract.id='+d.id+'&contract.contractName='+d.contractName+' \',\'95%\',\'95%\')" style=\"color: white;background: darkseagreen\" class="op-btn op-btn-add" ><i class="fa fa-plus"></i> 新增</a>',
+                        '<a href="javascript:void(0)" onclick="openDialogreAudit(\'新增分布结算信息\', \'${ctx}/project/distributionSettlement/form?project.id='+d.pid+'&contract.id='+d.id+'&projectContentId='+d.projectContentId+'&contract.contractName='+d.contractName+' \',\'95%\',\'95%\')" style=\"color: white;background: darkseagreen\" class="op-btn op-btn-add" ><i class="fa fa-plus"></i> 新增</a>',
                     ].join('');
                 }else{
                     return[''].join('');
@@ -324,8 +324,7 @@
             } else if (d.condition ==3){
                 if(1 == d.operationSign) {
                     return [
-                        '<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改分布结算信息\', \'${ctx}/project/distributionSettlement/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/distributionSettlement/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=distribution&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('');

+ 4 - 5
src/main/webapp/webpage/modules/projectrecord/implementStage/projectDesignList.jsp

@@ -267,13 +267,13 @@
                                 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){
                                 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/projectDesignChange/form?type=2&view=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&dictType=${dictType}&id="+d.contentPId+"&parentIds=${parentIds}&infoId="+d.id+"','95%', '95%')\">" + d.contractName + "</a>";
                             }
                         }},
                     /*{field: 'sendMoney', align:'center', title: '送审金额',templet: function(d){
@@ -337,12 +337,11 @@
                 ].join('');
             } else if(d.condition ==2) {
                 return [
-                    '<a href="javascript:void(0)" onclick="openDialogreAudit(\'新增设计变更内容\', \'${ctx}/project/projectDesignChange/form?type=2&project.id='+d.pid+'&contract.id='+d.id+'&contract.contractName='+d.contractName+' \',\'95%\',\'95%\')" style=\"color: white;background: darkseagreen\" class="op-btn op-btn-add" ><i class="fa fa-plus"></i> 新增</a>',
+                    '<a href="javascript:void(0)" onclick="openDialogreAudit(\'新增设计变更内容\', \'${ctx}/project/projectDesignChange/form?type=2&project.id='+d.pid+'&contract.id='+d.id+'&projectContentId='+d.projectContentId+'&contract.contractName='+d.contractName+' \',\'95%\',\'95%\')" style=\"color: white;background: darkseagreen\" class="op-btn op-btn-add" ><i class="fa fa-plus"></i> 新增</a>',
                 ].join('');
             } else if (d.condition ==3){
                 return [
-                    '<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改设计变更内容\', \'${ctx}/project/projectDesignChange/form?type=2&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/projectDesignChange/delete?type=2&id='+d.id+'" onclick="return confirmxRefresh(\'确认要删除该设计变更汇总表吗?\', 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=design&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{

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

@@ -424,7 +424,7 @@
 <body>
 <div class="single-form">
     <div class="container${container}">
-        <form:form id="inputForm" modelAttribute="concealProjectInfo" action="${ctx}/project/projectInterimPayment/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"/>
@@ -433,6 +433,8 @@
             <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.type" value="420">
             <input type="hidden" id="contentDeta" name="projectContentData.contentDetail">
             <input type="hidden" id="dataBodyList" name="dataBodyList" value="">
             <input type="hidden" id="projectContentDataSign" name="projectContentDataSign" value="">

+ 4 - 4
src/main/webapp/webpage/modules/projectrecord/implementStage/projectInterimPaymentList.jsp

@@ -310,7 +310,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/projectInterimPayment/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&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){
@@ -409,7 +409,7 @@
 
 				if(1 == d.operationSign) {
 					return [
-						'<a href="javascript:void(0)" onclick="openDialogreAudit(\'新增工程进度款信息\', \'${ctx}/project/projectInterimPayment/form?project.id='+d.pid+'&contract.id='+d.id+'&contract.contractName='+d.contractName+' \',\'95%\',\'95%\')" style=\"color: white;background: darkseagreen\" class="op-btn op-btn-add" ><i class="fa fa-plus"></i> 新增</a>',
+						'<a href="javascript:void(0)" onclick="openDialogreAudit(\'新增工程进度款信息\', \'${ctx}/project/projectInterimPayment/form?project.id='+d.pid+'&contract.id='+d.id+'&projectContentId='+d.projectContentId+'&contract.contractName='+d.contractName+' \',\'95%\',\'95%\')" style=\"color: white;background: darkseagreen\" class="op-btn op-btn-add" ><i class="fa fa-plus"></i> 新增</a>',
 					].join('');
 				}else{
 					return[''].join('');
@@ -417,8 +417,8 @@
 			} else if (d.condition ==3){
 				if(1 == d.operationSign) {
 					return [
-						'<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改工程进度款信息\', \'${ctx}/project/projectInterimPayment/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/projectInterimPayment/deleteInterimPayment?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=interim&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>',
+						/*'<a href="${ctx}/project/projectInterimPayment/deleteInterimPayment?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('');

+ 3 - 4
src/main/webapp/webpage/modules/projectrecord/implementStage/projectVisaList.jsp

@@ -287,7 +287,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/projectVisa/form?type=1&view=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&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){
@@ -332,12 +332,11 @@
                 ].join('');
             } else if(d.condition ==2) {
                 return [
-                    '<a href="javascript:void(0)" onclick="openDialogreAudit(\'新增签证内容\', \'${ctx}/project/projectVisa/form?type=1&project.id='+d.pid+'&contract.id='+d.id+'&contract.contractName='+d.contractName+' \',\'95%\',\'95%\')" style=\"color: white;background: darkseagreen\" class="op-btn op-btn-add" ><i class="fa fa-plus"></i> 新增</a>',
+                    '<a href="javascript:void(0)" onclick="openDialogreAudit(\'新增签证内容\', \'${ctx}/project/projectVisa/form?type=1&project.id='+d.pid+'&contract.id='+d.id+'&projectContentId='+d.projectContentId+'&contract.contractName='+d.contractName+' \',\'95%\',\'95%\')" style=\"color: white;background: darkseagreen\" class="op-btn op-btn-add" ><i class="fa fa-plus"></i> 新增</a>',
                 ].join('');
             } else if (d.condition ==3){
                 return [
-                    '<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改签证内容\', \'${ctx}/project/projectVisa/form?type=1&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/projectVisa/delete?type=1&id='+d.id+'" onclick="return confirmxRefresh(\'确认要删除该签证汇总表吗?\', 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=visa&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{

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

@@ -419,7 +419,7 @@
 <body>
 <div class="single-form">
     <div class="container${container}">
-        <form:form id="inputForm" modelAttribute="concealProjectInfo" action="${ctx}/project/projectVisa/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"/>
@@ -427,10 +427,11 @@
             <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.type" value="45">
             <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="type" name="projectContentData.type" value="1">
             <sys:message content="${message}"/>
             <div class="form-group layui-row first lw12">
                 <div class="form-group-label"><h2>基本信息</h2></div>

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

@@ -264,13 +264,13 @@
                     $("#contentDetail").load("${ctx}/workcontent/workContentPricemanage/form",param2);
                     break;
                 case '43':
-                    $("#contentDetail").load("${ctx}/workcontent/workContentAltermanage/form",param2);
+                    $("#contentDetail").load("${ctx}/project/projectDesignChange/visaList",param2);
                     break;
                 case '45':
-                    $("#contentDetail").load("${ctx}/workcontent/workContentVisamanage/form",param2);
+                    $("#contentDetail").load("${ctx}/project/projectVisa/visaList",param2);
                     break;
                 case '46':
-                    $("#contentDetail").load("${ctx}/workcontent/workContentClaim/form",param2);
+                    $("#contentDetail").load("${ctx}/project/projectClaim/visaList",param2);
                     break;
                 case '47':
                     $("#contentDetail").load("${ctx}/workcontent/workContentFundplan/form",param2);
@@ -1160,11 +1160,11 @@
             case '42':
                 return "${ctx}/workcontent/workContentPricemanage/form";
             case '43':
-                return "${ctx}/workcontent/workContentAltermanage/form";
+                return "${ctx}/project/projectDesignChange/visaList";
             case '45':
-                return "${ctx}/workcontent/workContentVisamanage/form";
+                return "${ctx}/project/projectVisa/visaList";
             case '46':
-                return "${ctx}/workcontent/workContentClaim/form";
+                return "${ctx}/project/projectClaim/visaList";
             case '47':
                 return "${ctx}/workcontent/workContentFundplan/form";
             case '48':
@@ -1233,13 +1233,13 @@
                 $("#contentDetail").load("${ctx}/workcontent/workContentPricemanage/form",param2);
                 break;
             case '43':
-                $("#contentDetail").load("${ctx}/workcontent/workContentAltermanage/form",param2);
+                $("#contentDetail").load("${ctx}/project/projectDesignChange/visaList",param2);
                 break;
             case '45':
-                $("#contentDetail").load("${ctx}/workcontent/workContentVisamanage/form",param2);
+                $("#contentDetail").load("${ctx}/project/projectVisa/visaList",param2);
                 break;
             case '46':
-                $("#contentDetail").load("${ctx}/workcontent/workContentClaim/form",param2);
+                $("#contentDetail").load("${ctx}/project/projectClaim/visaList",param2);
                 break;
             case '47':
                 $("#contentDetail").load("${ctx}/workcontent/workContentFundplan/form",param2);
@@ -1316,13 +1316,13 @@
                 $("#contentDetail").load("${ctx}/workcontent/workContentPricemanage/form",param2);
                 break;
             case '43':
-                $("#contentDetail").load("${ctx}/workcontent/workContentAltermanage/form",param2);
+                $("#contentDetail").load("${ctx}/project/projectDesignChange/visaList",param2);
                 break;
             case '45':
-                $("#contentDetail").load("${ctx}/workcontent/workContentVisamanage/form",param2);
+                $("#contentDetail").load("${ctx}/project/projectVisa/visaList",param2);
                 break;
             case '46':
-                $("#contentDetail").load("${ctx}/workcontent/workContentClaim/form",param2);
+                $("#contentDetail").load("${ctx}/project/projectClaim/visaList",param2);
                 break;
             case '47':
                 $("#contentDetail").load("${ctx}/workcontent/workContentFundplan/form",param2);

+ 3 - 3
src/main/webapp/webpage/modules/projectrecord/workContentFromAndView/workContentView.jsp

@@ -179,13 +179,13 @@
                     $("#contentDetail").load("${ctx}/workcontent/workContentPricemanage/form",param2);
                     break;
                 case '43':
-                    $("#contentDetail").load("${ctx}/workcontent/workContentAltermanage/form",param2);
+                    $("#contentDetail").load("${ctx}/project/projectDesignChange/visaList",param2);
                     break;
                 case '45':
-                    $("#contentDetail").load("${ctx}/workcontent/workContentVisamanage/form",param2);
+                    $("#contentDetail").load("${ctx}/project/projectVisa/visaList",param2);
                     break;
                 case '46':
-                    $("#contentDetail").load("${ctx}/workcontent/workContentClaim/form",param2);
+                    $("#contentDetail").load("${ctx}/project/projectClaim/visaList",param2);
                     break;
                 case '47':
                     $("#contentDetail").load("${ctx}/workcontent/workContentFundplan/form",param2);

+ 49 - 0
src/main/webapp/webpage/modules/workcontent/workClaimListView.jsp

@@ -0,0 +1,49 @@
+<%@ 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="8" 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>
+            </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.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>

+ 49 - 0
src/main/webapp/webpage/modules/workcontent/workDesignChangeListView.jsp

@@ -0,0 +1,49 @@
+<%@ 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="8" 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>
+            </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.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>