Enford 5 jaren geleden
bovenliggende
commit
c254fe5a34
60 gewijzigde bestanden met toevoegingen van 10784 en 0 verwijderingen
  1. 75 0
      src/main/webapp/webpage/modules/act/actModelCreate.jsp
  2. 170 0
      src/main/webapp/webpage/modules/act/actModelList.jsp
  3. 60 0
      src/main/webapp/webpage/modules/act/actProcessDeploy.jsp
  4. 112 0
      src/main/webapp/webpage/modules/act/actProcessHistoryList.jsp
  5. 166 0
      src/main/webapp/webpage/modules/act/actProcessList.jsp
  6. 112 0
      src/main/webapp/webpage/modules/act/actProcessRunningList.jsp
  7. 33 0
      src/main/webapp/webpage/modules/act/actTaskFlowChart.jsp
  8. 34 0
      src/main/webapp/webpage/modules/act/actTaskForm.jsp
  9. 219 0
      src/main/webapp/webpage/modules/act/actTaskHistoricFlow.jsp
  10. 131 0
      src/main/webapp/webpage/modules/act/actTaskHistoricList.jsp
  11. 26 0
      src/main/webapp/webpage/modules/act/actTaskMap.jsp
  12. 119 0
      src/main/webapp/webpage/modules/act/actTaskProcessList.jsp
  13. 168 0
      src/main/webapp/webpage/modules/act/actTaskTodoList.jsp
  14. 95 0
      src/main/webapp/webpage/modules/activityassignment/activityAssignmentForm.jsp
  15. 227 0
      src/main/webapp/webpage/modules/activityassignment/activityAssignmentList.jsp
  16. 88 0
      src/main/webapp/webpage/modules/activityassignment/activityAssignmentView.jsp
  17. 75 0
      src/main/webapp/webpage/modules/alterinfo/alterInfoForm.jsp
  18. 142 0
      src/main/webapp/webpage/modules/alterinfo/alterInfoList.jsp
  19. 169 0
      src/main/webapp/webpage/modules/appversion/appVersionsForm.jsp
  20. 304 0
      src/main/webapp/webpage/modules/appversion/appVersionsList.jsp
  21. 85 0
      src/main/webapp/webpage/modules/buydetails/buyDetailsForm.jsp
  22. 146 0
      src/main/webapp/webpage/modules/buydetails/buyDetailsList.jsp
  23. 77 0
      src/main/webapp/webpage/modules/casebuildinfo/caseBuildInfoForm.jsp
  24. 148 0
      src/main/webapp/webpage/modules/casebuildinfo/caseBuildInfoList.jsp
  25. 76 0
      src/main/webapp/webpage/modules/casecategory/caseCategoryForm.jsp
  26. 159 0
      src/main/webapp/webpage/modules/casecategory/caseCategoryList.jsp
  27. 74 0
      src/main/webapp/webpage/modules/casecategory/caseCategoryView.jsp
  28. 75 0
      src/main/webapp/webpage/modules/casedesigninfo/caseDesignInfoForm.jsp
  29. 144 0
      src/main/webapp/webpage/modules/casedesigninfo/caseDesignInfoList.jsp
  30. 77 0
      src/main/webapp/webpage/modules/caseexecuteinfo/caseExecuteInfoForm.jsp
  31. 148 0
      src/main/webapp/webpage/modules/caseexecuteinfo/caseExecuteInfoList.jsp
  32. 173 0
      src/main/webapp/webpage/modules/caseinfo/caseAllList.jsp
  33. 205 0
      src/main/webapp/webpage/modules/caseinfo/caseCompanyList.jsp
  34. 541 0
      src/main/webapp/webpage/modules/caseinfo/caseInfoAudit.jsp
  35. 1273 0
      src/main/webapp/webpage/modules/caseinfo/caseInfoForm.jsp
  36. 1279 0
      src/main/webapp/webpage/modules/caseinfo/caseInfoForms.jsp
  37. 120 0
      src/main/webapp/webpage/modules/caseinfo/caseInfoHistoricList.jsp
  38. 119 0
      src/main/webapp/webpage/modules/caseinfo/caseInfoIndex.jsp
  39. 256 0
      src/main/webapp/webpage/modules/caseinfo/caseInfoList.jsp
  40. 352 0
      src/main/webapp/webpage/modules/caseinfo/caseInfoListme.jsp
  41. 81 0
      src/main/webapp/webpage/modules/caseinfo/caseInfoShare.jsp
  42. 15 0
      src/main/webapp/webpage/modules/caseinfo/caseInfoTask.jsp
  43. 195 0
      src/main/webapp/webpage/modules/caseinfo/caseInfoTodoList.jsp
  44. 599 0
      src/main/webapp/webpage/modules/caseinfo/caseInfoView.jsp
  45. 181 0
      src/main/webapp/webpage/modules/caseinfo/caseMaterialsFormBill.jsp
  46. 156 0
      src/main/webapp/webpage/modules/caseinfo/caseMaterialsFormBillDetail.jsp
  47. 105 0
      src/main/webapp/webpage/modules/casematerials/caseMaterialsForm.jsp
  48. 168 0
      src/main/webapp/webpage/modules/casematerials/caseMaterialsList.jsp
  49. 87 0
      src/main/webapp/webpage/modules/casematerialsnorm/caseMaterialsNormForm.jsp
  50. 150 0
      src/main/webapp/webpage/modules/casematerialsnorm/caseMaterialsNormList.jsp
  51. 47 0
      src/main/webapp/webpage/modules/casemechanicalnorm/caseMechanicalNormForm.jsp
  52. 132 0
      src/main/webapp/webpage/modules/casemechanicalnorm/caseMechanicalNormList.jsp
  53. 65 0
      src/main/webapp/webpage/modules/casemember/caseMemberForm.jsp
  54. 134 0
      src/main/webapp/webpage/modules/casemember/caseMemberList.jsp
  55. 85 0
      src/main/webapp/webpage/modules/casenorm/caseNormForm.jsp
  56. 148 0
      src/main/webapp/webpage/modules/casenorm/caseNormList.jsp
  57. 47 0
      src/main/webapp/webpage/modules/casepeoplenorm/casePeopleNormForm.jsp
  58. 132 0
      src/main/webapp/webpage/modules/casepeoplenorm/casePeopleNormList.jsp
  59. 67 0
      src/main/webapp/webpage/modules/caseprojectfeature/caseProjectFeatureForm.jsp
  60. 138 0
      src/main/webapp/webpage/modules/caseprojectfeature/caseProjectFeatureList.jsp

+ 75 - 0
src/main/webapp/webpage/modules/act/actModelCreate.jsp

@@ -0,0 +1,75 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>新建模型 - 模型管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function(){
+			top.$.jBox.tip.mess = null;
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					//loading('正在提交,请稍等...');
+					form.submit();
+					setTimeout(function(){location='${ctx}/act/model/'}, 1000);
+				},
+				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);
+					}
+				}
+			});
+		});
+	</script>
+</head>
+<body>
+
+	<br/>
+	<sys:message content="${message}"/>
+	<form id="inputForm" action="${ctx}/act/model/create"  method="post" class="form-horizontal">
+		<div class="control-group">
+			<label class="control-label">流程分类:</label>
+			<div class="controls">
+				<select id="category" name="category" class="required form-control ">
+					<c:forEach items="${fns:getDictList('act_category')}" var="dict">
+						<option value="${dict.value}">${dict.label}</option>
+					</c:forEach>
+				</select>
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label">模块名称:</label>
+			<div class="controls">
+				<input id="name" name="name" type="text" class="form-control required" />
+				<span class="help-inline"></span>
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label">模块标识:</label>
+			<div class="controls">
+				<input id="key" name="key" type="text" class="form-control required" />
+				<span class="help-inline"></span>
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label">模块描述:</label>
+			<div class="controls">
+				<textarea id="description" name="description" class="form-control required"></textarea>
+			</div>
+		</div>
+	</form>
+</body>
+</html>

+ 170 - 0
src/main/webapp/webpage/modules/act/actModelList.jsp

@@ -0,0 +1,170 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>模型管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function(){
+			top.$.jBox.tip.mess = null;
+		});
+		function updateCategory(id, category){
+			layer.open({
+				  type: 1, 
+				  title:"设置分类",
+				  area: ['400px', '200px'],
+				  content: $("#categoryBox").html() //这里content是一个普通的String
+				});
+			$("#categoryBoxId").val(id);
+			$("#categoryBoxCategory").val(category);
+		}
+	</script>
+	<script type="text/template" id="categoryBox">
+		<form id="categoryForm" action="${ctx}/act/model/updateCategory" method="post" enctype="multipart/form-data"
+			style="text-align:center;"   onsubmit="loading('正在分类,请稍等...');"><br/>
+		
+
+		<div class="col-md-12">
+   			<div class="form-group">
+        		<label class="col-sm-3 control-label">选择分类:</label>
+       			<div class="col-sm-9">
+           			 <input id="categoryBoxId" type="hidden" name="id" value="" />
+					<select id="categoryBoxCategory" name="category" class="form-control">
+						<c:forEach items="${fns:getDictList('act_category')}" var="dict">
+							<option value="${dict.value}">${dict.label}</option>
+						</c:forEach>
+					</select>
+       			 </div>
+   			 </div>
+			</div>	
+			
+			<br/>
+			<br/> 
+			<br/> 
+			<br/>  
+			<input id="categorySubmit" class="btn btn-primary" type="submit" value="   保    存   "/>  
+		</form>
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<%--<div class="ibox-title">
+		<h5>模型管理 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>--%>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="category" action="${ctx}/act/model/" 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();"/><!-- 支持排序 -->
+		<a href="#" id="moresee" class="fa fa-chevron-down" style="float: right;">更多</a>
+		<div class="form-group">
+			<select id="category" name="category" class="form-control">
+				<option value="">全部分类</option>
+				<c:forEach items="${fns:getDictList('act_category')}" var="dict">
+					<option value="${dict.value}" ${dict.value==category?'selected':''}>${dict.label}</option>
+				</c:forEach>
+			</select>
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="act:model:create">
+				<table:addRow url="${ctx}/act/model/create"  title="新建模型"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="act:model:del">
+				<table:delRow url="${ctx}/act/model/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th> <input type="checkbox" class="i-checks"></th>
+				<th>流程分类</th>
+				<th>模型ID</th>
+				<th>模型标识</th>
+				<th>模型名称</th>
+				<th>版本号</th>
+				<th>创建时间</th>
+				<th>最后更新时间</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="model">
+			<tr>
+				<td> <input type="checkbox" id="${model.id}" class="i-checks"></td>
+				<td><a href="javascript:updateCategory('${model.id}', '${model.category}')" title="设置分类">${fns:getDictLabel(model.category,'act_category','无分类')}</a></td>
+					<td>${model.id}</td>
+					<td>${model.key}</td>
+					<td>${model.name}</td>
+					<td><b title='流程版本号'>V: ${model.version}</b></td>
+					<td><fmt:formatDate value="${model.createTime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
+					<td><fmt:formatDate value="${model.lastUpdateTime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
+					<td>
+						<shiro:hasPermission name="act:model:edit">
+							<a href="${pageContext.request.contextPath}/act/rest/modeler.html?modelId=${model.id}" target="_blank">在线设计</a>
+						</shiro:hasPermission>
+						<shiro:hasPermission name="act:model:deploy">
+							<a href="${ctx}/act/model/deploy?id=${model.id}" onclick="return confirmx('确认要部署该模型吗?', this.href)">部署</a>
+						</shiro:hasPermission>
+						<shiro:hasPermission name="act:model:export">
+							<a href="${ctx}/act/model/export?id=${model.id}" target="_blank">导出</a>
+						</shiro:hasPermission>
+						<shiro:hasPermission name="act:model:del">
+	                    	<a href="${ctx}/act/model/delete?id=${model.id}" onclick="return confirmx('确认要删除该模型吗?', this.href)">删除</a>
+	                    </shiro:hasPermission>
+					</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 60 - 0
src/main/webapp/webpage/modules/act/actProcessDeploy.jsp

@@ -0,0 +1,60 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>部署流程 - 流程管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+	var validateForm;
+	function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+	  if(validateForm.form()){
+		  $("#inputForm").submit();
+		  return true;
+	  }
+
+	  return false;
+	}
+		$(document).ready(function(){
+			top.$.jBox.tip.mess = null;
+			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);
+					}
+				}
+			});
+		});
+	</script>
+</head>
+<body>
+	<br/>
+	<sys:message content="${message}"/>
+	<form id="inputForm" action="${ctx}/act/process/deploy" method="post" enctype="multipart/form-data" class="form-horizontal">
+		<div class="control-group">
+			<label class="control-label">流程分类:</label>
+			<div class="controls">
+				<select id="category" name="category" class="required form-control">
+					<c:forEach items="${fns:getDictList('act_category')}" var="dict">
+						<option value="${dict.value}">${dict.label}</option>
+					</c:forEach>
+				</select>
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label">流程文件:</label>
+			<div class="controls">
+				<input type="file" id="file" name="file" class="required form-control"/>
+				<span class="help-inline">支持文件格式:zip、bar、bpmn、bpmn20.xml</span>
+			</div>
+		</div>
+	</form>
+</body>
+</html>

+ 112 - 0
src/main/webapp/webpage/modules/act/actProcessHistoryList.jsp

@@ -0,0 +1,112 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>已结束的流程</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function(){
+			top.$.jBox.tip.mess = null;
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<%--<div class="ibox-title">
+		<h5>已结束的流程 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>--%>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm"  action="${ctx}/act/process/historyList/" 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();"/><!-- 支持排序 -->
+		<a href="#" id="moresee" class="fa fa-chevron-down" style="float: right;">更多</a>
+		<div class="form-group">
+			<label>流程实例ID:</label><input type="text" id="procInsId" name="procInsId" value="${procInsId}" class="form-control"/>
+			<label>流程定义Key:</label><input type="text" id="procDefKey" name="procDefKey" value="${procDefKey}" class="form-control"/>
+		</div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+		<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	
+		<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th>流程发起人</th>
+				<th>执行ID</th>
+				<th>流程实例ID</th>
+				<th>流程定义ID</th>
+				<th>流程启动时间</th>
+				<th>流程结束时间</th>
+				<th>流程状态</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+			<c:forEach items="${page.list}" var="procIns">
+				<tr>
+					<td>${procIns.startUserId}</td>
+					<td>${procIns.id}</td>
+					<td>${procIns.processInstanceId}</td>
+					<td>${procIns.processDefinitionId}</td>
+					<td><fmt:formatDate value="${procIns.startTime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
+					<td><fmt:formatDate value="${procIns.endTime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
+					<td><c:if test="${procIns.deleteReason != null}">[流程作废]原因:${procIns.deleteReason}</c:if>  <c:if test="${procIns.deleteReason == null}">[正常结束]</c:if></td>
+					<td>
+						<a  href="javascript:openDialog('查看流程历史','${ctx}/act/task/trace/photo/${procIns.processDefinitionId}/${procIns.id}','1000px', '600px')">历史</a>
+						
+					</td>
+				</tr>
+			</c:forEach>
+		</tbody>
+	</table>
+			<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 166 - 0
src/main/webapp/webpage/modules/act/actProcessList.jsp

@@ -0,0 +1,166 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>流程管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function(){
+			top.$.jBox.tip.mess = null;
+		});
+		function updateCategory(id, category){
+			layer.open({
+				  type: 1, 
+				  title:"设置分类",
+				  area: ['350px', '200px'],
+				  content: $("#categoryBox").html() //这里content是一个普通的String
+				});
+			$("#categoryBoxId").val(id);
+			$("#categoryBoxCategory").val(category);
+		}
+	</script>
+	<script type="text/template" id="categoryBox">
+		<form id="categoryForm" action="${ctx}/act/process/updateCategory" method="post" enctype="multipart/form-data"
+			style="text-align:center;" onsubmit="loading('正在设置,请稍等...');"><br/>
+			
+			<div class="col-md-12">
+   			<div class="form-group">
+        		<label class="col-sm-3 control-label">选择分类:</label>
+       			<div class="col-sm-9">
+
+			<input id="categoryBoxId" type="hidden" name="procDefId" value="" />
+			<select id="categoryBoxCategory" name="category" class="form-control">
+				<c:forEach items="${fns:getDictList('act_category')}" var="dict">
+					<option value="${dict.value}">${dict.label}</option>
+				</c:forEach>
+			</select>
+				 </div>
+   			 </div>
+			</div>	
+			
+			<br/>
+			<br/> 
+			<br/> 
+			<br/>   
+			<input id="categorySubmit" class="btn btn-primary" type="submit" value="   保    存   "/>  
+		</form>
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<%--<div class="ibox-title">
+		<h5>流程管理 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>--%>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="category" action="${ctx}/act/process/" 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();"/><!-- 支持排序 -->
+		<a href="#" id="moresee" class="fa fa-chevron-down" style="float: right;">更多</a>
+		<div class="form-group">
+			<select id="category" name="category" class="form-control">
+			<option value="">全部分类</option>
+			<c:forEach items="${fns:getDictList('act_category')}" var="dict">
+				<option value="${dict.value}" ${dict.value==category?'selected':''}>${dict.label}</option>
+			</c:forEach>
+		</select>
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+		<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<!--<shiro:hasPermission name="act:process:deploy">-->	<!--</shiro:hasPermission>-->
+				<table:addRow url="${ctx}/act/process/deploy/"  label="上传流程文件" title="流程"></table:addRow><!-- 增加按钮 -->
+		
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	
+		<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th>流程分类</th>
+				<th>流程ID</th>
+				<th>流程标识</th>
+				<th>流程名称</th>
+				<th>流程版本</th>
+				<th>流程XML</th>
+				<th>流程图片</th>
+				<th>部署时间</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+			<c:forEach items="${page.list}" var="object">
+				<c:set var="process" value="${object[0]}" />
+				<c:set var="deployment" value="${object[1]}" />
+				<tr>
+					<td><a href="javascript:updateCategory('${process.id}', '${process.category}')" title="设置分类">${fns:getDictLabel(process.category,'act_category','无分类')}</a></td>
+					<td>${process.id}</td>
+					<td>${process.key}</td>
+					<td>${process.name}</td>
+					<td><b title='流程版本号'>V: ${process.version}</b></td>
+					<td><a target="_blank" href="${ctx}/act/process/resource/read?procDefId=${process.id}&resType=xml">${process.resourceName}</a></td>
+					<td><a target="_blank" href="${ctx}/act/process/resource/read?procDefId=${process.id}&resType=image">${process.diagramResourceName}</a></td>
+					<td><fmt:formatDate value="${deployment.deploymentTime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
+					<td>
+						<c:if test="${process.suspended}">
+							<a href="${ctx}/act/process/update/active?procDefId=${process.id}" onclick="return confirmx('确认要激活吗?', this.href)">激活</a>
+						</c:if>
+						<c:if test="${!process.suspended}">
+							<a href="${ctx}/act/process/update/suspend?procDefId=${process.id}" onclick="return confirmx('确认挂起除吗?', this.href)">挂起</a>
+						</c:if>
+						<a href='${ctx}/act/process/delete?deploymentId=${process.deploymentId}' onclick="return confirmx('确认要删除该流程吗?', this.href)">删除</a>
+                        <a href='${ctx}/act/process/convert/toModel?procDefId=${process.id}' onclick="return confirmx('确认要转换为模型吗?', this.href)">转换为模型</a>
+					</td>
+				</tr>
+			</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 112 - 0
src/main/webapp/webpage/modules/act/actProcessRunningList.jsp

@@ -0,0 +1,112 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>运行中的流程</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function(){
+			top.$.jBox.tip.mess = null;
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<%--<div class="ibox-title">
+		<h5>运行中的流程 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>--%>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm"  action="${ctx}/act/process/running/" 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();"/><!-- 支持排序 -->
+		<a href="#" id="moresee" class="fa fa-chevron-down" style="float: right;">更多</a>
+		<div class="form-group">
+			<label>流程实例ID:</label><input type="text" id="procInsId" name="procInsId" value="${procInsId}" class="form-control"/>
+			<label>流程定义Key:</label><input type="text" id="procDefKey" name="procDefKey" value="${procDefKey}" class="form-control"/>
+		</div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+		<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	
+		<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th>流程名称</th>
+				<th>执行ID</th>
+				<th>流程实例ID</th>
+				<th>流程定义ID</th>
+				<th>当前环节</th>
+				<th>是否挂起</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+			<c:forEach items="${page.list}" var="procIns">
+				<tr>
+					<td>${procIns.processDefinitionName}</td>
+					<td>${procIns.id}</td>
+					<td>${procIns.processInstanceId}</td>
+					<td>${procIns.processDefinitionId}</td>
+					<td>${procIns.activityId}</td>
+					<td>${procIns.suspended}</td>
+					<td>
+						<a  href="javascript:openDialog('查看流程历史','${ctx}/act/task/trace/photo/${procIns.processDefinitionId}/${procIns.id}','1000px', '600px')">历史</a>
+						<shiro:hasPermission name="act:process:edit">
+							<a href="${ctx}/act/process/deleteProcIns?procInsId=${procIns.processInstanceId}&reason=" onclick="return promptx('作废原因',this.href);">作废</a>
+						</shiro:hasPermission>&nbsp;
+					</td>
+				</tr>
+			</c:forEach>
+		</tbody>
+	</table>
+			<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 33 - 0
src/main/webapp/webpage/modules/act/actTaskFlowChart.jsp

@@ -0,0 +1,33 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<%--<table class="table table-striped table-bordered ">--%>
+	<%--<c:forEach items="${histoicFlowList}" var="act" varStatus="var">--%>
+		<%--<c:if test="${var.index == 0}">--%>
+			<%--<td id="start" style="width:80px;text-align:center;background-color:#5BA276;"><span style="color:#FFFFFF;">${act.taskName}>></span></td>--%>
+		<%--</c:if>--%>
+		<%--<c:if test="${var.index != 0}">--%>
+			<%--<td id="start" style="width:80px;text-align:center;background-color:red;"><span style="color:#FFFFFF;">${act.taskName}</span></td>--%>
+		<%--</c:if>--%>
+	<%--</c:forEach>--%>
+<%--</table>--%>
+<div class="layui-row flow-items" style="margin-top:16px;">
+<c:forEach items="${histoicFlowList}" var="act" varStatus="var">
+	<c:if test="${var.index == 0}">
+		<div class="layui-item layui-col-xs4 pr fl workflow">
+			<div class="last">${act.taskName}</div>
+			<div class="sep"><img src="${ctxStatic}/common/img/work-sep.png" height="100%"></div>
+		</div>
+	</c:if>
+	<c:if test="${var.index == 1}">
+		<div class="layui-item layui-col-xs4 pr fl workflow">
+			<div class="cur">${act.taskName}</div>
+			<div class="sep"><img src="${ctxStatic}/common/img/work-sep.png" height="100%"></div>
+		</div>
+	</c:if>
+	<c:if test="${var.index == 2}">
+		<div class="layui-item layui-col-xs4 pr fl workflow">
+			<div class="next">${act.taskName}</div>
+		</div>
+	</c:if>
+</c:forEach>
+</div>

+ 34 - 0
src/main/webapp/webpage/modules/act/actTaskForm.jsp

@@ -0,0 +1,34 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>任务表单</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {/*
+			loading('正在加载表单,请稍等...');
+			$.get("${formUrl}", function(data){
+				top.$.jBox.closeTip();
+				$("#formContent").html(data==""?"<h4>没有找到表单数据。</h4><br/>表单地址:${formUrl}<br/>":data);
+			}).fail(function() {
+				top.$.jBox.closeTip();
+				$("#formContent").html("<h4>加载表单失败!</h4>表单地址:${formUrl}<br/>");
+			});*/
+		});
+	</script>
+</head>
+<body>
+	<ul class="nav nav-tabs">
+		<li><a href="${ctx}/act/task/todo/">待办任务</a></li>
+		<li><a href="${ctx}/act/task/historic/">已办任务</a></li>
+		<li class="active"><a href="${ctx}/act/task/form?taskId=${act.taskId}&taskName=${act.taskName}&taskDefKey=${act.taskDefKey}&procInsId=${act.procInsId}&procDefId${act.procDefId}">${empty act.procInsId?"新建任务":"任务处理"}</a></li>
+	</ul>
+	<form:form method="post" class="form-horizontal">
+		<sys:message content="${message}"/><%--
+		<legend>表单信息</legend> --%>
+		<div id="formContent">
+			<iframe id="reportFrame" src="${formUrl}" width="100%" height="500" style="border:0;" noresize="noresize"></iframe>
+		</div>
+	</form:form>
+</body>
+</html>

+ 219 - 0
src/main/webapp/webpage/modules/act/actTaskHistoricFlow.jsp

@@ -0,0 +1,219 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<style type="text/css">
+	tr{
+		white-space: nowrap;
+	}
+	td span,
+	td{
+		/*word-break: keep-all;!*必须*!*/
+		overflow: hidden;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+	}
+	td span{
+		/*width:inherit;*/
+		display: inline-block;
+	}
+</style>
+<div class="layui-col-sm12 layui-col-md12 layui-col-lg12 workflow-table">
+	<table class="table table-striped table-bordered table-hover table-condensed details">
+		<thead>
+		<tr>
+			<th width="150" style="text-align: center;">审批环节</th>
+			<th width="150" style="text-align: center;">审批角色</th>
+			<th width="200" style="text-align: center;">审批人</th>
+			<th width="150" style="text-align: center;">开始时间</th>
+			<th width="150" style="text-align: center;">结束时间</th>
+			<th  style="text-align: center;">提交意见</th>
+			<th width="100" style="text-align: center;">任务历时</th>
+		</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${histoicFlowList}" var="act" varStatus="var">
+			<tr>
+				<c:choose>
+					<c:when test="${act.endDate !=null && act.beginDate != null}">
+						<td id="start" style="width:150px;text-align:center;"><span title="${act.taskName}" class="down-step">${act.taskName}</span></td>
+					</c:when>
+					<c:when test="${act.endDate ==null && act.beginDate != null}">
+						<td id="start" style="width:150px;text-align:center;"><span title="${act.taskName}" class="cur-step">${act.taskName}</span></td>
+					</c:when>
+					<c:when test="${act.endDate ==null && act.beginDate == null}">
+						<td id="start" style="width:150px;text-align:center;"><span  title="${act.taskName}">${act.taskName}</span></td>
+					</c:when>
+					<c:otherwise>
+						<td id="start" style="width:150px;text-align:center;"><span title="${act.taskName}">${act.taskName}</span></td>
+					</c:otherwise>
+				</c:choose>
+				<td style="width: 150px;">
+					<span title="${act.roleName}">${act.roleName}</span>
+						<%--<c:choose>
+                            <c:when test="${empty act.assigneeName && empty act.histIns.endTime}">
+                                待签收
+                            </c:when>
+                            &lt;%&ndash;<c:when test="${empty act.assigneeName && not empty act.histIns.endTime}">
+                                已结束
+                            </c:when>&ndash;%&gt;
+                            <c:otherwise>
+                                ${act.assigneeName}
+                            </c:otherwise>
+                        </c:choose>--%>
+				</td>
+				<td style="width: 150px;">
+					<span title="${act.assigneeName}"><span title="${act.assigneeName}">${fns:abbr(act.assigneeName,30)}</span></span>
+						<%--<c:choose>
+                            <c:when test="${empty act.assigneeName && empty act.histIns.endTime}">
+                                待签收
+                            </c:when>
+                            &lt;%&ndash;<c:when test="${empty act.assigneeName && not empty act.histIns.endTime}">
+                                已结束
+                            </c:when>&ndash;%&gt;
+                            <c:otherwise>
+                                ${act.assigneeName}
+                            </c:otherwise>
+                        </c:choose>--%>
+				</td>
+				<td>
+					<c:choose>
+						<c:when test="${act.histIns.startTime !=null}">
+							<fmt:formatDate value="${act.histIns.startTime}" type="both"/>
+						</c:when>
+						<c:otherwise>
+							<fmt:formatDate value="${act.beginDate}" type="both"/>
+						</c:otherwise>
+					</c:choose>
+				</td>
+				<td>
+					<c:choose>
+						<c:when test="${act.histIns.endTime !=null}">
+							<fmt:formatDate value="${act.histIns.endTime}" type="both"/>
+						</c:when>
+						<c:otherwise>
+							<fmt:formatDate value="${act.endDate}" type="both"/>
+						</c:otherwise>
+					</c:choose>
+				</td>
+				<td style="">
+
+					<c:choose>
+						<c:when test="${empty act.comment && empty act.histIns.endTime  && var.index==0}">
+							<span>发起申请</span>
+						</c:when>
+						<c:when test="${empty act.comment && empty act.endDate  && var.index==0}">
+							<span>发起申请</span>
+						</c:when>
+						<c:when test="${empty act.comment && not empty act.histIns.endTime && act.histIns.activityName eq '结束'}">
+							<span>流程结束</span>
+						</c:when>
+						<c:otherwise>
+							<span title="${act.comment }">${act.comment }</span>
+						</c:otherwise>
+					</c:choose>
+
+				</td>
+				<td>
+					<span title="${act.durationTime}">${act.durationTime}</span>
+
+						<%--<c:choose>
+                            <c:when test="${not empty act.histIns.startTime && not empty act.histIns.endTime && empty act.durationTime}">
+                                0秒
+                            </c:when>
+                            <c:when test="${not empty act.beginDate && not empty act.endDate && empty act.durationTime}">
+                                0秒
+                            </c:when>
+                            <c:otherwise>
+                                ${act.durationTime}
+                            </c:otherwise>
+                        </c:choose>--%>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+</div>
+<%--<table class="table table-striped table-bordered table-condensed">--%>
+<%--<tr><th>审批环节</th><th>审批人</th><th>开始时间</th><th>结束时间</th><th>提交意见</th><th>任务历时</th></tr>--%>
+<%--<c:forEach items="${histoicFlowList}" var="act" varStatus="var">--%>
+<%--<tr>--%>
+<%--<c:choose>--%>
+<%--<c:when test="${act.histIns.endTime !=null && not empty act.histIns.activityName}">--%>
+<%--<td id="start" style="width:120px;text-align:center;background-color:#5BA276;"><span style="color:#FFFFFF;">${act.histIns.activityName}</span></td>--%>
+<%--</c:when>--%>
+<%--<c:when test="${act.histIns.endTime ==null && not empty act.histIns.activityName}">--%>
+<%--<td id="start" style="width:80px;text-align:center;background-color:red;"><span style="color:#FFFFFF;">${act.histIns.activityName}</span></td>--%>
+<%--</c:when>--%>
+<%--<c:when test="${act.endDate !=null && not empty act.taskName}">--%>
+<%--<td id="start" style="width:120px;text-align:center;background-color:#5BA276;"><span style="color:#FFFFFF;">${act.taskName}</span></td>--%>
+<%--</c:when>--%>
+<%--<c:otherwise>--%>
+<%--<td id="start" style="width:80px;text-align:center;background-color:#5BA276;"><span style="color:#FFFFFF;">${act.taskName}</span></td>--%>
+<%--</c:otherwise>--%>
+<%--</c:choose>--%>
+<%--<td>--%>
+<%--${act.assigneeName}--%>
+<%--&lt;%&ndash;<c:choose>--%>
+<%--<c:when test="${empty act.assigneeName && empty act.histIns.endTime}">--%>
+<%--待签收--%>
+<%--</c:when>--%>
+<%--&lt;%&ndash;<c:when test="${empty act.assigneeName && not empty act.histIns.endTime}">--%>
+<%--已结束--%>
+<%--</c:when>&ndash;%&gt;--%>
+<%--<c:otherwise>--%>
+<%--${act.assigneeName}--%>
+<%--</c:otherwise>--%>
+<%--</c:choose>&ndash;%&gt;--%>
+<%--</td>--%>
+<%--<td>--%>
+<%--<c:choose>--%>
+<%--<c:when test="${act.histIns.startTime !=null}">--%>
+<%--<fmt:formatDate value="${act.histIns.startTime}" type="both"/>--%>
+<%--</c:when>--%>
+<%--<c:otherwise>--%>
+<%--<fmt:formatDate value="${act.beginDate}" type="both"/>--%>
+<%--</c:otherwise>--%>
+<%--</c:choose>--%>
+<%--</td>--%>
+<%--<td>--%>
+<%--<c:choose>--%>
+<%--<c:when test="${act.histIns.endTime !=null}">--%>
+<%--<fmt:formatDate value="${act.histIns.endTime}" type="both"/>--%>
+<%--</c:when>--%>
+<%--<c:otherwise>--%>
+<%--<fmt:formatDate value="${act.endDate}" type="both"/>--%>
+<%--</c:otherwise>--%>
+<%--</c:choose>--%>
+<%--</td>--%>
+<%--<td style="word-wrap:break-word;word-break:break-all;">--%>
+<%--<c:choose>--%>
+<%--<c:when test="${empty act.comment && empty act.histIns.endTime  && var.index==0}">--%>
+<%--发起申请--%>
+<%--</c:when>--%>
+<%--<c:when test="${empty act.comment && empty act.endDate  && var.index==0}">--%>
+<%--发起申请--%>
+<%--</c:when>--%>
+<%--<c:when test="${empty act.comment && not empty act.histIns.endTime && act.histIns.activityName eq '结束'}">--%>
+<%--流程结束--%>
+<%--</c:when>--%>
+<%--<c:otherwise>--%>
+<%--${act.comment }--%>
+<%--</c:otherwise>--%>
+<%--</c:choose>--%>
+<%--</td>--%>
+<%--<td>--%>
+<%--${act.durationTime}--%>
+<%--&lt;%&ndash;<c:choose>--%>
+<%--<c:when test="${not empty act.histIns.startTime && not empty act.histIns.endTime && empty act.durationTime}">--%>
+<%--0秒--%>
+<%--</c:when>--%>
+<%--<c:when test="${not empty act.beginDate && not empty act.endDate && empty act.durationTime}">--%>
+<%--0秒--%>
+<%--</c:when>--%>
+<%--<c:otherwise>--%>
+<%--${act.durationTime}--%>
+<%--</c:otherwise>--%>
+<%--</c:choose>&ndash;%&gt;--%>
+<%--</td>--%>
+<%--</tr>--%>
+<%--</c:forEach>--%>
+<%--</table>--%>

+ 131 - 0
src/main/webapp/webpage/modules/act/actTaskHistoricList.jsp

@@ -0,0 +1,131 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>已办任务</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+	$(document).ready(function() {
+        laydate({
+            elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate({
+            elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+				
+	
+	
+	});
+	
+	function page(n,s){
+        	location = '${ctx}/act/task/historic/?pageNo='+n+'&pageSize='+s;
+        }
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>已办任务 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="act" action="${ctx}/act/task/historic/" method="get" 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="form-group">
+			<form:select path="procDefKey" class="form-control">
+				<form:option value="" label="全部流程"/>
+				<form:options items="${fns:getDictList('act_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+			</form:select>
+			<label>完成时间:</label>
+			<input id="beginDate"  name="beginDate"  type="text" readonly="readonly" maxlength="20"  class="laydate-icon form-control layer-date input-sm"
+				value="<fmt:formatDate value="${act.beginDate}" pattern="yyyy-MM-dd"/>"/>
+				 -- 
+			<input id="endDate" name="endDate" type="text" readonly="readonly" maxlength="20"  class="laydate-icon form-control layer-date input-sm"
+				value="<fmt:formatDate value="${act.endDate}" pattern="yyyy-MM-dd"/>"/>
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th>标题</th>
+				<th>流程名称</th>
+				<th>流程版本</th>
+				<th>流程发起人</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+			<c:forEach items="${page.list}" var="act">
+				<c:set var="task" value="${act.histTask}" />
+				<c:set var="vars" value="${act.vars}" />
+				<c:set var="procDef" value="${act.procDef}" /><%--
+				<c:set var="procExecUrl" value="${act.procExecUrl}" /> --%>
+				<c:set var="status" value="${act.status}" />
+				<tr>
+					<td>
+						<a href="${ctx}/act/task/form?taskId=${task.id}&taskName=${fns:urlEncode(task.name)}&taskDefKey=${task.taskDefinitionKey}&procInsId=${task.processInstanceId}&procDefId=${task.processDefinitionId}&status=${status}">${fns:abbr(not empty vars.map.title ? vars.map.title : task.id, 60)}</a>
+					</td>
+					<td>${procDef.name}</td>
+					<td><b title='流程版本号'>V: ${procDef.version}</b></td>
+					<td>${act.vars.map.applyUserId}</td>
+					<%--<td><fmt:formatDate value="${task.endTime}" type="both"/></td>--%>
+					<td>
+					</td>
+				</tr>
+			</c:forEach>
+		</tbody>
+	</table>
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 26 - 0
src/main/webapp/webpage/modules/act/actTaskMap.jsp

@@ -0,0 +1,26 @@
+<%@page import="java.io.InputStream"%>
+<%@page import="org.activiti.engine.impl.*"%>
+<%@page import="org.activiti.engine.impl.pvm.*"%>
+<%@page import="org.activiti.engine.impl.pvm.process.*"%>
+<%@page import="org.activiti.engine.repository.*"%>
+<%@page import="org.activiti.engine.*"%>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<!DOCTYPE html>
+<html>
+<head>
+<title>流程跟踪</title>
+<style type="text/css">
+	.procPic{position:absolute;left:0;top:0;}
+	.actImpl{position:absolute;border:2px solid red;-moz-border-radius:12px;-webkit-border-radius:12px;-khtml-border-radius:12px;border-radius:12px;}
+</style>
+</head>
+<body>
+	<div>
+		<img src="${ctx}/act/task/processPic?procDefId=${procDefId}" class="procPic" />
+		<c:forEach items="${actImpls}" var="a">
+			<div class="actImpl" style="left:${a.x-2}px;top:${a.y-2}px;width:${a.width}px;height:${a.height}px;"></div>
+		</c:forEach>
+	</div>
+</body>
+</html>

+ 119 - 0
src/main/webapp/webpage/modules/act/actTaskProcessList.jsp

@@ -0,0 +1,119 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>发起任务</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function(){
+			top.$.jBox.tip.mess = null;
+		});
+		function page(n,s){
+        	location = '${ctx}/act/task/process/?pageNo='+n+'&pageSize='+s;
+        }
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<%--<div class="ibox-title">
+		<h5>发起流程 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>--%>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm"  action="${ctx}/act/task/process/" 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();"/><!-- 支持排序 -->
+		<a href="#" id="moresee" class="fa fa-chevron-down" style="float: right;">更多</a>
+		<div class="form-group">
+			<select id="category" name="category" class="form-control">
+				<option value="">全部分类</option>
+				<c:forEach items="${fns:getDictList('act_category')}" var="dict">
+					<option value="${dict.value}" ${dict.value==category?'selected':''}>${dict.label}</option>
+				</c:forEach>
+			</select>
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th style="text-align: center;">流程分类</th>
+				<th style="text-align: center;">流程标识</th>
+				<th style="text-align: center;">流程名称</th>
+				<th style="text-align: center;">流程图</th>
+				<th style="text-align: center;">流程版本</th>
+				<th style="text-align: center;">更新时间</th>
+				<th style="text-align: center;">操作</th>
+			</tr>
+		</thead>
+		<tbody>
+			<c:forEach items="${page.list}" var="object">
+				<c:set var="process" value="${object[0]}" />
+				<c:set var="deployment" value="${object[1]}" />
+				<tr>
+					<td>${fns:getDictLabel(process.category,'act_category','无分类')}</td>
+					<td><a href="${ctx}/act/task/form?procDefId=${process.id}">${process.key}</a></td>
+					<td>${process.name}</td>
+					<td><a  href="javascript:openDialog('流程图','${ctx}/act/process/resource/read?procDefId=${process.id}&resType=image','1000px', '600px')">${process.diagramResourceName}</a>	</td>
+					<td><b title='流程版本号'>V: ${process.version}</b></td>
+					<td><fmt:formatDate value="${deployment.deploymentTime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
+					<td>
+						<div style="text-align: center">
+						<a href="${ctx}/act/task/form?procDefId=${process.id}">启动流程</a>
+						</div>
+					</td>
+				</tr>
+			</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 168 - 0
src/main/webapp/webpage/modules/act/actTaskTodoList.jsp

@@ -0,0 +1,168 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>待办任务</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+	        laydate({
+	            elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+	            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+	        });
+	        laydate({
+	            elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+	            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+	        });
+					
+		
+		
+		});
+		/**
+		 * 签收任务
+		 */
+		function claim(taskId) {
+			$.get('${ctx}/act/task/claim' ,{taskId: taskId}, function(data) {
+				if (data == 'true'){
+		        	top.$.jBox.tip('签收完成');
+		            location = '${ctx}/act/task/todo/';
+				}else{
+		        	top.$.jBox.tip('签收失败');
+				}
+		    });
+		}
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>待办任务 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="act" action="${ctx}/act/task/todo/" method="get" 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="form-group">
+			<label>流程类型:&nbsp;</label>
+			<form:select path="procDefKey" class="form-control">
+				<form:option value="" label="全部流程"/>
+				<form:options items="${fns:getDictList('act_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+			</form:select>
+			<label>创建时间:</label>
+			<input id="beginDate"  name="beginDate"  type="text" readonly="readonly" maxlength="20" class="laydate-icon form-control layer-date input-sm"
+				value="<fmt:formatDate value="${act.beginDate}" pattern="yyyy-MM-dd"/>"/>
+				 -- 
+			<input id="endDate" name="endDate" type="text" readonly="readonly" maxlength="20" class="laydate-icon form-control layer-date input-sm"
+				value="<fmt:formatDate value="${act.endDate}" pattern="yyyy-MM-dd"/>"/>
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th>标题</th>
+				<th>当前环节</th>
+				<th>任务内容</th>
+				<th>流程名称</th>
+				<th>流程版本</th>
+				<th>流程发起人</th>
+				<th>创建时间</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+			<c:forEach items="${list}" var="act">
+				<c:set var="task" value="${act.task}" />
+				<c:set var="vars" value="${act.vars}" />
+				<c:set var="procDef" value="${act.procDef}" /><%--
+				<c:set var="procExecUrl" value="${act.procExecUrl}" /> --%>
+				<c:set var="status" value="${act.status}" />
+				<tr>
+					<td>
+						<c:if test="${empty task.assignee}">
+							<a href="javascript:claim('${task.id}');" title="签收任务">${fns:abbr(not empty act.vars.map.title ? act.vars.map.title : task.id, 60)}</a>
+						</c:if>
+						<c:if test="${not empty task.assignee}">
+							<a href="${ctx}/act/task/form?taskId=${task.id}&taskName=${fns:urlEncode(task.name)}&taskDefKey=${task.taskDefinitionKey}&procInsId=${task.processInstanceId}&procDefId=${task.processDefinitionId}&status=${status}">${fns:abbr(not empty vars.map.title ? vars.map.title : task.id, 60)}</a>
+						</c:if>
+					</td>
+					<td>
+						<a  href="javascript:openDialog('跟踪','${ctx}/act/task/trace/photo/${task.processDefinitionId}/${task.executionId}','1000px', '600px')">${task.name}</a>
+					</td>
+					<td>${task.description}</td> 
+					<td>${procDef.name}</td>
+					<td><b title='流程版本号'>V: ${procDef.version}</b></td>
+					<td>${act.vars.map.applyUserId}</td>
+					<td><fmt:formatDate value="${task.createTime}" type="both"/></td>
+					<td>
+						<c:if test="${empty task.assignee}">
+							<a href="javascript:claim('${task.id}');">签收任务</a>
+						</c:if>
+						<c:if test="${not empty task.assignee}"><%--
+							<a href="${ctx}${procExecUrl}/exec/${task.taskDefinitionKey}?procInsId=${task.processInstanceId}&act.taskId=${task.id}">办理</a> --%>
+							<a href="${ctx}/act/task/form?taskId=${task.id}&taskName=${fns:urlEncode(task.name)}&taskDefKey=${task.taskDefinitionKey}&procInsId=${task.processInstanceId}&procDefId=${task.processDefinitionId}&status=${status}">任务办理</a>
+						</c:if>
+						<shiro:hasPermission name="act:process:edit">
+							<c:if test="${empty task.executionId}">
+								<a href="${ctx}/act/task/deleteTask?taskId=${task.id}&reason=" onclick="return promptx('删除任务','删除原因',this.href);">删除任务</a>
+							</c:if>
+						</shiro:hasPermission>
+						<a  href="javascript:openDialog('跟踪','${ctx}/act/task/trace/photo/${task.processDefinitionId}/${task.executionId}','1000px', '600px')">跟踪</a>
+					</td>
+				</tr>
+			</c:forEach>
+		</tbody>
+	</table>
+
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 95 - 0
src/main/webapp/webpage/modules/activityassignment/activityAssignmentForm.jsp

@@ -0,0 +1,95 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作流任务委托管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  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);
+					}
+				}
+			});
+            laydate.render({
+                elem: '#startDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+                ,type: 'datetime'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+                ,type: 'datetime'
+            });
+		});
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="activityAssignment" action="${ctx}/activityassignment/activityAssignment/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+
+			<div class="form-group layui-row first lw8">
+				<div class="form-group-label"><h2>委托信息</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">被委托人:</label>
+					<div class="layui-input-block with-icon">
+						<sys:treeselect id="user" name="user.id" value="${activityAssignment.user.id}" labelName="user.name" labelValue="${activityAssignment.user.name}"
+										title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">委托类型:</label>
+					<div class="layui-input-block">
+						<form:select path="type" class="form-control simple-select">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getDictList('assignmentType')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">委托开始时间:</label>
+					<div class="layui-input-block">
+						<input id="startDate" name="startDate" type="text" readonly="readonly" maxlength="20"  class="laydate-icondate form-control layer-date layui-input laydate-icon"
+							   value="<fmt:formatDate value="${activityAssignment.startDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">委托结束时间:</label>
+					<div class="layui-input-block">
+						<input id="endDate" name="endDate" type="text" readonly="readonly" maxlength="20"  class="laydate-icondate form-control layer-date layui-input laydate-icon"
+							   value="<fmt:formatDate value="${activityAssignment.endDate}" 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"  style="resize:none"   class="form-control "/>
+					</div>
+				</div>
+			</div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 227 - 0
src/main/webapp/webpage/modules/activityassignment/activityAssignmentList.jsp

@@ -0,0 +1,227 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作流任务委托管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+            laydate.render({
+                elem: '#startDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+                ,type: 'datetime'
+            });
+
+            $('#moresee').click(function(){
+                if($('#moresees').is(':visible'))
+                {
+                    $('#moresees').slideUp(0,resizeListWindow1);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+                }else{
+                    $('#moresees').slideDown(0,resizeListWindow1);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+                }
+            });
+		});
+
+	</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%;
+		}
+		.layui-form-checked[lay-skin=primary] i{
+			background-color: #0f92fb;
+			border-color: #0f92fb;
+		}
+		.layui-form-checkbox[lay-skin=primary] i{
+			border-radius: 0px;
+		}
+		.layui-form-checkbox[lay-skin=primary]:hover i{
+
+			border-color: #0f92fb;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="contentShadow layui-row" id="queryDiv">
+			<form:form id="searchForm" modelAttribute="activityAssignment" action="${ctx}/activityassignment/activityAssignment/" 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">
+					<div class="layui-item query athird">
+						<label class="layui-form-label">被委托人:</label>
+						<div class="layui-input-block with-icon">
+							<sys:treeselect id="user" name="user.id" value="${activityAssignment.user.id}" labelName="user.name" labelValue="${activityAssignment.user.name}"
+											title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+						</div>
+					</div>
+					<div class="layui-item query athird">
+						<label class="layui-form-label">委托类型:</label>
+						<div class="layui-input-block with-icon">
+							<form:select path="type"  class="form-control simple-select">
+								<form:option value="" label=""/>
+								<form:options items="${fns:getDictList('assignmentType')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+							</form:select>
+						</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="">
+					<div class="layui-item query athird">
+						<label class="layui-form-label">委托时间:</label>
+						<div class="layui-input-block">
+							<input id="startDate" name="startDate" type="text" readonly="readonly" maxlength="20"  class="laydate-icondate form-control layer-date layui-input laydate-icon"
+								   value="<fmt:formatDate value="${activityAssignment.startDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+						</div>
+					</div>
+					<div style="    clear:both;"></div>
+				</div>
+			</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="contentShadow layui-form contentDetails">
+				<div class="nav-btns">
+					<shiro:hasPermission name="activityassignment:activityAssignment:add">
+						<table:addRow url="${ctx}/activityassignment/activityAssignment/form" title="工作流任务委托"></table:addRow><!-- 增加按钮 -->
+					</shiro:hasPermission>
+					<shiro:hasPermission name="activityassignment:activityAssignment:del">
+						<button id="deleteRows" class="nav-btn nav-btn-delete"><i class="fa fa-trash-o"> 删除</i>
+						</button>
+						<%--<table:delRow url="${ctx}/activityassignment/activityAssignment/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->--%>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="activityassignment:activityAssignment:import">
+						<table:importExcel url="${ctx}/activityassignment/activityAssignment/import"></table:importExcel><!-- 导入按钮 -->
+					</shiro:hasPermission>
+					<shiro:hasPermission name="activityassignment:activityAssignment:export">
+						<table:exportExcel url="${ctx}/activityassignment/activityAssignment/export"></table:exportExcel><!-- 导出按钮 -->
+					</shiro:hasPermission>
+					<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="contentTable" lay-filter="contentTableFilter"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable'
+            ,page: false
+            ,cols: [[
+                {field:"id",type:'checkbox',align:'center' }
+                ,{field:'createBy',align:'center', title: '创建人',templet:function(d){
+                        var xml = "<a class=\"attention-info\" href=\"#\" onclick=\"openDialogView('查看工作流任务委托', '${ctx}/activityassignment/activityAssignment/form?id="+ d.id +"&view=view','95%', '95%')\">" +
+                            d.createBy +
+                            "</a>";
+                        return xml;
+                    }}
+                ,{field:'name',align:'center', title: '被委托人',templet:function(d){
+                        var xml = "<a class=\"attention-info\" href=\"#\" onclick=\"openDialogView('查看工作流任务委托', '${ctx}/activityassignment/activityAssignment/form?id="+ d.id +"&view=view','95%', '95%')\">" +
+                            d.name +
+                            "</a>";
+                        return xml;
+                    }}
+                ,{field:'type',align:'center', title: '委托类型'}
+                ,{field:'startDate',align:'center', title: '委托开始时间'}
+                ,{field:'endDate', align:'center',title: '委托结束时间'}
+                ,{field:'remarks', align:'center',title: '备注信息',templet:function(d){
+                        return "<span title='"+ d.remarks +"'>" + d.remarks + "</span>";
+                    }}
+                ,{field:'op',align:'center',title:"操作",templet:function(d){
+                        ////对操作进行初始化
+                        var xml = "";
+
+                        if(d.canedit != undefined && d.canedit == "1")
+                            xml +="<a href=\"javascript:void(0)\" onclick=\"openDialog('修改工作流任务委托', '${ctx}/activityassignment/activityAssignment/form?id="+d.id+"','95%', '95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>"
+
+                        if(d.candel != undefined && d.candel == "1")
+                            xml +="<a href=\"${ctx}/activityassignment/activityAssignment/delete?id="+ d.id +"\" onclick=\"return confirmx('确认要删除该工作流任务委托吗?', this.href)\"   class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 删除</a>";
+                        return xml;
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="activityAssignment" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "id":"${activityAssignment.id}"
+                    ,"createBy":"${activityAssignment.createBy.name}"
+                    ,"name":"${activityAssignment.user.name}"
+                    ,"type":"${fns:getDictLabel(activityAssignment.type, 'assignmentType', '')}"
+                    ,"startDate":"<fmt:formatDate value="${activityAssignment.startDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"
+                    ,"endDate":"<fmt:formatDate value="${activityAssignment.endDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"
+                    ,"remarks":"<c:out value="${activityAssignment.remarks}" escapeXml="true"/>"
+					<shiro:hasPermission name="activityassignment:activityAssignment:edit">,"canedit":
+						<c:if test="${fns:getUser().id == activityAssignment.createBy.id }">"1"</c:if>
+                    	<c:if test="${fns:getUser().id != activityAssignment.createBy.id }">"0"</c:if>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="activityassignment:activityAssignment:del">,"candel":
+						<c:if test="${fns:getUser().id == activityAssignment.createBy.id }">"1"</c:if>
+                   		 <c:if test="${fns:getUser().id != activityAssignment.createBy.id }">"0"</c:if>
+					</shiro:hasPermission>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+        });
+        function deleteAll(){
+            var checkStatus = layui.table.checkStatus('contentTable');
+            var data = checkStatus.data;
+            var ids="";
+            for(var i = 0; i < data.length;i++)
+			{
+			    if(i != 0)
+				    ids += "," + data[i].id;
+				else
+				    ids += data[i].id;
+			}
+
+            if(ids == ""){
+                top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+                return;
+            }
+            top.layer.confirm('确认要彻底删除数据吗?', {icon: 3, title:'系统提示'}, function(index){
+                window.location = "/a/activityassignment/activityAssignment/deleteAll?ids="+ids;
+                top.layer.close(index);
+            });
+        }
+        $('#deleteRows').on('click',deleteAll);
+    })
+
+    resizeListTable();/*消除由于有竖向滚动条造成table出现横向滚动条*/
+    $("a").on("click",addLinkVisied);
+</script>
+<script type="text/javascript">
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 88 - 0
src/main/webapp/webpage/modules/activityassignment/activityAssignmentView.jsp

@@ -0,0 +1,88 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作流任务委托管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  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);
+					}
+				}
+			});
+            laydate.render({
+                elem: '#startDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+                ,type: 'datetime'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+                ,type: 'datetime'
+            });
+		});
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container view-form">
+		<form:form id="inputForm" modelAttribute="activityAssignment" action="${ctx}/activityassignment/activityAssignment/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+			<div class="form-group layui-row first lw8">
+				<div class="form-group-label"><h2>委托信息</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">被委托人:</label>
+					<div class="layui-input-block with-icon">
+						<input class="form-control layui-input" readonly="true" value="${activityAssignment.user.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">委托类型:</label>
+					<div class="layui-input-block">
+						<input class="form-control layui-input" readonly="true" value="${fns:getDictLabel(activityAssignment.type, 'assignmentType', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">委托开始时间:</label>
+					<div class="layui-input-block">
+						<input class="form-control layui-input" readonly="true" value="<fmt:formatDate value="${activityAssignment.startDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">委托结束时间:</label>
+					<div class="layui-input-block">
+						<input class="form-control layui-input" readonly="true" value="<fmt:formatDate value="${activityAssignment.endDate}" 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">
+						<textarea path="remarks" htmlEscape="false" rows="4"  style="resize:none"   class="form-control ">${activityAssignment.remarks}</textarea>
+					</div>
+				</div>
+			</div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 75 - 0
src/main/webapp/webpage/modules/alterinfo/alterInfoForm.jsp

@@ -0,0 +1,75 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>变更作废明细管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  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);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="alterInfo" action="${ctx}/alterinfo/alterInfo/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-35">
+						<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">原因:</label></td>
+					<td class="width-35">
+						<form:input path="reason" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">模块标识:</label></td>
+					<td class="width-35">
+						<form:input path="type" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">业务id:</label></td>
+					<td class="width-35">
+						<form:input path="beforeId" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">业务类型:</label></td>
+					<td class="width-35">
+						<form:input path="style" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"></td>
+		   			<td class="width-35" ></td>
+		  		</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 142 - 0
src/main/webapp/webpage/modules/alterinfo/alterInfoList.jsp

@@ -0,0 +1,142 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>变更作废明细管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>变更作废明细列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="#">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="#">选项1</a>
+				</li>
+				<li><a href="#">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="alterInfo" action="${ctx}/alterinfo/alterInfo/" 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="form-group">
+			<span>模块标识:</span>
+				<form:input path="type" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+			<span>业务类型:</span>
+				<form:input path="style" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="alterinfo:alterInfo:add">
+				<table:addRow url="${ctx}/alterinfo/alterInfo/form" title="变更作废明细"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="alterinfo:alterInfo:edit">
+			    <table:editRow url="${ctx}/alterinfo/alterInfo/form" title="变更作废明细" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="alterinfo:alterInfo:del">
+				<table:delRow url="${ctx}/alterinfo/alterInfo/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="alterinfo:alterInfo:import">
+				<table:importExcel url="${ctx}/alterinfo/alterInfo/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="alterinfo:alterInfo:export">
+	       		<table:exportExcel url="${ctx}/alterinfo/alterInfo/export"></table:exportExcel><!-- 导出按钮 -->
+	       	</shiro:hasPermission>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th> <input type="checkbox" class="i-checks"></th>
+				<th  class="sort-column remarks">备注信息</th>
+				<th  class="sort-column reason">原因</th>
+				<th  class="sort-column type">模块标识</th>
+				<th  class="sort-column beforeId">业务id</th>
+				<th  class="sort-column style">业务类型</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="alterInfo">
+			<tr>
+				<td> <input type="checkbox" id="${alterInfo.id}" class="i-checks"></td>
+				<td><a  href="#" onclick="openDialogView('查看变更作废明细', '${ctx}/alterinfo/alterInfo/form?id=${alterInfo.id}','800px', '500px')">
+					${alterInfo.remarks}
+				</a></td>
+				<td>
+					${alterInfo.reason}
+				</td>
+				<td>
+					${alterInfo.type}
+				</td>
+				<td>
+					${alterInfo.beforeId}
+				</td>
+				<td>
+					${alterInfo.style}
+				</td>
+				<td>
+					<shiro:hasPermission name="alterinfo:alterInfo:view">
+						<a href="#" onclick="openDialogView('查看变更作废明细', '${ctx}/alterinfo/alterInfo/form?id=${alterInfo.id}','800px', '500px')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="alterinfo:alterInfo:edit">
+    					<a href="#" onclick="openDialog('修改变更作废明细', '${ctx}/alterinfo/alterInfo/form?id=${alterInfo.id}','800px', '500px')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="alterinfo:alterInfo:del">
+						<a href="${ctx}/alterinfo/alterInfo/delete?id=${alterInfo.id}" onclick="return confirmx('确认要删除该变更作废明细吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+					</shiro:hasPermission>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 169 - 0
src/main/webapp/webpage/modules/appversion/appVersionsForm.jsp

@@ -0,0 +1,169 @@
+<%@ 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{
+            left:0;
+            top:40px;
+        }
+    </style>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            var val=$("#tel_remarks option:selected").val();
+            if(val=="Android"){
+                var obj =$("#appFile")[0].files[0];
+                var fileType = obj.name;
+                console.info(fileType);
+                if(fileType.endsWith("apk")){
+
+                }else {
+                    //需要置空
+                    var file = $("#appFile");
+                    file.after(file.clone().val(""));
+                    file.remove();
+                    top.layer.alert('请上传*.apk格式的文件',{icon:0,title:'系统提示'});
+                    return false ;
+                }
+            }
+
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  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);
+					}
+				}
+			});
+			//查看时禁用
+            $("input,select,textarea").attr("disabled",${readAttr});
+
+            //默认不显示
+            $("#android_app_url,#android_app_files").hide();
+        });
+        
+		function  select_ios_android() {
+            var remarks = $("#tel_remarks option:selected").val().toLocaleLowerCase();
+            if("android" == remarks){
+                $("#android_app_files").show();
+            }else if("ios" == remarks){
+                $("#android_app_files").hide();
+            }
+        }
+    </script>
+    <style>
+        /*超过5个汉字,调整label的长度,以下是配套的*/
+        .layui-item .layui-form-label{
+            width:90px;
+        }
+        .form-group .layui-item .layui-input-block,
+        .query .layui-input-block {
+            margin-left: 116px;
+        }
+    </style>
+</head>
+<body >
+<div class="single-form">
+    <div class="container">
+		<form:form id="inputForm" modelAttribute="appversions" enctype="multipart/form-data" action="${ctx}/appversion/appversions/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+        <%--<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+            <tbody>
+            <tr>
+                <td  class="width-15 active">	<label class="pull-right"><font color="red">*</font>手机类型:</label></td>
+                <td class="width-35" >
+                    <form:select path="remarks" id="tel_remarks" class="form-control input-sm" onchange="select_ios_android();">
+                        <form:option value="" label=""/>
+                        <form:option items="IOS" value="IOS" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        <form:option items="Android" value="Android" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                    </form:select>
+                </td>
+                <td  class="width-15 active">	<label class="pull-right"><font color="red">*</font>版本信息:</label></td>
+                <td class="width-35" ><form:input path="versions" htmlEscape="false" maxlength="200" class="form-control required"/></td>
+            </tr>
+            <tr>
+                <td  class="width-15 active">	<label class="pull-right"><font color="red">*</font>更新内容:</label></td>
+                <td class="width-75" colspan="3" >
+                    <form:textarea path="content" htmlEscape="false" colspan="3" rows="6" maxlength="550" class="form-control "/>
+                </td>
+            </tr>
+            <tr id="android_app_url">
+                <td class="width-15 active"><label class="pull-right"><font color="red">*</font>下载地址:</label></td>
+                <td class="width-75" colspan="3">
+                    <form:textarea  path="url" htmlEscape="false" colspan="3" rows="2" maxlength="550" cssClass="form-control"/><br>
+                </td>
+            </tr>
+            <tr id="android_app_files">
+                <td  class="width-15 active">	<label class="pull-right">上传Android APP:</label></td>
+                <td class="width-75" colspan="3" >
+&lt;%&ndash;
+                    <form:hidden id="files" path="files" htmlEscape="false" maxlength="255" class="form-control"/>
+                    <sys:ckfinder input="files" type="files" uploadPath="/appversion/appversions" selectMultiple="true"/>
+&ndash;%&gt;
+                    <input type="file" name="appFile"/>
+                </td>
+            </tr>
+            </tbody>--%>
+            <div class="form-group layui-row first">
+            <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:select  path="remarks" id="tel_remarks" class="form-control required  simple-select" onchange="select_ios_android();">
+                        <form:option value="" label=""/>
+                        <form:option items="IOS" value="IOS" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        <form:option items="Android" value="Android" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                    </form:select>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6">
+                <label class="layui-form-label"><span class="require-item">*</span>版本信息:</label>
+                <div class="layui-input-block">
+                    <form:input path="versions" htmlEscape="false"   id="versions"  class="form-control required layui-input" value="${appversions.versions}"/>
+                </div>
+            </div>
+                <div class="layui-item layui-col-sm6" id="android_app_url">
+                    <label class="layui-form-label"><span class="require-item">*</span>下载地址:</label>
+                    <div class="layui-input-block">
+                        <form:input path="url" htmlEscape="false"   id="model"  class="form-control required layui-input" value="${appversions.url}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6" id="android_app_files">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>上传Android APP:</label>
+                    <div class="layui-input-block">
+                        <input type="file" name="appFile" id="appFile"/>
+                    </div>
+                </div>
+            <div class="layui-item layui-col-sm12">
+                <label class="layui-form-label">更新内容:</label>
+                <div class="layui-input-block">
+                    <form:textarea path="content" htmlEscape="false"  rows="6" maxlength="550" class="form-control "/>
+                </div>
+            </div>
+
+    </div>
+    <div class="form-group layui-row page-end"></div>
+	</form:form>
+    </div>
+</div>
+</body>
+</html>

+ 304 - 0
src/main/webapp/webpage/modules/appversion/appVersionsList.jsp

@@ -0,0 +1,304 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>版本信息管理</title>
+	<meta name="decorator" content="default"/>
+
+
+	<style>
+		.widthClass{
+			display: inline-block;
+		}
+		.shows .input-group{
+			width: 48%!important;
+		}
+	</style>
+	<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="contentShadow layui-row" id="queryDiv">
+                <form:form id="searchForm" modelAttribute="appversions" action="${ctx}/appversion/appversions/" 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 ">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">版本:</label>
+							<div class="layui-input-block">
+								<input id="versions" name="versions" type="text"  maxlength="64" class=" form-control  layui-input laydate-icon" value="${appversions.versions}" />
+								</input>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">类型:</label>
+							<div class="layui-input-block">
+								<form:select path="remarks" class=" form-control  simple-select">
+									<form:option items="" value="" label=""/>
+									<form:option items="IOS" value="IOS" label="IOS" itemLabel="label"/>
+									<form:option items="Android" value="Android" label="Android" itemLabel="label"/>
+								</form:select>
+							</div>
+						</div>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+								<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+                </form:form>
+                <br/>
+            </div>
+        </div>
+	<!-- 工具栏 -->
+		<div class="full-width fl">
+			<div class="contentShadow layui-form contentDetails">
+				<div class="nav-btns">
+			<shiro:hasPermission name="appversion:appversions:add">
+				<!-- 增加按钮 -->
+				<a href="javascript:void(0)" onclick="openDialogre('新增版本信息', '${ctx}/appversion/appversions/form','95%','95%')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i>&nbsp;添加</a>
+			</shiro:hasPermission>
+<%--
+			<shiro:hasPermission name="appversion:appversions:edit">
+			    <table:editRow url="${ctx}/appversion/appversions/form" title="版本信息" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="appversion:appversions:del">
+				<table:delRow url="${ctx}/appversion/appversions/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+	--%>
+			<shiro:hasPermission name="appversion:appversions:import">
+				<table:importExcel url="${ctx}/appversion/appversions/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="appversion:appversions:export">
+	       		<table:exportExcel url="${ctx}/appversion/appversions/export"></table:exportExcel><!-- 导出按钮 -->
+	       	</shiro:hasPermission>
+					<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="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th style="text-align: center;width:15%"  class="sort-column updateDate">更新时间</th>
+				<th style="text-align: center;width:10%"  class="sort-column remarks">备注信息</th>
+				<th style="text-align: center;width:10%"  class="sort-column versions">版本信息</th>
+				<th style="text-align: center;width:15%"  class="sort-column content">版本更新</th>
+				<th style="text-align: center;width:40%"  class="sort-column url">下载地址</th>
+				<th style="text-align: center;width:10%">操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="appversions">
+			<tr>
+				<td>
+					<fmt:formatDate value="${appversions.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+				</td>
+				<td>
+					${appversions.remarks}
+				</td>
+				<td>
+					${appversions.versions}
+				</td>
+				<td>
+					${appversions.content}
+				</td>
+				<td>
+					<a href="${appversions.url}">${appversions.url}</a>
+				</td>
+				<td>
+					<div style="text-align: center">
+					<shiro:hasPermission name="appversion:appversions:view">
+						<a href="javascript:void(0)" onclick="openDialogView('查看版本信息', '${ctx}/appversion/appversions/form?id=${appversions.id}&readAttr=disabled','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+    				<shiro:hasPermission name="appversion:appVersions:del">
+						<a href="${ctx}/appversion/appversions/delete?id=${appversions.id}" onclick="return confirmx('确认要删除该版本信息吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+					</shiro:hasPermission>
+					</div>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>--%>
+				<table class="oa-table layui-table" id="contentTable"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable'
+            ,page: false
+            ,cols: [[
+                {field:'updateDate',align:'center',sort: true, width:150,title: '更新时间', templet:function(d){
+                        return "<span title='"+ d.updateDate +"'>" + d.updateDate + "</span>";
+                    }},
+                {field:'remarks',align:'center', minWidth:150, title: '备注信息',templet:function(d){
+                        return "<span title='"+ d.remarks +"'>" + d.remarks + "</span>";
+                    }}
+                ,{field:'versions',align:'center', minWidth:150, title: '版本信息',templet:function(d){
+                        return "<span title='"+ d.versions +"'>" + d.versions + "</span>";
+                    }}
+                ,{field:'content',align:'center', minWidth:150, title: '版本更新',templet:function(d){
+                        return "<span title='"+ d.content +"'>" + d.content + "</span>";
+                    }}
+                ,{field:'url',align:'center',minWidth:200, title: '下载地址',templet:function(d){
+                        var xml = "<a class=\"attention-info\" href=\""+d.url+"\" >" +
+                            "<span title=" + d.url + ">" + d.url + "</span></a>";
+                        return xml;
+                    }}
+                ,{align:'caozuo',align:'center',title:"操作",width:80,templet:function(d){
+                        ////对操作进行初始化
+                        var xml = "";
+                            xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogView('查看版本信息', '${ctx}/appversion/appversions/form?id="+ d.id + "&readAttr=disabled','95%','95%')\" class=\"op-btn op-btn-view\" ><i class=\"fa fa-view\"></i> 查看</a>";
+                        return xml;
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="appversions" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                "id":"${appversions.id}"
+                    ,"updateDate":"<fmt:formatDate value="${appversions.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"
+                    ,"remarks":"${appversions.remarks}"
+                    ,"versions":"${appversions.versions}"
+                    ,"content":"${appversions.content}"
+                    ,"url":"${appversions.url}"
+                }
+                </c:forEach>
+                </c:if>
+            ]
+        });
+
+    })
+
+    resizeListTable();
+</script>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+<script type="text/javascript">
+    $(document).ready(function() {
+        $("#cus_name").show();
+        $("#cus_name").siblings().hide();
+        //搜索框收放
+        $('#moresee').click(function(){
+            if($('#moresees').is(':visible'))
+            {
+                $('#moresees').slideUp(0,resizeListWindow1);
+                $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+            }else{
+                $('#moresees').slideDown(0,resizeListWindow1);
+                $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+            }
+        });
+
+    });
+    function switchInput(obj){
+        $("#"+obj).show();
+        $("#"+obj).siblings().hide();
+    }
+    function openDialogre(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: 'two-btns',
+            maxmin: true, //开启最大化最小化按钮
+            content: url ,
+            btn: ['提交','关闭'],
+            yes: function(index, layero){
+                var body = top.layer.getChildFrame('body', index);
+                var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                var inputForm = body.find('#inputForm');
+                var top_iframe;
+                if(target){
+                    top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                }else{
+                    top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                }
+                inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+
+                if(iframeWin.contentWindow.doSubmit() ){
+                    top.layer.close(index);//关闭对话框。
+                    //setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                }
+
+            }
+
+        });
+    }
+
+    function openDialogre(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: 'two-btns',
+            maxmin: true, //开启最大化最小化按钮
+            content: url ,
+            btn: ['提交','关闭'],
+            yes: function(index, layero){
+                var body = top.layer.getChildFrame('body', index);
+                var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                var inputForm = body.find('#inputForm');
+                var top_iframe;
+                if(target){
+                    top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                }else{
+                    top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                }
+                inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+
+                if(iframeWin.contentWindow.doSubmit() ){
+                    top.layer.close(index);//关闭对话框。
+                    //setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                }
+
+            }
+
+        });
+    }
+</script>
+</body>
+</html>

+ 85 - 0
src/main/webapp/webpage/modules/buydetails/buyDetailsForm.jsp

@@ -0,0 +1,85 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>采购明细管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  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);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="buyDetails" action="${ctx}/buydetails/buyDetails/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>名称:</label></td>
+					<td class="width-35">
+						<form:input path="name" htmlEscape="false"    class="form-control required"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>规格:</label></td>
+					<td class="width-35">
+						<form:input path="format" htmlEscape="false"    class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>数量:</label></td>
+					<td class="width-35">
+						<form:input path="amount" htmlEscape="false"    class="form-control required"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>单位:</label></td>
+					<td class="width-35">
+						<form:input path="unit" htmlEscape="false"    class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>价格:</label></td>
+					<td class="width-35">
+						<form:input path="price" htmlEscape="false"    class="form-control required"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-35">
+						<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+					</td>
+		  		</tr>
+				<tr>
+
+					<%--<td class="width-15 active"><label class="pull-right">采购申请:</label></td>
+					<td class="width-35">
+						<sys:gridselect url="${ctx}/buydetails/buyDetails/selectoaBuy" id="oaBuy" name="oaBuy.id"  value="${buyDetails.oaBuy.id}"  title="选择采购申请id" labelName="oaBuy.id"
+										labelValue="${buyDetails.oaBuy.id}" cssClass="form-control required" fieldLabels="采购申请表" fieldKeys="OaBuy" searchLabel="id" searchKey="id" ></sys:gridselect>
+					</td>--%>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 146 - 0
src/main/webapp/webpage/modules/buydetails/buyDetailsList.jsp

@@ -0,0 +1,146 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>采购明细管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>采购明细列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="buyDetails" action="${ctx}/buydetails/buyDetails/" 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="form-group">
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="buydetails:buyDetails:add">
+				<table:addRow url="${ctx}/buydetails/buyDetails/form" title="采购明细"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="buydetails:buyDetails:edit">
+			    <table:editRow url="${ctx}/buydetails/buyDetails/form" title="采购明细" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="buydetails:buyDetails:del">
+				<table:delRow url="${ctx}/buydetails/buyDetails/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="buydetails:buyDetails:import">
+				<table:importExcel url="${ctx}/buydetails/buyDetails/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="buydetails:buyDetails:export">
+	       		<table:exportExcel url="${ctx}/buydetails/buyDetails/export"></table:exportExcel><!-- 导出按钮 -->
+	       	</shiro:hasPermission>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th> <input type="checkbox" class="i-checks"></th>
+				<th  class="sort-column remarks">备注信息</th>
+				<th  class="sort-column oaBuy.id">采购申请id</th>
+				<th  class="sort-column name">名称</th>
+				<th  class="sort-column format">规格</th>
+				<th  class="sort-column amount">数量</th>
+				<th  class="sort-column unit">单位</th>
+				<th  class="sort-column price">价格</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="buyDetails">
+			<tr>
+				<td> <input type="checkbox" id="${buyDetails.id}" class="i-checks"></td>
+				<td><a  href="javascript:void(0)" onclick="openDialogView('查看采购明细', '${ctx}/buydetails/buyDetails/form?id=${buyDetails.id}','80%','80%')">
+					${buyDetails.remarks}
+				</a></td>
+				<td>
+					${buyDetails.}
+				</td>
+				<td>
+					${buyDetails.name}
+				</td>
+				<td>
+					${buyDetails.format}
+				</td>
+				<td>
+					${buyDetails.amount}
+				</td>
+				<td>
+					${buyDetails.unit}
+				</td>
+				<td>
+					${buyDetails.price}
+				</td>
+				<td>
+					<shiro:hasPermission name="buydetails:buyDetails:view">
+						<a href="javascript:void(0)" onclick="openDialogView('查看采购明细', '${ctx}/buydetails/buyDetails/form?id=${buyDetails.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="buydetails:buyDetails:edit">
+    					<a href="javascript:void(0)" onclick="openDialog('修改采购明细', '${ctx}/buydetails/buyDetails/form?id=${buyDetails.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="buydetails:buyDetails:del">
+						<a href="${ctx}/buydetails/buyDetails/delete?id=${buyDetails.id}" onclick="return confirmx('确认要删除该采购明细吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+					</shiro:hasPermission>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 77 - 0
src/main/webapp/webpage/modules/casebuildinfo/caseBuildInfoForm.jsp

@@ -0,0 +1,77 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例-建设单位管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  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);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="caseBuildInfo" action="${ctx}/casebuildinfo/caseBuildInfo/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-35">
+						<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>名称:</label></td>
+					<td class="width-35">
+						<form:input path="name" htmlEscape="false"    class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>联系人名称:</label></td>
+					<td class="width-35">
+						<form:input path="linkedman" htmlEscape="false"    class="form-control required"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>联系电话:</label></td>
+					<td class="width-35">
+						<form:input path="mobile" htmlEscape="false"    class="form-control required number"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>邮箱:</label></td>
+					<td class="width-35">
+						<form:input path="email" htmlEscape="false"    class="form-control required email"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">案例id:</label></td>
+					<td class="width-35">
+						<form:input path="caseId" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 148 - 0
src/main/webapp/webpage/modules/casebuildinfo/caseBuildInfoList.jsp

@@ -0,0 +1,148 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例-建设单位管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>案例-建设单位列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="caseBuildInfo" action="${ctx}/casebuildinfo/caseBuildInfo/" 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="form-group">
+			<span>名称:</span>
+				<form:input path="name" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+			<span>联系人名称:</span>
+				<form:input path="linkedman" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+			<span>联系电话:</span>
+				<form:input path="mobile" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="casebuildinfo:caseBuildInfo:add">
+				<table:addRow url="${ctx}/casebuildinfo/caseBuildInfo/form" title="案例-建设单位"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casebuildinfo:caseBuildInfo:edit">
+			    <table:editRow url="${ctx}/casebuildinfo/caseBuildInfo/form" title="案例-建设单位" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casebuildinfo:caseBuildInfo:del">
+				<table:delRow url="${ctx}/casebuildinfo/caseBuildInfo/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casebuildinfo:caseBuildInfo:import">
+				<table:importExcel url="${ctx}/casebuildinfo/caseBuildInfo/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casebuildinfo:caseBuildInfo:export">
+	       		<table:exportExcel url="${ctx}/casebuildinfo/caseBuildInfo/export"></table:exportExcel><!-- 导出按钮 -->
+	       	</shiro:hasPermission>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th> <input type="checkbox" class="i-checks"></th>
+				<th  class="sort-column remarks">备注信息</th>
+				<th  class="sort-column name">名称</th>
+				<th  class="sort-column linkedman">联系人名称</th>
+				<th  class="sort-column mobile">联系电话</th>
+				<th  class="sort-column email">邮箱</th>
+				<th  class="sort-column caseId">案例id</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="caseBuildInfo">
+			<tr>
+				<td> <input type="checkbox" id="${caseBuildInfo.id}" class="i-checks"></td>
+				<td><a  href="javascript:void(0)" onclick="openDialogView('查看案例-建设单位', '${ctx}/casebuildinfo/caseBuildInfo/form?id=${caseBuildInfo.id}','80%','80%')">
+					${caseBuildInfo.remarks}
+				</a></td>
+				<td>
+					${caseBuildInfo.name}
+				</td>
+				<td>
+					${caseBuildInfo.linkedman}
+				</td>
+				<td>
+					${caseBuildInfo.mobile}
+				</td>
+				<td>
+					${caseBuildInfo.email}
+				</td>
+				<td>
+					${caseBuildInfo.caseId}
+				</td>
+				<td>
+					<shiro:hasPermission name="casebuildinfo:caseBuildInfo:view">
+						<a href="javascript:void(0)" onclick="openDialogView('查看案例-建设单位', '${ctx}/casebuildinfo/caseBuildInfo/form?id=${caseBuildInfo.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="casebuildinfo:caseBuildInfo:edit">
+    					<a href="javascript:void(0)" onclick="openDialog('修改案例-建设单位', '${ctx}/casebuildinfo/caseBuildInfo/form?id=${caseBuildInfo.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="casebuildinfo:caseBuildInfo:del">
+						<a href="${ctx}/casebuildinfo/caseBuildInfo/delete?id=${caseBuildInfo.id}" onclick="return confirmx('确认要删除该案例-建设单位吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+					</shiro:hasPermission>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 76 - 0
src/main/webapp/webpage/modules/casecategory/caseCategoryForm.jsp

@@ -0,0 +1,76 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例分类管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  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);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="caseCategory" action="${ctx}/casecategory/caseCategory/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<%--<sys:message content="${message}"/>--%>
+
+			<div class="form-group layui-row first lw12">
+				<div class="form-group-label"><h2>案例分类</h2></div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label">上级父级编号:</label>
+					<div class="layui-input-block with-icon">
+						<sys:treeselect id="parent" name="parent.id" value="${caseCategory.parent.id}" labelName="parent.name" labelValue="${caseCategory.parent.name}"
+										title="父级编号" url="/casecategory/caseCategory/treeData" extId="${caseCategory.id}" cssClass="form-control simple-select" allowClear="true"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label"><span class="require-item">*</span>编号分类名:</label>
+					<div class="layui-input-block">
+						<form:input path="name" htmlEscape="false"    class="form-control required layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label"><span class="require-item">*</span>排序:</label>
+					<div class="layui-input-block">
+						<form:input path="sort" htmlEscape="false"    class="form-control required digits layui-input"/>
+					</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"   maxlength="255" class="form-control "/>
+					</div>
+				</div>
+			</div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 159 - 0
src/main/webapp/webpage/modules/casecategory/caseCategoryList.jsp

@@ -0,0 +1,159 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例分类管理</title>
+	<meta name="decorator" content="default"/>
+	<%@include file="/webpage/include/treetable.jsp" %>
+	<script type="text/javascript">
+		$(document).ready(function() {
+            var tpl = $("#treeTableTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+            var data = ${fns:toJson(list)}, ids = [], rootIds = [];
+            for (var i=0; i<data.length; i++){
+                ids.push(data[i].id);
+            }
+            ids = ',' + ids.join(',') + ',';
+            for (var i=0; i<data.length; i++){
+                if (ids.indexOf(','+data[i].parentId+',') == -1){
+                    if ((','+rootIds.join(',')+',').indexOf(','+data[i].parentId+',') == -1){
+                        rootIds.push(data[i].parentId);
+                    }
+                }
+            }
+            for (var i=0; i<rootIds.length; i++){
+                addRow("#treeTableList", tpl, data, rootIds[i], true);
+            }
+            $("#treeTable").treeTable({expandLevel : 5});
+		});
+        function addRow(list, tpl, data, pid, root){
+            for (var i=0; i<data.length; i++){
+                var row = data[i];
+                if ((${fns:jsGetVal('row.parentId')}) == pid){
+                    $(list).append(Mustache.render(tpl, {
+                        dict: {
+                            blank123:0}, pid: (root?0:pid), row: row
+                    }));
+                    addRow(list, tpl, data, row.id);
+                }
+            }
+        }
+
+        function refresh(){//刷新
+            window.location="${ctx}/casecategory/caseCategory/";
+        }
+	</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="contentShadow layui-row" id="queryDiv">
+					<form:form id="searchForm" modelAttribute="caseCategory" action="${ctx}/casecategory/caseCategory/" 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">
+							<div class="layui-item query athird">
+								<label class="layui-form-label">编号分类名:</label>
+								<div class="layui-input-block with-icon">
+									<form:input path="name" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+								</div>
+							</div>
+							<div class="layui-item athird fr">
+								<div class="input-group">
+									<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+									<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+								</div>
+							</div>
+							<div style="    clear:both;"></div>
+						</div>
+
+					</form:form>
+				</div>
+			</div>
+			<div class="full-width fl">
+				<div class="contentShadow layui-form contentDetails">
+					<div class="nav-btns">
+						<shiro:hasPermission name="casecategory:caseCategory:add">
+							<table:addRow url="${ctx}/casecategory/caseCategory/form" title="案例分类"></table:addRow><!-- 增加按钮 -->
+						</shiro:hasPermission>
+
+						<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="treeTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+						<thead>
+						<tr>
+							<th style="text-align: center;">编号分类名</th>
+							<th style="text-align: center;width:70px">排序</th>
+							<th style="text-align: center;width:400px;">备注</th>
+							<shiro:hasPermission name="casecategory:caseCategory:edit">
+							<th style="text-align: center;width: 280px">操作</th>
+							</shiro:hasPermission>
+						</tr>
+						</thead>
+						<tbody id="treeTableList"></tbody>
+					</table>
+					<script type="text/template" id="treeTableTpl">
+						<tr id="{{row.id}}" pId="{{pid}}">
+							<td><a  href="javascript:void(0)" onclick="openDialogView('查看编码管理', '${ctx}/casecategory/caseCategory/form?id={{row.id}}&tabId=0','95%','95%')">
+								{{row.name}}
+							</a></td>
+							<td>
+								{{row.sort}}
+							</td>
+							<td>
+								{{row.remarks}}
+							</td>
+							<td class="op-td">
+								<div style="text-align: center">
+								<%--<shiro:hasPermission name="casecategory:caseCategory:view">
+									<a href="javascript:void(0)" onclick="openDialogView('查看编码管理', '${ctx}/casecategory/caseCategory/form?id={{row.id}}','95%','95%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i>  查看</a>
+								</shiro:hasPermission>--%>
+								<shiro:hasPermission name="casecategory:caseCategory:edit">
+									<a href="javascript:void(0)" onclick="openDialog('修改编码管理', '${ctx}/casecategory/caseCategory/form?id={{row.id}}','95%','95%')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>
+								</shiro:hasPermission>
+								<shiro:hasPermission name="casecategory:caseCategory:del">
+									<a href="${ctx}/casecategory/caseCategory/delete?id={{row.id}}" onclick="return confirmx('确认要删除该编码管理及所有子编码管理吗?', this.href)" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i> 删除</a>
+								</shiro:hasPermission>
+								<shiro:hasPermission name="casecategory:caseCategory:add">
+									<a href="javascript:void(0)" onclick="openDialog('添加下级编码管理', '${ctx}/casecategory/caseCategory/form?parent.id={{row.id}}','95%','95%')" class="op-btn op-btn-add" ><i class="fa fa-plus"></i> 添加下级编码管理</a>
+								</shiro:hasPermission>
+								</div>
+							</td>
+						</tr>
+					</script>
+				</div>
+			</div>
+		</div>
+	</div>
+	<script>
+        resizeListWindow1();
+        $(window).resize(function(){
+            resizeListWindow1();
+        });
+	</script>
+	
+		<!-- 分页代码 -->
+	<%--<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>--%>
+<%--</div>--%>
+</body>
+</html>

+ 74 - 0
src/main/webapp/webpage/modules/casecategory/caseCategoryView.jsp

@@ -0,0 +1,74 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例分类管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  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);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body >
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="caseCategory" action="${ctx}/casecategory/caseCategory/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+
+			<div class="form-group layui-row first lw12">
+				<div class="form-group-label"><h2>案例分类</h2></div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label">上级父级编号:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  readonly="true"  class="form-control required layui-input" value="${caseCategory.parent.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label"><span class="require-item">*</span>编号分类名:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  readonly="true"  class="form-control required layui-input" value="${caseCategory.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label"><span class="require-item">*</span>排序:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  readonly="true"  class="form-control required layui-input" value="${caseCategory.sort}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label">备注信息:</label>
+					<div class="layui-input-block">
+						<textarea htmlEscape="false" rows="4" readonly="true"    maxlength="255" class="form-control ">${caseCategory.remarks}</textarea>
+					</div>
+				</div>
+			</div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 75 - 0
src/main/webapp/webpage/modules/casedesigninfo/caseDesignInfoForm.jsp

@@ -0,0 +1,75 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例-设计单位管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  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);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="caseDesignInfo" action="${ctx}/casedesigninfo/caseDesignInfo/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-35">
+						<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>名称:</label></td>
+					<td class="width-35">
+						<form:input path="name" htmlEscape="false"    class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>联系人:</label></td>
+					<td class="width-35">
+						<form:input path="linkedman" htmlEscape="false"    class="form-control required"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>联系方式:</label></td>
+					<td class="width-35">
+						<form:input path="mobile" htmlEscape="false"    class="form-control required number"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">邮箱:</label></td>
+					<td class="width-35">
+						<form:input path="email" htmlEscape="false"    class="form-control  email"/>
+					</td>
+					<td class="width-15 active"></td>
+		   			<td class="width-35" ></td>
+		  		</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 144 - 0
src/main/webapp/webpage/modules/casedesigninfo/caseDesignInfoList.jsp

@@ -0,0 +1,144 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例-设计单位管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>案例-设计单位列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="caseDesignInfo" action="${ctx}/casedesigninfo/caseDesignInfo/" 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="form-group">
+			<span>名称:</span>
+				<form:input path="name" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+			<span>联系人:</span>
+				<form:input path="linkedman" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+			<span>联系方式:</span>
+				<form:input path="mobile" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="casedesigninfo:caseDesignInfo:add">
+				<table:addRow url="${ctx}/casedesigninfo/caseDesignInfo/form" title="案例-设计单位"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casedesigninfo:caseDesignInfo:edit">
+			    <table:editRow url="${ctx}/casedesigninfo/caseDesignInfo/form" title="案例-设计单位" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casedesigninfo:caseDesignInfo:del">
+				<table:delRow url="${ctx}/casedesigninfo/caseDesignInfo/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casedesigninfo:caseDesignInfo:import">
+				<table:importExcel url="${ctx}/casedesigninfo/caseDesignInfo/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casedesigninfo:caseDesignInfo:export">
+	       		<table:exportExcel url="${ctx}/casedesigninfo/caseDesignInfo/export"></table:exportExcel><!-- 导出按钮 -->
+	       	</shiro:hasPermission>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th> <input type="checkbox" class="i-checks"></th>
+				<th  class="sort-column remarks">备注信息</th>
+				<th  class="sort-column name">名称</th>
+				<th  class="sort-column linkedman">联系人</th>
+				<th  class="sort-column mobile">联系方式</th>
+				<th  class="sort-column email">邮箱</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="caseDesignInfo">
+			<tr>
+				<td> <input type="checkbox" id="${caseDesignInfo.id}" class="i-checks"></td>
+				<td><a  href="javascript:void(0)" onclick="openDialogView('查看案例-设计单位', '${ctx}/casedesigninfo/caseDesignInfo/form?id=${caseDesignInfo.id}','80%','80%')">
+					${caseDesignInfo.remarks}
+				</a></td>
+				<td>
+					${caseDesignInfo.name}
+				</td>
+				<td>
+					${caseDesignInfo.linkedman}
+				</td>
+				<td>
+					${caseDesignInfo.mobile}
+				</td>
+				<td>
+					${caseDesignInfo.email}
+				</td>
+				<td>
+					<shiro:hasPermission name="casedesigninfo:caseDesignInfo:view">
+						<a href="javascript:void(0)" onclick="openDialogView('查看案例-设计单位', '${ctx}/casedesigninfo/caseDesignInfo/form?id=${caseDesignInfo.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="casedesigninfo:caseDesignInfo:edit">
+    					<a href="javascript:void(0)" onclick="openDialog('修改案例-设计单位', '${ctx}/casedesigninfo/caseDesignInfo/form?id=${caseDesignInfo.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="casedesigninfo:caseDesignInfo:del">
+						<a href="${ctx}/casedesigninfo/caseDesignInfo/delete?id=${caseDesignInfo.id}" onclick="return confirmx('确认要删除该案例-设计单位吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+					</shiro:hasPermission>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 77 - 0
src/main/webapp/webpage/modules/caseexecuteinfo/caseExecuteInfoForm.jsp

@@ -0,0 +1,77 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例-施工单位管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  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);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="caseExecuteInfo" action="${ctx}/caseexecuteinfo/caseExecuteInfo/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-35">
+						<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>单位名称:</label></td>
+					<td class="width-35">
+						<form:input path="name" htmlEscape="false"    class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>联系人姓名:</label></td>
+					<td class="width-35">
+						<form:input path="linkedman" htmlEscape="false"    class="form-control required"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>联系方式:</label></td>
+					<td class="width-35">
+						<form:input path="mobile" htmlEscape="false"    class="form-control required number"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">邮箱:</label></td>
+					<td class="width-35">
+						<form:input path="email" htmlEscape="false"    class="form-control  email"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">案例id:</label></td>
+					<td class="width-35">
+						<form:input path="caseId" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 148 - 0
src/main/webapp/webpage/modules/caseexecuteinfo/caseExecuteInfoList.jsp

@@ -0,0 +1,148 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例-施工单位管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>案例-施工单位列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="caseExecuteInfo" action="${ctx}/caseexecuteinfo/caseExecuteInfo/" 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="form-group">
+			<span>单位名称:</span>
+				<form:input path="name" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+			<span>联系人姓名:</span>
+				<form:input path="linkedman" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+			<span>联系方式:</span>
+				<form:input path="mobile" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="caseexecuteinfo:caseExecuteInfo:add">
+				<table:addRow url="${ctx}/caseexecuteinfo/caseExecuteInfo/form" title="案例-施工单位"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="caseexecuteinfo:caseExecuteInfo:edit">
+			    <table:editRow url="${ctx}/caseexecuteinfo/caseExecuteInfo/form" title="案例-施工单位" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="caseexecuteinfo:caseExecuteInfo:del">
+				<table:delRow url="${ctx}/caseexecuteinfo/caseExecuteInfo/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="caseexecuteinfo:caseExecuteInfo:import">
+				<table:importExcel url="${ctx}/caseexecuteinfo/caseExecuteInfo/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="caseexecuteinfo:caseExecuteInfo:export">
+	       		<table:exportExcel url="${ctx}/caseexecuteinfo/caseExecuteInfo/export"></table:exportExcel><!-- 导出按钮 -->
+	       	</shiro:hasPermission>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th> <input type="checkbox" class="i-checks"></th>
+				<th  class="sort-column remarks">备注信息</th>
+				<th  class="sort-column name">单位名称</th>
+				<th  class="sort-column linkedman">联系人姓名</th>
+				<th  class="sort-column mobile">联系方式</th>
+				<th  class="sort-column email">邮箱</th>
+				<th  class="sort-column caseId">案例id</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="caseExecuteInfo">
+			<tr>
+				<td> <input type="checkbox" id="${caseExecuteInfo.id}" class="i-checks"></td>
+				<td><a  href="javascript:void(0)" onclick="openDialogView('查看案例-施工单位', '${ctx}/caseexecuteinfo/caseExecuteInfo/form?id=${caseExecuteInfo.id}','80%','80%')">
+					${caseExecuteInfo.remarks}
+				</a></td>
+				<td>
+					${caseExecuteInfo.name}
+				</td>
+				<td>
+					${caseExecuteInfo.linkedman}
+				</td>
+				<td>
+					${caseExecuteInfo.mobile}
+				</td>
+				<td>
+					${caseExecuteInfo.email}
+				</td>
+				<td>
+					${caseExecuteInfo.caseId}
+				</td>
+				<td>
+					<shiro:hasPermission name="caseexecuteinfo:caseExecuteInfo:view">
+						<a href="javascript:void(0)" onclick="openDialogView('查看案例-施工单位', '${ctx}/caseexecuteinfo/caseExecuteInfo/form?id=${caseExecuteInfo.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="caseexecuteinfo:caseExecuteInfo:edit">
+    					<a href="javascript:void(0)" onclick="openDialog('修改案例-施工单位', '${ctx}/caseexecuteinfo/caseExecuteInfo/form?id=${caseExecuteInfo.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="caseexecuteinfo:caseExecuteInfo:del">
+						<a href="${ctx}/caseexecuteinfo/caseExecuteInfo/delete?id=${caseExecuteInfo.id}" onclick="return confirmx('确认要删除该案例-施工单位吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+					</shiro:hasPermission>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 173 - 0
src/main/webapp/webpage/modules/caseinfo/caseAllList.jsp

@@ -0,0 +1,173 @@
+<%@ page import="com.jeeplus.modules.sys.utils.UserUtils" %>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例详情管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<%--<div class="ibox-title">
+		<h5>
+			企业案例库
+		</h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>--%>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="caseInfo" action="${ctx}/caseinfo/caseInfo/allList" 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();"/><!-- 支持排序 -->
+		<a href="#" id="moresee" class="fa fa-chevron-down" style="float: right;">更多</a>
+		<div class="form-group">
+			<span>案例名称:</span>
+				<form:input path="name" htmlEscape="false" maxlength="255"  class=" form-control input-sm"/>
+		 </div>
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th style="text-align: center;width: 13%"  class="">所属项目</th>
+				<th style="text-align: center;width: 13%"  class="">案例名称(分部分项)</th>
+				<th style="text-align: center;width: 13%"  class="">案例类别</th>
+				<th style="text-align: center;width: 8%"  class="sort-column startDate">施工时间</th>
+				<th style="text-align: center;width: 8%"  class=" ">工程所在地</th>
+				<th style="text-align: center;width: 15%"  class="">案例分享公司</th>
+				<th style="text-align: center;width: 8%">创建人</th>
+				<th style="text-align: center;width: 8%">审核人</th>
+				<th style="text-align: center;width: 8%"  class="">案例类型</th>
+				<%--<th  class="sort-column endDate">竣工日期</th>--%>
+			</tr>
+		</thead>
+		<tbody>
+		<c:choose>
+			<c:when test="${not empty page.list}">
+		<c:forEach items="${page.list}" var="caseInfo">
+			<%--<c:set var="Sid" scope="session" value="<%= UserUtils.getUser().getId()%>"/>
+			<c:set var="rname" scope="session" value="<%= UserUtils.getSelectRole().get(0).getName()%>"/>--%>
+			<tr>
+				<%--<td> <input type="checkbox" id="${caseInfo.id}" class="i-checks"></td>--%>
+				<td>
+					<c:choose>
+						<c:when test="${caseInfo.ext == 1}">
+							${fns:abbr(caseInfo.contractName,30)}
+						</c:when>
+						<c:otherwise>
+							${fns:abbr(caseInfo.project.projectName,30)}
+						</c:otherwise>
+					</c:choose>
+				</td>
+				<td>
+					<c:choose>
+						<c:when test="${caseInfo.shareStatus == 1}">
+							<a  href="javascript:void(0)" onclick="openDialogView('查看案例详情', '${ctx}/caseinfo/caseInfo/form?id=${caseInfo.id}&tabId=0','80%','80%')">
+									${caseInfo.name}
+							</a>
+						</c:when>
+						<c:otherwise>
+							${caseInfo.name}
+						</c:otherwise>
+					</c:choose>
+				</td>
+				<td>
+						${caseInfo.caseCategory.name}
+				</td>
+				<td>
+					<fmt:formatDate value="${caseInfo.startDate}" pattern="yyyy-MM-dd"/>
+				</td>
+				<%--<td>
+					<fmt:formatDate value="${caseInfo.endDate}" pattern="yyyy-MM-dd"/>
+				</td>--%>
+				<td>
+					${caseInfo.area.name}
+				</td>
+				<td>
+					${caseInfo.companyName}
+				</td>
+				<td>
+					${caseInfo.createBy.name}
+				</td>
+				<td>
+					<c:choose>
+						<c:when test="${caseInfo.status == 1 or caseInfo.status == 2}">
+							未审核
+						</c:when>
+						<c:otherwise>
+							${caseInfo.updateBy.name}
+						</c:otherwise>
+					</c:choose>
+				</td>
+				<td>
+						${fns:getDictLabel(caseInfo.shareStatus, 'share_status', '')}
+				</td>
+			</tr>
+		</c:forEach>
+		</c:when>
+		<c:otherwise>
+			<tr>
+				<td colspan="15" align="center">
+					暂无数据
+				</td>
+			</tr>
+		</c:otherwise>
+		</c:choose>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 205 - 0
src/main/webapp/webpage/modules/caseinfo/caseCompanyList.jsp

@@ -0,0 +1,205 @@
+<%@ page import="com.jeeplus.modules.sys.utils.UserUtils" %>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例详情管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+            laydate.render({
+                elem: '#startDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            //搜索框收放
+            $('#moresee').click(function(){
+                if($('#moresees').is(':visible'))
+                {
+                    $('#moresees').slideUp(0,resizeListWindow1);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+                }else{
+                    $('#moresees').slideDown(0,resizeListWindow1);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+                }
+            });
+		});
+
+	</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="contentShadow layui-row" id="queryDiv">
+					<form:form id="searchForm" modelAttribute="caseInfo" action="${ctx}/caseinfo/caseInfo/companyList" 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">
+							<div class="layui-item query athird">
+								<label class="layui-form-label">案例分类:</label>
+								<div class="layui-input-block with-icon">
+									<sys:treeselect id="caseCategory" name="caseCategory.id" value="${caseInfo.caseCategory.id}" labelName="caseCategory.name" labelValue="${caseInfo.caseCategory.name}"
+													title="区域" url="/casecategory/caseCategory/treeData" cssClass="form-control input-sm" allowClear="true"/>
+								</div>
+							</div>
+							<div class="layui-item query athird">
+								<label class="layui-form-label">创建人:</label>
+								<div class="layui-input-block">
+									<form:input path="createBy.name" 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;">
+							<div class="layui-item query athird">
+								<label class="layui-form-label">分享部门:</label>
+								<div class="layui-input-block with-icon">
+									<sys:treeselect id="office" name="officeId" value="${caseInfo.officeId}" labelName="officeName" labelValue="${caseInfo.officeName}"
+													title="部门" url="/sys/office/treeData?type=2" cssClass=" form-control input-sm" allowClear="true" notAllowSelectParent="true"/>
+								</div>
+							</div>
+							<div class="layui-item query athird">
+								<label class="layui-form-label">施工时间:</label>
+								<div class="layui-input-block">
+									<input id="startDate" name="startDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon"
+										   value="<fmt:formatDate value="${caseInfo.startDate}" pattern="yyyy-MM-dd"/>"/>
+								</div>
+							</div>
+							<div class="layui-item query athird">
+								<label class="layui-form-label">案例类型:</label>
+								<div class="layui-input-block">
+									<form:select path="shareStatus" class="form-control required simple-select">
+										<form:option value="" label=""/>
+										<form:options items="${fns:getDictList('share_status')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+									</form:select>
+								</div>
+							</div>
+							<div class="layui-item query athird">
+								<label class="layui-form-label">案例名称:</label>
+								<div class="layui-input-block">
+									<form:input path="name" 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 with-icon">
+									<sys:treeselect id="area" name="area.id" value="${caseInfo.area.id}" labelName="area.name" labelValue="${caseInfo.area.name}"
+													title="区域" url="/sys/area/treeData" cssClass="form-control input-sm" allowClear="true" notAllowSelectParent="true"/>
+								</div>
+							</div>
+							<div style="clear:both;"></div>
+						</div>
+					</form:form>
+				</div>
+			</div>
+
+			<div class="full-width fl">
+				<div class="contentShadow layui-form contentDetails">
+					<div class="nav-btns">
+						<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+						<div style="clear: both;"></div>
+					</div>
+					<table class="oa-table layui-table" id="contentTable"></table>
+
+					<!-- 分页代码 -->
+					<table:page page="${page}"></table:page>
+					<div style="clear: both;"></div>
+				</div>
+			</div>
+		</div>
+		<div id="changewidth"></div>
+	</div>
+	<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+	<script>
+
+        layui.use('table', function(){
+            layui.table.render({
+                limit:${ page.pageSize }
+                ,elem: '#contentTable'
+                ,page: false
+                ,cols: [[
+                    // {checkbox: true, fixed: true},
+                    {field:'index',align:'center', title: '序号',width:40}
+                    ,{field:'project',align:'center', title: '所属项目',width:150,templet:function(d){
+                            return "<span title='"+ d.project +"'>" + d.project + "</span>";
+                        }}
+                    ,{field:'caseName',align:'center', title: '案例名称(分部分项)',minWidth:200,templet:function(d){
+                            return "<a class=\"attention-info\" title=\"" + d.caseName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看案例详情', '${ctx}/caseinfo/caseInfo/form?id=" + d.id +"&tabId=0','95%', '95%')\">" + d.caseName + "</a>";
+                        }}
+                    ,{field:'caseCate', align:'center',title: '案例类别',width:100,templet:function(d){
+                            return "<span title='"+ d.caseCate +"'>" + d.caseCate + "</span>";
+                        }}
+                    ,{field:'startDate', align:'center',title: '施工时间', width:80}
+                    ,{field:'area',align:'center', title: '工程所在地',  width:100,templet:function(d){
+                            return "<span title=\"" + d.area + "\">" + d.area + "</span>";
+                        }}
+                    ,{field:'company',align:'center', title: '案例分享公司',  width:90,templet:function(d){
+                            return "<span title=\"" + d.company + "\">" + d.company + "</span>";
+                        }}
+                    ,{field:'office',align:'center', title: '案例分享部门',  width:90,templet:function(d){
+                            return "<span title=\"" + d.office + "\">" + d.office + "</span>";
+                        }}
+                    ,{field:'createBy',align:'center', title: '创建人',  width:80}
+                    ,{field:'auditBy',align:'center', title: '审核人',  width:80}
+                    ,{field:'caseType',align:'center', title: '案例类型',  width:80}
+                ]]
+                ,data: [
+                    <c:if test="${ not empty page.list}">
+                    <c:forEach items="${page.list}" var="caseInfo"  varStatus="index">
+                    <c:set var="Sid" scope="session" value="<%= UserUtils.getUser().getId()%>"/>
+                    <c:set var="rname" scope="session" value="<%= UserUtils.getSelectRole().get(0).getName()%>"/>
+                    <c:if test="${index.index != 0}">,</c:if>
+                    {
+                        "index":"${index.index+1}"
+                        ,"id":"${caseInfo.id}"
+                        ,"project":<c:choose><c:when test="${caseInfo.ext == 1}">"${caseInfo.contractName}"</c:when><c:otherwise>"${caseInfo.project.projectName}"</c:otherwise></c:choose>
+                        ,"caseName":"${caseInfo.name}"
+                        ,"caseCate":"${caseInfo.caseCategory.name}"
+                        ,"startDate":"<fmt:formatDate value="${caseInfo.startDate}" pattern="yyyy-MM-dd"/>"
+                        ,"area":"${caseInfo.area.name}"
+                        ,"company":"${caseInfo.companyName}"
+						,"office":"${caseInfo.officeName}"
+                        ,"createBy":"${caseInfo.createBy.name}"
+                        ,"auditBy":<c:choose><c:when test="${caseInfo.status == 1 or caseInfo.status == 2}">"未审核"</c:when><c:otherwise>"${caseInfo.updateBy.name}"</c:otherwise></c:choose>
+                        ,"caseType":"${fns:getDictLabel(caseInfo.shareStatus, 'share_status', '')}"
+                    }
+                    </c:forEach>
+                    </c:if>
+                ]
+                // ,even: true
+                // ,height: 315
+            });
+        })
+
+        resizeListTable();
+	</script>
+	<script>
+        resizeListWindow1();
+        $(window).resize(function(){
+            resizeListWindow1();
+        });
+	</script>
+</body>
+</html>

+ 541 - 0
src/main/webapp/webpage/modules/caseinfo/caseInfoAudit.jsp

@@ -0,0 +1,541 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例审批</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+              if(obj == 1) {
+                  $("#flag").val("yes");
+              }else {
+                  $("#flag").val("no");
+			  }
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  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);
+					}
+				}
+			});
+		});
+
+        function insertTitle(tValue){
+            var list = "${caseInfo.workAttachments}";
+            var str = (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 = $("#id").val();
+            var attachmentFlag = "76";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/caseInfo/"+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,str);
+        }}
+
+        function deleteFileFromAliyun(obj,deleteUrl){
+            $.ajax({
+                type:"post",
+                url:deleteUrl,
+                success:function(data){
+                    if(data.str){
+                        parent.layer.msg('删除成功',{icon:1});
+                        $(obj).parent().parent().remove();
+                    }else {
+                        parent.layer.msg('删除失败',{icon:1});
+                    }
+                }
+            });
+        }
+
+        /*-------------------分割线-------------------*/
+        function addRow(list, idx, tpl, row){
+            var idx1 = $("#caseBuildInfoList tr").length;
+            if(list == '#caseBuildInfoList' && idx1 < 100){
+                bornTemplete(list, idx, tpl, row, idx1);
+            }
+            var idx2 = $("#caseDesignInfoList tr").length;
+            if(list == '#caseDesignInfoList' && idx2 < 100){
+                bornTemplete(list, idx, tpl, row, idx2);
+            }
+            var idx3 = $("#caseExecuteInfoList tr").length;
+            if(list == '#caseExecuteInfoList' && idx3 < 100){
+                bornTemplete(list, idx, tpl, row, idx3);
+            }
+            var idx4 = $("#caseProjectFeatureList tr").length;
+            if(list == '#caseProjectFeatureList' && idx4 < 100){
+                bornTemplete(list, idx, tpl, row, idx4);
+            }
+            var idx5 = $("#caseNormList tr").length;
+            if(list == '#caseNormList' && idx5 < 100){
+                bornTemplete(list, idx, tpl, row, idx5);
+            }
+            var idx6 = $("#caseMaterialsList tr").length;
+            if(list == '#caseMaterialsList' && idx6 < 100){
+                bornTemplete(list, idx, tpl, row, idx6);
+            }
+        }
+        function bornTemplete(list, idx, tpl, row, idx1){
+            $(list).append(Mustache.render(tpl, {
+                idx: idx, delBtn: true, row: row,
+                order:idx1 + 1
+            }));
+            $(list+idx).find("select").each(function(){
+                $(this).val($(this).attr("data-value"));
+            });
+            $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                var ss = $(this).attr("data-value").split(',');
+                for (var i=0; i<ss.length; i++){
+                    if($(this).val() == ss[i]){
+                        $(this).attr("checked","checked");
+                    }
+                }
+            });
+        }
+	</script>
+</head>
+
+<body >
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="caseInfo" action="${ctx}/caseinfo/caseInfo/saveAudit" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+			<form:hidden path="home"/>
+		<form:hidden path="act.taskId"/>
+		<form:hidden path="act.taskName"/>
+		<form:hidden path="act.taskDefKey"/>
+		<form:hidden path="act.procInsId"/>
+		<form:hidden path="act.procDefId"/>
+		<form:hidden id="flag" path="act.flag"/>
+		<sys:message content="${message}"/>
+			<c:set var="status" value="${caseInfo.act.status}" />
+
+			<div class="form-group layui-row first lw7">
+				<div class="form-group-label"><h2>基础信息</h2></div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label"><span class="require-item">*</span>案例类别:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  class="form-control layui-input required" readonly="true" value="${caseInfo.caseCategory.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line"><span class="require-item">*</span>案例名称:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  class="form-control layui-input required" readonly="true" value="${caseInfo.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line"><span class="require-item">*</span>施工时间:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  class="form-control layui-input required" readonly="true" value="<fmt:formatDate value="${caseInfo.startDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line">案例来源:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  class="form-control layui-input required" readonly="true" value="${fns:getDictLabel(caseInfo.source,'case_source','')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line"><span class="require-item">*</span>工程所在地:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  class="form-control layui-input required" readonly="true" value="${caseInfo.area.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label double-line">所属项目:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  class="form-control layui-input required" readonly="true" value="<c:choose><c:when test="${caseInfo.ext eq 0}">${caseInfo.project.projectName}</c:when><c:otherwise>${caseInfo.contractName}</c:otherwise></c:choose>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label">设计单位:</label>
+					<div class="layui-input-block">
+						<table id="bankinfo2" class="table table-bordered table-condensed details">
+							<thead>
+							<tr>
+								<th width="40">序号</th>
+								<th >单位名称</th>
+								<th width="120"class="">联系人名称</th>
+								<th width="170">联系方式</th>
+								<th width="170">邮箱</th>
+							</tr>
+							</thead>
+							<tbody id="caseDesignInfoList">
+							<c:forEach items="${caseInfo.caseDesignInfoList}" var="buyDetails" varStatus="status">
+								<tr>
+									<td>${status.index + 1}</td>
+									<td title="${buyDetails.name}">${buyDetails.name}</td>
+									<td>${buyDetails.linkedman}</td>
+									<td>${buyDetails.mobile}</td>
+									<td>${buyDetails.email}</td>
+								</tr>
+							</c:forEach>
+							<c:if test="${linkManSize == 0}">
+								<tr>
+									<td colspan="8">暂无数据</td>
+								</tr>
+							</c:if>
+							</tbody>
+						</table>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label">建设单位:</label>
+					<div class="layui-input-block">
+						<table id="bankinfo" class="table table-bordered table-condensed details">
+							<thead>
+							<tr>
+								<th width="40">序号</th>
+								<th >单位名称</th>
+								<th width="120"class="">联系人名称</th>
+								<th width="170">联系方式</th>
+								<th width="170">邮箱</th>
+							</tr>
+							</thead>
+							<tbody id="caseBuildInfoList">
+							<c:forEach items="${caseInfo.caseBuildInfoList}" var="buyDetails" varStatus="status">
+								<tr>
+									<td>${status.index + 1}</td>
+									<td title="${buyDetails.name}">${buyDetails.name}</td>
+									<td>${buyDetails.linkedman}</td>
+									<td>${buyDetails.mobile}</td>
+									<td>${buyDetails.email}</td>
+								</tr>
+							</c:forEach>
+							<c:if test="${linkManSize == 0}">
+								<tr>
+									<td colspan="8">暂无数据</td>
+								</tr>
+							</c:if>
+							</tbody>
+						</table>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label">施工单位:</label>
+					<div class="layui-input-block">
+						<table id="bankinfo3" class="table table-bordered table-condensed details">
+							<thead>
+							<tr>
+								<th width="40">序号</th>
+								<th >单位名称</th>
+								<th width="120"class="">联系人名称</th>
+								<th width="170">联系方式</th>
+								<th width="170">邮箱</th>
+							</tr>
+							</thead>
+							<tbody id="caseExecuteInfoList">
+							<c:forEach items="${caseInfo.caseExecuteInfoList}" var="buyDetails" varStatus="status">
+								<tr>
+									<td>${status.index + 1}</td>
+									<td title="${buyDetails.name}">${buyDetails.name}</td>
+									<td>${buyDetails.linkedman}</td>
+									<td>${buyDetails.mobile}</td>
+									<td>${buyDetails.email}</td>
+								</tr>
+							</c:forEach>
+							<c:if test="${linkManSize == 0}">
+								<tr>
+									<td colspan="8">暂无数据</td>
+								</tr>
+							</c:if>
+							</tbody>
+						</table>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 with-textarea">
+					<label class="layui-form-label"><span class="require-item">*</span>项目特征:</label>
+					<div class="layui-input-block">
+						<textarea readonly="true" htmlEscape="false" rows="4" maxlength="2000" class="form-control ">${caseInfo.peculiarity}</textarea>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 with-textarea">
+					<label class="layui-form-label">案例特性:</label>
+					<div class="layui-input-block">
+						<textarea readonly="true"  htmlEscape="false" rows="4"   maxlength="2000" class="form-control ">${caseInfo.feature}</textarea>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line">造价指标:单位造价(元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"    class="form-control number layui-input" value="${caseInfo.price}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>单位:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" class="form-control required layui-input" value="${caseInfo.unit}"/>
+					</div>
+				</div>
+
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label double-line">材料消耗量指标:</label>
+					<div class="layui-input-block">
+						<table id="bankinfo4" class="table table-bordered table-condensed details">
+							<thead>
+							<tr>
+								<th width="40">序号</th>
+								<th width="">名称</th>
+								<th width="220">型号</th>
+								<th width="110">单位消耗量</th>
+								<th width="90">单位</th>
+								<th width="100">合价</th>
+								<th width="90">比重</th>
+							</tr>
+							</thead>
+							<tbody id="caseMaterialsNormList">
+							<c:forEach items="${caseInfo.caseMaterialsNormList}" var="buyDetails" varStatus="status">
+								<tr>
+									<td>${status.index + 1}</td>
+									<td title="${buyDetails.name}">${buyDetails.name}</td>
+									<td>${buyDetails.type}</td>
+									<td>${buyDetails.unitContent}</td>
+									<td>${buyDetails.unit}</td>
+									<td>${buyDetails.allPrice}</td>
+									<td>${buyDetails.proportion}</td>
+								</tr>
+							</c:forEach>
+							<c:if test="${linkManSize == 0}">
+								<tr>
+									<td colspan="8">暂无数据</td>
+								</tr>
+							</c:if>
+							</tbody>
+						</table>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label double-line">机械消耗量指标:</label>
+					<div class="layui-input-block">
+						<table id="bankinfo5" class="table table-bordered table-condensed details">
+							<thead>
+							<tr>
+								<th width="40">序号</th>
+								<th width="">名称</th>
+								<th width="220">型号</th>
+								<th width="110">单位消耗量</th>
+								<th width="90">单位</th>
+								<th width="100">合价</th>
+								<th width="90">比重</th>
+							</tr>
+							</thead>
+							<tbody id="caseMechanicalNormList">
+							<c:forEach items="${caseInfo.caseMechanicalNormList}" var="buyDetails" varStatus="status">
+								<tr>
+									<td>${status.index + 1}</td>
+									<td title="${buyDetails.name}">${buyDetails.name}</td>
+									<td>${buyDetails.type}</td>
+									<td>${buyDetails.unitContent}</td>
+									<td>${buyDetails.unit}</td>
+									<td>${buyDetails.allPrice}</td>
+									<td>${buyDetails.proportion}</td>
+								</tr>
+							</c:forEach>
+							<c:if test="${linkManSize == 0}">
+								<tr>
+									<td colspan="8">暂无数据</td>
+								</tr>
+							</c:if>
+							</tbody>
+						</table>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label double-line">人工消耗量指标:</label>
+					<div class="layui-input-block">
+						<table id="bankinfo6" class="table table-bordered table-condensed details">
+							<thead>
+							<tr>
+								<th width="40">序号</th>
+								<th width="">名称</th>
+								<th width="220">型号</th>
+								<th width="110">单位消耗量</th>
+								<th width="90">单位</th>
+								<th width="100">合价</th>
+								<th width="90">比重</th>
+							</tr>
+							</thead>
+							<tbody id="casePeopleNormList">
+							<c:forEach items="${caseInfo.casePeopleNormList}" var="buyDetails" varStatus="status">
+								<tr>
+									<td>${status.index + 1}</td>
+									<td title="${buyDetails.name}">${buyDetails.name}</td>
+									<td>${buyDetails.type}</td>
+									<td>${buyDetails.unitContent}</td>
+									<td>${buyDetails.unit}</td>
+									<td>${buyDetails.allPrice}</td>
+									<td>${buyDetails.proportion}</td>
+								</tr>
+							</c:forEach>
+							<c:if test="${linkManSize == 0}">
+								<tr>
+									<td colspan="8">暂无数据</td>
+								</tr>
+							</c:if>
+							</tbody>
+						</table>
+					</div>
+				</div>
+
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label double-line">主要材料单价:</label>
+					<div class="layui-input-block">
+						<table id="contentTable" class="table table-bordered table-condensed details">
+							<thead>
+							<tr>
+								<th>材料名称</th>
+								<th width="100px">规格型号</th>
+								<th width="60px">单位</th>
+								<th width="90px">材料含税价</th>
+								<th width="90px">材料除税价</th>
+								<th width="90px">价格取用日期</th>
+								<th width="80px">税率</th>
+								<th width="80px">材质</th>
+								<th>品牌</th>
+							</tr>
+							</thead>
+							<tbody id="workAccountList">
+							<c:forEach items="${caseInfo.caseMaterialsList}" var="caseMaterials" varStatus="status">
+								<tr id="index${status.index}">
+									<td class="hide">${caseMaterials.id}</td>
+									<td>
+										<a title="${caseMaterials.name}" href="javascript:void(0)" onclick="openDialogView('查看材料单信息', '${ctx}/casematerials/caseMaterials/form?id=${caseMaterials.id}&tabId=1','90%','90%')">
+												${caseMaterials.name}
+										</a>
+									</td>
+									<td title="${caseMaterials.specification}">${caseMaterials.specification}</td>
+									<td title="${caseMaterials.calculateUnit}">${caseMaterials.calculateUnit}</td>
+									<td title="${caseMaterials.taxPrice}">${caseMaterials.taxPrice}</td>
+									<td title="${caseMaterials.price}">${caseMaterials.price}</td>
+									<td ><fmt:formatDate value="${caseMaterials.useDate}" pattern="yyyy-MM-dd"/></td>
+									<td class="hide">${fns:getDictLabel(caseMaterials.source, 'caseM_source', '')}</td>
+									<td title="${caseMaterials.tax}">${caseMaterials.tax}</td>
+									<td title="${caseMaterials.material}">${caseMaterials.material}</td>
+									<td title="${caseMaterials.brand}">${caseMaterials.brand}</td>
+									<td class="hide">${caseMaterials.pp}</td>
+									<td class="hide">${caseMaterials.area.name}</td>
+								</tr>
+							</c:forEach>
+							</tbody>
+						</table>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label double-line">偏差分析/记录/其他情况:</label>
+					<div class="layui-input-block">
+						<textarea  htmlEscape="false" rows="4"    class="form-control ">${caseInfo.record}</textarea>
+					</div>
+				</div>
+				<div class="form-group layui-row">
+					<div class="layui-item layui-col-sm12">
+						<label class="layui-form-label">案例类型:</label>
+						<div class="layui-input-block">
+							<input type="radio" value="1" class="i-checks" id="shareStatus" name="shareStatus" onclick="display(this.value)">
+							<label>一般案例</label>
+							<input type="radio" value="2" class="i-checks" id="shareStatus2" name="shareStatus" onclick="display(this.value)" >
+							<label>典型案例</label>
+						</div>
+					</div>
+				</div>
+			</div>
+
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>附件信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+								<%-- <th>序号</th>--%>
+							<th>文件</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:forEach items="${caseInfo.workAttachments}" varStatus="status" var="workClientAttachment">
+							<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}" pattern="yyyy-MM-dd"/></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">下载</a>
+
+											<%--<a href="${ctx}/caseinfo/caseInfo/downLoadAttach?file=${workClientAttachment.url}" class="btn btn-success btn-xs">下载</a>--%>
+											<%--<a href="${workClientAttachment.url}" class="btn btn-info btn-xs">下载</a>--%>
+											<%--<a href="${ctx}/caseinfo/caseInfo/deleteFileFromAliyun?attachmentId=${workClientAttachment.id}&id=${caseInfo.id}">删除</a>--%>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row lw8">
+				<div class="form-group-label"><h2>审批意见</h2></div>
+				<div class="layui-item layui-col-sm12  with-textarea">
+					<label class="layui-form-label">审批意见:</label>
+					<div class="layui-input-block">
+						<form:textarea path="act.comment" class="form-control" rows="4" maxlength="127" />
+						<input type="file" name="upload_files" style="display: none;">
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>审批流程</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<act:flowChart procInsId="${caseInfo.act.procInsId}"/>
+					<act:histoicFlow procInsId="${caseInfo.act.procInsId}"/>
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

File diff suppressed because it is too large
+ 1273 - 0
src/main/webapp/webpage/modules/caseinfo/caseInfoForm.jsp


File diff suppressed because it is too large
+ 1279 - 0
src/main/webapp/webpage/modules/caseinfo/caseInfoForms.jsp


+ 120 - 0
src/main/webapp/webpage/modules/caseinfo/caseInfoHistoricList.jsp

@@ -0,0 +1,120 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>已审核案例管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+        $(document).ready(function() {
+            laydate.render({
+                elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+                ,type: 'datetime'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+                ,type: 'datetime'
+            });
+        });
+	</script>
+</head>
+<body class="gray-bg">
+<div class="wrapper wrapper-content">
+	<div class="ibox">
+		<div class="ibox-title" style="height: 70px;">
+			<h5>
+				<ul class="nav nav-tabs">
+					<li><a href="${ctx}/caseinfo/caseInfo/caseInfoTodoList">待办任务</a></li>
+					<li class="active"><a href="${ctx}/caseinfo/caseInfo/caseInfoHistoricList">已办任务</a></li>
+					<li><a href="${ctx}/caseinfo/caseInfo/list?sign=me">我的案例</a></li>
+					<li ><a href="${ctx}/caseinfo/caseInfo/list">公司案例</a></li>
+				</ul>
+			</h5>
+		</div>
+
+		<div class="ibox-content">
+			<sys:message content="${message}"/>
+			<!--查询条件-->
+			<div class="row">
+				<div class="col-sm-12">
+					<form:form id="searchForm" modelAttribute="act" action="${ctx}/caseinfo/caseInfo/caseInfoHistoricList" method="get" 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="form-group">
+							<label>创建时间:</label>
+							<input id="beginDate"  name="beginDate"  type="text" readonly="readonly" maxlength="20" style="width:200px;" class="laydate-icondate form-control layer-date input-sm"
+								   value="<fmt:formatDate value="${act.beginDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+							 -- 
+							<input id="endDate" name="endDate" type="text" readonly="readonly" maxlength="20" style="width:200px;" class="laydate-icondate form-control layer-date input-sm"
+								   value="<fmt:formatDate value="${act.endDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+						</div>
+					</form:form>
+					<br/>
+				</div>
+			</div>
+			<!-- 工具栏 -->
+			<div class="row">
+				<div class="col-sm-12">
+					<div class="pull-left">
+						<button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+					</div>
+					<div class="pull-right">
+						<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+						<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+					</div>
+				</div>
+			</div>
+			<!-- 表格 -->
+			<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+				<thead>
+				<tr>
+					<th style="text-align: center;width: 10%">流程发起人</th>
+					<th style="text-align: center;width: 10%">当前环节</th>
+					<th style="text-align: center;width: 10%">流程名称</th>
+					<%--<th>流程版本</th>--%>
+					<th style="text-align: center;width: 20%;">案例类别</th>
+					<th style="text-align: center;width: 20%">案例名称</th>
+					<th style="text-align: center;width: 10%">案例来源</th>
+					<%--<th>备注信息</th>--%>
+					<th style="text-align: center;width: 20%">创建时间</th>
+				</tr>
+				</thead>
+				<tbody>
+				<c:forEach items="${list}" var="caseInfo">
+					<c:set var="task" value="${caseInfo.act.task}" />
+					<c:set var="vars" value="${caseInfo.act.vars}" />
+					<c:set var="procDef" value="${caseInfo.act.procDef}" />
+					<c:set var="status" value="${caseInfo.act.status}" />
+					<tr>
+						<td>${caseInfo.act.vars.map.applyUserId}</td>
+						<td>
+								<%--${task.name}--%>
+										${fns:getDictLabel(caseInfo.status, 'workVisa_status','')}
+						</td>
+						<td>${procDef.name}</td>
+						<%--<td><b title='流程版本号'>V: ${procDef.version}</b></td>--%>
+						<td>${caseInfo.caseCategory.name}</td>
+						<td><a  href="javascript:void(0)" onclick="openDialogView('查看案例详情', '${ctx}/caseinfo/caseInfo/form?id=${caseInfo.id}&tabId=0','80%','80%')">
+								${caseInfo.name}
+						</a></td>
+						<td>${fns:getDictLabel(caseInfo.source,'case_source','')}</td>
+						<%--<td>${caseInfo.remarks}</td>--%>
+						<td><fmt:formatDate value="${caseInfo.createDate}" type="both"/></td>
+						<%--<td>
+							</td>--%>
+					</tr>
+				</c:forEach>
+				</tbody>
+			</table>
+			<!-- 分页代码 -->
+			<table:page page="${page}"></table:page>
+			<br/>
+			<br/>
+		</div>
+		<td>${act.vars.map.applyUserId}</td>
+	</div>
+</div>
+</body>
+</html>

+ 119 - 0
src/main/webapp/webpage/modules/caseinfo/caseInfoIndex.jsp

@@ -0,0 +1,119 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例管理</title>
+	<meta name="decorator" content="default"/>
+	<%@include file="/webpage/include/treeview.jsp" %>
+	<%
+		Object sign = request.getAttribute("sign");
+	%>
+	<script type="text/javascript">
+		function refresh(){//刷新
+			
+			window.location="${ctx}/caseinfo/caseInfo/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 class="gray-bg">
+	
+	<div class="wrapper wrapper-content full-width" id="divId">
+	<sys:message content="${message}"/>
+		<div id="content" class="pr full-height full-width">
+			<div id="left"  class="contentShadow fl contents">
+				<div class="ztreeContainer">
+					<div id="ztree" class="ztree leftBox-content"></div>
+				</div>
+			</div>
+			<div id="right"  class="fl contents">
+				<div class="layui-row contentShadow full-height tran-bg">
+					<iframe id="officeContent" name="officeContent" src="${ctx}/caseinfo/caseInfo/list?sign=<%=sign%>" width="100%" height="100%" frameborder="0"></iframe>
+				</div>
+			</div>
+		</div>
+	</div>
+	<script>
+        // function resizeWindow()
+        // {
+            // var winH = $("#divId").height();
+            // var winW = $("#divId").width();
+            // var h = winH - 8;
+			//$("#left").attr("style","height:" + h +"px");
+            // $("#right").attr("style","width:"+ (winW - 220 - 8)  +"px");
+            // $(".ztreeContainer").attr("style","max-height:" + (h - 32 - 2) + "px");
+            // $(".ztreeContainer .ztree").attr("style","min-width:" + (220 -32 - 2) + "px");
+
+            // var updiv= $("#queryDiv").height();
+            // $(".contentDetails").css('height',(winH - updiv - 25) +'px');//这里的div,选择你的那个div
+        // }
+        // resizeWindow();
+        // $(window).resize(function(){
+        //     resizeWindow();
+        // });
+	</script>
+
+	<script type="text/javascript">
+        var sign = '<%=sign%>';
+        console.log(sign);
+
+        function addDiyDom(treeId, treeNode) {
+            var spaceWidth = 15;
+            var switchObj = $("#" + treeNode.tId + "_switch"),
+                icoObj = $("#" + treeNode.tId + "_ico");
+            switchObj.remove();
+            icoObj.before(switchObj);
+
+            if (treeNode.level > 0) {
+                var spaceStr = "<span style='display: inline-block;width:" + (spaceWidth * treeNode.level)+ "px'></span>";
+                switchObj.before(spaceStr);
+            }
+        }
+
+		var setting = {data:{simpleData:{enable:true,idKey:"id",pIdKey:"pId",rootPId:'0'}},
+			callback:{onClick:function(event, treeId, treeNode){
+					var id = treeNode.id == '0' ? '' :treeNode.id;
+					$('#officeContent').attr("src","${ctx}/caseinfo/caseInfo/list?caseCategory.id="+id+"&caseCategory.name="+encodeURI(treeNode.name));
+				}
+			}
+			,view:{
+                showLine: false,
+                showIcon: false,
+                addDiyDom: addDiyDom
+			}
+		};
+		
+		function refreshTree(){
+			$.getJSON("${ctx}/casecategory/caseCategory/treeData",function(data){
+				$.fn.zTree.init($("#ztree"), setting, data);//.expandAll(true);
+			});
+		}
+		refreshTree();
+        // var width = $('#divId').width();
+        // var leftWidth = width*0.1; // 左侧窗口大小
+		// var htmlObj = $("html"), mainObj = $("#main");
+		// var frameObj = $("#left, #openClose, #right, #right iframe");
+		// function wSize(){
+		// 	var strs = getWindowSize().toString().split(",");
+		// 	htmlObj.css({"overflow-x":"hidden", "overflow-y":"hidden"});
+		// 	mainObj.css("width","auto");
+		// 	frameObj.height(strs[0] - 120);
+         //    $("#content").width(width);
+         //    $("#left").width(width*0.12);
+         //    $("#ztree").width(width*0.12);
+         //    $("#ztree").height('86%');
+         //    $("#right").width(width*0.80);
+         //    $("#officeContent").width(width*0.80);
+		// }
+	</script>
+	<%--<script src="${ctxStatic}/common/wsize.min.js" type="text/javascript"></script>--%>
+</body>
+</html>

+ 256 - 0
src/main/webapp/webpage/modules/caseinfo/caseInfoList.jsp

@@ -0,0 +1,256 @@
+<%@ page import="com.jeeplus.modules.sys.utils.UserUtils" %>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例详情管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+        function openDialogre(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
+                    }
+                    return false;
+                },
+                btn3: function(index){
+                }
+            });
+        }
+        function openDialogreToo(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:"two-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(3) ){
+                        //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(4) ){
+                        //top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                    return false;
+                },
+                btn3: function(index){
+                }
+            });
+
+        }
+	</script>
+	<style>
+		body{
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+	<div class="wrapper wrapper-content">
+		<sys:message content="${message}"/>
+		<div class="layui-row">
+			<div class="full-width fl">
+				<div class="list-form-tab" id="tabDiv">
+					<ul class="list-tabs" >
+						<%--<li><a href="${ctx}/caseinfo/caseInfo/caseInfoTodoList">待办任务</a></li>--%>
+						<%--<li><a href="${ctx}/caseinfo/caseInfo/caseInfoHistoricList">已办任务</a></li>--%>
+						<li><a href="${ctx}/caseinfo/caseInfo/list?sign=me">我的案例</a></li>
+						<li class="active"><a href="${ctx}/caseinfo/caseInfo/list">公司案例</a></li>
+					</ul>
+				</div>
+
+				<div class=" layui-row" id="queryDiv">
+					<form:form id="searchForm" modelAttribute="caseInfo" action="${ctx}/caseinfo/caseInfo/list" method="post" class="form-inline">
+						<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+						<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+						<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 with-icon">
+									<form:input path="name" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+								</div>
+							</div>
+							<div class="layui-item athird fr">
+								<div class="input-group">
+									<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+									<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+								</div>
+							</div>
+							<div style="    clear:both;"></div>
+						</div>
+
+					</form:form>
+				</div>
+			</div>
+			<div class="full-width fl">
+				<div class=" layui-form contentDetails">
+					<div class="nav-btns">
+						<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+						<div style="clear: both;"></div>
+					</div>
+					<table class="oa-table layui-table" id="contentTable"></table>
+
+					<!-- 分页代码 -->
+					<table:page page="${page}"></table:page>
+					<div style="clear: both;"></div>
+				</div>
+			</div>
+		</div>
+		<div id="changewidth"></div>
+	</div>
+	<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+	<script>
+
+        layui.use('table', function(){
+            layui.table.render({
+                limit:${ page.pageSize }
+                ,elem: '#contentTable'
+                ,page: false
+                ,cols: [[
+                    // {checkbox: true, fixed: true},
+                    {field:'index',align:'center', title: '序号',width:40}
+                    ,{field:'project',align:'center', title: '所属项目',minWidth:120,templet:function(d){
+                            return "<span title='"+ d.project +"'>" + d.project + "</span>";
+                        }}
+                    ,{field:'caseName',align:'center', title: '案例名称(分部分项)',minWidth:125,templet:function(d){
+                            return "<a class=\"attention-info\" title=\"" + d.caseName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看案例详情', '${ctx}/caseinfo/caseInfo/form?id=" + d.id +"&tabId=0','95%', '95%')\">" + d.caseName + "</a>";
+                        }}
+                    ,{field:'caseCate', align:'center',title: '案例分类',width:80,templet:function(d){
+                            return "<span title='"+ d.caseCate +"'>" + d.caseCate + "</span>";
+                        }}
+                    ,{field:'startDate', align:'center',title: '施工时间', sort:true, width:80}
+                    ,{field:'area',align:'center', title: '工程所在地',  width:80,templet:function(d){
+                            return "<span title=\"" + d.area + "\">" + d.area + "</span>";
+                        }}
+                    ,{field:'company',align:'center', title: '案例分享公司',  width:90,templet:function(d){
+                            return "<span title=\"" + d.company + "\">" + d.company + "</span>";
+                        }}
+                    ,{field:'createBy',align:'center', title: '创建人',  width:60}
+                    // ,{field:'auditBy',align:'center', title: '审核人',  width:80}
+                    ,{field:'caseType',align:'center', title: '案例类型',  width:70}
+                    ,{field:'op',align:'center',title:"操作",width:130,templet:function(d){
+                            ////对操作进行初始化
+                            var xml="";
+                            if(d.canedit != undefined && d.canedit =="1")
+                            {
+                                xml+="<a href=\"javascript:void(0);\" onclick=\"openDialog('设置案例类型', '${ctx}/caseinfo/caseInfo/share?id=" + d.id +"','95%', '95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 设置</a>";
+                            }
+                            if(d.candel != undefined && d.candel =="1")
+                            {
+                                xml+="<a href=\"${ctx}/caseinfo/caseInfo/cdelete?id=" + d.id + "&sign=me\" onclick=\"return confirmx('确认要删除该案例详情吗?', this.href)\" class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 删除</a>";
+                            }
+                            return xml;
+
+                        }}
+                ]]
+                ,data: [
+                    <c:if test="${ not empty page.list}">
+                    <c:forEach items="${page.list}" var="caseInfo"  varStatus="index">
+                    <c:set var="Sid" scope="session" value="<%= UserUtils.getUser().getId()%>"/>
+                    <c:set var="rname" scope="session" value="<%= UserUtils.getSelectRole().get(0).getName()%>"/>
+                    <c:if test="${index.index != 0}">,</c:if>
+                    {
+                        "index":"${index.index+1}"
+                        ,"id":"${caseInfo.id}"
+                        ,"project":<c:choose><c:when test="${caseInfo.ext == 1}">"${caseInfo.contractName}"</c:when><c:otherwise>"${caseInfo.project.projectName}"</c:otherwise></c:choose>
+                        ,"caseName":"${caseInfo.name}"
+                        ,"caseCate":"${caseInfo.caseCategory.name}"
+                        ,"startDate":"<fmt:formatDate value="${caseInfo.startDate}" pattern="yyyy-MM-dd"/>"
+                        ,"area":"${caseInfo.area.name}"
+                        ,"company":"${caseInfo.companyName}"
+                        ,"createBy":"${caseInfo.createBy.name}"
+                        ,"auditBy":<c:choose><c:when test="${caseInfo.status == 1 or caseInfo.status == 2}">"未审核"</c:when><c:otherwise>"${caseInfo.updateBy.name}"</c:otherwise></c:choose>
+                        ,"caseType":"${fns:getDictLabel(caseInfo.shareStatus, 'share_status', '')}"
+                        <c:if test="${caseInfo.status == 5 and caseInfo.updateBy.id == fns:getUser()}">,"canedit":"1"</c:if>
+                        <shiro:hasPermission name="caseinfo:caseInfo:del"><c:if test="${caseInfo.status == 5 and caseInfo.updateBy.id == fns:getUser()}">,"candel":"1"</c:if></shiro:hasPermission>
+                    }
+                    </c:forEach>
+                    </c:if>
+                ]
+                // ,even: true
+                // ,height: 315
+            });
+        })
+
+        resizeListTable();
+	</script>
+</body>
+</html>

+ 352 - 0
src/main/webapp/webpage/modules/caseinfo/caseInfoListme.jsp

@@ -0,0 +1,352 @@
+<%@ page import="com.jeeplus.modules.sys.utils.UserUtils" %>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例详情管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+        $(document).ready(function() {
+        });
+        function openDialogre(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
+                    }
+                    return false;
+                },
+                btn3: function(index){
+                }
+            });
+        }
+        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,
+                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(5) ){
+                        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 openDialogreToo(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:"two-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(3) ){
+                        //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(4) ){
+                         //top.layer.close(index);//关闭对话框。
+                         setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                     }
+                     return false;
+                 },*/
+                btn3: function(index){
+                }
+            });
+
+        }
+	</script>
+	<style>
+		body{
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="list-form-tab" id="tabDiv">
+				<ul class="list-tabs" >
+					<%--<li><a href="${ctx}/caseinfo/caseInfo/caseInfoTodoList">待办任务</a></li>--%>
+					<%--<li><a href="${ctx}/caseinfo/caseInfo/caseInfoHistoricList">已办任务</a></li>--%>
+					<li class="active"><a href="${ctx}/caseinfo/caseInfo/list?sign=me">我的案例</a></li>
+					<li ><a href="${ctx}/caseinfo/caseInfo/list?sign='office'">公司案例</a></li>
+				</ul>
+			</div>
+
+
+		<sys:message content="${message}"/>
+
+		<!--查询条件-->
+
+			<div class=" layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="caseInfo" action="${ctx}/caseinfo/caseInfo/?sign=me" 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 with-icon">
+								<form:input path="name" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+
+				</form:form>
+			</div>
+		</div>
+
+		<div class="full-width fl">
+			<div class=" layui-form contentDetails">
+				<div class="nav-btns">
+					<shiro:hasPermission name="caseinfo:caseInfo:add">
+						<button class="nav-btn nav-btn-add" title="案例详情" onclick="openDialogre('案例详情','${ctx}/caseinfo/caseInfo/form?cid=${caseInfo.caseCategory.id}','95%','95%')"><i class="fa fa-plus"></i>&nbsp;添加</button>
+					</shiro:hasPermission>
+
+					<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="contentTable"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable'
+            ,page: false
+            ,cols: [[
+                // {checkbox: true, fixed: true},
+                {field:'index',align:'center', title: '序号',width:40}
+                ,{field:'project',align:'center', title: '所属项目',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.project +"'>" + d.project + "</span>";
+                    }}
+                ,{field:'caseName',align:'center', title: '案例名称(分部分项)',minWidth:125,templet:function(d){
+                        return "<a class=\"attention-info\" title=\"" + d.caseName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看案例详情', '${ctx}/caseinfo/caseInfo/form?id=" + d.id +"&tabId=0','95%', '95%')\">" + d.caseName + "</a>";
+                    }}
+                ,{field:'caseCate', align:'center',title: '案例分类',width:80,templet:function(d){
+                        return "<span title='"+ d.caseCate +"'>" + d.caseCate + "</span>";
+                    }}
+                ,{field:'startDate', align:'center',title: '施工时间', sort:true, width:80}
+                ,{field:'area',align:'center', title: '工程所在地',  width:80,templet:function(d){
+                        return "<span title=\"" + d.area + "\">" + d.area + "</span>";
+                    }}
+                ,{field:'company',align:'center', title: '案例分享公司',  width:90,templet:function(d){
+                        return "<span title=\"" + d.company + "\">" + d.company + "</span>";
+                    }}
+                ,{field:'createBy',align:'center', title: '创建人',  width:60}
+                // ,{field:'auditBy',align:'center', title: '审核人',  width:80}
+                ,{field:'caseType',align:'center', title: '案例类型',  width:70}
+                ,{align:'center', title: '状态',  width:70,templet:function(d){
+                        var st = getAuditState(d.status)
+                        /*if(d.status == 1){
+							var xmls = "<a href=\"${ctx}/caseinfo/caseInfo/startposs?id=" + d.id +"\" onclick=\"return confirmx('确认要发起案例审核吗?', this.href)\"   class=\"op-btn op-btn-revert\"> 启动</a>"
+							return xmls;
+						}else {
+                            var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/caseinfo/caseInfo/getProcess?id=" + d.id + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                            return xml;
+						}*/
+                    var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/caseinfo/caseInfo/getProcess?id=" + d.id + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                    return xml;
+                    }}
+                ,{field:'op',align:'center',title:"操作",width:130,templet:function(d){
+                        ////对操作进行初始化
+                        var xml="";
+                        if(d.canedit1 != undefined && d.canedit1 =="1")
+                        {
+                            xml+="<a href=\"javascript:void(0);\" onclick=\"openDialogreToo('重新申请案例', '${ctx}/caseinfo/caseInfo/form?id=" + d.id +"','95%', '95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+                        }
+                        if(d.canedit2 != undefined && d.canedit2 =="1")
+                        {
+                            xml+="<a href=\"javascript:void(0);\" onclick=\"openDialogres('修改案例', '${ctx}/caseinfo/caseInfo/form?id=" + d.id + "','95%', '95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+                        }
+                        if(d.candel != undefined && d.candel =="1")
+                        {
+                            xml+="<a href=\"${ctx}/caseinfo/caseInfo/delete?id=" + d.id + "&sign=me\" onclick=\"return confirmx('确认要删除该案例详情吗?', this.href)\" class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 删除</a>";
+                        }
+                        if(d.cancancel != undefined && d.cancancel =="1")
+                        {
+                            xml+="<a href=\"${ctx}/caseinfo/caseInfo/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>";
+                        }
+
+                        return xml;
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="caseInfo" varStatus="index">
+                <c:set var="Sid" scope="session" value="<%= UserUtils.getUser().getId()%>"/>
+                <c:set var="rname" scope="session" value="<%= UserUtils.getSelectRole().get(0).getName()%>"/>
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${caseInfo.id}"
+                    ,"project":<c:choose><c:when test="${caseInfo.ext == 1}">"${caseInfo.contractName}"</c:when><c:otherwise>"${caseInfo.project.projectName}"</c:otherwise></c:choose>
+                    ,"caseName":"${caseInfo.name}"
+                    ,"caseCate":"${caseInfo.caseCategory.name}"
+                    ,"startDate":"<fmt:formatDate value="${caseInfo.startDate}" pattern="yyyy-MM-dd"/>"
+                    ,"area":"${caseInfo.area.name}"
+                    ,"company":"${caseInfo.companyName}"
+                    ,"createBy":"${caseInfo.createBy.name}"
+                    ,"auditBy":<c:choose><c:when test="${caseInfo.status == 1 or caseInfo.status == 2}">"未审核"</c:when><c:otherwise>"${caseInfo.updateBy.name}"</c:otherwise></c:choose>
+                    ,"caseType":"${fns:getDictLabel(caseInfo.shareStatus, 'share_status', '')}"
+                    ,"status":"${caseInfo.status}"
+                    ,"procId":"${caseInfo.processInstanceId}"
+                    <c:choose><c:when test="${caseInfo.status  == 4 and caseInfo.createBy.id == fns:getUser() and caseInfo.processEnded}">,"canedit1":"1"</c:when>
+                    <c:when test="${(caseInfo.status == 1 or caseInfo.status == 3)and caseInfo.createBy.id == fns:getUser()}">,"canedit2":"1"</c:when></c:choose>
+                    <shiro:hasPermission name="caseinfo:caseInfo:del">
+                    <c:choose>
+                    <c:when test="${(caseInfo.status == '1' or caseInfo.status == '3' or caseInfo.status == '4')}">,"candel":"1"</c:when>
+                    </c:choose>
+					</shiro:hasPermission>
+                    <c:if test="${(caseInfo.createBy.id eq fns:getUser().id) && (caseInfo.status ==2)}">,"cancancel":"1"</c:if>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+            // ,even: true
+            // ,height: 315
+        });
+    })
+
+    resizeListTable();
+</script>
+<script>
+    resizeListWindow4();
+    $(window).resize(function(){
+        resizeListWindow4();
+    });
+</script>
+</body>
+</html>

+ 81 - 0
src/main/webapp/webpage/modules/caseinfo/caseInfoShare.jsp

@@ -0,0 +1,81 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例类型</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+
+        var validateForm;
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            debugger
+            if(validateForm.form()){
+                if(obj == 1){
+                    $("#inputForm").attr("action","${ctx}/caseinfo/caseInfo/caseInfoShare");
+                }
+                $("#inputForm").submit();
+                return true;
+            }
+            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);
+                    }
+                }
+            });
+		});
+	</script>
+</head>
+<body >
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="caseInfo" action="${ctx}/caseinfo/caseInfo/caseInfoShare" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+			<div class="form-group layui-row first lw7">
+				<div class="form-group-label"><h2>案例信息</h2></div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label"><span class="require-item">*</span>案例类别:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  class="form-control layui-input required" readonly="true" value="${caseInfo.caseCategory.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label double-line"><span class="require-item">*</span>案例名称:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<input htmlEscape="false"  readonly="true"  class="form-control layui-input" value="${caseInfo.name}"/>
+							<span class="input-group-btn">
+								<label style="cursor: pointer;" class="form-status" onclick="openDialogView('查看案例详情', '${ctx}/caseinfo/caseInfo/form?id=${caseInfo.id}&tabId=0','90%','90%')">查看</label>
+							</span>
+						</div>
+
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label">案例类型:</label>
+					<div class="layui-input-block">
+						<input type="radio" value="1" class="i-checks" id="shareStatus" name="shareStatus" onclick="display(this.value)" checked="checked">
+						<label>一般案例</label>
+						<input type="radio" value="2" class="i-checks" id="shareStatus" name="shareStatus" onclick="display(this.value)" >
+						<label>典型案例</label>
+					</div>
+				</div>
+			</div>
+	</form:form>
+
+	</div>
+	</div>
+</body>
+</html>

+ 15 - 0
src/main/webapp/webpage/modules/caseinfo/caseInfoTask.jsp

@@ -0,0 +1,15 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例审核流程追踪</title>
+	<meta name="decorator" content="default"/>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+        <act:flowChart procInsId="${processInstanceId}"/>
+        <act:histoicFlow procInsId="${processInstanceId}"/>
+	</div>
+</body>
+</html>
+

+ 195 - 0
src/main/webapp/webpage/modules/caseinfo/caseInfoTodoList.jsp

@@ -0,0 +1,195 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>待审核工程签证管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+        $(document).ready(function() {
+            laydate.render({
+                elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+                ,type: 'datetime'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+                ,type: 'datetime'
+            });
+        });
+        function page(n,s){
+            location = '${ctx}/caseinfo/caseInfo/list/?pageNo='+n+'&pageSize='+s;
+        }
+        /**
+         * 签收任务
+         */
+        function claim(taskId) {
+            $.get('${ctx}/act/task/claim' ,{taskId: taskId}, function(data) {
+                if (data == 'true'){
+                    top.$.jBox.tip('签收完成');
+                    location = '${ctx}/caseinfo/caseInfo/caseInfoTodoList/';
+                }else{
+                    top.$.jBox.tip('签收失败');
+                }
+            });
+        }
+
+        function openDialogre(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 ,
+                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){
+                }
+            });
+
+        }
+	</script>
+</head>
+<body class="gray-bg">
+<div class="wrapper wrapper-content">
+	<div class="ibox">
+		<div class="ibox-title" style="height: 70px;">
+			<h5>
+				<ul class="nav nav-tabs">
+					<li class="active"><a href="${ctx}/caseinfo/caseInfo/caseInfoTodoList">待办任务</a></li>
+					<li ><a href="${ctx}/caseinfo/caseInfo/caseInfoHistoricList">已办任务</a></li>
+					<li><a href="${ctx}/caseinfo/caseInfo/list?sign=me">我的案例</a></li>
+					<li ><a href="${ctx}/caseinfo/caseInfo/list">公司案例</a></li>
+				</ul>
+			</h5>
+		</div>
+
+		<div class="ibox-content">
+			<sys:message content="${message}"/>
+			<!--查询条件-->
+			<div class="row">
+				<div class="col-sm-12">
+					<form:form id="searchForm" modelAttribute="act" action="${ctx}/caseinfo/caseInfo/caseInfoTodoList" method="get" 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="form-group">
+							<label>创建时间:</label>
+							<input id="beginDate"  name="beginDate"  type="text" readonly="readonly" maxlength="20" style="width:200px;" class="laydate-icondate form-control layer-date input-sm"
+								   value="<fmt:formatDate value="${act.beginDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+							 -- 
+							<input id="endDate" name="endDate" type="text" readonly="readonly" maxlength="20" style="width:200px;" class="laydate-icondate form-control layer-date input-sm"
+								   value="<fmt:formatDate value="${act.endDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+						</div>
+					</form:form>
+					<br/>
+				</div>
+			</div>
+
+			<!-- 工具栏 -->
+			<div class="row">
+				<div class="col-sm-12">
+					<div class="pull-left">
+						<button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+					</div>
+					<div class="pull-right">
+						<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+						<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+					</div>
+				</div>
+			</div>
+			<!-- 表格 -->
+			<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+				<thead>
+				<tr>
+					<th style="text-align: center;width: 10%">流程发起人</th>
+					<th style="text-align: center;width: 10%">当前环节</th>
+					<th style="text-align: center;width: 10%">流程名称</th>
+					<%--<th>流程版本</th>--%>
+					<th style="text-align: center;width:15%">案例类别</th>
+					<th style="text-align: center;width: 15%;">案例名称</th>
+					<th style="text-align: center;width: 10%">案例来源</th>
+					<%--<th>备注信息</th>--%>
+					<th style="text-align: center;width:15%">创建时间</th>
+					<th style="text-align: center;width:10%">操作</th>
+				</tr>
+				</thead>
+				<tbody>
+				<c:forEach items="${list}" var="caseInfo">
+					<c:set var="task" value="${caseInfo.act.task}" />
+					<c:set var="vars" value="${caseInfo.act.vars}" />
+					<c:set var="procDef" value="${caseInfo.act.procDef}" />
+					<c:set var="status" value="${caseInfo.act.status}" />
+					<tr>
+						<td>${caseInfo.act.vars.map.applyUserId}</td>
+						<td>
+							${task.name}
+						</td>
+						<td>${procDef.name}</td>
+						<%--<td><b title='流程版本号'>V: ${procDef.version}</b></td>--%>
+						<td>${caseInfo.caseCategory.name}</td>
+						<td><a  href="javascript:void(0)" onclick="openDialogView('查看案例详情', '${ctx}/caseinfo/caseInfo/form?id=${caseInfo.id}&tabId=0','80%','80%')">
+								${caseInfo.name}
+						</a></td>
+						<td>${fns:getDictLabel(caseInfo.source,'case_source','')}</td>
+						<%--<td>${caseInfo.remarks}</td>--%>
+						<td><fmt:formatDate value="${task.createTime}" type="both"/></td>
+						<td>
+							<a href="javascript:void(0)" onclick="openDialogre('案例审批管理', '${ctx}/caseinfo/caseInfo/applyOnWorkBidProject?taskId=${task.id}&taskName=${fns:urlEncode(task.name)}&taskDefKey=${task.taskDefinitionKey}&procInsId=${task.processInstanceId}&procDefId=${task.processDefinitionId}&status=${status}','80%','80%','','同意','驳回')" class="btn btn-info btn-xs" > 任务办理</a>
+						<%--<c:if test="${empty task.assignee}">
+								<a href="javascript:claim('${task.id}');" class="btn btn-white btn-xs" >签收任务</a>
+							</c:if>
+							<c:if test="${not empty task.assignee}">
+								</c:if>--%>
+						</td>
+					</tr>
+				</c:forEach>
+				</tbody>
+			</table>
+			<!-- 分页代码 -->
+			<table:page page="${page}"></table:page>
+			<br/>
+			<br/>
+		</div>
+	</div>
+</div>
+</body>
+</html>

+ 599 - 0
src/main/webapp/webpage/modules/caseinfo/caseInfoView.jsp

@@ -0,0 +1,599 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例详情管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+        $(function(){
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+            var oneSize = $(".oneTab").size();
+            for(var i = 0;i < oneSize;i++){
+                var hei = $(".oneTab:eq("+i+")").parent().height();
+                $(".oneTab:eq("+i+")").css("height",hei)
+                    .css("vertical-align","middle")
+                    .css("line-height",hei+"px")
+            }
+            $("img").not(".upload_ico").each(function () {
+                var num = 1 ;
+                $(this).click(function () {
+                    var flag = num%2;
+                    if(flag == 1){
+                        $(this).css("width","90%");
+                        $(this).css("height","90%");
+                        num++;
+                    }else if(flag ==0){
+                        $(this).css("width","50px");
+                        $(this).css("height","50px");
+                        num++;
+                    }
+                })
+            });
+        })
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  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);
+					}
+				}
+			});
+			
+					laydate.render({
+			            elem: '#startDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			        });
+					laydate.render({
+			            elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			        });
+		});
+
+        function insertTitle(tValue){
+            var list = "${caseInfo.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 = $("#id").val();
+            var attachmentFlag = "76";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/caseInfo/"+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 openBill(title,url,width,height,target,formId,eleId){
+            var frameIndex = parent.layer.getFrameIndex(window.name);
+            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+"?index="+frameIndex ,
+                btn: ['确定','关闭'],
+                yes: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    var $document = iframeWin.contentWindow.document;
+
+                    if(formId){
+                        formSubmit($document,formId,eleId,index);
+                    }else{
+                        getSelectedItem($document,eleId,index)
+                    }
+                },
+                cancel: function(index){
+                }
+            });
+        }*/
+        /*-------------------分割线-------------------*/
+        function addRow(list, idx, tpl, row){
+            var idx1 = $("#caseBuildInfoList tr").length;
+            if(list == '#caseBuildInfoList' && idx1 < 100){
+                bornTemplete(list, idx, tpl, row, idx1);
+            }
+            var idx2 = $("#caseDesignInfoList tr").length;
+            if(list == '#caseDesignInfoList' && idx2 < 100){
+                bornTemplete(list, idx, tpl, row, idx2);
+            }
+            var idx3 = $("#caseExecuteInfoList tr").length;
+            if(list == '#caseExecuteInfoList' && idx3 < 100){
+                bornTemplete(list, idx, tpl, row, idx3);
+            }
+            var idx4 = $("#caseProjectFeatureList tr").length;
+            if(list == '#caseProjectFeatureList' && idx4 < 100){
+                bornTemplete(list, idx, tpl, row, idx4);
+            }
+            var idx5 = $("#caseNormList tr").length;
+            if(list == '#caseNormList' && idx5 < 100){
+                bornTemplete(list, idx, tpl, row, idx5);
+            }
+            var idx6 = $("#caseMaterialsList tr").length;
+            if(list == '#caseMaterialsList' && idx6 < 100){
+                bornTemplete(list, idx, tpl, row, idx6);
+            }
+        }
+        function bornTemplete(list, idx, tpl, row, idx1){
+            $(list).append(Mustache.render(tpl, {
+                idx: idx, delBtn: true, row: row,
+                order:idx1 + 1
+            }));
+            $(list+idx).find("select").each(function(){
+                $(this).val($(this).attr("data-value"));
+            });
+            $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                var ss = $(this).attr("data-value").split(',');
+                for (var i=0; i<ss.length; i++){
+                    if($(this).val() == ss[i]){
+                        $(this).attr("checked","checked");
+                    }
+                }
+            });
+        }
+        /*function delRow(obj, prefix){
+            var id = $(prefix+"_id");
+            var delFlag = $(prefix+"_delFlag");
+            if (id.val() == ""){
+                $(obj).parent().parent().remove();
+            }else if(delFlag.val() == "0"){
+                delFlag.val("1");
+                $(obj).html("&divide;").attr("title", "撤回删除");
+                $(obj).parent().parent().addClass("error");
+                $(obj).parent().parent().addClass("hide");
+            }else if(delFlag.val() == "1"){
+                delFlag.val("0");
+                $(obj).html("&times;").attr("title", "删除");
+                $(obj).parent().parent().removeClass("error");
+            }
+            var idx1 = $("#caseBuildInfoList tr").length; //tr 总数
+            for(var i = 0;i < idx1;i++){
+                $("#caseBuildInfoList tr").eq(i).find("td").eq(1).html(i + 1);
+            }
+            var idx2 = $("#caseDesignInfoList tr").length; //tr 总数
+            for(var i = 0;i < idx2;i++){
+                $("#caseDesignInfoList tr").eq(i).find("td").eq(1).html(i + 1);
+            }
+            var idx3 = $("#caseExecuteInfoList tr").length; //tr 总数
+            for(var i = 0;i < idx3;i++){
+                $("#caseExecuteInfoList tr").eq(i).find("td").eq(1).html(i + 1);
+            }
+            var idx4 = $("#caseProjectFeatureList tr").length; //tr 总数
+            for(var i = 0;i < idx4;i++){
+                $("#caseProjectFeatureList tr").eq(i).find("td").eq(1).html(i + 1);
+            }
+            var idx5 = $("#caseNormList tr").length; //tr 总数
+            for(var i = 0;i < idx5;i++){
+                $("#caseNormList tr").eq(i).find("td").eq(1).html(i + 1);
+            }
+            var idx6 = $("#caseMaterialsList tr").length; //tr 总数
+            for(var i = 0;i < idx6;i++){
+                $("#caseMaterialsList tr").eq(i).find("td").eq(1).html(i + 1);
+            }
+        }*/
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container view-form">
+		<form:form id="inputForm" modelAttribute="caseInfo" action="${ctx}/caseinfo/caseInfo/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+
+			<div class="form-group layui-row first lw7">
+				<div class="form-group-label"><h2>基础信息</h2></div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label"><span class="require-item">*</span>案例类别:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  class="form-control layui-input required" readonly="true" value="${caseInfo.caseCategory.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line"><span class="require-item">*</span>案例名称:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  class="form-control layui-input required" readonly="true" value="${caseInfo.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line"><span class="require-item">*</span>施工时间:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  class="form-control layui-input required" readonly="true" value="<fmt:formatDate value="${caseInfo.startDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line">案例来源:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  class="form-control layui-input required" readonly="true" value="${fns:getDictLabel(caseInfo.source,'case_source','')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line"><span class="require-item">*</span>工程所在地:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  class="form-control layui-input required" readonly="true" value="${caseInfo.area.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label double-line">所属项目:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  class="form-control layui-input required" readonly="true" value="<c:choose><c:when test="${caseInfo.ext eq 0}">${caseInfo.project.projectName}</c:when><c:otherwise>${caseInfo.contractName}</c:otherwise></c:choose>"/>
+					</div>
+				</div>
+
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label">设计单位:</label>
+					<div class="layui-input-block">
+						<table id="bankinfo2" class="table table-bordered table-condensed details">
+							<thead>
+							<tr>
+								<th width="40">序号</th>
+								<th >单位名称</th>
+								<th width="120"class="">联系人名称</th>
+								<th width="170">联系方式</th>
+								<th width="170">邮箱</th>
+							</tr>
+							</thead>
+							<tbody id="caseDesignInfoList">
+							<c:forEach items="${caseInfo.caseDesignInfoList}" var="buyDetails" varStatus="status">
+								<tr>
+									<td>${status.index + 1}</td>
+									<td title="${buyDetails.name}">${buyDetails.name}</td>
+									<td>${buyDetails.linkedman}</td>
+									<td>${buyDetails.mobile}</td>
+									<td>${buyDetails.email}</td>
+								</tr>
+							</c:forEach>
+							<c:if test="${linkManSize == 0}">
+								<tr>
+									<td colspan="8">暂无数据</td>
+								</tr>
+							</c:if>
+							</tbody>
+						</table>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label">建设单位:</label>
+					<div class="layui-input-block">
+						<table id="bankinfo" class="table table-bordered table-condensed details">
+							<thead>
+							<tr>
+								<th width="40">序号</th>
+								<th >单位名称</th>
+								<th width="120"class="">联系人名称</th>
+								<th width="170">联系方式</th>
+								<th width="170">邮箱</th>
+							</tr>
+							</thead>
+							<tbody id="caseBuildInfoList">
+							<c:forEach items="${caseInfo.caseBuildInfoList}" var="buyDetails" varStatus="status">
+								<tr>
+									<td>${status.index + 1}</td>
+									<td title="${buyDetails.name}">${buyDetails.name}</td>
+									<td>${buyDetails.linkedman}</td>
+									<td>${buyDetails.mobile}</td>
+									<td>${buyDetails.email}</td>
+								</tr>
+							</c:forEach>
+							<c:if test="${linkManSize == 0}">
+								<tr>
+									<td colspan="8">暂无数据</td>
+								</tr>
+							</c:if>
+							</tbody>
+						</table>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label">施工单位:</label>
+					<div class="layui-input-block">
+						<table id="bankinfo3" class="table table-bordered table-condensed details">
+							<thead>
+							<tr>
+								<th width="40">序号</th>
+								<th >单位名称</th>
+								<th width="120"class="">联系人名称</th>
+								<th width="170">联系方式</th>
+								<th width="170">邮箱</th>
+							</tr>
+							</thead>
+							<tbody id="caseExecuteInfoList">
+							<c:forEach items="${caseInfo.caseExecuteInfoList}" var="buyDetails" varStatus="status">
+								<tr>
+									<td>${status.index + 1}</td>
+									<td title="${buyDetails.name}">${buyDetails.name}</td>
+									<td>${buyDetails.linkedman}</td>
+									<td>${buyDetails.mobile}</td>
+									<td>${buyDetails.email}</td>
+								</tr>
+							</c:forEach>
+							<c:if test="${linkManSize == 0}">
+								<tr>
+									<td colspan="8">暂无数据</td>
+								</tr>
+							</c:if>
+							</tbody>
+						</table>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 with-textarea">
+					<label class="layui-form-label"><span class="require-item">*</span>项目特征:</label>
+					<div class="layui-input-block">
+						<textarea readonly="true" htmlEscape="false" rows="4" maxlength="2000" class="form-control ">${caseInfo.peculiarity}</textarea>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 with-textarea">
+					<label class="layui-form-label">案例特性:</label>
+					<div class="layui-input-block">
+						<textarea readonly="true"  htmlEscape="false" rows="4"   maxlength="2000" class="form-control ">${caseInfo.feature}</textarea>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line">造价指标:单位造价(元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"    class="form-control number layui-input" readonly="true" value="${caseInfo.price}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>单位:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" class="form-control required layui-input" readonly="true" value="${caseInfo.unit}"/>
+					</div>
+				</div>
+
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label double-line">材料消耗量指标:</label>
+					<div class="layui-input-block">
+						<table id="bankinfo4" class="table table-bordered table-condensed details">
+							<thead>
+							<tr>
+								<th width="40">序号</th>
+								<th width="">名称</th>
+								<th width="220">型号</th>
+								<th width="110">单位消耗量</th>
+								<th width="90">单位</th>
+								<th width="100">合价</th>
+								<th width="90">比重</th>
+							</tr>
+							</thead>
+							<tbody id="caseMaterialsNormList">
+							<c:forEach items="${caseInfo.caseMaterialsNormList}" var="buyDetails" varStatus="status">
+								<tr>
+									<td>${status.index + 1}</td>
+									<td title="${buyDetails.name}">${buyDetails.name}</td>
+									<td>${buyDetails.type}</td>
+									<td>${buyDetails.unitContent}</td>
+									<td>${buyDetails.unit}</td>
+									<td>${buyDetails.allPrice}</td>
+									<td>${buyDetails.proportion}</td>
+								</tr>
+							</c:forEach>
+							<c:if test="${linkManSize == 0}">
+								<tr>
+									<td colspan="8">暂无数据</td>
+								</tr>
+							</c:if>
+							</tbody>
+						</table>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label double-line">机械消耗量指标:</label>
+					<div class="layui-input-block">
+						<table id="bankinfo5" class="table table-bordered table-condensed details">
+							<thead>
+							<tr>
+								<th width="40">序号</th>
+								<th width="">名称</th>
+								<th width="220">型号</th>
+								<th width="110">单位消耗量</th>
+								<th width="90">单位</th>
+								<th width="100">合价</th>
+								<th width="90">比重</th>
+							</tr>
+							</thead>
+							<tbody id="caseMechanicalNormList">
+							<c:forEach items="${caseInfo.caseMechanicalNormList}" var="buyDetails" varStatus="status">
+								<tr>
+									<td>${status.index + 1}</td>
+									<td title="${buyDetails.name}">${buyDetails.name}</td>
+									<td>${buyDetails.type}</td>
+									<td>${buyDetails.unitContent}</td>
+									<td>${buyDetails.unit}</td>
+									<td>${buyDetails.allPrice}</td>
+									<td>${buyDetails.proportion}</td>
+								</tr>
+							</c:forEach>
+							<c:if test="${linkManSize == 0}">
+								<tr>
+									<td colspan="8">暂无数据</td>
+								</tr>
+							</c:if>
+							</tbody>
+						</table>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label double-line">人工消耗量指标:</label>
+					<div class="layui-input-block">
+						<table id="bankinfo6" class="table table-bordered table-condensed details">
+							<thead>
+							<tr>
+								<th width="40">序号</th>
+								<th width="">名称</th>
+								<th width="220">型号</th>
+								<th width="110">单位消耗量</th>
+								<th width="90">单位</th>
+								<th width="100">合价</th>
+								<th width="90">比重</th>
+							</tr>
+							</thead>
+							<tbody id="casePeopleNormList">
+								<c:forEach items="${caseInfo.casePeopleNormList}" var="buyDetails" varStatus="status">
+									<tr>
+										<td>${status.index + 1}</td>
+										<td title="${buyDetails.name}">${buyDetails.name}</td>
+										<td>${buyDetails.type}</td>
+										<td>${buyDetails.unitContent}</td>
+										<td>${buyDetails.unit}</td>
+										<td>${buyDetails.allPrice}</td>
+										<td>${buyDetails.proportion}</td>
+									</tr>
+								</c:forEach>
+								<c:if test="${linkManSize == 0}">
+									<tr>
+										<td colspan="8">暂无数据</td>
+									</tr>
+								</c:if>
+								</tbody>
+							</table>
+						</div>
+				</div>
+
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label double-line">主要材料单价:</label>
+					<div class="layui-input-block">
+						<table id="contentTable" class="table table-bordered table-condensed details">
+							<thead>
+							<tr>
+								<th>材料名称</th>
+								<th width="100px">规格型号</th>
+								<th width="60px">单位</th>
+								<th width="90px">材料含税价</th>
+								<th width="90px">材料除税价</th>
+								<th width="90px">价格取用日期</th>
+								<th width="80px">税率</th>
+								<th width="80px">材质</th>
+								<th>品牌</th>
+							</tr>
+							</thead>
+							<tbody id="workAccountList">
+							<c:forEach items="${caseInfo.caseMaterialsList}" var="caseMaterials" varStatus="status">
+								<tr id="index${status.index}">
+									<td class="hide">${caseMaterials.id}</td>
+									<td>
+										<a title="${caseMaterials.name}" href="javascript:void(0)" onclick="openDialogView('查看材料单信息', '${ctx}/casematerials/caseMaterials/form?id=${caseMaterials.id}&tabId=1','90%','90%')">
+												${caseMaterials.name}
+										</a>
+									</td>
+									<td title="${caseMaterials.specification}">${caseMaterials.specification}</td>
+									<td title="${caseMaterials.calculateUnit}">${caseMaterials.calculateUnit}</td>
+									<td title="${caseMaterials.taxPrice}">${caseMaterials.taxPrice}</td>
+									<td title="${caseMaterials.price}">${caseMaterials.price}</td>
+									<td ><fmt:formatDate value="${caseMaterials.useDate}" pattern="yyyy-MM-dd"/></td>
+									<td class="hide">${fns:getDictLabel(caseMaterials.source, 'caseM_source', '')}</td>
+									<td title="${caseMaterials.tax}">${caseMaterials.tax}</td>
+									<td title="${caseMaterials.material}">${caseMaterials.material}</td>
+									<td title="${caseMaterials.brand}">${caseMaterials.brand}</td>
+									<td class="hide">${caseMaterials.pp}</td>
+									<td class="hide">${caseMaterials.area.name}</td>
+								</tr>
+							</c:forEach>
+							</tbody>
+						</table>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label double-line">偏差分析/记录/其他情况:</label>
+					<div class="layui-input-block">
+						<textarea  htmlEscape="false" rows="4"    readonly="true" class="form-control ">${caseInfo.record}</textarea>
+					</div>
+				</div>
+
+			</div>
+
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>附件信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+								<%-- <th>序号</th>--%>
+							<th>文件</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:forEach items="${caseInfo.workAttachments}" varStatus="status" var="workClientAttachment">
+							<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}" pattern="yyyy-MM-dd"/></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">下载</a>
+
+											<%--<a href="${ctx}/caseinfo/caseInfo/downLoadAttach?file=${workClientAttachment.url}" class="btn btn-success btn-xs">下载</a>--%>
+											<%--<a href="${workClientAttachment.url}" class="btn btn-info btn-xs">下载</a>--%>
+											<%--<a href="${ctx}/caseinfo/caseInfo/deleteFileFromAliyun?attachmentId=${workClientAttachment.id}&id=${caseInfo.id}">删除</a>--%>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 181 - 0
src/main/webapp/webpage/modules/caseinfo/caseMaterialsFormBill.jsp

@@ -0,0 +1,181 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例材料单价管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		$(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);
+					}
+				}
+			});
+            laydate.render({
+                elem: '#useDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+
+            $("#taxPrice").blur(function(){
+                var taxprice = $(this).val() || 0;
+                var tax = $("#tax").val() || 0;
+                if(tax){
+                    var p = taxprice / (1 + tax/100) || 0;
+                    $("#price").val(p.toFixed(2))
+                }
+            })
+            $("#tax").blur(function(){
+                var taxprice = $("#taxPrice").val() || 0;
+                var tax = $(this).val() || 0;
+                if(taxprice){
+                    var p = taxprice / (1 + tax/100)
+                    $("#price").val(p.toFixed(2))
+                }
+            })
+	    });
+        function doSubmit(editFlag){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            var name = $("#name").val();
+            var flag = $("#flag").val();
+            var specification = $("#specification").val();
+            var calculateUnit = $("#calculateUnit").val();
+            var taxPrice = $("#taxPrice").val();
+            var price = $("#price").val();
+            var useDate = $("#useDate").val();
+            var source = $("#source").val();
+            var tax = $("#tax").val();
+            var material = $("#material").val();
+            var brand = $("#brand").val();
+            var pp = $("#pp").val();
+            var areaId = $("#areaId").val();
+            var areaName = $("#areaName").val();
+            var index = $("#index").val();
+            var map = {};
+                map["name"] = name;
+                map["specification"] = specification;
+                map["calculateUnit"] = calculateUnit;
+                map["taxPrice"] = taxPrice;
+                map["price"] = price;
+                map["useDate"] = useDate;
+                map["source"] = source;
+                map["tax"] = tax;
+                map["material"] = material;
+                map["brand"] = brand;
+                map["pp"] = pp;
+            map["areaId"] = areaId;
+            map["areaName"] = areaName;
+                map["index"] = index;
+                map["editFlag"] = editFlag;
+                map["flag"] = flag;
+            return JSON.stringify(map);
+        }
+	</script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+            <input id="index" value="${caseMaterials.index}" type="hidden">
+            <form:form id="inputForm" modelAttribute="caseMaterials"  action="${ctx}/casematerials/caseMaterials/save" method="post" class="form-horizontal">
+                <form:hidden path="id"/>
+                <input type="hidden" value="${caseInfo.id}" name="caseInfo.id" >
+                <input type="hidden" value="${caseMaterials.id}" id="flag" name="flag">
+
+                <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 path="name" id="name" htmlEscape="false"  class="form-control layui-input"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label">单位:</label>
+                        <div class="layui-input-block">
+                            <form:input path="calculateUnit" id="calculateUnit" htmlEscape="false"  class="form-control layui-input"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label">税率:</label>
+                        <div class="layui-input-block">
+                            <div class="input-group">
+                                <form:input path="tax" id="tax" htmlEscape="false" class="form-control number layui-input" /> <span class="input-group-addon" style="border:none;">%</span>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label">材料含税价:</label>
+                        <div class="layui-input-block">
+                            <form:input path="taxPrice" id="taxPrice" htmlEscape="false"   class="form-control number layui-input"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label">材料除税价:</label>
+                        <div class="layui-input-block">
+                            <form:input path="price" id="price" htmlEscape="false"  class="form-control layui-input" readonly="true"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label">价格取用日期:</label>
+                        <div class="layui-input-block">
+                            <input id="useDate" name="useDate" type="text"  maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon"
+                                   value="<fmt:formatDate value="${caseMaterials.useDate}" pattern="yyyy-MM-dd"/>"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label">价格来源:</label>
+                        <div class="layui-input-block">
+                            <form:select path="source" class="form-control simple-select">
+                                <form:option value="" label=""/>
+                                <form:options items="${fns:getDictList('caseM_source')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                            </form:select>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label">规格型号:</label>
+                        <div class="layui-input-block">
+                            <form:input path="specification" id="specification" htmlEscape="false"   class="form-control layui-input"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label">材质:</label>
+                        <div class="layui-input-block">
+                            <form:input path="material" id="material" htmlEscape="false"  class="form-control layui-input"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label">品牌:</label>
+                        <div class="layui-input-block">
+                            <form:input path="brand" id="brand" htmlEscape="false"  class="form-control layui-input"/>
+                        </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="pp" id="pp"  rows="4"  htmlEscape="false"  maxlength="500" class="form-control"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm12">
+                        <label class="layui-form-label">厂商/工厂所在地:</label>
+                        <div class="layui-input-block with-icon">
+                            <sys:treeselect id="area" name="area.id" value="${caseMaterials.area.id}" labelName="area.name" labelValue="${caseMaterials.area.name}"
+                                            title="区域" url="/sys/area/treeData" cssClass="form-control required simple-select" notAllowSelectParent="true"/>
+                            </td>
+                        </div>
+                    </div>
+
+                 </div>
+            </form:form>
+    </div>
+</div>
+</body>
+</html>

+ 156 - 0
src/main/webapp/webpage/modules/caseinfo/caseMaterialsFormBillDetail.jsp

@@ -0,0 +1,156 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例材料单价管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		$(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);
+					}
+				}
+			});
+            laydate.render({
+                elem: '#useDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+	    });
+        function doSubmit(editFlag){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            var name = $("#name").val();
+            var flag = $("#flag").val();
+            var specification = $("#specification").val();
+            var calculateUnit = $("#calculateUnit").val();
+            var taxPrice = $("#taxPrice").val();
+            var price = $("#price").val();
+            var useDate = $("#useDate").val();
+            var source = $("#source").val();
+            var tax = $("#tax").val();
+            var material = $("#material").val();
+            var brand = $("#brand").val();
+            var pp = $("#pp").val();
+            var areaId = $("#areaId").val();
+            var areaName = $("#areaName").val();
+            var index = $("#index").val();
+            var map = {};
+                map["name"] = name;
+                map["specification"] = specification;
+                map["calculateUnit"] = calculateUnit;
+                map["taxPrice"] = taxPrice;
+                map["price"] = price;
+                map["useDate"] = useDate;
+                map["source"] = source;
+                map["tax"] = tax;
+                map["material"] = material;
+                map["brand"] = brand;
+                map["pp"] = pp;
+            map["areaId"] = areaId;
+            map["areaName"] = areaName;
+                map["index"] = index;
+                map["editFlag"] = editFlag;
+                map["flag"] = flag;
+            return JSON.stringify(map);
+        }
+	</script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+            <input id="index" value="${caseMaterials.index}" type="hidden">
+            <form:form id="inputForm" modelAttribute="caseMaterials"  action="${ctx}/casematerials/caseMaterials/save" method="post" class="form-horizontal">
+                <form:hidden path="id"/>
+                <input type="hidden" value="${caseInfo.id}" name="caseInfo.id" >
+                <input type="hidden" value="${caseMaterials.id}" id="flag" name="flag">
+
+            <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">
+                        <input htmlEscape="false"  class="form-control layui-input" readonly="true" value="${caseMaterials.name}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">规格型号:</label>
+                    <div class="layui-input-block">
+                        <input   htmlEscape="false"  class="form-control layui-input" readonly="true" value="${caseMaterials.specification}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">单位:</label>
+                    <div class="layui-input-block">
+                        <input   htmlEscape="false"  class="form-control layui-input" readonly="true" value="${caseMaterials.calculateUnit}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">材料含税价:</label>
+                    <div class="layui-input-block">
+                        <input   htmlEscape="false"  class="form-control layui-input" readonly="true" value="${caseMaterials.taxPrice}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">材料除税价:</label>
+                    <div class="layui-input-block">
+                        <input   htmlEscape="false"  class="form-control layui-input" readonly="true" value="${caseMaterials.price}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">价格取用日期:</label>
+                    <div class="layui-input-block">
+                        <input   htmlEscape="false"  class="form-control layui-input" readonly="true" value="<fmt:formatDate value="${caseMaterials.useDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">价格来源:</label>
+                    <div class="layui-input-block">
+                        <input   htmlEscape="false"  class="form-control layui-input" readonly="true" value="${fns:getDictLabel(caseMaterials.source, 'caseM_source', '')}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">税率:</label>
+                    <div class="layui-input-block">
+                        <input   htmlEscape="false"  class="form-control layui-input" readonly="true" value="${caseMaterials.tax}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">材质:</label>
+                    <div class="layui-input-block">
+                        <input   htmlEscape="false"  class="form-control layui-input" readonly="true" value="${caseMaterials.material}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">品牌:</label>
+                    <div class="layui-input-block">
+                        <input   htmlEscape="false"  class="form-control layui-input" readonly="true" value="${caseMaterials.brand}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 with-textarea">
+                    <label class="layui-form-label">参数性能:</label>
+                    <div class="layui-input-block">
+                        <textarea id="pp"  rows="4"  htmlEscape="false" readonly="true" class="form-control">${caseMaterials.pp}</textarea>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12">
+                    <label class="layui-form-label">厂商/工厂所在地:</label>
+                    <div class="layui-input-block">
+                        <input   htmlEscape="false"  class="form-control layui-input" readonly="true" value="${caseMaterials.area.name}"/>
+                    </div>
+                </div>
+
+            </div>
+            </form:form>
+    </div>
+</div>
+</body>
+</html>

+ 105 - 0
src/main/webapp/webpage/modules/casematerials/caseMaterialsForm.jsp

@@ -0,0 +1,105 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例-材料管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  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);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="caseMaterials" action="${ctx}/casematerials/caseMaterials/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-35">
+						<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>材料名称:</label></td>
+					<td class="width-35">
+						<form:input path="name" htmlEscape="false"    class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">材料品牌:</label></td>
+					<td class="width-35">
+						<form:input path="brand" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">规格型号:</label></td>
+					<td class="width-35">
+						<form:input path="specification" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">参数性能:</label></td>
+					<td class="width-35">
+						<form:input path="pp" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>计量单位:</label></td>
+					<td class="width-35">
+						<form:input path="calculateUnit" htmlEscape="false"    class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>材料价格:</label></td>
+					<td class="width-35">
+						<form:input path="price" htmlEscape="false"    class="form-control required number"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>采购量:</label></td>
+					<td class="width-35">
+						<form:input path="count" htmlEscape="false"    class="form-control required number"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>供应商:</label></td>
+					<td class="width-35">
+						<form:input path="supplier" htmlEscape="false"    class="form-control required"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">联系人:</label></td>
+					<td class="width-35">
+						<form:input path="linkedman" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">联系电话:</label></td>
+					<td class="width-35">
+						<form:input path="mobile" htmlEscape="false"    class="form-control  number"/>
+					</td>
+					<td class="width-15 active"></td>
+		   			<td class="width-35" ></td>
+		  		</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 168 - 0
src/main/webapp/webpage/modules/casematerials/caseMaterialsList.jsp

@@ -0,0 +1,168 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例-材料管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>案例-材料列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="caseMaterials" action="${ctx}/casematerials/caseMaterials/" 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="form-group">
+			<span>材料名称:</span>
+				<form:input path="name" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+			<span>材料品牌:</span>
+				<form:input path="brand" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+			<span>供应商:</span>
+				<form:input path="supplier" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="casematerials:caseMaterials:add">
+				<table:addRow url="${ctx}/casematerials/caseMaterials/form" title="案例-材料"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casematerials:caseMaterials:edit">
+			    <table:editRow url="${ctx}/casematerials/caseMaterials/form" title="案例-材料" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casematerials:caseMaterials:del">
+				<table:delRow url="${ctx}/casematerials/caseMaterials/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casematerials:caseMaterials:import">
+				<table:importExcel url="${ctx}/casematerials/caseMaterials/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casematerials:caseMaterials:export">
+	       		<table:exportExcel url="${ctx}/casematerials/caseMaterials/export"></table:exportExcel><!-- 导出按钮 -->
+	       	</shiro:hasPermission>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th> <input type="checkbox" class="i-checks"></th>
+				<th  class="sort-column remarks">备注信息</th>
+				<th  class="sort-column name">材料名称</th>
+				<th  class="sort-column brand">材料品牌</th>
+				<th  class="sort-column specification">规格型号</th>
+				<th  class="sort-column pp">参数性能</th>
+				<th  class="sort-column calculateUnit">计量单位</th>
+				<th  class="sort-column price">材料价格</th>
+				<th  class="sort-column count">采购量</th>
+				<th  class="sort-column supplier">供应商</th>
+				<th  class="sort-column linkedman">联系人</th>
+				<th  class="sort-column mobile">联系电话</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="caseMaterials">
+			<tr>
+				<td> <input type="checkbox" id="${caseMaterials.id}" class="i-checks"></td>
+				<td><a  href="javascript:void(0)" onclick="openDialogView('查看案例-材料', '${ctx}/casematerials/caseMaterials/form?id=${caseMaterials.id}','80%','80%')">
+					${caseMaterials.remarks}
+				</a></td>
+				<td>
+					${caseMaterials.name}
+				</td>
+				<td>
+					${caseMaterials.brand}
+				</td>
+				<td>
+					${caseMaterials.specification}
+				</td>
+				<td>
+					${caseMaterials.pp}
+				</td>
+				<td>
+					${caseMaterials.calculateUnit}
+				</td>
+				<td>
+					${caseMaterials.price}
+				</td>
+				<td>
+					${caseMaterials.count}
+				</td>
+				<td>
+					${caseMaterials.supplier}
+				</td>
+				<td>
+					${caseMaterials.linkedman}
+				</td>
+				<td>
+					${caseMaterials.mobile}
+				</td>
+				<td>
+					<shiro:hasPermission name="casematerials:caseMaterials:view">
+						<a href="javascript:void(0)" onclick="openDialogView('查看案例-材料', '${ctx}/casematerials/caseMaterials/form?id=${caseMaterials.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="casematerials:caseMaterials:edit">
+    					<a href="javascript:void(0)" onclick="openDialog('修改案例-材料', '${ctx}/casematerials/caseMaterials/form?id=${caseMaterials.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="casematerials:caseMaterials:del">
+						<a href="${ctx}/casematerials/caseMaterials/delete?id=${caseMaterials.id}" onclick="return confirmx('确认要删除该案例-材料吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+					</shiro:hasPermission>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 87 - 0
src/main/webapp/webpage/modules/casematerialsnorm/caseMaterialsNormForm.jsp

@@ -0,0 +1,87 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>材料消耗量指标管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  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);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="caseMaterialsNorm" action="${ctx}/casematerialsnorm/caseMaterialsNorm/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-35">
+						<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">名称:</label></td>
+					<td class="width-35">
+						<form:input path="name" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">型号:</label></td>
+					<td class="width-35">
+						<form:input path="type" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">单位消耗量:</label></td>
+					<td class="width-35">
+						<form:input path="unitContent" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">单位:</label></td>
+					<td class="width-35">
+						<form:input path="unit" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">合价:</label></td>
+					<td class="width-35">
+						<form:input path="allPrice" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">比重:</label></td>
+					<td class="width-35">
+						<form:input path="proportion" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">案例id:</label></td>
+					<td class="width-35">
+						<form:input path="caseId" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 150 - 0
src/main/webapp/webpage/modules/casematerialsnorm/caseMaterialsNormList.jsp

@@ -0,0 +1,150 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>材料消耗量指标管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>材料消耗量指标列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="#">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="#">选项1</a>
+				</li>
+				<li><a href="#">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="caseMaterialsNorm" action="${ctx}/casematerialsnorm/caseMaterialsNorm/" 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="form-group">
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="casematerialsnorm:caseMaterialsNorm:add">
+				<table:addRow url="${ctx}/casematerialsnorm/caseMaterialsNorm/form" title="材料消耗量指标"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casematerialsnorm:caseMaterialsNorm:edit">
+			    <table:editRow url="${ctx}/casematerialsnorm/caseMaterialsNorm/form" title="材料消耗量指标" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casematerialsnorm:caseMaterialsNorm:del">
+				<table:delRow url="${ctx}/casematerialsnorm/caseMaterialsNorm/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casematerialsnorm:caseMaterialsNorm:import">
+				<table:importExcel url="${ctx}/casematerialsnorm/caseMaterialsNorm/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casematerialsnorm:caseMaterialsNorm:export">
+	       		<table:exportExcel url="${ctx}/casematerialsnorm/caseMaterialsNorm/export"></table:exportExcel><!-- 导出按钮 -->
+	       	</shiro:hasPermission>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th> <input type="checkbox" class="i-checks"></th>
+				<th  class="sort-column remarks">备注信息</th>
+				<th  class="sort-column name">名称</th>
+				<th  class="sort-column type">型号</th>
+				<th  class="sort-column unitContent">单位消耗量</th>
+				<th  class="sort-column unit">单位</th>
+				<th  class="sort-column allPrice">合价</th>
+				<th  class="sort-column proportion">比重</th>
+				<th  class="sort-column caseId">案例id</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="caseMaterialsNorm">
+			<tr>
+				<td> <input type="checkbox" id="${caseMaterialsNorm.id}" class="i-checks"></td>
+				<td><a  href="#" onclick="openDialogView('查看材料消耗量指标', '${ctx}/casematerialsnorm/caseMaterialsNorm/form?id=${caseMaterialsNorm.id}','80%','80%')">
+					${caseMaterialsNorm.remarks}
+				</a></td>
+				<td>
+					${caseMaterialsNorm.name}
+				</td>
+				<td>
+					${caseMaterialsNorm.type}
+				</td>
+				<td>
+					${caseMaterialsNorm.unitContent}
+				</td>
+				<td>
+					${caseMaterialsNorm.unit}
+				</td>
+				<td>
+					${caseMaterialsNorm.allPrice}
+				</td>
+				<td>
+					${caseMaterialsNorm.proportion}
+				</td>
+				<td>
+					${caseMaterialsNorm.caseId}
+				</td>
+				<td>
+					<shiro:hasPermission name="casematerialsnorm:caseMaterialsNorm:view">
+						<a href="#" onclick="openDialogView('查看材料消耗量指标', '${ctx}/casematerialsnorm/caseMaterialsNorm/form?id=${caseMaterialsNorm.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="casematerialsnorm:caseMaterialsNorm:edit">
+    					<a href="#" onclick="openDialog('修改材料消耗量指标', '${ctx}/casematerialsnorm/caseMaterialsNorm/form?id=${caseMaterialsNorm.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="casematerialsnorm:caseMaterialsNorm:del">
+						<a href="${ctx}/casematerialsnorm/caseMaterialsNorm/delete?id=${caseMaterialsNorm.id}" onclick="return confirmx('确认要删除该材料消耗量指标吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+					</shiro:hasPermission>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 47 - 0
src/main/webapp/webpage/modules/casemechanicalnorm/caseMechanicalNormForm.jsp

@@ -0,0 +1,47 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>机械消耗量指标管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  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);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="caseMechanicalNorm" action="${ctx}/casemechanicalnorm/caseMechanicalNorm/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 132 - 0
src/main/webapp/webpage/modules/casemechanicalnorm/caseMechanicalNormList.jsp

@@ -0,0 +1,132 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>机械消耗量指标管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>机械消耗量指标列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="#">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="#">选项1</a>
+				</li>
+				<li><a href="#">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="caseMechanicalNorm" action="${ctx}/casemechanicalnorm/caseMechanicalNorm/" 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="form-group">
+			<span>名称:</span>
+				<form:input path="name" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="casemechanicalnorm:caseMechanicalNorm:add">
+				<table:addRow url="${ctx}/casemechanicalnorm/caseMechanicalNorm/form" title="机械消耗量指标"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casemechanicalnorm:caseMechanicalNorm:edit">
+			    <table:editRow url="${ctx}/casemechanicalnorm/caseMechanicalNorm/form" title="机械消耗量指标" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casemechanicalnorm:caseMechanicalNorm:del">
+				<table:delRow url="${ctx}/casemechanicalnorm/caseMechanicalNorm/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casemechanicalnorm:caseMechanicalNorm:import">
+				<table:importExcel url="${ctx}/casemechanicalnorm/caseMechanicalNorm/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casemechanicalnorm:caseMechanicalNorm:export">
+	       		<table:exportExcel url="${ctx}/casemechanicalnorm/caseMechanicalNorm/export"></table:exportExcel><!-- 导出按钮 -->
+	       	</shiro:hasPermission>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th> <input type="checkbox" class="i-checks"></th>
+				<th  class="sort-column updateDate">更新时间</th>
+				<th  class="sort-column remarks">备注信息</th>
+				<th  class="sort-column name">名称</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="caseMechanicalNorm">
+			<tr>
+				<td> <input type="checkbox" id="${caseMechanicalNorm.id}" class="i-checks"></td>
+				<td><a  href="#" onclick="openDialogView('查看机械消耗量指标', '${ctx}/casemechanicalnorm/caseMechanicalNorm/form?id=${caseMechanicalNorm.id}','80%','80%')">
+					<fmt:formatDate value="${caseMechanicalNorm.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+				</a></td>
+				<td>
+					${caseMechanicalNorm.remarks}
+				</td>
+				<td>
+					${caseMechanicalNorm.name}
+				</td>
+				<td>
+					<shiro:hasPermission name="casemechanicalnorm:caseMechanicalNorm:view">
+						<a href="#" onclick="openDialogView('查看机械消耗量指标', '${ctx}/casemechanicalnorm/caseMechanicalNorm/form?id=${caseMechanicalNorm.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="casemechanicalnorm:caseMechanicalNorm:edit">
+    					<a href="#" onclick="openDialog('修改机械消耗量指标', '${ctx}/casemechanicalnorm/caseMechanicalNorm/form?id=${caseMechanicalNorm.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="casemechanicalnorm:caseMechanicalNorm:del">
+						<a href="${ctx}/casemechanicalnorm/caseMechanicalNorm/delete?id=${caseMechanicalNorm.id}" onclick="return confirmx('确认要删除该机械消耗量指标吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+					</shiro:hasPermission>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 65 - 0
src/main/webapp/webpage/modules/casemember/caseMemberForm.jsp

@@ -0,0 +1,65 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>会员案例管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  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);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="caseMember" action="${ctx}/casemember/caseMember/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-35">
+						<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">案例id:</label></td>
+					<td class="width-35">
+						<form:input path="caseId" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">会员id:</label></td>
+					<td class="width-35">
+						<form:input path="memberId" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"></td>
+		   			<td class="width-35" ></td>
+		  		</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 134 - 0
src/main/webapp/webpage/modules/casemember/caseMemberList.jsp

@@ -0,0 +1,134 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>会员案例管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>会员案例列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="#">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="#">选项1</a>
+				</li>
+				<li><a href="#">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="caseMember" action="${ctx}/casemember/caseMember/" 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="form-group">
+			<span>案例id:</span>
+				<form:input path="caseId" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+			<span>会员id:</span>
+				<form:input path="memberId" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="casemember:caseMember:add">
+				<table:addRow url="${ctx}/casemember/caseMember/form" title="会员案例"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casemember:caseMember:edit">
+			    <table:editRow url="${ctx}/casemember/caseMember/form" title="会员案例" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casemember:caseMember:del">
+				<table:delRow url="${ctx}/casemember/caseMember/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casemember:caseMember:import">
+				<table:importExcel url="${ctx}/casemember/caseMember/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casemember:caseMember:export">
+	       		<table:exportExcel url="${ctx}/casemember/caseMember/export"></table:exportExcel><!-- 导出按钮 -->
+	       	</shiro:hasPermission>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th> <input type="checkbox" class="i-checks"></th>
+				<th  class="sort-column remarks">备注信息</th>
+				<th  class="sort-column caseId">案例id</th>
+				<th  class="sort-column memberId">会员id</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="caseMember">
+			<tr>
+				<td> <input type="checkbox" id="${caseMember.id}" class="i-checks"></td>
+				<td><a  href="#" onclick="openDialogView('查看会员案例', '${ctx}/casemember/caseMember/form?id=${caseMember.id}','800px', '500px')">
+					${caseMember.remarks}
+				</a></td>
+				<td>
+					${caseMember.caseId}
+				</td>
+				<td>
+					${caseMember.memberId}
+				</td>
+				<td>
+					<shiro:hasPermission name="casemember:caseMember:view">
+						<a href="#" onclick="openDialogView('查看会员案例', '${ctx}/casemember/caseMember/form?id=${caseMember.id}','800px', '500px')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="casemember:caseMember:edit">
+    					<a href="#" onclick="openDialog('修改会员案例', '${ctx}/casemember/caseMember/form?id=${caseMember.id}','800px', '500px')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="casemember:caseMember:del">
+						<a href="${ctx}/casemember/caseMember/delete?id=${caseMember.id}" onclick="return confirmx('确认要删除该会员案例吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+					</shiro:hasPermission>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 85 - 0
src/main/webapp/webpage/modules/casenorm/caseNormForm.jsp

@@ -0,0 +1,85 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例-造价及材料指标管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  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);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="caseNorm" action="${ctx}/casenorm/caseNorm/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-35">
+						<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>科目名称:</label></td>
+					<td class="width-35">
+						<form:input path="name" htmlEscape="false"    class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>单位含量:</label></td>
+					<td class="width-35">
+						<form:input path="eachContent" htmlEscape="false"    class="form-control required number"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>单位:</label></td>
+					<td class="width-35">
+						<form:input path="unit" htmlEscape="false"    class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">占造价比例:</label></td>
+					<td class="width-35">
+						<form:input path="percent" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>计算口径:</label></td>
+					<td class="width-35">
+						<form:input path="calculatedBy" htmlEscape="false"    class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>计算口径值:</label></td>
+					<td class="width-35">
+						<form:input path="calculatedValue" htmlEscape="false"    class="form-control required number"/>
+					</td>
+					<td class="width-15 active"></td>
+		   			<td class="width-35" ></td>
+		  		</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 148 - 0
src/main/webapp/webpage/modules/casenorm/caseNormList.jsp

@@ -0,0 +1,148 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例-造价及材料指标管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>案例-造价及材料指标列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="caseNorm" action="${ctx}/casenorm/caseNorm/" 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="form-group">
+			<span>科目名称:</span>
+				<form:input path="name" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="casenorm:caseNorm:add">
+				<table:addRow url="${ctx}/casenorm/caseNorm/form" title="案例-造价及材料指标"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casenorm:caseNorm:edit">
+			    <table:editRow url="${ctx}/casenorm/caseNorm/form" title="案例-造价及材料指标" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casenorm:caseNorm:del">
+				<table:delRow url="${ctx}/casenorm/caseNorm/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casenorm:caseNorm:import">
+				<table:importExcel url="${ctx}/casenorm/caseNorm/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casenorm:caseNorm:export">
+	       		<table:exportExcel url="${ctx}/casenorm/caseNorm/export"></table:exportExcel><!-- 导出按钮 -->
+	       	</shiro:hasPermission>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th> <input type="checkbox" class="i-checks"></th>
+				<th  class="sort-column remarks">备注信息</th>
+				<th  class="sort-column name">科目名称</th>
+				<th  class="sort-column eachContent">单位含量</th>
+				<th  class="sort-column unit">单位</th>
+				<th  class="sort-column percent">占造价比例</th>
+				<th  class="sort-column calculatedBy">计算口径</th>
+				<th  class="sort-column calculatedValue">计算口径值</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="caseNorm">
+			<tr>
+				<td> <input type="checkbox" id="${caseNorm.id}" class="i-checks"></td>
+				<td><a  href="javascript:void(0)" onclick="openDialogView('查看案例-造价及材料指标', '${ctx}/casenorm/caseNorm/form?id=${caseNorm.id}','80%','80%')">
+					${caseNorm.remarks}
+				</a></td>
+				<td>
+					${caseNorm.name}
+				</td>
+				<td>
+					${caseNorm.eachContent}
+				</td>
+				<td>
+					${caseNorm.unit}
+				</td>
+				<td>
+					${caseNorm.percent}
+				</td>
+				<td>
+					${caseNorm.calculatedBy}
+				</td>
+				<td>
+					${caseNorm.calculatedValue}
+				</td>
+				<td>
+					<shiro:hasPermission name="casenorm:caseNorm:view">
+						<a href="javascript:void(0)" onclick="openDialogView('查看案例-造价及材料指标', '${ctx}/casenorm/caseNorm/form?id=${caseNorm.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="casenorm:caseNorm:edit">
+    					<a href="javascript:void(0)" onclick="openDialog('修改案例-造价及材料指标', '${ctx}/casenorm/caseNorm/form?id=${caseNorm.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="casenorm:caseNorm:del">
+						<a href="${ctx}/casenorm/caseNorm/delete?id=${caseNorm.id}" onclick="return confirmx('确认要删除该案例-造价及材料指标吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+					</shiro:hasPermission>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 47 - 0
src/main/webapp/webpage/modules/casepeoplenorm/casePeopleNormForm.jsp

@@ -0,0 +1,47 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>人工消耗量指标管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  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);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="casePeopleNorm" action="${ctx}/casepeoplenorm/casePeopleNorm/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 132 - 0
src/main/webapp/webpage/modules/casepeoplenorm/casePeopleNormList.jsp

@@ -0,0 +1,132 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>人工消耗量指标管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>人工消耗量指标列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="#">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="#">选项1</a>
+				</li>
+				<li><a href="#">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="casePeopleNorm" action="${ctx}/casepeoplenorm/casePeopleNorm/" 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="form-group">
+			<span>名称:</span>
+				<form:input path="name" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="casepeoplenorm:casePeopleNorm:add">
+				<table:addRow url="${ctx}/casepeoplenorm/casePeopleNorm/form" title="人工消耗量指标"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casepeoplenorm:casePeopleNorm:edit">
+			    <table:editRow url="${ctx}/casepeoplenorm/casePeopleNorm/form" title="人工消耗量指标" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casepeoplenorm:casePeopleNorm:del">
+				<table:delRow url="${ctx}/casepeoplenorm/casePeopleNorm/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casepeoplenorm:casePeopleNorm:import">
+				<table:importExcel url="${ctx}/casepeoplenorm/casePeopleNorm/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="casepeoplenorm:casePeopleNorm:export">
+	       		<table:exportExcel url="${ctx}/casepeoplenorm/casePeopleNorm/export"></table:exportExcel><!-- 导出按钮 -->
+	       	</shiro:hasPermission>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th> <input type="checkbox" class="i-checks"></th>
+				<th  class="sort-column updateDate">更新时间</th>
+				<th  class="sort-column remarks">备注信息</th>
+				<th  class="sort-column name">名称</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="casePeopleNorm">
+			<tr>
+				<td> <input type="checkbox" id="${casePeopleNorm.id}" class="i-checks"></td>
+				<td><a  href="#" onclick="openDialogView('查看人工消耗量指标', '${ctx}/casepeoplenorm/casePeopleNorm/form?id=${casePeopleNorm.id}','80%','80%')">
+					<fmt:formatDate value="${casePeopleNorm.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+				</a></td>
+				<td>
+					${casePeopleNorm.remarks}
+				</td>
+				<td>
+					${casePeopleNorm.name}
+				</td>
+				<td>
+					<shiro:hasPermission name="casepeoplenorm:casePeopleNorm:view">
+						<a href="#" onclick="openDialogView('查看人工消耗量指标', '${ctx}/casepeoplenorm/casePeopleNorm/form?id=${casePeopleNorm.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="casepeoplenorm:casePeopleNorm:edit">
+    					<a href="#" onclick="openDialog('修改人工消耗量指标', '${ctx}/casepeoplenorm/casePeopleNorm/form?id=${casePeopleNorm.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="casepeoplenorm:casePeopleNorm:del">
+						<a href="${ctx}/casepeoplenorm/casePeopleNorm/delete?id=${casePeopleNorm.id}" onclick="return confirmx('确认要删除该人工消耗量指标吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+					</shiro:hasPermission>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 67 - 0
src/main/webapp/webpage/modules/caseprojectfeature/caseProjectFeatureForm.jsp

@@ -0,0 +1,67 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例-主要项目特征管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  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);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="caseProjectFeature" action="${ctx}/caseprojectfeature/caseProjectFeature/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-35">
+						<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>特征项:</label></td>
+					<td class="width-35">
+						<form:input path="name" htmlEscape="false"    class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>特征值:</label></td>
+					<td class="width-35">
+						<form:input path="value" htmlEscape="false"    class="form-control required"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">案例id:</label></td>
+					<td class="width-35">
+						<form:input path="caseId" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 138 - 0
src/main/webapp/webpage/modules/caseprojectfeature/caseProjectFeatureList.jsp

@@ -0,0 +1,138 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例-主要项目特征管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>案例-主要项目特征列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="caseProjectFeature" action="${ctx}/caseprojectfeature/caseProjectFeature/" 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="form-group">
+			<span>特征项:</span>
+				<form:input path="name" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+			<span>特征值:</span>
+				<form:input path="value" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="caseprojectfeature:caseProjectFeature:add">
+				<table:addRow url="${ctx}/caseprojectfeature/caseProjectFeature/form" title="案例-主要项目特征"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="caseprojectfeature:caseProjectFeature:edit">
+			    <table:editRow url="${ctx}/caseprojectfeature/caseProjectFeature/form" title="案例-主要项目特征" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="caseprojectfeature:caseProjectFeature:del">
+				<table:delRow url="${ctx}/caseprojectfeature/caseProjectFeature/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="caseprojectfeature:caseProjectFeature:import">
+				<table:importExcel url="${ctx}/caseprojectfeature/caseProjectFeature/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="caseprojectfeature:caseProjectFeature:export">
+	       		<table:exportExcel url="${ctx}/caseprojectfeature/caseProjectFeature/export"></table:exportExcel><!-- 导出按钮 -->
+	       	</shiro:hasPermission>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th> <input type="checkbox" class="i-checks"></th>
+				<th  class="sort-column remarks">备注信息</th>
+				<th  class="sort-column name">特征项</th>
+				<th  class="sort-column value">特征值</th>
+				<th  class="sort-column caseId">案例id</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="caseProjectFeature">
+			<tr>
+				<td> <input type="checkbox" id="${caseProjectFeature.id}" class="i-checks"></td>
+				<td><a  href="javascript:void(0)" onclick="openDialogView('查看案例-主要项目特征', '${ctx}/caseprojectfeature/caseProjectFeature/form?id=${caseProjectFeature.id}','80%','80%')">
+					${caseProjectFeature.remarks}
+				</a></td>
+				<td>
+					${caseProjectFeature.name}
+				</td>
+				<td>
+					${caseProjectFeature.value}
+				</td>
+				<td>
+					${caseProjectFeature.caseId}
+				</td>
+				<td>
+					<shiro:hasPermission name="caseprojectfeature:caseProjectFeature:view">
+						<a href="javascript:void(0)" onclick="openDialogView('查看案例-主要项目特征', '${ctx}/caseprojectfeature/caseProjectFeature/form?id=${caseProjectFeature.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="caseprojectfeature:caseProjectFeature:edit">
+    					<a href="javascript:void(0)" onclick="openDialog('修改案例-主要项目特征', '${ctx}/caseprojectfeature/caseProjectFeature/form?id=${caseProjectFeature.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="caseprojectfeature:caseProjectFeature:del">
+						<a href="${ctx}/caseprojectfeature/caseProjectFeature/delete?id=${caseProjectFeature.id}" onclick="return confirmx('确认要删除该案例-主要项目特征吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+					</shiro:hasPermission>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>