浏览代码

项目登记修改为树形图模式并关联成果文件

user5 5 年之前
父节点
当前提交
c010d2340b

+ 8 - 0
src/main/java/com/jeeplus/modules/projectcontentinfo/dao/ProjectReportDataDao.java

@@ -7,6 +7,7 @@ import com.jeeplus.common.persistence.CrudDao;
 import com.jeeplus.common.persistence.annotation.MyBatisDao;
 import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportData;
 import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportTreeData;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecordTreeData;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectReportData;
 import com.jeeplus.modules.sys.entity.Workattachment;
 import org.apache.ibatis.annotations.Param;
@@ -93,4 +94,11 @@ public interface ProjectReportDataDao extends CrudDao<ProjectReportData> {
      * @return
      */
     List<ProjectReportTreeData> getReportDataList(String projectId);
+
+    /**
+     * 查询项目对应的成果文件信息
+     * @param projectId
+     * @return
+     */
+    List<ProjectRecordTreeData> getProjectRecordDataList(String projectId);
 }

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

@@ -37,6 +37,7 @@ public class Projectcontentinfo extends TreeEntity<Projectcontentinfo> {
 	private String linkId;//引用ID
 	private String home;
 	private String change;
+	private String condition;  //条件
 
 	public RuralProjectRecords getProjectOnRural() {
 		return projectOnRural;
@@ -195,4 +196,12 @@ public class Projectcontentinfo extends TreeEntity<Projectcontentinfo> {
 	public void setChange(String change) {
 		this.change = change;
 	}
+
+	public String getCondition() {
+		return condition;
+	}
+
+	public void setCondition(String condition) {
+		this.condition = condition;
+	}
 }

+ 6 - 0
src/main/java/com/jeeplus/modules/projectcontentinfo/service/ProjectReportDataService.java

@@ -18,6 +18,7 @@ import com.jeeplus.modules.projectcontentinfo.dao.ProjectContentDataDao;
 import com.jeeplus.modules.projectcontentinfo.dao.ProjectReportDataDao;
 import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportData;
 import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportTreeData;
+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.projectreportnum.service.ProjectReportNumService;
@@ -1504,4 +1505,9 @@ public class ProjectReportDataService extends CrudService<ProjectReportDataDao,
 			return reportDataList;
 	}
 
+	public List<ProjectRecordTreeData> getProjectRecordDataList(String projectId) {
+			List<ProjectRecordTreeData> projectRecordTreeDataList = dao.getProjectRecordDataList(projectId);
+			return projectRecordTreeDataList;
+	}
+
 }

+ 23 - 16
src/main/java/com/jeeplus/modules/projectcontentinfo/service/ProjectcontentinfoService.java

@@ -1134,26 +1134,33 @@ public class ProjectcontentinfoService extends CrudService<ProjectcontentinfoDao
 	@Transactional(readOnly = false)
 	public String saveInvalid(Projectcontentinfo projectcontentinfo,int type) {
 		ProjectReportData projectReportData= projectcontentinfo.getProjectReportData();
-		if (projectReportData!=null){
-			projectReportData.setStatus("6");
-			projectReportData.setInvalidStatus("1");
+		if("0".equals(projectcontentinfo.getProjectReportData().getReviewStandard())){
+			projectReportData.setStatus("7");
+			projectReportData.setInvalidStatus("2");
 			projectReportData.preUpdate();
 			projectReportDataService.saveInvalid(projectReportData);
-		}
-		if (type == 2){
-			Map<String, Object> variables = Maps.newHashMap();
-			projectReportData.setStatus("6");
-			projectReportData.setInvalidStatus("2");
-			String invalidProcessInstanceId = "";
-			if (StringUtils.isNotBlank(projectReportData.getId())){
-				ProjectReportData old = projectReportDataService.get(projectReportData.getId());
-				if (StringUtils.isNotBlank(old.getInvalidProcessInstanceId())){
-					invalidProcessInstanceId = old.getInvalidProcessInstanceId();
+		}else {
+			if (projectReportData != null) {
+				projectReportData.setStatus("6");
+				projectReportData.setInvalidStatus("1");
+				projectReportData.preUpdate();
+				projectReportDataService.saveInvalid(projectReportData);
+			}
+			if (type == 2) {
+				Map<String, Object> variables = Maps.newHashMap();
+				projectReportData.setStatus("6");
+				projectReportData.setInvalidStatus("2");
+				String invalidProcessInstanceId = "";
+				if (StringUtils.isNotBlank(projectReportData.getId())) {
+					ProjectReportData old = projectReportDataService.get(projectReportData.getId());
+					if (StringUtils.isNotBlank(old.getInvalidProcessInstanceId())) {
+						invalidProcessInstanceId = old.getInvalidProcessInstanceId();
+					}
 				}
+				ProjectRecords projectRecord = projectRecordsService.getMasters(projectcontentinfo.getProject().getId());
+				projectcontentinfo.setProject(projectRecord);
+				return projectReportDataService.saveInvalid(projectReportData.getId(), projectReportData.getRemarks(), variables, invalidProcessInstanceId);
 			}
-			ProjectRecords projectRecord = projectRecordsService.getMasters(projectcontentinfo.getProject().getId());
-			projectcontentinfo.setProject(projectRecord);
-			return projectReportDataService.saveInvalid(projectReportData.getId(),projectReportData.getRemarks(),variables,invalidProcessInstanceId);
 		}
 		return "true";
 

+ 19 - 3
src/main/java/com/jeeplus/modules/projectcontentinfo/web/ProjectcontentinfoController.java

@@ -856,6 +856,9 @@ public class ProjectcontentinfoController extends BaseController {
 				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/projectRecords/?repage";
+				}
 				return "redirect:"+Global.getAdminPath()+"/projectcontentinfo/projectcontentinfo/?id="+projectcontentinfo.getId();
 			}
 		}catch (Exception e){
@@ -866,6 +869,9 @@ public class ProjectcontentinfoController extends BaseController {
 		}
 		addMessage(redirectAttributes, "发起报告审批失败");
 		ProjectRecords projectRecords = projectcontentinfo.getProject()==null?new ProjectRecords():projectcontentinfo.getProject();
+		if("record".equals(projectcontentinfo.getCondition())){
+			return "redirect:"+Global.getAdminPath()+"/project/projectRecords/?repage";
+		}
 		return "redirect:"+Global.getAdminPath()+"/projectcontentinfo/projectcontentinfo/?project.id="+projectRecords.getId();
 	}
 
@@ -1069,6 +1075,9 @@ public class ProjectcontentinfoController extends BaseController {
 			}else{
 				addMessage(redirectAttributes, str);
 			}
+			if("record".equals(projectcontentinfo.getCondition())){
+				return "redirect:"+Global.getAdminPath()+"/project/projectRecords/?repage";
+			}
 			return "redirect:"+Global.getAdminPath()+"/projectcontentinfo/projectcontentinfo/?id="+projectcontentinfo.getId()+"&view=invalid";
 		}catch (Exception e){
 			logger.error("ProjectcontentinfoController save Exception e"+e);
@@ -1098,8 +1107,10 @@ public class ProjectcontentinfoController extends BaseController {
 			}
 			projectcontentinfoService.deleteInfoId(projectcontentinfo.getType(),projectcontentinfo.getInfoId());
 			j.put("status",true);
+			j.put("msg","删除成功");
 		}catch (Exception e){
 			j.put("status",false);
+			j.put("msg","删除失败");
 			addMessage(redirectAttributes, "删除失败");
 		}
 		return j;
@@ -1160,7 +1171,9 @@ public class ProjectcontentinfoController extends BaseController {
 	 * 报告作废:强制撤回
 	 */
 	@RequestMapping("cancelInvalidate")
-	public String cancelInvalidate(Projectcontentinfo projectcontentinfo,RedirectAttributes redirectAttributes){
+	@ResponseBody
+	public Map<String,Object> cancelInvalidate(Projectcontentinfo projectcontentinfo,RedirectAttributes redirectAttributes){
+		Map<String,Object> j= new HashMap<>();
 		try {
 			ProjectReportData reportData = projectReportDataService.get(projectcontentinfo.getInfoId());
 			if(reportData.getStatus().equals("5")){
@@ -1168,13 +1181,16 @@ public class ProjectcontentinfoController extends BaseController {
 			}else{
 				projectReportDataService.cancelInvalidate(reportData);
 				addMessage(redirectAttributes, "报告撤回成功");
+				j.put("msg","撤回成功");
+				j.put("status",true);
 			}
 		}catch (Exception e){
 			logger.error("Exception e"+e);
 			addMessage(redirectAttributes, "报告撤回失败");
+			j.put("status",false);
+			j.put("msg","撤回失败");
 		}
-		return "redirect:"+Global.getAdminPath()+"/projectcontentinfo/projectcontentinfo/list?id="+projectcontentinfo.getId();
-
+		return j;
 	}
 	/**
 	 * 报告作废:强制撤回d

+ 125 - 0
src/main/java/com/jeeplus/modules/projectrecord/entity/ProjectRecordTreeData.java

@@ -0,0 +1,125 @@
+package com.jeeplus.modules.projectrecord.entity;
+
+import com.jeeplus.common.persistence.DataEntity;
+
+public class ProjectRecordTreeData extends DataEntity<ProjectRecordTreeData> {
+    private String projectId;		// 项目编号
+    private String projectName;		// 项目名称
+    private String contractName;	// 合同名称
+    private String projectLeader;   // 负责人
+    private String projectRegistrant;   // 项目登记人
+    private String clientName;      // 主委托方
+    private Integer projectStatus;  // 项目状态
+    private String pid;             // 父id
+    private String loginId;         //登陆者id
+    private String createId;        //创建者id
+
+    private String contentPId;      //保留工作内容id
+
+    private String dictType;
+    private String parentIds;
+
+    public String getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(String projectId) {
+        this.projectId = projectId;
+    }
+
+    public String getContractName() {
+        return contractName;
+    }
+
+    public void setContractName(String contractName) {
+        this.contractName = contractName;
+    }
+
+    public String getProjectLeader() {
+        return projectLeader;
+    }
+
+    public void setProjectLeader(String projectLeader) {
+        this.projectLeader = projectLeader;
+    }
+
+    public String getClientName() {
+        return clientName;
+    }
+
+    public void setClientName(String clientName) {
+        this.clientName = clientName;
+    }
+
+    public Integer getProjectStatus() {
+        return projectStatus;
+    }
+
+    public void setProjectStatus(Integer projectStatus) {
+        this.projectStatus = projectStatus;
+    }
+
+    public String getPid() {
+        return pid;
+    }
+
+    public void setPid(String pid) {
+        this.pid = pid;
+    }
+
+    public String getLoginId() {
+        return loginId;
+    }
+
+    public void setLoginId(String loginId) {
+        this.loginId = loginId;
+    }
+
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    public String getProjectRegistrant() {
+        return projectRegistrant;
+    }
+
+    public void setProjectRegistrant(String projectRegistrant) {
+        this.projectRegistrant = projectRegistrant;
+    }
+
+    public String getCreateId() {
+        return createId;
+    }
+
+    public void setCreateId(String createId) {
+        this.createId = createId;
+    }
+
+    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;
+    }
+}

+ 9 - 0
src/main/java/com/jeeplus/modules/projectrecord/entity/ProjectRecords.java

@@ -56,6 +56,7 @@ public class ProjectRecords extends ActEntity<ProjectRecords> {
 	private Double buildingUnitFees;  //土建单位造价
 	private Double installUnitFees;    //安装单位造价
 	private Double totalFees;        //总合同额
+	private String projectRegistrant;  //项目登记人
 
 	private ProjectReportData reportData;//报告
 
@@ -569,4 +570,12 @@ public class ProjectRecords extends ActEntity<ProjectRecords> {
 	public void setProjectReportData(List<ProjectReportData> projectReportData) {
 		this.projectReportData = projectReportData;
 	}
+
+	public String getProjectRegistrant() {
+		return projectRegistrant;
+	}
+
+	public void setProjectRegistrant(String projectRegistrant) {
+		this.projectRegistrant = projectRegistrant;
+	}
 }

+ 86 - 0
src/main/java/com/jeeplus/modules/projectrecord/web/ProjectRecordsController.java

@@ -16,6 +16,11 @@ import com.jeeplus.common.web.BaseController;
 import com.jeeplus.modules.act.entity.Act;
 import com.jeeplus.modules.act.service.ActTaskService;
 import com.jeeplus.modules.act.utils.ActUtils;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportTreeData;
+import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectReportDataService;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectcontentinfoService;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecordTreeData;
 import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
 import com.jeeplus.modules.projectrecord.enums.ProjectStatusEnum;
 import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
@@ -73,6 +78,10 @@ public class ProjectRecordsController extends BaseController {
 	private ActTaskService actTaskService;
 	@Autowired
 	private ActivityService activityService;
+	@Autowired
+	private ProjectReportDataService projectReportDataService;
+	@Autowired
+	private ProjectcontentinfoService projectcontentinfoService;
 
 	private static String template_path = Global.getProjectTemplatePath()+"咨询工作方案.xlsx";
 	private static String template_name = "咨询工作方案.xlsx";
@@ -118,6 +127,83 @@ public class ProjectRecordsController extends BaseController {
 	}
 
 	/**
+	 * 项目列表页面
+	 */
+	@RequestMapping(value = "getProjectList")
+	@ResponseBody
+	public Map<String,List> getProjectList(ProjectRecords projectRecords, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+		Page<ProjectRecords> page = projectRecordsService.findPage(new Page<ProjectRecords>(request, response), projectRecords);
+        //无合同状态下,获取委托方的名称
+		List<ProjectRecords> 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();
+			ProjectRecords records1 = list.get(i);
+			if (records1.getWorkContractInfo() == null) {
+				projectRecordsService.queryLinkmanInfos(records1);
+				if (records1.getWorkClientLinkmanList() != null && records1.getWorkClientLinkmanList().size() > 0) {
+					WorkClientLinkman linkman = records1.getWorkClientLinkmanList().get(0);
+					WorkContractInfo contractInfo = new WorkContractInfo();
+					contractInfo.setClient(linkman.getClientId());
+					records1.setWorkContractInfo(contractInfo);
+				}
+			}
+			//将界面需要展示数据放入类中
+			projectRecordTreeData.setId(records1.getId());
+			projectRecordTreeData.setProjectName(records1.getProjectName());
+			projectRecordTreeData.setProjectId(records1.getProjectId());
+			projectRecordTreeData.setContractName(records1.getWorkContractInfo().getName());
+			projectRecordTreeData.setProjectStatus(records1.getProjectStatus());
+			projectRecordTreeData.setProjectRegistrant(records1.getProjectRegistrant());
+			projectRecordTreeData.setCreateDate(records1.getCreateDate());
+			projectRecordTreeData.setCreateId(records1.getCreateBy().getId());
+			//父节点的pid设置为0
+			projectRecordTreeData.setPid("0");
+			projectRecordTreeData.setClientName(records1.getWorkContractInfo().getClient().getName());
+			//遍历项目负责人信息
+			List<User> masterUserList = records1.getProjectLeaders();
+			List<String> masterList = new ArrayList<>();
+			for (User masterUser:masterUserList) {
+				masterList.add(masterUser.getName());
+			}
+			//项目负责人list数据转String
+			String projectLeader = masterList.toString().replaceAll("(?:\\[|null|\\]| +)", "");
+			System.out.println(projectLeader);
+			projectRecordTreeData.setProjectLeader(projectLeader);
+			projectRecordTreeData.setLoginId(UserUtils.getUser().getId());
+			projectRecordTreeDataList.add(projectRecordTreeData);
+
+			//根据项目id查询相关的项目阶段内容
+			List<ProjectRecordTreeData> reportDataList = projectReportDataService.getProjectRecordDataList(records1.getId());
+			if(0 != reportDataList.size()){
+				Projectcontentinfo select = new Projectcontentinfo();
+				select.setProject(records1);
+				select.setParentIds("0,");
+				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("");
+					}
+					//添加登陆者id
+					reportData.setLoginId(UserUtils.getUser().getId());
+					reportData.setCreateId(records1.getCreateBy().getId());
+				}
+			}
+			projectRecordTreeDataList.addAll(reportDataList);
+
+		}
+		map.put("data",projectRecordTreeDataList);
+		return map;
+	}
+
+	/**
 	 * 查看,增加,编辑项目表单页面
 	 */
 	@RequiresPermissions(value={"project:projectRecords:add","project:projectRecords:edit"},logical=Logical.OR)

+ 16 - 0
src/main/resources/mappings/modules/projectcontentinfo/ProjectReportDataDao.xml

@@ -717,4 +717,20 @@
 		order by a.update_date desc,a.name
 	</select>
 
+
+
+	<select id="getProjectRecordDataList" resultType="com.jeeplus.modules.projectrecord.entity.ProjectRecordTreeData">
+		select a.id,a.name as projectName,a.number as projectId,#{projectId} as pid,
+		a.create_date as createDate,a.status as projectStatus,a.create_by as createBy,
+		su.name as projectRegistrant,
+		wct.type_name as projectLeader,
+		wctp.type_name as clientName
+		from project_report_data a
+		left join sys_user su on su.id = a.create_by
+		left join work_content_type wct on a.type = wct.type_id
+		left join work_content_type wctp on wct.parent_id = wctp.type_id
+		where a.del_flag = 0 and a.project_id = #{projectId}
+		order by a.update_date desc,a.name
+	</select>
+
 </mapper>

+ 6 - 5
src/main/resources/mappings/modules/projectrecord/ProjectRecordsDao.xml

@@ -80,14 +80,15 @@
 		wci.name AS "workContractInfo.name",
 		wct.id AS "workContractInfo.client.id",
 		wct.name AS "workContractInfo.client.name",
-		o.top_company AS "office.name"
+		o.top_company AS "office.name",
+		dsu.name as "projectRegistrant"
 		FROM project_records a
 		<include refid="projectRecordsJoins"/>
 
-        <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 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

+ 1 - 2
src/main/resources/mappings/modules/projectreportnum/ProjectReportNumDao.xml

@@ -106,8 +106,7 @@
 		FROM report_num a
 
 		<where>
-			a.del_flag = #{DEL_FLAG_NORMAL} and a.state = '0' and a.create_by = #{createBy.id}
-			and a.num like concat('%',#{num},'%')
+			a.num like concat('%',#{num},'%')
 		</where>
 		ORDER BY a.num desc limit 0,1
 	</select>

+ 1 - 0
src/main/webapp/webpage/modules/projectcontentinfo/reportForm.jsp

@@ -394,6 +394,7 @@
 		<form:form id="inputForm" modelAttribute="projectcontentinfo" action="${ctx}/projectcontentinfo/projectcontentinfo/save?view=report" method="post" class="layui-form">
 		<form:hidden path="id"/>
 		<form:hidden path="name"/>
+		<form:hidden path="condition"/>
 		<form:hidden path="parentIds"/>
 		<form:hidden path="edit"/>
 		<form:hidden path="projectReportData.id"/>

+ 3 - 2
src/main/webapp/webpage/modules/projectcontentinfo/reportInvalid.jsp

@@ -9,9 +9,9 @@
         function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
             if(validateForm.form()){
                 if(obj == 1){
-                    $("#inputForm").attr("action","${ctx}/projectcontentinfo/projectcontentinfo/saveInvalidAudit?view=reportInvalid");
+                    $("#inputForm").attr("action","${ctx}/projectcontentinfo/projectcontentinfo/saveInvalidAudit?view=reportInvalid&projectReportData.reviewStandard=${reviewStandard}");
                 }else{
-                    $("#inputForm").attr("action","${ctx}/projectcontentinfo/projectcontentinfo/saveInvalid?view=reportInvalid");
+                    $("#inputForm").attr("action","${ctx}/projectcontentinfo/projectcontentinfo/saveInvalid?view=reportInvalid&projectReportData.reviewStandard=${reviewStandard}");
                 }
                 $("#inputForm").submit();
                 return true;
@@ -66,6 +66,7 @@
 		<form:form id="inputForm" modelAttribute="projectcontentinfo"  method="post" class="form-horizontal">
 		<form:hidden path="id"/>
 		<form:hidden path="parentIds"/>
+		<form:hidden path="condition"/>
 		<form:hidden path="projectReportData.id"/>
 		<form:hidden path="projectReportData.createBy.id"/>
 		<sys:message content="${message}"/>

+ 1 - 1
src/main/webapp/webpage/modules/projectcontentinfo/reportInvalidModifyApply.jsp

@@ -259,7 +259,7 @@
 				<div class="layui-item layui-col-sm6">
 					<label class="layui-form-label">审定价(元):</label>
 					<div class="layui-input-block with-icon">
-						<form:input id="approvalFee" path="projectReportData.approvalFee" htmlEscape="false"  class="form-control layui-input number" onchange="getFee()"readonly="true"/>
+						<form:input id="approvalFee" path="projectReportData.approvalFee" htmlEscape="false"  class="form-control layui-input number" onchange="getFee()" readonly="true"/>
 					</div>
 				</div>
 				<div class="layui-item layui-col-sm6">

+ 348 - 15
src/main/webapp/webpage/modules/projectrecord/projectRecordsList.jsp

@@ -4,7 +4,19 @@
 <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() {
 
@@ -206,18 +218,24 @@
 					<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">
+						<%--<div class="layui-item query athird">
 							<label class="layui-form-label">项目编号:</label>
 							<div class="layui-input-block with-icon">
 								<form:input path="projectId" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
 							</div>
-						</div>
+						</div>--%>
 						<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>
@@ -229,21 +247,15 @@
 					</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">
-								<form:input path="leaderNameStr" 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="workContractInfo.name" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+								<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">
-								<form:input path="workContractInfo.client.name" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+								<input type="text" input="workContractInfoClientName" name="workContractInfo.client.name" value="" htmlEscape="false" maxlength="255"  class=" form-control layui-input">
 							</div>
 						</div>
 						<div class="layui-item query athird ">
@@ -284,11 +296,14 @@
 					<shiro:hasPermission name="project:projectRecords:export">
 						<table:exportExcel url="${ctx}/project/projectRecords/export"></table:exportExcel><!-- 导出按钮 -->
 					</shiro:hasPermission>
+					<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 class="oa-table layui-table" id="contentTable1"></table>
 
+                    <div style="clear: both;"></div>
+				</div>
+<%--				<table class="oa-table layui-table" id="contentTable1"></table>--%>
+                <table id="permissionTable" class="layui-table" lay-filter="permissionTable"></table>
 				<!-- 分页代码 -->
 				<table:page page="${page}"></table:page>
 				<div style="clear: both;"></div>
@@ -301,7 +316,7 @@
 <script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
 <script>
 
-    layui.use('table', function(){
+   /* layui.use('table', function(){
         layui.table.render({
             limit:${ page.pageSize }
             ,elem: '#contentTable1'
@@ -406,7 +421,7 @@
             // ,even: true
             // ,height: 315
         });
-    })
+    })*/
 
     resizeListTable();
     $("a").on("click",addLinkVisied);
@@ -417,5 +432,323 @@
         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/projectRecords/getProjectList?projectId=${projectRecords.id}&pageNo=${page.pageNo}&projectName='+$("#projectName").val()+'&leaderNameStr='+$("#leaderNameStr").val()+'&workContractInfo.name='+workContractInfoName+'&workContractInfo.client.name='+workContractInfoClientName+'&beginDate='+$("#beginDate").val()+'&endDate='+$("#endDate").val()+'&projectStatus='+$("#projectStatus").val(),
+                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=reportView&dictType="+d.dictType+"&id="+d.contentPId+"&parentIds="+d.parentIds+"&infoId="+d.id+"','95%', '95%')\">" + d.projectName + "</a>";
+						}
+						}},
+                    {field: 'projectLeader', align:'center', title: '项目负责人/工作内容',templet: function(d){
+							if(0 == d.pid){
+								return "<font style = 'font-size:14px;font-weight:500;'>"+d.projectLeader+"</font>";
+							}else{
+								return "<font>"+d.projectLeader+"</font>";
+							}
+						}},
+					{field: 'clientName', align:'center', title: '委托方/当前阶段',templet: function(d){
+							if(0 == d.pid){
+								return "<font style = 'font-size:14px;font-weight:500;'>"+d.clientName+"</font>";
+							}else{
+								return "<font>"+d.clientName+"</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>";
+							}
+						}},
+					{align:'center', title: '状态',  width:70,templet:function(d){
+							var st = getAuditState(""+d.projectStatus);
+							if(d.pid ==0){
+								if(st.action)
+									var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/project/projectRecords/getProcess?id=" + d.id + "','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 if(d.pid !=0){
+								if(st.action)
+									var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/projectcontentinfo/projectcontentinfo/getProcessOne?id=" + d.id + "&projectReportData.id="+ d.id + "&type="+d.projectStatus+"','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.loginId == d.createId) {
+				if (0 == d.pid) {
+					if(1==d.projectStatus){
+						return [
+							'<a href="#" onclick="openDialogre(\'暂存项目修改\', \'${ctx}/project/projectRecords/form?id=' + d.id +',\'95%\',\'95%\'\'\',\'送审,暂存,关闭\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+							'<a href="${ctx}/project/projectRecords/delete?id='+d.id+'" onclick="return confirmx(\'确认要删除该项目信息吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+						].join('');
+					}
+					else if(2==d.projectStatus){
+						return [
+							'<a href="${ctx}/project/projectRecords/revoke?id='+d.id+ "&processInstanceId=" + d.procId +'" onclick="return confirmx(\'确认要撤回该项目审批吗?\', this.href)"   class="op-btn op-btn-cancel"><i class="glyphicon glyphicon-share-alt"></i> 撤回</a>',
+						].join('');
+					}
+					else if(3==d.projectStatus){
+						return [
+							'<a href="#" onclick="openDialogre(\'撤回项目调整\', \'${ctx}/project/projectRecords/form?id=' + d.id +',\'95%\',\'95%\'\'\',\'送审,关闭\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+							'<a href="${ctx}/project/projectRecords/delete?id='+d.id+'" onclick="return confirmx(\'确认要删除该项目信息吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+						].join('');
+					}
+					else if(4==d.projectStatus){
+						return [
+							'<a href="#" onclick="openDialogre(\'驳回项目调整\', \'${ctx}/project/projectRecords/modify?id=' + d.id +',\'95%\',\'95%\'\'\',\'送审,关闭\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+							'<a href="${ctx}/project/projectRecords/delete?id='+d.id+'" onclick="return confirmx(\'确认要删除该项目信息吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+						].join('');
+					}
+					else if(5==d.projectStatus){
+						return [
+							'<a href="javascript:void(0)" onclick="openDialogre(\'项目变更管理\', \'${ctx}/project/projectRecordsAlter/form?alterBeforeRecords.id=+encodeURIComponent(' + d.id + '),\'95%\',\'95%\'\'\',\'送审,关闭\')" style=\"color: white;background: darkseagreen\" class="op-btn op-btn-op-btn-revert" ><i class="fa fa-edit"></i> 变更</a>',
+						].join('');
+					}else{
+						return[''].join('');
+					}
+				} else {
+					//
+					if(d.projectStatus == 1){
+						return [
+							'<a href="javascript:void(0)" onclick="openDialogres(\'修改报告\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=report&condition=record&dictType='+d.dictType+'&id='+d.contentPId+'&parentIds='+d.parentIds+'&projectReportData.id='+d.id+'\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+							'<a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+d.id+'&id='+d.contentPId+'&type=8&condition=record" onclick="return confirmxRefresh(\'确认要删除该工作内容报告吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+						].join('');
+					}else if(d.projectStatus == 2){
+						return [
+							'<a href="${ctx}/projectcontentinfo/projectcontentinfo/cancelInvalidate?infoId='+d.id+'&id='+d.contentPId+'&type=8&condition=record" onclick="return confirmxRefresh(\'确认要撤回该工作内容报告吗?\', this.href)"   class="op-btn op-btn-cancel"><i class="glyphicon glyphicon-share-alt"></i> 撤回</a>',
+						].join('');
+					}else if(d.projectStatus == 3){
+						return [
+							'<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改报告\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=report&condition=record&dictType='+d.dictType+'&id='+d.contentPId+'&parentIds='+d.parentIds+'&projectReportData.id='+d.id+'\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+							'<a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+d.id+'&id='+d.contentPId+'&type=8&condition=record" onclick="return confirmxRefresh(\'确认要删除该工作内容报告吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+						].join('');
+					}else if(d.projectStatus == 4){
+						return [
+							'<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改报告\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=reportModify&condition=record&dictType='+d.dictType+'&id='+d.contentPId+'&parentIds='+d.parentIds+'&projectReportData.id='+d.id+'\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+							'<a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+d.id+'&id='+d.contentPId+'&type=8&condition=record" onclick="return confirmxRefresh(\'确认要删除该工作内容报告吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+						].join('');
+					}else if(d.projectStatus == 5){
+						return [
+							'<a href="javascript:void(0)" onclick="openDialogres(\'报告作废\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=reportInvalid&condition=record&dictType='+d.dictType+'&id='+d.contentPId+'&parentIds='+d.parentIds+'&projectReportData.id='+d.id+'\',\'95%\',\'95%\')" class="op-btn op-btn-invalid" ><i class="fa fa-trash-o"></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/projectRecords/list';
+					}
+				});
+			}
+			top.layer.close(index);
+		});
+		return false;
+	}
+</script>
 </body>
 </html>