ソースを参照

Merge branch 'master' of http://192.168.2.4:3000/user2/xg_total_process

user5 4 年 前
コミット
975b61b706

+ 52 - 1
src/main/java/com/jeeplus/modules/projectcontentinfo/web/ProjectReportRecordController.java

@@ -117,7 +117,7 @@ public class ProjectReportRecordController extends BaseController {
 
 
 	/**
-	 * 查看,增加,编辑报告归档表单页面
+	 * 竣工归档跳转增加报告归档表单页面
 	 */
 	@RequestMapping(value = "formData")
 	public String formData(ProjectReportRecord projectReportRecord, Model model) {
@@ -149,6 +149,57 @@ public class ProjectReportRecordController extends BaseController {
 	}
 
 	/**
+	 * 施工前期归档查看,增加,编辑报告归档表单页面
+	 */
+	@RequestMapping(value = "formEarly")
+	public String formEarly(ProjectReportRecord projectReportRecord, Model model) {
+		/*ProjectReportRecord ReportRecord = new ProjectReportRecord();
+		ProjectReportData projectReportData = new ProjectReportData();
+		projectReportData.setFileStatus("1");
+		projectReportData.setId(projectReportRecord.getReport().getId());
+		ProjectReportData projectReportDatas = projectReportDataService.findInfoByStatus(projectReportData);
+		//添加归档申请编号
+		if(null != projectReportDatas){
+			try {
+				int count = projectReportRecordService.getNumber(projectReportDatas.getId());
+				projectReportDatas.setRecordNum(count>9?projectReportDatas.getNumber()+"-"+count+"":projectReportDatas.getNumber()+"-0"+count);
+			}catch (Exception e){
+				logger.error("Exception e"+e);
+			}
+		}
+
+		ReportRecord.setReport(projectReportDatas);
+		ReportRecord.setCreateDate(new Date());
+		ReportRecord.setCreateBy(UserUtils.getUser());
+		model.addAttribute("projectReportRecord", ReportRecord);*/
+		ProjectReportRecord reportRecord = new ProjectReportRecord();
+		ProjectReportData projectReportData = new ProjectReportData();
+		projectReportData.setFileStatus("1");
+		projectReportData.setId(projectReportRecord.getReport().getId());
+		ProjectReportData projectReportDatas = projectReportDataService.findInfoByStatus(projectReportData);
+		//添加归档申请编号
+		if(null != projectReportDatas){
+			try {
+				int count = projectReportRecordService.getNumber(projectReportDatas.getId());
+				projectReportDatas.setRecordNum(count>9?projectReportDatas.getNumber()+"-"+count+"":projectReportDatas.getNumber()+"-0"+count);
+			}catch (Exception e){
+				logger.error("Exception e"+e);
+			}
+		}
+		reportRecord.setRecordNum(projectReportDatas.getRecordNum());
+		reportRecord.setReport(projectReportDatas);
+		reportRecord.setContractNum(projectReportDatas.getContractNum());
+		reportRecord.setContractName(projectReportDatas.getContractName());
+		reportRecord.setClientName(projectReportDatas.getClientName());
+		reportRecord.setProjectNum(projectReportDatas.getProjectNum());
+		reportRecord.setProjectName(projectReportDatas.getProjectName());
+		reportRecord.setCreateDate(new Date());
+		reportRecord.setCreateBy(UserUtils.getUser());
+		model.addAttribute("projectReportRecord", reportRecord);
+		return "modules/projectrecord/workContentFromAndView/projectEarlyForm";
+	}
+
+	/**
 	 * 保存报告归档
 	 */
 	@RequestMapping(value = "save")

+ 33 - 0
src/main/java/com/jeeplus/modules/projectrecord/dao/early/ProjectEarlyPigeonholeDao.java

@@ -0,0 +1,33 @@
+package com.jeeplus.modules.projectrecord.dao.early;
+
+
+import com.jeeplus.common.persistence.CrudDao;
+import com.jeeplus.common.persistence.annotation.MyBatisDao;
+import com.jeeplus.modules.projectrecord.entity.ProjectAttachmentInfo;
+import com.jeeplus.modules.projectrecord.entity.ProjectImplementEarly;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 前期阶段项目归档dao
+ * @author 徐滕
+ * @version 2020-07-10
+ */
+@MyBatisDao
+public interface ProjectEarlyPigeonholeDao extends CrudDao<ProjectImplementEarly> {
+
+    Integer getProjectRecodesCount(ProjectImplementEarly projectRecords);
+
+    List<ProjectImplementEarly> getProjectRecodesList(ProjectImplementEarly projectRecords);
+
+    Integer saveProjectAndAttachmentContact(ProjectAttachmentInfo projectAttachmentInfo);
+
+    /**
+     * 添加项目内容id和项目报告id的关系
+     * @param contentId
+     * @param reportId
+     * @return
+     */
+    Integer saveProjectContrntAndReport(@Param("contentId") String contentId, @Param("reportId") String reportId);
+}

+ 120 - 0
src/main/java/com/jeeplus/modules/projectrecord/service/early/ProjectEarlyPigeonholeService.java

@@ -0,0 +1,120 @@
+package com.jeeplus.modules.projectrecord.service.early;
+
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.service.CrudService;
+import com.jeeplus.common.utils.Collections3;
+import com.jeeplus.common.utils.MenuStatusEnum;
+import com.jeeplus.modules.projectType.dao.ProjectTypeDao;
+import com.jeeplus.modules.projectrecord.dao.WorkProjectUserDao;
+import com.jeeplus.modules.projectrecord.dao.completion.ProjectCompletionPigeonholeDao;
+import com.jeeplus.modules.projectrecord.dao.early.ProjectEarlyPigeonholeDao;
+import com.jeeplus.modules.projectrecord.entity.ProjectAttachmentInfo;
+import com.jeeplus.modules.projectrecord.entity.ProjectImplementEarly;
+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.entity.WorkClientInfo;
+import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+import com.jeeplus.modules.workcontractinfo.service.WorkContractInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 项目竣工项目归档 service
+ * @author 徐滕
+ * @version 2020-07-10
+ */
+@Service
+@Transactional(readOnly = true)
+public class ProjectEarlyPigeonholeService extends CrudService<ProjectCompletionPigeonholeDao, ProjectImplementEarly> {
+
+    @Autowired
+    private WorkContractInfoService contractInfoService;
+    @Autowired
+    private ProjectTypeDao projectTypeDao;
+    @Autowired
+    private WorkProjectUserDao workProjectUserDao;
+    @Autowired
+    private ProjectEarlyPigeonholeDao projectEarlyPigeonholeDao;
+
+    public ProjectImplementEarly get(String id) {
+        return super.get(id);
+    }
+
+    public Page<ProjectImplementEarly> findProjectPage(Page<ProjectImplementEarly> page, ProjectImplementEarly projectRecords) {
+        //设置数据权限
+        if(!UserUtils.getUser().isAdmin()) {
+            String dataScopeSql = dataScopeFilterOR(projectRecords.getCurrentUser(), "o", "u", "s", MenuStatusEnum.WORK_RECORDS.getValue());
+            projectRecords.getSqlMap().put("dsf", dataScopeSql);
+        }
+        Integer count = dao.getProjectRecodesCount(projectRecords);
+        page.setCount(count);
+        page.setCountFlag(false);
+        projectRecords.setPage(page);
+        List<ProjectImplementEarly> recordsList = dao.getProjectRecodesList(projectRecords);
+        //查询负责人信息
+        for (ProjectImplementEarly records : recordsList) {
+            this.queryContractInfos(records);
+            List<User> users = workProjectUserDao.queryProjectUsers(records.getId(), "1");
+            records.setProjectLeaders(users);
+            records.setLeaderNameStr(Collections3.extractToString(users, "name", ","));
+            records.setLeaderIds(Collections3.extractToString(users, "id", ","));
+        }
+        page.setList(recordsList);
+        return page;
+    }
+
+    /**
+     * 查询合同信息
+     * @param projectRecords
+     */
+    public void queryContractInfos(ProjectImplementEarly projectRecords) {
+        if (null != projectRecords.getWorkContractInfo()){
+            WorkContractInfo workContractInfo = contractInfoService.get(projectRecords.getWorkContractInfo().getId());
+            if(workContractInfo!=null){
+                workContractInfo.setConstructionProjectTypeStr(DictUtils.getMainDictLabel(String.valueOf(workContractInfo.getContractType()), "contract_type", ""));
+                if(workContractInfo.getWorkClientInfoList()!=null&&!workContractInfo.getWorkClientInfoList().isEmpty()){
+                    StringBuilder workClinetInfoIds = new StringBuilder();
+                    for (WorkClientInfo workClientInfo : workContractInfo.getWorkClientInfoList()) {
+                        workClinetInfoIds.append(workClientInfo.getId()).append(",");
+                    }
+                    workClinetInfoIds.deleteCharAt(workClinetInfoIds.length()-1);
+                    workContractInfo.setWorkClinetInfoIds(workClinetInfoIds.toString());
+                }
+            }
+            projectRecords.setWorkContractInfo(workContractInfo);
+        }
+    }
+
+    /**
+     * 根据项目所属区域类型获取对应得二级级别信息
+     * @param parentId
+     * @return
+     */
+    public String getProjectType(String parentId,String typeName){
+        String getProjectType = projectTypeDao.getProjectTypeByParentId(parentId,typeName);
+        return getProjectType;
+    }
+
+    /**
+     * 添加项目内容id和文件id关系
+     * @param projectAttachmentInfo
+     * @return
+     */
+    public Integer saveProjectAndAttachmentContact(ProjectAttachmentInfo projectAttachmentInfo){
+        return dao.saveProjectAndAttachmentContact(projectAttachmentInfo);
+    }
+
+    /**
+     * 添加项目内容id和项目报告id的关系
+     * @param contentId
+     * @param reportId
+     * @return
+     */
+    public Integer saveProjectContrntAndReport (String contentId,String reportId){
+        return dao.saveProjectContrntAndReport(contentId,reportId);
+    }
+}

+ 284 - 0
src/main/java/com/jeeplus/modules/projectrecord/web/Early/ProjectEarlyPigeonholeController.java

@@ -0,0 +1,284 @@
+package com.jeeplus.modules.projectrecord.web.Early;
+
+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.projectType.service.ProjectTypeService;
+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.projectrecord.entity.ProjectImplementEarly;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecordTreeData;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
+import com.jeeplus.modules.projectrecord.service.completion.ProjectCompletionPigeonholeService;
+import com.jeeplus.modules.projectrecord.service.early.ProjectEarlyPigeonholeService;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
+import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.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-17
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/project/projectEarlyPigeonhole")
+public class ProjectEarlyPigeonholeController extends BaseController {
+
+    @Autowired
+    private ProjectRecordsService projectRecordsService;
+    @Autowired
+    private ProjectReportChangeService projectReportChangeService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
+    @Autowired
+    private ProjectContentDataService projectContentDataService;
+    @Autowired
+    private ProjectTypeService projectTypeService;
+    @Autowired
+    private ProjectEarlyPigeonholeService projectEarlyPigeonholeService;
+    /**
+     * 项目列表页面
+     */
+    @RequiresPermissions("project:projectEarlyPigeonhole:list")
+    @RequestMapping(value = {"list", ""})
+    public String list(ProjectImplementEarly projectRecords, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        Page<ProjectImplementEarly> page = projectEarlyPigeonholeService.findProjectPage(new Page<ProjectImplementEarly>(request, response), projectRecords);
+        //无合同状态下,获取委托方的名称
+        List<ProjectImplementEarly> list = page.getList();
+        model.addAttribute("page", page);
+        return "modules/projectrecord/implementEarly/projectEarlyPigeonholeList";
+    }
+
+    /**
+     * 项目列表页面
+     */
+    @RequestMapping(value = "getProjectList")
+    @ResponseBody
+    public Map<String,List> getProjectList(ProjectImplementEarly projectRecords, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        Page<ProjectImplementEarly> page = projectEarlyPigeonholeService.findProjectPage(new Page<ProjectImplementEarly>(request, response), projectRecords);
+        //无合同状态下,获取委托方的名称
+        List<ProjectImplementEarly> list = page.getList();
+        List<ProjectRecordTreeData> projectRecordTreeDataList = new ArrayList<>();
+        Map<String,List> map = new HashMap<>();
+        for (int i = 0; i < list.size(); i++) {
+            ProjectRecordTreeData projectRecordTreeData = new ProjectRecordTreeData();
+            ProjectImplementEarly records1 = list.get(i);
+            if (records1.getWorkContractInfo() == null) {
+                if (records1.getWorkClientLinkmanList() != null && records1.getWorkClientLinkmanList().size() > 0) {
+                    WorkClientLinkman linkman = records1.getWorkClientLinkmanList().get(0);
+                    WorkContractInfo contractInfo = new WorkContractInfo();
+                    contractInfo.setClient(linkman.getClientId());
+                    records1.setWorkContractInfo(contractInfo);
+                }
+            }
+            //将界面需要展示数据放入类中
+            projectRecordTreeData.setId(records1.getId());
+            projectRecordTreeData.setProjectName(records1.getProjectName());
+            projectRecordTreeData.setProjectId(records1.getProjectId());
+            if(null!= records1.getWorkContractInfo()){
+                projectRecordTreeData.setContractName(records1.getWorkContractInfo().getName());
+                projectRecordTreeData.setClientName(records1.getWorkContractInfo().getClient().getName());
+            }else{
+                projectRecordTreeData.setContractName("");
+                projectRecordTreeData.setClientName("");
+            }
+            projectRecordTreeData.setProjectStatus(records1.getProjectStatus());
+            projectRecordTreeData.setProjectRegistrant(records1.getProjectRegistrant());
+            projectRecordTreeData.setCreateDate(records1.getCreateDate());
+            projectRecordTreeData.setCreateId(records1.getCreateBy().getId());
+            //父节点的pid设置为0
+            projectRecordTreeData.setPid("0");
+            //遍历项目负责人信息
+            List<User> masterUserList = records1.getProjectLeaders();
+            List<String> masterList = new ArrayList<>();
+            Set masterIdSet = new HashSet();
+            for (User masterUser:masterUserList) {
+                masterList.add(masterUser.getName());
+                masterIdSet.add(masterUser.getId());
+            }
+            masterIdSet.add(records1.getCreateBy().getId());
+            //Set转List
+            List<String> masterIdList = new ArrayList<>(masterIdSet);
+            //如果当前登录人为项目登记者或项目负责人则允许其添加子节点信息
+            for (String masterId : masterIdList) {
+                if(masterId.equals(UserUtils.getUser().getId())){
+                    projectRecordTreeData.setOperationSign(1);
+                    break;
+                }else{
+                    projectRecordTreeData.setOperationSign(0);
+                }
+            }
+
+            //项目负责人list数据转String
+            String projectLeader = masterList.toString().replaceAll("(?:\\[|null|\\]| +)", "");
+            projectRecordTreeData.setProjectLeader(projectLeader);
+            projectRecordTreeData.setLoginId(UserUtils.getUser().getId());
+            projectRecordTreeDataList.add(projectRecordTreeData);
+
+            //获取阶段Type父节点信息
+            String projectType = projectEarlyPigeonholeService.getProjectType(records1.getProjectTypeId(), "实施前期");
+            //根据项目id查询相关的项目阶段内容
+            List<ProjectRecordTreeData> reportDataList = projectContentDataService.getProjectContentReportArchiveDataList(records1.getId(),projectType);
+            if(0 != reportDataList.size()){
+                Projectcontentinfo select = new Projectcontentinfo();
+                ProjectRecords project = new ProjectRecords();
+                project.setId(records1.getId());
+                select.setParentIds("0,");
+                select.setProject(project);
+                List<Projectcontentinfo> p = projectcontentinfoService.findListByProject(select);
+                for (ProjectRecordTreeData reportData : reportDataList) {
+                    //添加工作内容id
+                    if(p.size()>0){
+                        reportData.setContentPId(p.get(0).getId());
+                        reportData.setParentIds("0,");
+                        reportData.setDictType("");
+                    }
+                    //将项目所属类型名称放入树形列表的projectId中
+                    reportData.setProjectId(reportData.getProjectLeader());
+                    //添加项目负责人
+                    reportData.setProjectLeader(projectLeader);
+                    //添加登陆者id
+                    reportData.setLoginId(UserUtils.getUser().getId());
+                    reportData.setCreateId(records1.getCreateBy().getId());
+                }
+            }
+            projectRecordTreeDataList.addAll(reportDataList);
+
+        }
+        map.put("data",projectRecordTreeDataList);
+        return map;
+    }
+
+    @RequestMapping(value = {"reviewForm"})
+    public String form(Projectcontentinfo projectcontentinfo, HttpServletRequest request, HttpServletResponse response, Model model, RedirectAttributes attr) {
+        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);
+        if(projectBasedDataList.size()>0){
+            for (ProjectBasedData projectBasedData: projectBasedDataList) {
+                projectBasedData.setFlag("according");
+                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());
+        if (projectcontentinfo.getView().equals("reportView")){
+            return "modules/projectcontentinfo/reportView";
+        }else if (projectcontentinfo.getView().equals("reportChange")) {
+            projectReportData.setReportId(projectReportData.getId());
+            projectReportData.setId("");
+            projectReportData.setMaster(UserUtils.getUser());
+            projectReportData.setReportDate(new Date());
+            projectReportData.setRemarks("");
+            return "modules/projectcontentinfo/reportChange";
+        }else if (projectcontentinfo.getView().equals("reportChangeView")) {
+            return "modules/projectcontentinfo/reportChangeView";
+        }else if (projectcontentinfo.getView().equals("reportChangeForm")) {
+            return "modules/projectcontentinfo/reportChange";
+        }else if (projectcontentinfo.getView().equals("reportInvalid")) {
+            if(StringUtils.isBlank(projectReportData.getInvalidStatus())){
+                projectReportData.setRemarks("");
+            }
+            return "modules/projectcontentinfo/reportInvalid";
+        }else{
+            if (projectReportData != null && projectReportData.getCreateBy() != null && StringUtils.isNotBlank(projectReportData.getCreateBy().getId()) && projectReportData.getCreateBy().getId().equals(UserUtils.getUser().getId())) {
+                return "modules/projectrecord/workContentFromAndView/reportForm";
+            } else if (projectReportData == null || StringUtils.isBlank(projectReportData.getId())) {
+                return "modules/projectrecord/workContentFromAndView/reportForm";
+            } else {
+                return "modules/projectcontentinfo/reportView";
+            }
+        }
+    }
+
+    /**
+     * 发起审核操作
+     * @param projectcontentinfo
+     * @param request
+     * @param response
+     * @param model
+     * @param redirectAttributes
+     * @return
+     */
+    @RequestMapping(value = {"saveReport"})
+    public String saveReport(Projectcontentinfo projectcontentinfo, HttpServletRequest request, HttpServletResponse response,
+                             Model model,RedirectAttributes redirectAttributes)  {
+        try{
+            String str = projectcontentinfoService.saveData(projectcontentinfo,2);
+            addMessage(redirectAttributes, "提交成果文件"+(str.equals("true")?"成功":"失败"));
+            ProjectReportData projectReportData = projectcontentinfo.getProjectReportData();
+            if (projectReportData!=null){
+                if (StringUtils.isNotBlank(projectcontentinfo.getEdit()) && projectcontentinfo.getEdit().equals("edit")){
+                    return "redirect:"+ Global.getAdminPath()+"/projectcontentinfo/projectcontentinfo/list?id="+projectcontentinfo.getId()+"&edit=edit";
+                }
+                if("record".equals(projectcontentinfo.getCondition())){
+                    return "redirect:"+Global.getAdminPath()+"/project/projectCompletionReview/?repage";
+                }
+                return "redirect:"+Global.getAdminPath()+"/projectcontentinfo/projectcontentinfo/?id="+projectcontentinfo.getId();
+            }
+        }catch (Exception e){
+            logger.error("ProjectcontentinfoController save Exception e"+e);
+        }
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        addMessage(redirectAttributes, "发起报告审批失败");
+        ProjectRecords projectRecords = projectcontentinfo.getProject()==null?new ProjectRecords():projectcontentinfo.getProject();
+        if("record".equals(projectcontentinfo.getCondition())){
+            return "redirect:"+Global.getAdminPath()+"/project/projectCompletionReview/?repage";
+        }
+        return "redirect:"+Global.getAdminPath()+"/projectcontentinfo/projectcontentinfo/?project.id="+projectRecords.getId();
+    }
+}

+ 1 - 0
src/main/resources/mappings/modules/projectcontentinfo/ProjectReportRecordDao.xml

@@ -62,6 +62,7 @@
 		r.project_name AS "projectName",
 		r.project_id AS "projectNum"
 
+
 		FROM project_report_record a
 		LEFT JOIN project_report_data d ON d.id = a.report_id
 		LEFT JOIN project_records r ON r.id = d.project_id

+ 226 - 0
src/main/resources/mappings/modules/projectrecord/early/ProjectEarlyPigeonholeDao.xml

@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.modules.projectrecord.dao.early.ProjectEarlyPigeonholeDao">
+
+	<sql id="projectRecordsColumns">
+		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.del_flag AS "delFlag",
+		a.contract_id AS "workContractInfo.id",
+		a.project_id AS "projectId",
+		a.project_name AS "projectName",
+		a.scale_type AS "scaleType",
+		a.scale_unit AS "scaleUnit",
+		a.scale_quantity AS "scaleQuantity",
+		a.area_id AS "area.id",
+		a.project_site AS "projectSite",
+		a.project_desc AS "projectDesc",
+		a.remarks AS "remarks",
+		a.status AS "projectStatus",
+		a.process_instance_id AS "processInstanceId",
+		a.company_id AS "company.id",
+		a.office_id AS "office.id",
+		a.alter_process_id AS "alterProcessId",
+		area.name AS "area.name",
+		a.province,
+		a.city,
+		a.area_name AS "county",
+		a.project_structure AS "projectStructure",
+		a.on_ground_num AS "onGroundNum",
+		a.under_ground_num AS "underGroundNum",
+		a.building_scale AS "buildingScale",
+		a.measuring_unit AS "measuringUnit",
+		a.project_use AS "projectUse",
+		a.install_fees AS "installFees",
+		a.building_fees AS "buildingFees",
+		a.building_percent AS "buildingPercent",
+		a.install_percent AS "installPercent",
+		a.unit_fees AS "unitFees",
+		a.building_unit_fees AS "buildingUnitFees",
+		a.install_unit_fees AS "installUnitFees",
+		a.total_fees AS "totalFees",
+		a.type_id As "projectTypeId"
+	</sql>
+	
+	<sql id="projectRecordsJoins">
+		LEFT JOIN sys_area area ON area.id = a.area_id
+	</sql>
+	
+	<select id="getProjectRecodesList" resultType="ProjectImplementEarly" >
+		SELECT
+			<include refid="projectRecordsColumns"/>
+		,
+		wci.name AS "workContractInfo.name",
+		wct.id AS "workContractInfo.client.id",
+		wct.name AS "workContractInfo.client.name",
+		o.top_company AS "office.name",
+		dsu.name as "projectRegistrant"
+		FROM project_records a
+		<include refid="projectRecordsJoins"/>
+
+
+		LEFT JOIN work_project_user w on a.id = w.project_id
+		LEFT JOIN sys_user su on w.user_id = su.id
+		LEFT JOIN sys_user dsu on a.create_by = dsu.id
+        LEFT JOIN work_project_user w1 on a.id = w1.project_id
+		LEFT JOIN work_contract_info wci on a.contract_id = wci.id
+		LEFT JOIN work_client_info wct on wci.client_id = wct.id
+        LEFT JOIN sys_office o ON o.id = a.office_id
+		<where>
+			a.status = 5
+            AND a.del_flag = 0
+			<if test="projectId != null and projectId != ''">
+				AND a.project_id like concat('%',#{projectId},'%')
+			</if>
+			<if test="projectName != null and projectName != ''">
+				AND a.project_name like concat(concat('%',#{projectName}),'%')
+			</if>
+			<if test="scaleType != null and scaleType != ''">
+				AND a.scale_type = #{scaleType}
+			</if>
+			<if test="scaleUnit != null and scaleUnit != ''">
+				AND a.scale_unit = #{scaleUnit}
+			</if>
+			<if test="scaleQuantity != null and scaleQuantity != ''">
+				AND a.scale_quantity = #{scaleQuantity}
+			</if>
+			<if test="projectSite != null and projectSite != ''">
+				AND a.project_site LIKE concat('%',#{projectSite},'%')
+			</if>
+			<if test="remarks != null and remarks != ''">
+				AND a.remarks LIKE concat('%',#{remarks},'%')
+			</if>
+			<if test="projectDesc != null and projectDesc != ''">
+				AND a.project_desc LIKE concat('%',#{projectDesc},'%')
+			</if>
+			<if test="area != null and area.id != null and area.id != ''">
+				AND a.area_id = #{area.id}
+			</if>
+			<if test="workContractInfo !=null and workContractInfo.name !=null and workContractInfo.name !=''">
+				AND wci.name like concat(concat('%',#{workContractInfo.name}),'%')
+			</if>
+			<if test="workContractInfo !=null and workContractInfo.contractNum !=null and workContractInfo.contractNum !=''">
+				AND wci.contract_num like concat(concat('%',#{workContractInfo.contractNum}),'%')
+			</if>
+			<if test="workContractInfo !=null and workContractInfo.contractPrice !=null and workContractInfo.contractPrice !=''">
+				AND wci.contract_price = #{workContractInfo.contractPrice}
+			</if>
+			<if test="workContractInfo !=null and workContractInfo.contractType !=null and workContractInfo.contractType !=''">
+				AND wci.contract_type = #{workContractInfo.contractType}
+			</if>
+			<if test="workContractInfo!=null and workContractInfo.client !=null and workContractInfo.client.name !=null and workContractInfo.client.name !=''">
+				AND wct.name like concat(concat('%',#{workContractInfo.client.name}),'%')
+			</if>
+			<if test="leaderNameStr !=null and leaderNameStr !=''">
+				AND su.name like concat(concat('%',#{leaderNameStr}),'%') AND w.is_master = '1' AND w.del_flag='0'
+			</if>
+			<if test="beginDate !=null">
+				AND a.create_date >= #{beginDate}
+			</if>
+			<if test="endDate !=null">
+				AND a.create_date &lt; #{endDate}
+			</if>
+            <if test="sqlMap.dsf !=null and sqlMap.dsf!=''">
+               AND ((w1.user_id = #{currentUser.id} AND w1.del_flag='0' AND a.company_id = #{currentUser.company.id} )${sqlMap.dsf} )
+            </if>
+		</where>
+            GROUP BY a.id
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+				ORDER BY a.update_date DESC
+			</otherwise>
+		</choose>
+	</select>
+
+    <select id="getProjectRecodesCount" resultType="int" >
+        SELECT count(DISTINCT a.id)
+        FROM project_records a
+        <if test="leaderNameStr !=null and leaderNameStr !=''">
+            LEFT JOIN work_project_user w on a.id = w.project_id
+            LEFT JOIN sys_user su on w.user_id = su.id
+        </if>
+        LEFT JOIN work_project_user w1 on a.id = w1.project_id
+        <if test="workContractInfo !=null">
+            LEFT JOIN work_contract_info wci on a.contract_id = wci.id
+        </if>
+        <if test="workContractInfo!=null and workContractInfo.client !=null and workContractInfo.client.name !=null and workContractInfo.client.name !=''">
+            LEFT JOIN work_client_info wct on wci.client_id = wct.id
+        </if>
+        <where>
+			a.status = 5
+            AND a.del_flag = 0
+			<if test="projectId != null and projectId != ''">
+				AND a.project_id like concat('%',#{projectId},'%')
+			</if>
+			<if test="projectName != null and projectName != ''">
+				AND a.project_name like concat(concat('%',#{projectName}),'%')
+			</if>
+			<if test="scaleType != null and scaleType != ''">
+				AND a.scale_type = #{scaleType}
+			</if>
+			<if test="scaleUnit != null and scaleUnit != ''">
+				AND a.scale_unit = #{scaleUnit}
+			</if>
+			<if test="scaleQuantity != null and scaleQuantity != ''">
+				AND a.scale_quantity = #{scaleQuantity}
+			</if>
+			<if test="projectSite != null and projectSite != ''">
+				AND a.project_site LIKE concat('%',#{projectSite},'%')
+			</if>
+			<if test="remarks != null and remarks != ''">
+				AND a.remarks LIKE concat('%',#{remarks},'%')
+			</if>
+			<if test="projectDesc != null and projectDesc != ''">
+				AND a.project_desc LIKE concat('%',#{projectDesc},'%')
+			</if>
+			<if test="area != null and area.id != null and area.id != ''">
+				AND a.area_id = #{area.id}
+			</if>
+			<if test="workContractInfo !=null and workContractInfo.name !=null and workContractInfo.name !=''">
+				AND wci.name like concat(concat('%',#{workContractInfo.name}),'%')
+			</if>
+			<if test="workContractInfo !=null and workContractInfo.contractNum !=null and workContractInfo.contractNum !=''">
+				AND wci.contract_num like concat(concat('%',#{workContractInfo.contractNum}),'%')
+			</if>
+			<if test="workContractInfo !=null and workContractInfo.contractPrice !=null and workContractInfo.contractPrice !=''">
+				AND wci.contract_price = #{workContractInfo.contractPrice}
+			</if>
+			<if test="workContractInfo !=null and workContractInfo.contractType !=null and workContractInfo.contractType !=''">
+				AND wci.contract_type = #{workContractInfo.contractType}
+			</if>
+			<if test="workContractInfo!=null and workContractInfo.client !=null and workContractInfo.client.name !=null and workContractInfo.client.name !=''">
+				AND wct.name like concat(concat('%',#{workContractInfo.client.name}),'%')
+			</if>
+			<if test="leaderNameStr !=null and leaderNameStr !=''">
+				AND su.name like concat(concat('%',#{leaderNameStr}),'%') AND w.is_master = '1' AND w.del_flag='0'
+			</if>
+			<if test="beginDate !=null">
+				AND a.create_date >= #{beginDate}
+			</if>
+			<if test="endDate !=null">
+				AND a.create_date &lt; #{endDate}
+			</if>
+            <if test="sqlMap.dsf !=null and sqlMap.dsf!=''">
+                AND ((w1.user_id = #{currentUser.id} AND w1.del_flag='0' AND a.company_id = #{currentUser.company.id})${sqlMap.dsf} )
+            </if>
+        </where>
+    </select>
+
+	<insert id="saveProjectAndAttachmentContact">
+		insert into project_attachment_info (project_id, attachment_id)
+		values
+  		(#{projectId}, #{attachmentId})
+	</insert>
+
+	<insert id="saveProjectContrntAndReport">
+		insert into project_content_report (content_id, report_id)
+		values
+  		(#{contentId}, #{reportId})
+	</insert>
+</mapper>

+ 544 - 0
src/main/webapp/webpage/modules/projectrecord/implementEarly/projectEarlyPigeonholeList.jsp

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

+ 275 - 0
src/main/webapp/webpage/modules/projectrecord/workContentFromAndView/projectEarlyForm.jsp

@@ -0,0 +1,275 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>合同归档管理</title>
+	<meta name="decorator" content="default"/>
+	<style>
+		label.error:nth-child(2){
+			top:40px;
+			left:0;
+		}
+	</style>
+	<script type="text/javascript">
+        var validateForm;
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                if(obj == 2){
+                    $("#inputForm").attr("action","${ctx}/projectcontentinfo/projectReportRecord/store");
+                }else{
+                    $("#inputForm").attr("action","${ctx}/projectcontentinfo/projectReportRecord/save");
+                }
+                $("#inputForm").submit();
+                return true;
+            }else {
+                parent.layer.msg("信息未填写完整!", {icon: 5});
+            }
+            return false;
+
+        }
+        $(document).ready(function() {
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+
+        });
+        function insertTitle(tValue){
+            var list = "${projectReportRecord.workAttachments}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "99";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workContractRd/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+
+        function setValuee(obj){
+            $("#reportId").val(obj.id);
+            $("#reportnumber").val(obj.number);
+            $("#reportName").val(obj.name);
+            $("#reportDate").val(obj.reportDate);
+            $("#contractNum").val(obj.contractNum);
+            $("#contractName").val(obj.contractName);
+            $("#clientName").val(obj.clientName);
+            $("#projectName").val(obj.projectName);
+            $("#projectNum").val(obj.projectNum);
+            $.ajax({
+                type:'post',
+                url:'${ctx}/projectcontentinfo/projectReportRecord/getNumber',
+                data:{
+                    "reportId":obj.id
+                },
+                success:function(data){
+                    var numberCount = data.numberCount;
+                    $("#recordNum").val(obj.number+"-"+numberCount);
+                    $("#numberCount").val(numberCount);
+                }
+            })
+        }
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="projectReportRecord" method="post" class="form-horizontal">
+			<form:hidden path="id"/>
+			<form:hidden path="numberCount"/>
+			<form:hidden id="reportId" path="report.id"/>
+
+			<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">
+						<form:input id="reportNumber" path="report.number" htmlEscape="false"   readonly="true" class="form-control layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>归档申请编号:</label>
+					<div class="layui-input-block">
+						<form:input id="reportRecordNum" path="report.recordNum" htmlEscape="false"   readonly="true" class="form-control layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>签字造价师一:</label>
+					<div class="layui-input-block with-icon">
+						<sys:treeselect id="signCostOne" name="signCostOne.id" value="${projectReportRecord.signCostOne.id}" labelName="signCostOne.name" labelValue="${projectReportRecord.signCostOne.name}"
+										title="签字造价师一" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input required" allowClear="true" notAllowSelectParent="true"/></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 with-icon">
+						<sys:treeselect id="signCostTwo" name="signCostTwo.id" value="${projectReportRecord.signCostTwo.id}" labelName="signCostTwo.name" labelValue="${projectReportRecord.signCostTwo.name}"
+										title="签字造价师二" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input required" allowClear="true" notAllowSelectParent="true"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>报告名称:</label>
+					<div class="layui-input-block">
+						<form:input id="reportName" path="report.name" htmlEscape="false"   readonly="true" class="form-control layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>报告日期:</label>
+					<div class="layui-input-block">
+						<input id="reportDate" name="report.reportDate"  htmlEscape="false" readonly="true" class="form-control  layui-input required" value="<fmt:formatDate value="${projectReportRecord.report.reportDate}" pattern="yyyy-MM-dd"/>"/>
+							<%--<input class="laydate-icondate form-control layui-input layer-date laydate-icon" id="createDate" name="createDate" value="<fmt:formatDate value="${projectReportRecord.createDate}" pattern="yyyy-MM-dd"/>">--%>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>合同编号:</label>
+					<div class="layui-input-block">
+						<form:input id="contractNum" path="report.contractNum" htmlEscape="false" readonly="true" class="form-control  layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>合同名称:</label>
+					<div class="layui-input-block">
+						<form:input id="contractName" path="report.contractName" htmlEscape="false" readonly="true" class="form-control  layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>主委托方:</label>
+					<div class="layui-input-block">
+						<form:input id="clientName" path="report.clientName" htmlEscape="false" readonly="true" class="form-control  layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目编号:</label>
+					<div class="layui-input-block">
+						<form:input id="projectNum" path="report.projectNum" htmlEscape="false" readonly="true" class="form-control  layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>项目名称:</label>
+					<div class="layui-input-block">
+						<form:input id="projectName" path="report.projectName" htmlEscape="false" readonly="true" class="form-control  layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>归档申请人:</label>
+					<div class="layui-input-block">
+						<form:input id="cBName" path="createBy.name" htmlEscape="false" readonly="true" class="form-control  layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>申请日期:</label>
+					<div class="layui-input-block">
+						<input id="createDate" name="createDate"  htmlEscape="false" readonly="true" class="laydate-icondate form-control layer-date required layui-input laydate-icon"
+							   value="<fmt:formatDate value="${projectReportRecord.createDate}" 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 id="recordDate" name="recordDate"  htmlEscape="false" readonly="true" class="laydate-icondate form-control layer-date required layui-input laydate-icon"
+							   value="<fmt:formatDate value="${projectReportRecord.createDate}" 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 id="accomplishDate" name="accomplishDate"  htmlEscape="false" readonly="true" class="laydate-icondate form-control layer-date layui-input laydate-icon"
+							   value="<fmt:formatDate value="${projectReportRecord.accomplishDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12  with-textarea">
+					<label class="layui-form-label">说明:</label>
+					<div class="layui-input-block">
+						<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>附件信息</h2></div>
+				<div class="layui-item nav-btns">
+					<a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+				</div>
+				<div id="addFile_attachment" style="display: none" class="upload-progress">
+					<span id="fileName_attachment" ></span>
+					<b><span id="baifenbi_attachment" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>
+				<input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+				<span id="attachment_title"></span>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+								<%-- <th>序号</th>--%>
+							<th>文件预览</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:forEach items="${projectReportRecord.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}">
+									</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" >
+										<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+										<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+										</c:if>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>