Enford 5 年之前
父節點
當前提交
10fdfd4182
共有 100 個文件被更改,包括 23745 次插入0 次删除
  1. 136 0
      src/main/webapp/webpage/modules/workbidingdocument/workBidingDocumentAudit.jsp
  2. 191 0
      src/main/webapp/webpage/modules/workbidingdocument/workBidingDocumentConfirm.jsp
  3. 378 0
      src/main/webapp/webpage/modules/workbidingdocument/workBidingDocumentConfirmForm.jsp
  4. 357 0
      src/main/webapp/webpage/modules/workbidingdocument/workBidingDocumentForm.jsp
  5. 127 0
      src/main/webapp/webpage/modules/workbidingdocument/workBidingDocumentHistoryList.jsp
  6. 574 0
      src/main/webapp/webpage/modules/workbidingdocument/workBidingDocumentList.jsp
  7. 214 0
      src/main/webapp/webpage/modules/workbidingdocument/workBidingDocumentMaintain.jsp
  8. 15 0
      src/main/webapp/webpage/modules/workbidingdocument/workBidingDocumentTask.jsp
  9. 205 0
      src/main/webapp/webpage/modules/workbidingdocument/workBidingDocumentTodoList.jsp
  10. 201 0
      src/main/webapp/webpage/modules/workbidingdocument/workBidingDocumentView.jsp
  11. 687 0
      src/main/webapp/webpage/modules/workbidingevaluation/workBidingEvaluationForm.jsp
  12. 147 0
      src/main/webapp/webpage/modules/workbidingevaluation/workBidingEvaluationList.jsp
  13. 234 0
      src/main/webapp/webpage/modules/workbidingevaluation/workBidingEvaluationView.jsp
  14. 79 0
      src/main/webapp/webpage/modules/workbidingevaluation/workProjectDepositForm.jsp
  15. 488 0
      src/main/webapp/webpage/modules/workbidingproject/workBidingProjectForm.jsp
  16. 211 0
      src/main/webapp/webpage/modules/workbidingproject/workBidingProjectList.jsp
  17. 380 0
      src/main/webapp/webpage/modules/workbidingproject/workBidingProjectView.jsp
  18. 690 0
      src/main/webapp/webpage/modules/workbidproject/workBidProjectAudit.jsp
  19. 969 0
      src/main/webapp/webpage/modules/workbidproject/workBidProjectForm.jsp
  20. 363 0
      src/main/webapp/webpage/modules/workbidproject/workBidProjectList.jsp
  21. 354 0
      src/main/webapp/webpage/modules/workbidproject/workBidProjectLists.jsp
  22. 930 0
      src/main/webapp/webpage/modules/workbidproject/workBidProjectModify.jsp
  23. 20 0
      src/main/webapp/webpage/modules/workbidproject/workBidProjectTrack.jsp
  24. 611 0
      src/main/webapp/webpage/modules/workbidproject/workBidProjectView.jsp
  25. 743 0
      src/main/webapp/webpage/modules/workbidproject/workBidProjectbzAudit.jsp
  26. 759 0
      src/main/webapp/webpage/modules/workbidproject/workBidProjectgzAudit.jsp
  27. 705 0
      src/main/webapp/webpage/modules/workbidproject/workBidProjectkbAudit.jsp
  28. 699 0
      src/main/webapp/webpage/modules/workbidproject/workBidProjectwhAudit.jsp
  29. 693 0
      src/main/webapp/webpage/modules/workbidproject/workBidProjectzjlAudit.jsp
  30. 171 0
      src/main/webapp/webpage/modules/workborrowmangement/workBorrowBackAudit.jsp
  31. 123 0
      src/main/webapp/webpage/modules/workborrowmangement/workBorrowBackView.jsp
  32. 187 0
      src/main/webapp/webpage/modules/workborrowmangement/workBorrowMangementAudit.jsp
  33. 168 0
      src/main/webapp/webpage/modules/workborrowmangement/workBorrowMangementForm.jsp
  34. 375 0
      src/main/webapp/webpage/modules/workborrowmangement/workBorrowMangementList.jsp
  35. 152 0
      src/main/webapp/webpage/modules/workborrowmangement/workBorrowMangementModifyApply.jsp
  36. 15 0
      src/main/webapp/webpage/modules/workborrowmangement/workBorrowMangementTask.jsp
  37. 123 0
      src/main/webapp/webpage/modules/workborrowmangement/workBorrowMangementView.jsp
  38. 119 0
      src/main/webapp/webpage/modules/workcalendar/workCalendarDayList.jsp
  39. 311 0
      src/main/webapp/webpage/modules/workcalendar/workCalendarForm.jsp
  40. 301 0
      src/main/webapp/webpage/modules/workcalendar/workCalendarList.jsp
  41. 247 0
      src/main/webapp/webpage/modules/workcalendar/workCalendarView.jsp
  42. 175 0
      src/main/webapp/webpage/modules/workcatalogueitem/workCatalogueItemForm.jsp
  43. 310 0
      src/main/webapp/webpage/modules/workcatalogueitem/workCatalogueItemList.jsp
  44. 101 0
      src/main/webapp/webpage/modules/workcatalogueitem/workCatalogueItemview.jsp
  45. 95 0
      src/main/webapp/webpage/modules/workcatalogueitemstock/workCatalogueItemStockForm.jsp
  46. 154 0
      src/main/webapp/webpage/modules/workcatalogueitemstock/workCatalogueItemStockList.jsp
  47. 197 0
      src/main/webapp/webpage/modules/workchangejob/workChangeJobAudit.jsp
  48. 445 0
      src/main/webapp/webpage/modules/workchangejob/workChangeJobForm.jsp
  49. 311 0
      src/main/webapp/webpage/modules/workchangejob/workChangeJobList.jsp
  50. 440 0
      src/main/webapp/webpage/modules/workchangejob/workChangeJobModifyApply.jsp
  51. 15 0
      src/main/webapp/webpage/modules/workchangejob/workChangeJobTask.jsp
  52. 87 0
      src/main/webapp/webpage/modules/workchangejob/workChangeJobUserForm.jsp
  53. 152 0
      src/main/webapp/webpage/modules/workchangejob/workChangeJobUserList.jsp
  54. 166 0
      src/main/webapp/webpage/modules/workchangejob/workChangeJobView.jsp
  55. 27 0
      src/main/webapp/webpage/modules/workclientinfo/Excel.jsp
  56. 48 0
      src/main/webapp/webpage/modules/workclientinfo/Word.jsp
  57. 902 0
      src/main/webapp/webpage/modules/workclientinfo/workClientInfoForm.jsp
  58. 245 0
      src/main/webapp/webpage/modules/workclientinfo/workClientInfoFormDetail.jsp
  59. 269 0
      src/main/webapp/webpage/modules/workclientinfo/workClientInfoList.jsp
  60. 160 0
      src/main/webapp/webpage/modules/workcommongroup/workCommonGroupForm.jsp
  61. 136 0
      src/main/webapp/webpage/modules/workcommongroup/workCommonGroupList.jsp
  62. 116 0
      src/main/webapp/webpage/modules/workcommongroup/workCommonGroupView.jsp
  63. 82 0
      src/main/webapp/webpage/modules/workcommunicaterecord/workCommunicateContentForm.jsp
  64. 146 0
      src/main/webapp/webpage/modules/workcommunicaterecord/workCommunicateContentList.jsp
  65. 193 0
      src/main/webapp/webpage/modules/workcommunicaterecord/workCommunicateRecordForm.jsp
  66. 65 0
      src/main/webapp/webpage/modules/workcommunicaterecord/workCommunicateRecordFormView.jsp
  67. 122 0
      src/main/webapp/webpage/modules/workcommunicaterecord/workCommunicateRecordList.jsp
  68. 75 0
      src/main/webapp/webpage/modules/workcompanyinfo/companyinfoForm.jsp
  69. 138 0
      src/main/webapp/webpage/modules/workcompanyinfo/companyinfoList.jsp
  70. 131 0
      src/main/webapp/webpage/modules/workcontent/workContentAltermanage.jsp
  71. 120 0
      src/main/webapp/webpage/modules/workcontent/workContentAltermanageView.jsp
  72. 65 0
      src/main/webapp/webpage/modules/workcontent/workContentBiddingplan.jsp
  73. 60 0
      src/main/webapp/webpage/modules/workcontent/workContentBiddingplanView.jsp
  74. 183 0
      src/main/webapp/webpage/modules/workcontent/workContentBudgetList.jsp
  75. 50 0
      src/main/webapp/webpage/modules/workcontent/workContentBudgetListView.jsp
  76. 137 0
      src/main/webapp/webpage/modules/workcontent/workContentClaimForm.jsp
  77. 124 0
      src/main/webapp/webpage/modules/workcontent/workContentClaimFormView.jsp
  78. 96 0
      src/main/webapp/webpage/modules/workcontent/workContentContprogram.jsp
  79. 82 0
      src/main/webapp/webpage/modules/workcontent/workContentContprogramView.jsp
  80. 332 0
      src/main/webapp/webpage/modules/workcontent/workContentContractSumFormView.jsp
  81. 346 0
      src/main/webapp/webpage/modules/workcontent/workContentContractinfoForm.jsp
  82. 325 0
      src/main/webapp/webpage/modules/workcontent/workContentContractinfoFormView.jsp
  83. 169 0
      src/main/webapp/webpage/modules/workcontent/workContentCtrlpriceList.jsp
  84. 62 0
      src/main/webapp/webpage/modules/workcontent/workContentCtrlpriceListView.jsp
  85. 75 0
      src/main/webapp/webpage/modules/workcontent/workContentDocument.jsp
  86. 63 0
      src/main/webapp/webpage/modules/workcontent/workContentDocumentView.jsp
  87. 49 0
      src/main/webapp/webpage/modules/workcontent/workContentFundplan.jsp
  88. 48 0
      src/main/webapp/webpage/modules/workcontent/workContentFundplanView.jsp
  89. 245 0
      src/main/webapp/webpage/modules/workcontent/workContentInvestmentCostList.jsp
  90. 71 0
      src/main/webapp/webpage/modules/workcontent/workContentInvestmentCostListView.jsp
  91. 108 0
      src/main/webapp/webpage/modules/workcontent/workContentPriceadjustForm.jsp
  92. 97 0
      src/main/webapp/webpage/modules/workcontent/workContentPriceadjustFormView.jsp
  93. 128 0
      src/main/webapp/webpage/modules/workcontent/workContentPricemanageForm.jsp
  94. 73 0
      src/main/webapp/webpage/modules/workcontent/workContentPricemanageFormView.jsp
  95. 150 0
      src/main/webapp/webpage/modules/workcontent/workContentProjectpriceForm.jsp
  96. 144 0
      src/main/webapp/webpage/modules/workcontent/workContentProjectpriceFormView.jsp
  97. 132 0
      src/main/webapp/webpage/modules/workcontent/workContentTypeForm.jsp
  98. 131 0
      src/main/webapp/webpage/modules/workcontent/workContentTypeList.jsp
  99. 125 0
      src/main/webapp/webpage/modules/workcontent/workContentVisamanage.jsp
  100. 0 0
      src/main/webapp/webpage/modules/workcontent/workContentVisamanageView.jsp

+ 136 - 0
src/main/webapp/webpage/modules/workbidingdocument/workBidingDocumentAudit.jsp

@@ -0,0 +1,136 @@
+<%@ 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;
+		}
+		
+		$('#btnPresent').click(function () { 
+
+			$.ajax({
+	             url:"${ctx}/workbidingdocument/workBidingDocument/present",
+	             data:$('#loginForm').serialize(),
+	             type:"post",
+	             success:function(data){
+	        
+	             }					
+		});
+		});	
+			
+		$(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);
+					}
+				}
+			});
+
+            if (${requestScope.disabled eq 'false'}) {
+                $("#startTime").attr('disabled',true);
+                $("#endTime").attr('disabled',true);
+                $("#reason").attr('disabled',true);
+            }
+		});
+	</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">
+		<form:form id="inputForm" modelAttribute="workBidingDocument" action="${ctx}/workbidingdocument/workBidingDocument/saveAudit" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<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="${workBidingDocument.act.status}" />
+			<div class="control-group">
+				<label class="control-label">项目名称:</label>
+				<div class="controls">
+					${workBidingDocument.workBidProject.projectName}
+				</div>
+			</div>
+			<div class="control-group">
+				<label class="control-label">项目编号:</label>
+				<div class="controls">
+					${workBidingDocument.workBidProject.projectNumber}
+				</div>
+			</div>
+			<div class="control-group">
+				<label class="control-label">项目类型:</label>
+				<div class="controls">
+					${fns:getMainDictLabel(workBidingDocument.workBidProject.projectType, 'contract_type', '')}
+				</div>
+			</div>
+			<div class="control-group">
+				<label class="control-label">标书备注:</label>
+				<div class="controls">
+					${workBidingDocument.remarks}
+				</div>
+			</div>
+
+			<c:if test="${not empty status}">
+				<div class="control-group">
+					<label class="control-label">审批意见:</label>
+					<div class="controls">
+						<form:textarea path="act.comment" class="form-control" rows="3" maxlength="127"/>
+					</div>
+				</div>
+			</c:if>
+			<act:flowChart procInsId="${workBidingDocument.act.procInsId}"/>
+			<act:histoicFlow procInsId="${workBidingDocument.act.procInsId}"/>
+	</form:form>
+	</div>
+	</div>
+	</div>
+</body>
+</html>

+ 191 - 0
src/main/webapp/webpage/modules/workbidingdocument/workBidingDocumentConfirm.jsp

@@ -0,0 +1,191 @@
+<%@ 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="workBidingDocument"  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="workBidProject.projectNumber" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+							<span>项目名称:</span>
+							<form:input path="workBidProject.projectName" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+							<span>项目类型:</span>
+							<form:select path="workBidProject.projectType"  class="form-control m-b">
+								<form:option value="" label=""/>
+								<form:options items="${fns:getMainDictList('contract_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+							</form:select>
+						</div>
+					</form:form>
+					<br/>
+				</div>
+			</div>
+
+			<!-- 工具栏 -->
+			<div class="row">
+				<div class="col-sm-12">
+					<div class="pull-left">
+						<shiro:hasPermission name="workbidingdocument:workBidingDocument:import">
+							<table:importExcel url="${ctx}/workbidingdocument/workBidingDocument/import"></table:importExcel><!-- 导入按钮 -->
+						</shiro:hasPermission>
+						<shiro:hasPermission name="workbidingdocument:workBidingDocument:export">
+							<table:exportExcel url="${ctx}/workbidingdocument/workBidingDocument/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 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>
+					<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="workBidingDocument" varStatus="index">
+					<c:set var="workClientLinkmanList" value="${workBidingDocument.workBidProject.workClientLinkmanList}" />
+					<c:set var="masterList" value="${workBidingDocument.workBidProject.masterList}" />
+					<tr>
+						<td> ${index.index}</td>
+						<td>
+							<span title="${workBidingDocument.workBidProject.projectNumber}">${fns:abbr(workBidingDocument.workBidProject.projectNumber, 30)}</span>
+						</td>
+						<td><shiro:hasPermission name="workbidproject:workBidProject:view">
+							<a href="javascript:void(0)" onclick="openDialogView('查看投标项目', '${ctx}/workbidproject/workBidProject/form?id=${workBidingDocument.workBidProject.id}&name=view','80%','80%')">
+								<span title="${workBidingDocument.workBidProject.projectName}">${fns:abbr(workBidingDocument.workBidProject.projectName, 30)}</span>
+							</a>
+						</shiro:hasPermission>
+						</td>
+						<td>
+								${fns:getMainDictLabel(workBidingDocument.workBidProject.projectType, 'contract_type', '')}
+						</td>
+						<td>
+							<span title="${workBidingDocument.workBidProject.bidCompany.name}">${fns:abbr(workBidingDocument.workBidProject.bidCompany.name, 30)}</span>
+						</td>
+						<%--<td>--%>
+							<%--<c:if test="${not empty workClientLinkmanList}">--%>
+								<%--<c:forEach items="${workClientLinkmanList}" var="entry"  varStatus="status">--%>
+									<%--<c:choose>--%>
+										<%--<c:when test="${status.first}">--%>
+											<%--<c:set scope="page" var="sub">${entry.name}</c:set>--%>
+										<%--</c:when>--%>
+										<%--<c:otherwise>--%>
+											<%--<c:set scope="page" var="sub">${sub},${entry.name}</c:set>--%>
+										<%--</c:otherwise>--%>
+									<%--</c:choose>--%>
+								<%--</c:forEach>--%>
+								<%--<span title="${sub}">${fns:abbr(sub, 30)}</span>--%>
+							<%--</c:if>--%>
+						<%--</td>--%>
+						<td>
+							<c:if test="${not empty masterList}">
+								<c:forEach items="${masterList}" var="entry"  varStatus="status">
+									<c:choose>
+										<c:when test="${status.first}">
+											<c:set scope="page" var="sub">${entry.name}</c:set>
+										</c:when>
+										<c:otherwise>
+											<c:set scope="page" var="sub">${sub},${entry.name}</c:set>
+										</c:otherwise>
+									</c:choose>
+								</c:forEach>
+								<span title="${sub}">${fns:abbr(sub, 30)}</span>
+							</c:if>
+						</td>
+						<td>
+							<fmt:formatDate value="${workBidingDocument.workBidProject.bidDate}" pattern="yyyy-MM-dd"/>
+
+						</td>
+						<td> <!-- 投标费用 -->
+							${workBidingDocument.name}
+						</td>
+						<td>
+							${workBidingDocument.sender}
+						</td>
+						<td>
+							<div style="text-align: center">
+							<c:if test="${workBidingDocument.bidStatus ge 1}">
+								<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('已投标',{icon:2})" class="btn btn-default btn-xs">确认定投标</a>
+							</c:if>
+							<c:if test="${workBidingDocument.bidStatus eq 0}">
+								<shiro:hasPermission name="workbidproject:workBidProject:edit">
+									<a href="javascript:void(0)" onclick="openDialog('确认投标项目信息', '${ctx}/workbidingdocument/workBidingDocument/confirmForm?workBidProjectId=${workBidingDocument.workBidProject.id}','80%','80%')" class="btn btn-info btn-xs">确认定投标</a>
+								</shiro:hasPermission>
+							</c:if>
+							</div>
+						</td>
+						<td>
+							${fns:getDictLabel(workBidingDocument.bidStatus, 'workBidingDocument_bid_status','' )}
+						</td>
+					</tr>
+				</c:forEach>
+				</tbody>
+			</table>
+
+			<!-- 分页代码 -->
+			<table:page page="${page}"></table:page>
+			<br/>
+			<br/>
+		</div>
+	</div>
+</div>
+</body>
+</html>

+ 378 - 0
src/main/webapp/webpage/modules/workbidingdocument/workBidingDocumentConfirmForm.jsp

@@ -0,0 +1,378 @@
+<%@ 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: '#registrationDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+					});
+					laydate.render({
+			            elem: '#bidDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			         });
+					laydate.render({
+			            elem: '#trialDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			        });
+					laydate.render({
+			            elem: '#purchaseDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			        });
+					laydate.render({
+			            elem: '#refundDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			        });
+					var isExt = "${workBidProject.isExt}";
+				    if(isExt==0){
+				        $("#contact").show();
+				        $("#btnAdd1").hide();
+				        $("#btnAdd2").show();
+				        $("#extContact").hide();
+				    }else{
+				        $("#extContact").show();
+				        $("#btnAdd1").show();
+				        $("#btnAdd2").hide();
+				        $("#contact").hide();
+				    }
+
+		});
+
+		function addRow(list, idx, workClientLinkmanTpl, row) {
+            if (idx < 1) {
+				$(list).append(Mustache.render(workClientLinkmanTpl, {
+					idx: idx, delBtn: true, row: row
+				}));
+				$(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).parent().parent().hide();
+				$(obj).html("&divide;").attr("title", "撤回删除");
+				$(obj).parent().parent().addClass("error");
+			}else if(delFlag.val() == "1"){
+				delFlag.val("0");
+				$(obj).html("&times;").attr("title", "删除");
+				$(obj).parent().parent().removeClass("error");
+			}
+		}
+
+		function display(n){
+		    if(n==0){
+		        $("#contact").show();
+		        $("#btnAdd1").hide();
+		        $("#btnAdd2").show();
+		        $("#extContact").hide();
+		    }else{
+		        $("#extContact").show();
+		        $("#btnAdd1").show();
+		        $("#btnAdd2").hide();
+		        $("#contact").hide();
+		    }
+		}
+		function display1(){
+       		var id =$("#bidCompanyId")[0].defaultValue;
+ 			$.get("${ctx}/workclientinfo/workClientInfo/selectLinkman", { clientId: id},
+					  function(data,textStatus){
+ 						data = data.body.list;
+			 		    if(data !=null){
+							for (var i=0; i<data.length; i++){
+								addRow('#workClientLinkmanList', workClientLinkmanRowIdx, workClientLinkmanTpl, data[i]);
+                                workClientLinkmanRowIdx = workClientLinkmanRowIdx + 1;
+							}
+						}
+					  });
+		}
+	</script>
+	<script type="text/template" id="workClientLinkmanTpl">
+	</script>
+	<script type="text/javascript">
+		var workClientLinkmanRowIdx = 0, workClientLinkmanTpl = $("#workClientLinkmanTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+		$(document).ready(function() {
+			var data = ${fns:toJson(workBidProject.workClientLinkmanList)};
+			if(data !=null){
+				for (var i=0; i<data.length; i++){
+					addRow('#workClientLinkmanList', workClientLinkmanRowIdx, workClientLinkmanTpl, data[i]);
+					workClientLinkmanRowIdx = workClientLinkmanRowIdx + 1;
+				}
+			}
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workBidProject" action="${ctx}/workbidingdocument/workBidingDocument/confirmSave?workBidProjectId=${workBidProject.id}" 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" colspan="3">
+						<form:input path="projectName" 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" colspan="3">
+						<form:input path="projectNumber" htmlEscape="false" readonly="true" class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目类型:</label></td>
+					<td class="width-35">
+						<form:select path="projectType" class="form-control ">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getMainDictList('contract_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</td>
+					<td class="width-15 active"><label class="pull-right">类型说明:</label></td>
+					<td class="width-35">
+						<form:input path="typeExplain" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目来源:</label></td>
+					<td class="width-35">
+						<form:select path="projectSource" class="form-control">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getMainDictList('bidProjectSource')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</td>
+					<td class="width-15 active"><label class="pull-right">来源说明:</label></td>
+					<td class="width-35">
+						<form:input path="sourceExplain" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"> 是否外部联系人  :</label></td>
+					<td class="width-35">
+					<c:choose>
+					<c:when test="${workBidProject.isExt == 1}">
+						<input type="radio" value="1" id="isExt" name="isExt" onclick="display(this.value)" checked="checked">系统外客户
+		  				<input type="radio" value="0" id="isExt" name="isExt" onclick="display(this.value)" >非系统外客户
+					</c:when>
+					<c:otherwise>
+						<input type="radio" value="1" id="isExt" name="isExt" onclick="display(this.value)" >系统外客户
+		  				<input type="radio" value="0" id="isExt" name="isExt" onclick="display(this.value)" checked="checked">非系统外客户
+						<%-- <form:radiobuttons path="isExternalContacts" items="${fns:getDictList('yes_no')}" itemLabel="label" itemValue="value" onclick="display(this.value) htmlEscape="false" class="i-checks "/> --%>
+	 				</c:otherwise>
+	 				</c:choose>
+
+
+						<%-- <form:checkboxes path="isExt" items="${fns:getDictList('yes_no')}" itemLabel="label" itemValue="value" htmlEscape="false" class="i-checks "/> --%>
+				</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>招标单位:</label></td>
+					<td class="width-35" colspan="3">
+						<div id ="extContact" style="display:none">
+						<form:input path="extCompany" htmlEscape="false"    class="form-control"/>
+						</div>
+						<div id ="contact" style="display:block">
+						<sys:gridselect url="${ctx}/workbidproject/workBidProject/selectbidCompany" id="bidCompany" name="bidCompany.id"  value="${workBidProject.bidCompany.id}"  title="选择招标单位" labelName="bidCompany.name"
+						 labelValue="${workBidProject.bidCompany.name}" cssClass="form-control required" fieldLabels="客户" fieldKeys="name" searchLabel="客户名称" searchKey="name"  ></sys:gridselect>
+						</div>
+					</td>
+				</tr>
+<%-- 					<td class="width-15 active"><label class="pull-right">联系人:</label></td>
+					<td class="width-35" colspan="3">
+						<form:input path="contacts" htmlEscape="false"    class="form-control "/>
+					</td> --%>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">联系人:</label></td>
+					<td class="width-75"  colspan="3">
+					<a id="btnAdd1" style="width:95px;display:none" class="btn btn-white btn-sm" onclick="addRow('#workClientLinkmanList', workClientLinkmanRowIdx, workClientLinkmanTpl);workClientLinkmanRowIdx = workClientLinkmanRowIdx + 1;" title="新增"><i class="fa fa-plus"></i> 新增联系人</a>
+					<a id="btnAdd2"  style="width:95px;block" class="btn btn-white btn-sm" onclick="display1()"> 选择联系人</a>
+					<div></div>
+				<table style="margin-top:10px;" id="contentTable" class="table table-striped table-bordered table-condensed">
+				<thead>
+					<tr>
+						<th class="hide"></th>
+						<th>联系人姓名</th>
+						<th>职务</th>
+						<th>QQ</th>
+						<th>联系方式1</th>
+						<th>联系方式2</th>
+						<th>E-mail</th>
+<!-- 						<th>是否默认联系人</th> -->
+						<th width="10">&nbsp;</th>
+					</tr>
+				</thead>
+				<tbody id="workClientLinkmanList">
+				</tbody>
+			</table>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">报名日期:</label></td>
+					<td class="width-35">
+						<input id="registrationDate" name="registrationDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date "
+							value="<fmt:formatDate value="${workBidProject.registrationDate}" pattern="yyyy-MM-dd"/>"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">投标日期:</label></td>
+					<td class="width-35">
+						<input id="bidDate" name="bidDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date "
+							value="<fmt:formatDate value="${workBidProject.bidDate}" pattern="yyyy-MM-dd"/>"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">资审日期:</label></td>
+					<td class="width-35">
+						<input id="trialDate" name="trialDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date "
+							value="<fmt:formatDate value="${workBidProject.trialDate}" pattern="yyyy-MM-dd"/>"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">资格审查:</label></td>
+					<td class="width-35">
+						<form:select path="trialType" class="form-control ">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getDictList('trial_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">文件费用(元):</label></td>
+					<td class="width-35">
+						<form:input path="documentCost" htmlEscape="false"    class="form-control  number"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">购买领用招标文件日期:</label></td>
+					<td class="width-35">
+						<input id="purchaseDate" name="purchaseDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date "
+							value="<fmt:formatDate value="${workBidProject.purchaseDate}" pattern="yyyy-MM-dd"/>"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">装订费用(元):</label></td>
+					<td class="width-35">
+						<form:input path="bindCost" htmlEscape="false"    class="form-control  number"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">其他费用(元):</label></td>
+					<td class="width-35">
+						<form:input path="otherCost" htmlEscape="false"    class="form-control  number"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">投标保证金(万元):</label></td>
+					<td class="width-35">
+						<form:input path="bidBond" htmlEscape="false"    class="form-control  number"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">投标保证金形式:</label></td>
+					<td class="width-35">
+						<form:select path="bondStyle" class="form-control ">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getMainDictList('bond_style')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">投标保证金退还时间:</label></td>
+					<td class="width-35">
+						<input id="refundDate" name="refundDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date "
+							value="<fmt:formatDate value="${workBidProject.refundDate}" pattern="yyyy-MM-dd"/>"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">报价(元):</label></td>
+					<td class="width-35">
+						<form:input path="offer" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">是否投标:</label></td>
+					<td class="width-35">
+						<form:select path="isBid" class="form-control ">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getDictList('is_bid')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</td>
+					<td class="width-15 active"><label class="pull-right">项目实施部门:</label></td>
+					<%--<td class="width-35">
+					 	<sys:gridselect url="${ctx}/workbidproject/workBidProject/selectimplementingDept" id="implementingDept" name="implementingDept"  value="${workBidProject.implementingDept.id}"  title="选择实施部门" labelName="implementingDept.id"
+						 labelValue="${workBidProject.implementingDept.id}" cssClass="form-control required" fieldLabels="name" fieldKeys="name" searchLabel="id" searchKey="id" ></sys:gridselect>
+ --%>
+ 			         <td class="width-35" >
+ 			         <sys:treeselect id="dept" name="implementingDeptIds" value="${workBidProject.implementingDeptIds}" labelName="implementingDeptNames" labelValue="${workBidProject.implementingDeptNames}"
+							title="选择实施部门" url="/sys/office/treeData?type=2&isAll=false" cssClass="form-control" notAllowSelectParent="true" checked="true"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目负责人:</label></td>
+					<%-- <td class="width-35">
+						<sys:gridselect url="${ctx}/workbidproject/workBidProject/selectprojectMaster" id="projectMaster" name="projectMaster"  value="${workBidProject.projectMaster.id}"  title="选择负责人" labelName="projectMaster.id"
+						 labelValue="${workBidProject.projectMaster.id}" cssClass="form-control required" fieldLabels="name" fieldKeys="name" searchLabel="id" searchKey="id" ></sys:gridselect>
+ --%>
+   					<td class="width-35" ><sys:treeselect id="projectMaster" name="projectMasterIds" value="${workBidProject.projectMasterIds}" labelName="projectMasterNames" labelValue="${workBidProject.projectMasterNames}"
+							title="选择负责人" url="/sys/office/treeData?type=3&isAll=false" cssClass="form-control" notAllowSelectParent="true" checked="true"/>
+ 					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">是否外协:</label></td>
+					<td class="width-35">
+						<form:select path="isSubcontract" class="form-control ">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getDictList('is_subcontract')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</td>
+					<td class="width-15 active"><label class="pull-right">对外协作单位:</label></td>
+					<td class="width-35">
+						<form:input path="subcontractCompany" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>项目概况:</label></td>
+					<td class="width-35" colspan="3">
+						<form:textarea path="projectSituation" htmlEscape="false" rows="6"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-35" colspan="3">
+						<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 357 - 0
src/main/webapp/webpage/modules/workbidingdocument/workBidingDocumentForm.jsp

@@ -0,0 +1,357 @@
+<%@ 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);
+					}
+				}
+			});
+
+		});
+
+	</script>
+	<script type="text/javascript">
+		$(function () {
+            $(".input-group ,  .evaluate_upload ").hide();
+
+            $("#masterAdd").bind("click",function () {
+                $("#selectMasterName").click();
+            })
+
+			$("#memberAdd").bind("click",function () {
+				$("#selectMemberName").click();
+            })
+
+			$("#attachment_btn").click(function () {
+				$("#attachment_file").click();
+            })
+
+
+        })
+        function insertTitle(tValue){
+            var list = "${workAttachmentList}";
+            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 = "1";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidingDocument/"+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);}
+           /* $("#attachment_title_div").remove();
+            var t1 = tValue.lastIndexOf("\\");
+            if(t1 >= 0 && t1 < tValue.length){
+                $("#attachment_title").text(tValue.substring(t1+1));
+                $("#attachment_title").after("<div id='attachment_title_div' style='float: right'>&nbsp;&nbsp;<span id='attachment_delete' onclick='attachment_del()'style='color: red ; cursor: pointer;'>x</span></div>");
+            }*/
+        }
+        function attachment_del() {
+			$("#attachment_file").val("");
+			$("#attachment_title").text("");
+			$("#attachment_delete").remove();
+			$("#attachment_title_div").remove();
+        }
+
+        function evaluate_upload(id){
+            $("#evaluate_file_"+id).click();
+		}
+		function insertTitle_evaluate(tId,tValue) {
+            var loadingMessage = parent.layer.load(0, {shade: [0.1,'#393d49']});
+			var t1= tValue.lastIndexOf("\\");
+			if(t1 >= 0 && t1 < tValue.length){
+			   $("#evaluate_title_"+tId).val(tValue.substring(t1+1));
+                var formData = new FormData();
+                var title = $("#evaluate_title_"+tId).val();
+                formData.append("file",$("#evaluate_file_"+tId)[0].files[0]);
+                formData.append("title",title);
+                formData.append("userId",tId);
+                $.ajax({
+                    url:"${ctx}/workbidingdocument/workBidingDocument/evaluateUpload",
+                    type:"POST",
+                    data:formData,
+                    processData:false,
+                    contentType:false,
+                    cache:false,
+                    success:function (resultData,status) {
+                        if(status == 'success'){
+                            var newTitle = resultData["title"];
+                            var newUrl = resultData["url"];
+                            $("#evaluate_a_"+tId).attr("href",newUrl).text(newTitle);
+                            parent.layer.msg("上传成功!!!",{icon:6});
+                            parent.layer.close(loadingMessage);
+                            window.location.reload();
+                        }
+                    },
+					error:function () {
+                        parent.layer.msg("上传失败!!!",{icon:6});
+                        parent.layer.close(loadingMessage);
+                    }
+                });
+
+            }
+            <!--此上传操作是立即执行的,上传完成后需要清除选中的文件,否则在点击确定时会再次上传-->
+			$("#evaluate_file_"+tId).val("");
+        }
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workBidingDocument"  method="post" class="form-horizontal">
+			<input type="hidden"  name="workBidProjectId" value="${workBidProject.id}" id="workBidProjectId"/>
+			<input type="hidden"  name="id" value="${workBidingDocument.id}" id="id"/>
+			<input type="hidden"    name="again" value="${again}">
+		<sys:message content="${requestScope.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">
+						<textarea readonly="readonly" class="form-control">${officeintroduce}</textarea>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目组信息:</label></td>
+					<td class="width-35">
+						<div style="width: 580px; ">
+							<div style="float:left;width: 80px; height: 100%; ">
+								负责人
+							</div>
+							<div style="float:left; height: 100%; width: 500px; ">
+								<div style="width: 500px; height: 100%; float: left">
+									<a id="masterAdd" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 新增负责人 </a>
+								</div>
+								<sys:masterselect id="selectMaster" name="projectMasterIds"
+												value="${workBidProject.projectMasterIds}" labelName="projectMasterNames" labelValue="${workBidProject.projectMasterNames}"
+												title="负责人" url="/sys/office/treeData?type=3" cssClass="form-control "
+												notAllowSelectParent="true" checked="true"/>
+								<br>
+								<table id="listMasters"  style="text-align: center;width: 100%;margin-top:10px;"  class="table table-striped table-bordered table-condensed" >
+									<tr>
+										<td>序号</td><td>项目负责人</td><td>个人简介</td><td>评价汇总表</td><td>操作</td>
+									</tr>
+									<c:forEach items="${workBidProject.masterList}" var="master" varStatus="index">
+										<tr>
+											<td>${index.index + 1 }</td>
+											<td>${master.name}</td>
+											<td><span title="${master.remarks}">${fns:abbr(master.remarks, 30)}</span></td>
+											<td>
+												<%--<a href="${master.workattachment.url}" id="evaluate_a_${master.id}"><span title="${master.workattachment.attachmentName}">${fns:abbr(master.workattachment.attachmentName, 14)}</span></a>--%>
+													<c:choose>
+														<c:when test="${fn:containsIgnoreCase(master.workattachment.attachmentName,'jpg')
+													  		 	or fn:containsIgnoreCase(master.workattachment.attachmentName,'png')
+													   			or fn:containsIgnoreCase(master.workattachment.attachmentName,'gif')
+													   			or fn:containsIgnoreCase(master.workattachment.attachmentName,'jpeg')}">
+															<img src="${master.workattachment.url}" onclick="openDialogView(' ','${ctx}/sys/picturepreview/picturePreview?url=${master.workattachment.url}','860px','600px')" width="50" height="50" alt="${master.workattachment.attachmentName}"/>
+														</c:when>
+														<c:otherwise>
+															<c:choose>
+																<c:when test="${fn:containsIgnoreCase(master.workattachment.attachmentName,'pdf')}">
+																	<a href="javascript:void(0)" onclick="preview('预览','${master.workattachment.url}','80%','80%','1')">
+																		<span title="${master.workattachment.attachmentName}">${fns:abbr(master.workattachment.attachmentName, 30)}</span></a>
+																</c:when>
+																<c:otherwise>
+																	<a href="javascript:void(0)" onclick="preview('预览','${master.workattachment.url}','80%','80%')">
+																		<span title="${master.workattachment.attachmentName}">${fns:abbr(master.workattachment.attachmentName, 30)}</span>
+																	</a>
+																</c:otherwise>
+															</c:choose>
+														</c:otherwise>
+													</c:choose>
+												<div style="float: right">
+													<a id="evaluate_btn_${master.id}" class="btn btn-info btn-xs" onclick="evaluate_upload('${master.id}');"><i class="fa fa-plus"></i> 上传</a>
+													<input id="evaluate_file_${master.id}" name="evaluate_file_${master.id}" type="file" class="evaluate_upload" onChange="if(this.value)insertTitle_evaluate('${master.id}',this.value);">
+													<span id="evaluate_title_${master.id}"></span>
+												</div>
+											</td>
+											<td>
+												<a href="${ctx}/workbidingdocument/workBidingDocument/updateMasterOfWorkBidProject?workBidProjectId=${workBidProject.id}&masterId=${master.id}" class="btn btn-danger btn-xs">删除负责人</a>
+											</td>
+										</tr>
+									</c:forEach>
+								</table>
+							</div>
+						</div>
+
+						<div style="width: 580px;  ">
+							<div style="float:left;width: 80px;height: 100%; ">
+								负责组成员
+							</div>
+							<div style="float:left; height: 100%; width: 500px; ">
+								<div style="width: 500px; height: 100%; float: left">
+									<a id="memberAdd" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 新增成员 </a>
+								</div>
+								<sys:masterselect id="selectMember" name="projectMemberIds"
+												value="${workBidProject.projectMemberIds}" labelName="projectMasterNames" labelValue="${workBidProject.projectMemberNames}"
+												title="负责组成员" url="/sys/office/treeData?type=3" cssClass="form-control "
+												notAllowSelectParent="true" checked="true"/>
+								<br>
+								<table id="listMembers" style="text-align: center;width: 100%;margin-top:10px;" class="table table-striped table-bordered table-condensed" >
+									<tr>
+										<td>序号</td><td>项目组成员</td><td>个人简介</td><td>评价汇总表</td><td>操作</td>
+									</tr>
+									<c:forEach items="${workBidProject.memberList}" var="member" varStatus="index">
+										<c:if test="${ not empty member }">
+										<tr>
+											<td>${index.index + 1}</td>
+											<td>${member.name}</td>
+											<td><span title="${member.remarks}">${fns:abbr(member.remarks, 30)}</span></td>
+											<td>
+												<%--<a href="${member.workattachment.url}" id="evaluate_a_${member.id}"><span title="${member.workattachment.attachmentName}">${fns:abbr(member.workattachment.attachmentName, 14)}</a>--%>
+													<c:choose>
+														<c:when test="${fn:containsIgnoreCase(member.workattachment.attachmentName,'jpg')
+													  		 	or fn:containsIgnoreCase(member.workattachment.attachmentName,'png')
+													   			or fn:containsIgnoreCase(member.workattachment.attachmentName,'gif')
+													   			or fn:containsIgnoreCase(member.workattachment.attachmentName,'jpeg')}">
+															<img src="${member.workattachment.url}" onclick="openDialogView(' ','${ctx}/sys/picturepreview/picturePreview?url=${member.workattachment.url}','860px','600px')"	 width="50" height="50" alt="${member.workattachment.attachmentName}"/>
+														</c:when>
+														<c:otherwise>
+															<c:choose>
+																<c:when test="${fn:containsIgnoreCase(member.workattachment.attachmentName,'pdf')}">
+																	<a href="javascript:void(0)" onclick="preview('预览','${member.workattachment.url}','80%','80%','1')">
+																	<span title="${member.workattachment.attachmentName}">${fns:abbr(member.workattachment.attachmentName, 30)}</span></a>
+																</c:when>
+																<c:otherwise>
+																	<a href="javascript:void(0)" onclick="preview('预览','${member.workattachment.url}','80%','80%')">
+																		<span title="${member.workattachment.attachmentName}">${fns:abbr(member.workattachment.attachmentName, 30)}</span>
+																	</a>
+																</c:otherwise>
+															</c:choose>
+														</c:otherwise>
+													</c:choose>
+												<div style="float: right">
+													<a id="evaluate_btn_${member.id}" class="btn btn-info btn-xs" onclick="evaluate_upload('${member.id}')"><i class="fa fa-plus"></i> 上传</a>
+													<input id="evaluate_file_${member.id}" name="evaluate_file_${member.id}" type="file" class="evaluate_upload" onChange="if(this.value)insertTitle_evaluate('${member.id}',this.value);" />
+													<span id="evaluate_title_${member.id}"></span>
+												</div>
+											</td>
+											<td>
+												<a href="${ctx}/workbidingdocument/workBidingDocument/updateMemberOfWorkBidProject?workBidProjectId=${workBidProject.id}&memberId=${member.id}" class="btn btn-danger btn-xs">删除成员</a>
+											</td>
+										</tr>
+										</c:if>
+									</c:forEach>
+								</table>
+							</div>
+						</div>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">方案编制:</label></td>
+					<td class="width-35">
+						<div style="width: 580px; ">
+							<div style="float:left;width: 80px; height: 100%; ">
+								附件
+							</div>
+							<div style="float:left; height: 100%; width: 500px; ">
+								<div style="display: inline-block">
+									<div id="addFile_attachment" style="display: none">
+										<div>
+											<span id="fileName_attachment" ></span>
+											<b><span id="baifenbi_attachment" ></span></b>
+										</div>
+										<div>
+											<div class="progress">
+												<div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+												</div>
+											</div>
+										</div>
+									</div>
+									<input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+									<a id="attachment_btn" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+									<span id="attachment_title"></span>
+								</div>
+								<table id="listAttachment"  style="text-align: center;width: 100%;margin-top:10px;"  class="table table-striped table-bordered table-condensed" >
+									<thead>
+									<tr>
+										<%--<td>序号</td>--%><td>文件名</td><td>上传人</td><td>上传时间</td><td>操作</td>
+									</tr>
+									</thead>
+									<tbody id="file_attachment">
+									<c:forEach items="${workAttachmentList}" var="attachment" varStatus="index">
+										<tr>
+											<%--<td>${index.index + 1}</td>--%>
+											<c:choose>
+												<c:when test="${fn:containsIgnoreCase(attachment.attachmentName,'jpg')
+													   or fn:containsIgnoreCase(attachment.attachmentName,'png')
+													   or fn:containsIgnoreCase(attachment.attachmentName,'gif')
+													   or fn:containsIgnoreCase(attachment.attachmentName,'jpeg')}">
+													<td><img src="${attachment.url}" onclick="openDialogView(' ','${ctx}/sys/picturepreview/picturePreview?url=${attachment.url}','860px','600px')" width="50" height="50" alt="${attachment.attachmentName}"/></td>
+												</c:when>
+												<c:otherwise>
+													<c:choose>
+														<c:when test="${fn:containsIgnoreCase(attachment.attachmentName,'pdf')}">
+															<td><a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%','1')">
+															<span title="${attachment.attachmentName}">${fns:abbr(attachment.attachmentName, 30)}</span></a></td>
+														</c:when>
+														<c:otherwise>
+															<td><a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%')">
+																<span title="${attachment.attachmentName}">${fns:abbr(attachment.attachmentName, 30)}</span>
+															</a></td>
+														</c:otherwise>
+													</c:choose>
+												</c:otherwise>
+											</c:choose>
+											<td>${attachment.attachmentUser}</td>
+											<td><fmt:formatDate value="${attachment.createDate}" pattern="yyyy-MM-dd"/></td>
+											<td>
+												<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${attachment.url}');" class="btn btn-success btn-xs">下载</a>
+
+												<%--<a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>--%>
+												<a href="${ctx}/workbidingdocument/workBidingDocument/deleteFileFromAliyun?attachmentId=${attachment.id}&id=${workBidingDocument.id}" class="btn btn-danger btn-xs">删除</a>
+											</td>
+										</tr>
+									</c:forEach>
+									</tbody>
+								</table>
+							</div>
+						</div>
+
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">投标报价:</label></td>
+					<td class="width-35">
+						<div style="width: 580px;">
+							<div style="width: 80px; height: 100%; float: left">
+								报价(元):
+							</div>
+							<div style="width: 500px; height: 100%; float: left">
+								<form:input path="quote" htmlEscape="false"    class="form-control  number"/>
+							</div>
+						</div>
+						<br/><br/>
+						<div style="width: 580px;">
+							<div style="width: 80px; height: 100%; float: left">
+								备注:
+							</div>
+							<div style="width: 500px; height: 10%; float: left">
+								<form:textarea path="remarks" htmlEscape="false"    class="form-control "/>
+							</div>
+						</div>
+
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 127 - 0
src/main/webapp/webpage/modules/workbidingdocument/workBidingDocumentHistoryList.jsp

@@ -0,0 +1,127 @@
+<%@ 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}/workbidingdocument/workBidingDocument/list">标书编制列表</a></li>
+					<li><a href="${ctx}/workbidingdocument/workBidingDocument/workBidingDocumentTodoList">待办任务</a></li>
+					<li class="active"><a href="${ctx}/workbidingdocument/workBidingDocument/workBidingDocumentHistoryList">已办任务</a></li>
+				</ul>
+			</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>
+
+			</div>--%>
+		</div>
+
+		<div class="ibox-content">
+			<sys:message content="${message}"/>
+			<!--查询条件-->
+			<div class="row">
+				<div class="col-sm-12">
+					<form:form id="searchForm" modelAttribute="act"  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;">流程发起人</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>
+					<th style="text-align: center;">流程发起时间</th>
+				</tr>
+				</thead>
+				<tbody>
+				<c:forEach items="${list}" var="workBidingDocument">
+					<c:set var="task" value="${workBidingDocument.act.task}" />
+					<c:set var="vars" value="${workBidingDocument.act.vars}" />
+					<c:set var="procDef" value="${workBidingDocument.act.procDef}" />
+					<c:set var="status" value="${workBidingDocument.act.status}" />
+					<tr>
+						<td>${workBidingDocument.act.vars.map.applyUserId}</td>
+						<td>
+							<a href="javascript:void(0)" onclick="openDialogView('查看标书', '${ctx}/workbidingdocument/workBidingDocument/form?id=${workBidingDocument.id}&view=view','80%','80%')">
+								${procDef.name}
+							</a>
+						</td>
+						<td><b title='流程版本号'>V: ${procDef.version}</b></td>
+						<td>
+							<a href="javascript:void(0)" onclick="openDialogView('查看投标项目', '${ctx}/workbidproject/workBidProject/form?id=${workBidingDocument.workBidProject.id}&name=view','80%','80%')">
+								<span title="${workBidingDocument.workBidProject.projectName}">${fns:abbr(workBidingDocument.workBidProject.projectName, 30)}</span>
+							</a>
+						</td>
+						<td><span title="${workBidingDocument.workBidProject.projectNumber}">${fns:abbr(workBidingDocument.workBidProject.projectNumber, 30)}</span></td>
+						<td>${fns:getMainDictLabel(workBidingDocument.workBidProject.projectType, 'contract_type', '')}</td>
+						<td><span title="${workBidingDocument.remarks}">${fns:abbr(workBidingDocument.remarks, 30)}</span></td>
+						<td><fmt:formatDate value="${workBidingDocument.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/></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>

+ 574 - 0
src/main/webapp/webpage/modules/workbidingdocument/workBidingDocumentList.jsp

@@ -0,0 +1,574 @@
+<%@ 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 openDialog(title,url,width,height,target){
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                btn: ['确定','关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    var formId = inputForm.attr("id");
+                    if(formId){
+                        var $document = iframeWin.contentWindow.document;
+                        $document.getElementById(formId).setAttribute("action","${ctx}/workbidingdocument/workBidingDocument/updateData");
+                        formSubmit($document,formId,index);
+                    }
+                },
+                btn2: function(index){
+                }
+            });
+        }
+        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中展示
+                    var formId = inputForm.attr("id");
+                    if(formId){
+                        var $document = iframeWin.contentWindow.document;
+                        $document.getElementById(formId).setAttribute("action","${ctx}/workbidingdocument/workBidingDocument/save");
+                        formSubmit($document,formId,index);
+                    }
+                },
+                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中展示
+                    var formId = inputForm.attr("id");
+                    if(formId){
+                        var $document = iframeWin.contentWindow.document;
+                        $document.getElementById(formId).setAttribute("action","${ctx}/workbidingdocument/workBidingDocument/toStore");
+                        formSubmit($document,formId,index);
+                    }
+                    return false;
+                },
+                btn3: function(index){
+                }
+            });
+        }
+        function openDialogreReapply(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中展示
+                    var formId = inputForm.attr("id");
+                    if(formId){
+                        var $document = iframeWin.contentWindow.document;
+                        $document.getElementById(formId).setAttribute("action","${ctx}/workbidingdocument/workBidingDocument/reapplyORrepeal?submit=reapply");
+                        formSubmit($document,formId,index);
+                        top.layer.close(index);
+                    }
+                },
+                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中展示
+                    var formId = inputForm.attr("id");
+                    if(formId){
+                        var $document = iframeWin.contentWindow.document;
+                        $document.getElementById(formId).setAttribute("action","${ctx}/workbidingdocument/workBidingDocument/reapplyORrepeal?submit=repeal");
+                        formSubmit($document,formId,index);
+                        top.layer.close(index);
+                    }
+                    return false;
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+        function formSubmit($document,inputForm,index){
+            var validateForm = $($document.getElementById(inputForm)).validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $($document.getElementById("#messageBox")).text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            if(validateForm.form()){
+                var loadingMessage = parent.layer.load(0, {shade: [0.1,'#393d49']});
+                $($document.getElementById(inputForm)).ajaxSubmit({
+                    success:function(data) {
+                        top.layer.close(index);
+                        parent.layer.msg("保存成功!!!",{icon:6});
+                        parent.layer.close(loadingMessage);
+                        window.location.reload();
+                    }
+                });
+            }
+        }
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>
+			<ul class="nav nav-tabs">
+				<li class="active"><a href="${ctx}/workbidingdocument/workBidingDocument/list">标书编制列表</a></li>
+				<li><a href="${ctx}/workbidingdocument/workBidingDocument/workBidingDocumentTodoList">待办任务</a></li>
+				<li><a href="${ctx}/workbidingdocument/workBidingDocument/workBidingDocumentHistoryList">已办任务</a></li>
+			</ul>
+		</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="${requestScope.message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="workBidingDocument" action="${ctx}/workbidingdocument/workBidingDocument/" 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="workBidProject.projectNumber" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+			<span>项目名称:</span>
+			<form:input path="workBidProject.projectName" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+			<span>项目类型:</span>
+			<form:select path="workBidProject.projectType"  class="form-control m-b">
+				<form:option value="" label=""/>
+				<form:options items="${fns:getMainDictList('contract_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+			</form:select>
+			<span>标书状态:</span>
+			<form:select path="status" class="form-control m-b">
+				<form:option label="" value="" />
+				<form:options items="${fns:getDictList('work_biding_document_status')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+			</form:select>
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="workbidingdocument:workBidingDocument:import">
+				<table:importExcel url="${ctx}/workbidingdocument/workBidingDocument/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workbidingdocument:workBidingDocument:export">
+	       		<table:exportExcel url="${ctx}/workbidingdocument/workBidingDocument/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 style="text-align: center;">序号</th>
+				<th style="text-align: center;"  class="sort-column a.project_number">项目编号</th>
+				<th style="text-align: center;"  class="sort-column a.project_name">项目名称</th>
+				<th style="text-align: center;"  class="sort-column a.project_type">项目类型</th>
+				<th style="text-align: center;"  class="sort-column a.bid_company">招标单位</th>
+				<%--<th style="text-align: center;"  class="sort-column a.contacts">联系人</th>--%>
+				<th style="text-align: center;"  class="sort-column a.trial_date">资格预审日期</th>
+				<th style="text-align: center;"  class="sort-column a.is_subcontract">是否对外协作</th>
+				<th style="text-align: center;"  class="sort-column a.project_master">负责人</th>
+				<th style="text-align: center;"  class="sort-column a.status">项目状态</th>
+				<th style="text-align: center;"  class="sort-column workBidingDocument.status">标书状态</th>
+				<th style="text-align: center;"  class="sort-column workBidingDocument.status">标书编制</th>
+				<th style="text-align: center;"  class="sort-column workBidingDocument.bid_status">流程追踪</th>
+				<th style="text-align: center;">操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="workBidingDocument" varStatus="index">
+			<c:set var="workClientLinkmanList" value="${workBidingDocument.workBidProject.workClientLinkmanList}" />
+			<c:set var="masterList" value="${workBidingDocument.workBidProject.masterList}" />
+			<tr>
+				<td>
+					${index.index +1}
+				</td>
+				<td>
+					<a href="javascript:void(0)" onclick="openDialogView('查看投标项目', '${ctx}/workbidproject/workBidProject/form?id=${workBidingDocument.workBidProject.id}&name=view','80%','80%')">
+						<span title="${workBidingDocument.workBidProject.projectNumber}">${fns:abbr(workBidingDocument.workBidProject.projectNumber, 20)}</span>
+					</a>
+				</td>
+				<td><shiro:hasPermission name="workbidproject:workBidProject:view">
+					<a href="javascript:void(0)" onclick="openDialogView('查看投标项目', '${ctx}/workbidproject/workBidProject/form?id=${workBidingDocument.workBidProject.id}&name=view','80%','80%')">
+						<span title="${workBidingDocument.workBidProject.projectName}">${fns:abbr(workBidingDocument.workBidProject.projectName, 30)}</span>
+					</a>
+				</shiro:hasPermission>
+				</td>
+				<td>
+						${fns:getMainDictLabel(workBidingDocument.workBidProject.projectType, 'contract_type', '')}
+				</td>
+				<td>
+					<c:choose>
+						<c:when test="${workBidingDocument.workBidProject.isExt ==0}">
+							<span title="${workBidingDocument.workBidProject.bidCompany.name}">${fns:abbr(workBidingDocument.workBidProject.bidCompany.name,30)}</span>
+						</c:when>
+						<c:otherwise>
+							<span title="${workBidingDocument.workBidProject.extCompany}">${fns:abbr(workBidingDocument.workBidProject.extCompany,30)}</span>
+						</c:otherwise>
+					</c:choose>
+				</td>
+				<%--<td>--%>
+					<%--<c:if test="${not empty workClientLinkmanList}">--%>
+						<%--<c:forEach items="${workClientLinkmanList}" var="entry"  varStatus="status">--%>
+							<%--<c:choose>--%>
+								<%--<c:when test="${status.first}">--%>
+									<%--<c:set scope="page" var="sub">${entry.name}</c:set>--%>
+								<%--</c:when>--%>
+								<%--<c:otherwise>--%>
+									<%--<c:set scope="page" var="sub">${sub},${entry.name}</c:set>--%>
+								<%--</c:otherwise>--%>
+							<%--</c:choose>--%>
+						<%--</c:forEach>--%>
+						<%--<span title="${sub}">${fns:abbr(sub, 30)}</span>--%>
+					<%--</c:if>--%>
+				<%--</td>--%>
+				<td>
+					  <fmt:formatDate value="${workBidingDocument.workBidProject.trialDate}" pattern="yyyy-MM-dd"/>
+
+				</td>
+				<td>
+						${fns:getDictLabel(workBidingDocument.workBidProject.isSubcontract,'is_subcontract','' )}
+				</td>
+				<td>
+					<c:if test="${not empty masterList}">
+						<c:forEach items="${masterList}" var="entry"  varStatus="status">
+							<c:choose>
+								<c:when test="${status.first}">
+									<c:set scope="page" var="sub">${entry.name}</c:set>
+								</c:when>
+								<c:otherwise>
+									<c:set scope="page" var="sub">${sub},${entry.name}</c:set>
+								</c:otherwise>
+							</c:choose>
+						</c:forEach>
+						<span title="${sub}">${fns:abbr(sub, 30)}</span>
+					</c:if>
+				</td>
+				<td>
+					<c:choose>
+						<c:when test="${workBidingDocument.workBidProject.status eq 0}">
+							已通过
+						</c:when>
+						<c:otherwise>
+							${fns:getDictLabel(workBidingDocument.workBidProject.status, 'bid_project_status', '')}
+						</c:otherwise>
+					</c:choose>
+
+				</td>
+				<td>
+					${fns:getDictLabel(workBidingDocument.status,'work_biding_document_status' ,'' )}
+				</td>
+				<c:choose>
+					<%-- 0待编制,1暂存,2审核中,3已通过,4未通过,5已撤回--%>
+					<%-- 修改权限为1(项目负责人和创建人),修改权限为2(部门负责人),修改权限为0(不能修改) --%>
+					<c:when test="${workBidingDocument.workBidProject.status eq 0  || workBidingDocument.workBidProject.status eq 3}">
+						<c:if test="${workBidingDocument.status ==0 }">
+							<td>
+								<div style="text-align: center">
+								<shiro:hasPermission name="workbidingdocument:workBidingDocument:add">
+									<a href="javascript:void(0)" onclick="openDialogre('标书编制', '${ctx}/workbidingdocument/workBidingDocument/form?workBidProjectId=${workBidingDocument.workBidProject.id}','80%','80%')" class="btn btn-info btn-xs" >标书编制</a>
+								</shiro:hasPermission>
+								</div>
+							</td>
+							<td>
+								<div style="text-align: center">
+								<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('该项目尚未编制标书,无流程信息',{icon:2})" class="btn btn-default btn-xs">流程追踪</a>
+								</div>
+							</td>
+							<td>
+								<div style="text-align: center">
+								<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('该项目尚未标书信息',{icon:2})" class="btn btn-default btn-xs"><i class="fa fa-search-plus"></i> 查看</a>
+								<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('该项目尚未标书信息',{icon:2})" class="btn btn-default btn-xs"><i class="fa fa-edit"></i> 修改</a>
+								</div>
+							</td>
+						</c:if>
+						<c:if test="${workBidingDocument.status == 1}">
+							<td>
+								<div style="text-align: center">
+								<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('已暂存,请修改后送审',{icon:2})" class="btn btn-default btn-xs">标书编制</a>
+								</div>
+							</td>
+							<td>
+								<div style="text-align: center">
+								<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('该项目尚未编制标书,无流程信息',{icon:2})" class="btn btn-default btn-xs">流程追踪</a>
+								</div>
+							</td>
+							<td>
+								<div style="text-align: center">
+								<shiro:hasPermission name="workbidingdocument:workBidingDocument:view">
+									<a href="javascript:void(0)" onclick="openDialogView('查看标书', '${ctx}/workbidingdocument/workBidingDocument/form?id=${workBidingDocument.id}&view=view','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+								</shiro:hasPermission>
+								<c:choose>
+									<c:when test="${workBidingDocument.optionFlag gt 0 }">
+										<shiro:hasPermission name="workbidingdocument:workBidingDocument:edit">
+											<a href="javascript:void(0)" onclick="openDialogre('修改标书', '${ctx}/workbidingdocument/workBidingDocument/form?id=${workBidingDocument.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+										</shiro:hasPermission>
+									</c:when>
+									<c:otherwise>
+										<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('您无此操作的权限',{icon:2})" class="btn btn-default btn-xs"><i class="fa fa-edit"></i> 修改</a>
+									</c:otherwise>
+								</c:choose>
+								</div>
+							</td>
+						</c:if>
+						<c:if test="${workBidingDocument.status == 2}">
+							<td>
+								<div style="text-align: center">
+								<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('审核中,请勿重复申请',{icon:2})" class="btn btn-default btn-xs">标书编制</a>
+								</div>
+							</td>
+							<td>
+								<div style="text-align: center">
+								<shiro:hasPermission name="workbidingdocument:workBidingDocument:view">
+									<a href="javascript:void(0)" onclick="openDialogView('流程追踪', '${ctx}/workbidingdocument/workBidingDocument/getProcess?id=${workBidingDocument.id}','80%','80%')" class="btn btn-info btn-xs" >流程追踪</a>
+								</shiro:hasPermission>
+								</div>
+							</td>
+							<td>
+								<div style="text-align: center">
+								<shiro:hasPermission name="workbidingdocument:workBidingDocument:view">
+									<a href="javascript:void(0)" onclick="openDialogView('查看标书', '${ctx}/workbidingdocument/workBidingDocument/form?id=${workBidingDocument.id}&view=view','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+								</shiro:hasPermission>
+								<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('该标书正在审核中',{icon:2})" class="btn btn-default btn-xs"><i class="fa fa-edit"></i> 修改</a>
+								</div>
+							</td>
+						</c:if>
+						<c:if test="${workBidingDocument.status == 3}">
+							<td>
+								<div style="text-align: center">
+								<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('该项目的标书已经编制完成',{icon:2})" class="btn btn-default btn-xs">标书编制</a>
+								</div>
+							</td>
+							<td>
+								<div style="text-align: center">
+								<shiro:hasPermission name="workbidingdocument:workBidingDocument:view">
+									<a href="javascript:void(0)" onclick="openDialogView('流程追踪', '${ctx}/workbidingdocument/workBidingDocument/getProcess?id=${workBidingDocument.id}','80%','80%')" class="btn btn-info btn-xs" >流程追踪</a>
+								</shiro:hasPermission>
+								</div>
+							</td>
+							<td>
+								<div style="text-align: center">
+								<shiro:hasPermission name="workbidingdocument:workBidingDocument:view">
+									<a href="javascript:void(0)" onclick="openDialogView('查看标书', '${ctx}/workbidingdocument/workBidingDocument/form?id=${workBidingDocument.id}&view=view','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+								</shiro:hasPermission>
+			<%--					<c:choose>
+									<c:when test="${workBidingDocument.optionFlag eq 2}">
+										<shiro:hasPermission name="workbidingdocument:workBidingDocument:edit">
+											<a href="javascript:void(0)" onclick="openDialog('修改标书', '${ctx}/workbidingdocument/workBidingDocument/form?id=${workBidingDocument.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+										</shiro:hasPermission>
+									</c:when>
+									<c:otherwise>--%>
+										<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('该标书已通过审核,不能修改',{icon:2})" class="btn btn-default btn-xs"><i class="fa fa-edit"></i> 修改</a>
+						<%--			</c:otherwise>
+								</c:choose>--%>
+								</div>
+							</td>
+						</c:if>
+						<c:if test="${workBidingDocument.status ==4}">
+							<td>
+								<div style="text-align: center">
+								<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('该标书审核未通过,请修改后重新送审',{icon:2})" class="btn btn-default btn-xs">标书编制</a>
+								</div>
+							</td>
+							<td>
+								<shiro:hasPermission name="workbidingdocument:workBidingDocument:view">
+									<a href="javascript:void(0)" onclick="openDialogView('流程追踪', '${ctx}/workbidingdocument/workBidingDocument/getProcess?id=${workBidingDocument.id}','80%','80%')" class="btn btn-info btn-xs" >流程追踪</a>
+								</shiro:hasPermission>
+							</td>
+							<td>
+								<div style="text-align: center">
+								<shiro:hasPermission name="workbidingdocument:workBidingDocument:view">
+									<a href="javascript:void(0)" onclick="openDialogView('查看标书', '${ctx}/workbidingdocument/workBidingDocument/form?id=${workBidingDocument.id}&view=view','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+								</shiro:hasPermission>
+								<c:choose>
+									<%-- 标书创建人可以重申或撤回 --%>
+									<c:when test="${workBidingDocument.createBy.id == fns:getUser()}">
+										<shiro:hasPermission name="workbidingdocument:workBidingDocument:edit">
+											<c:if test="${workBidingDocument.processEnded}">
+												<a href="javascript:void(0)" onclick="openDialogreReapply('修改标书', '${ctx}/workbidingdocument/workBidingDocument/form?id=${workBidingDocument.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+											</c:if>
+											<c:if test="${!workBidingDocument.processEnded}"><!-- 流程已结束 -->
+												<a href="javascript:void(0)" onclick="openDialogre('标书编制', '${ctx}/workbidingdocument/workBidingDocument/form?id=${workBidingDocument.id}&again=again','80%','80%')" class="btn btn-info btn-xs" >重新编制</a>
+											</c:if>
+										</shiro:hasPermission>
+									</c:when>
+									<c:otherwise>
+										<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('您无此操作的权限',{icon:2})" class="btn btn-default btn-xs"><i class="fa fa-edit"></i> 修改</a>
+									</c:otherwise>
+								</c:choose>
+								</div>
+							</td>
+						</c:if>
+						<c:if test="${workBidingDocument.status == 5}">
+							<td>
+								<div style="text-align: center">
+								<%--<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('已撤回',{icon:2})" class="btn btn-default btn-xs">标书编制</a>--%>
+									<c:if test="${!workBidingDocument.processEnded}"><!-- 流程结束 -->
+										<shiro:hasPermission name="workbidingdocument:workBidingDocument:edit">
+											<a href="javascript:void(0)" onclick="openDialogre('标书编制', '${ctx}/workbidingdocument/workBidingDocument/form?id=${workBidingDocument.id}&again=again','80%','80%')" class="btn btn-info btn-xs" >重新编制</a>
+										</shiro:hasPermission>
+									</c:if>
+								</div>
+							</td>
+							<td>
+								<div style="text-align: center">
+								<shiro:hasPermission name="workbidingdocument:workBidingDocument:view">
+									<a href="javascript:void(0)" onclick="openDialogView('流程追踪', '${ctx}/workbidingdocument/workBidingDocument/getProcess?id=${workBidingDocument.id}','80%','80%')" class="btn btn-info btn-xs" >流程追踪</a>
+								</shiro:hasPermission>
+								</div>
+							</td>
+							<td>
+								<div style="text-align: center">
+								<shiro:hasPermission name="workbidingdocument:workBidingDocument:view">
+									<a href="javascript:void(0)" onclick="openDialogView('查看标书', '${ctx}/workbidingdocument/workBidingDocument/form?id=${workBidingDocument.id}&view=view','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+								</shiro:hasPermission>
+								<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('已撤回,请重新编制',{icon:2})" class="btn btn-default btn-xs"><i class="fa fa-edit"></i> 修改</a>
+								</div>
+							</td>
+						</c:if>
+					</c:when>
+					<c:otherwise>
+						<td>
+							<div style="text-align: center">
+							<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('该项目审核尚未通过,无法编制标书',{icon:2})" class="btn btn-default btn-xs">标书编制</a>
+							</div>
+						</td>
+						<td>
+							<div style="text-align: center">
+							<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('该项目尚未编制标书,无流程信息',{icon:2})" class="btn btn-default btn-xs">流程追踪</a>
+							</div>
+						</td>
+						<td>
+							<div style="text-align: center">
+							<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('该项目尚无标书信息',{icon:2})" class="btn btn-default btn-xs"><i class="fa fa-search-plus"></i> 查看</a>
+							<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('该项目尚无标书信息',{icon:2})" class="btn btn-default btn-xs"><i class="fa fa-edit"></i> 修改</a>
+							</div>
+						</td>
+					</c:otherwise>
+				</c:choose>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 214 - 0
src/main/webapp/webpage/modules/workbidingdocument/workBidingDocumentMaintain.jsp

@@ -0,0 +1,214 @@
+<%@ 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() {
+            $(".input-group").hide();
+        });
+
+        //选择送标员
+        var workBidingDocumentId;
+        var aId ;
+        function sender_select(index,id) {
+            workBidingDocumentId = id ;
+            aId = "sender_select_a_"+index;
+            $("#sender_select_btn_"+index+"Name").click();
+        }
+
+
+	</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="workBidingDocument" action="${ctx}/workbidingdocument/workBidingDocument/maintain" 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="workBidProject.projectNumber" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+							<span>项目名称:</span>
+							<form:input path="workBidProject.projectName" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+							<span>项目类型:</span>
+							<form:select path="workBidProject.projectType"  class="form-control m-b">
+								<form:option value="" label=""/>
+								<form:options items="${fns:getMainDictList('contract_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+							</form:select>
+						</div>
+					</form:form>
+					<br/>
+				</div>
+			</div>
+
+			<!-- 工具栏 -->
+			<div class="row">
+				<div class="col-sm-12">
+					<div class="pull-left">
+						<shiro:hasPermission name="workbidingdocument:workBidingDocument:import">
+							<table:importExcel url="${ctx}/workbidingdocument/workBidingDocument/import"></table:importExcel><!-- 导入按钮 -->
+						</shiro:hasPermission>
+						<shiro:hasPermission name="workbidingdocument:workBidingDocument:export">
+							<table:exportExcel url="${ctx}/workbidingdocument/workBidingDocument/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 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>
+					<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="workBidingDocument" varStatus="index">
+					<c:set var="workClientLinkmanList" value="${workBidingDocument.workBidProject.workClientLinkmanList}" />
+					<c:set var="masterList" value="${workBidingDocument.workBidProject.masterList}" />
+					<tr>
+						<td> ${index.index +1}</td>
+						<td>
+							<span title="${workBidingDocument.workBidProject.projectNumber}">${fns:abbr(workBidingDocument.workBidProject.projectNumber, 20)}</span>
+						</td>
+						<td><shiro:hasPermission name="workbidproject:workBidProject:view">
+							<a href="javascript:void(0)" onclick="openDialogView('查看投标项目', '${ctx}/workbidproject/workBidProject/form?id=${workBidingDocument.workBidProject.id}&name=view','80%','80%')">
+								<span title="${workBidingDocument.workBidProject.projectName}">${fns:abbr(workBidingDocument.workBidProject.projectName, 30)}</span>
+							</a>
+						</shiro:hasPermission>
+						</td>
+						<td>
+								${fns:getMainDictLabel(workBidingDocument.workBidProject.projectType, 'contract_type', '')}
+						</td>
+						<td>
+							<span title="${workBidingDocument.workBidProject.bidCompany.name}">${fns:abbr(workBidingDocument.workBidProject.bidCompany.name, 30)}</span>
+						</td>
+						<%--<td>--%>
+							<%--<c:if test="${not empty workClientLinkmanList}">--%>
+								<%--<c:forEach items="${workClientLinkmanList}" var="entry"  varStatus="status">--%>
+									<%--<c:choose>--%>
+										<%--<c:when test="${status.first}">--%>
+											<%--<c:set scope="page" var="sub">${entry.name}</c:set>--%>
+										<%--</c:when>--%>
+										<%--<c:otherwise>--%>
+											<%--<c:set scope="page" var="sub">${sub},${entry.name}</c:set>--%>
+										<%--</c:otherwise>--%>
+									<%--</c:choose>--%>
+								<%--</c:forEach>--%>
+								<%--<span title="${sub}">${fns:abbr(sub, 30)}</span>--%>
+							<%--</c:if>--%>
+						<%--</td>--%>
+						<td>
+							<c:if test="${not empty masterList}">
+								<c:forEach items="${masterList}" var="entry"  varStatus="status">
+									<c:choose>
+										<c:when test="${status.first}">
+											<c:set scope="page" var="sub">${entry.name}</c:set>
+										</c:when>
+										<c:otherwise>
+											<c:set scope="page" var="sub">${sub},${entry.name}</c:set>
+										</c:otherwise>
+									</c:choose>
+								</c:forEach>
+								<span title="${sub}">${fns:abbr(sub, 30)}</span>
+							</c:if>
+						</td>
+						<td>
+							<fmt:formatDate value="${workBidingDocument.workBidProject.bidDate}" pattern="yyyy-MM-dd"/>
+
+						</td>
+						<td> <!-- 投标费用 -->
+							${workBidingDocument.name}
+						</td>
+						<td>
+							<div style="text-align: center">
+							<c:choose>
+								<c:when test="${workBidingDocument.bidStatus eq 0}">
+									<c:if test="${workBidingDocument.optionFlag eq 1}">
+										<a id="sender_select_a_${index.index}" class="btn btn-info btn-xs" onclick="sender_select('${index.index}','${workBidingDocument.id}');">
+											<c:if test="${empty workBidingDocument.sender}">选择送标员</c:if>
+											<c:if test="${not empty workBidingDocument.sender}">${workBidingDocument.sender}</c:if>
+										</a>
+										<sys:senderselect id="sender_select_btn_${index.index}" name="sender_select_btn_${index.index}"
+														  value="${workBidingDocument.id}" labelName="senderName" labelValue="${workBidingDocument.id}"
+														  title="送标员" url="/sys/office/treeDataAll?type=3" cssClass="form-control "
+														  notAllowSelectParent="true"/>
+
+									</c:if>
+									<c:if test="${workBidingDocument.optionFlag ne 1}">
+										<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('仅项目登记人可以进行此操作',{icon:2})" class="btn btn-default btn-xs">
+											<c:if test="${empty workBidingDocument.sender}">选择送标员</c:if>
+											<c:if test="${not empty workBidingDocument.sender}">${workBidingDocument.sender}</c:if>
+										</a>
+									</c:if>
+								</c:when>
+								<c:otherwise>
+									<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('已投标,无法修改',{icon:2})" class="btn btn-default btn-xs">${workBidingDocument.sender}</a>
+								</c:otherwise>
+							</c:choose>
+							</div>
+						</td>
+						<td>
+							${fns:getDictLabel(workBidingDocument.bidStatus, 'workBidingDocument_bid_status','' )}
+						</td>
+					</tr>
+				</c:forEach>
+				</tbody>
+			</table>
+
+			<!-- 分页代码 -->
+			<table:page page="${page}"></table:page>
+			<br/>
+			<br/>
+		</div>
+	</div>
+</div>
+</body>
+</html>

+ 15 - 0
src/main/webapp/webpage/modules/workbidingdocument/workBidingDocumentTask.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>
+

+ 205 - 0
src/main/webapp/webpage/modules/workbidingdocument/workBidingDocumentTodoList.jsp

@@ -0,0 +1,205 @@
+<%@ 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}/workbidingdocument/workBidingDocument/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}/workbidingdocument/workBidingDocument/workBidingDocumentTodoList/';
+                }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><a href="${ctx}/workbidingdocument/workBidingDocument/list">标书编制列表</a></li>
+					<li class="active"><a href="${ctx}/workbidingdocument/workBidingDocument/workBidingDocumentTodoList">待办任务</a></li>
+					<li><a href="${ctx}/workbidingdocument/workBidingDocument/workBidingDocumentHistoryList">已办任务</a></li>
+				</ul>
+			</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>
+
+			</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}/workbidingdocument/workBidingDocument/workBidingDocumentTodoList" 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;">流程发起人</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>
+					<th style="text-align: center;">标书备注</th>
+					<th style="text-align: center;">流程发起时间</th>
+					<th style="text-align: center;">操作</th>
+				</tr>
+				</thead>
+				<tbody>
+				<c:forEach items="${list}" var="workBidingDocument">
+					<c:set var="task" value="${workBidingDocument.act.task}" />
+					<c:set var="vars" value="${workBidingDocument.act.vars}" />
+					<c:set var="procDef" value="${workBidingDocument.act.procDef}" />
+					<c:set var="status" value="${workBidingDocument.act.status}" />
+					<tr>
+						<td>${workBidingDocument.act.vars.map.applyUserId}</td>
+						<td>
+							${task.name}
+						</td>
+						<td>
+							<a href="javascript:void(0)" onclick="openDialogView('查看标书', '${ctx}/workbidingdocument/workBidingDocument/form?id=${workBidingDocument.id}&view=view','80%','80%')">
+								${procDef.name}
+							</a>
+						</td>
+						<td><b title='流程版本号'>V: ${procDef.version}</b></td>
+						<td>
+							<a href="javascript:void(0)" onclick="openDialogView('查看投标项目', '${ctx}/workbidproject/workBidProject/form?id=${workBidingDocument.workBidProject.id}&name=view','80%','80%')">
+								<span title="${workBidingDocument.workBidProject.projectName}">${fns:abbr(workBidingDocument.workBidProject.projectName, 30)}</span>
+							</a>
+						</td>
+						<td><span title="${workBidingDocument.workBidProject.projectNumber}">${fns:abbr(workBidingDocument.workBidProject.projectNumber, 30)}</span></td>
+						<td>${fns:getMainDictLabel(workBidingDocument.workBidProject.projectType, 'contract_type', '')}</td>
+						<td><span title="${workBidingDocument.remarks}">${fns:abbr(workBidingDocument.remarks, 30)}</span></td>
+						<td><fmt:formatDate value="${task.createTime}" type="both"/></td>
+						<td>
+							<div style="text-align: center">
+							<a href="javascript:void(0)" onclick="openDialogre('审核标书编制流程', '${ctx}/workbidingdocument/workBidingDocument/applyOnWorkBidingDocument?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>
+							</div>
+						</td>
+					</tr>
+				</c:forEach>
+				</tbody>
+			</table>
+			<!-- 分页代码 -->
+			<table:page page="${page}"></table:page>
+			<br/>
+			<br/>
+		</div>
+	</div>
+</div>
+</body>
+</html>

+ 201 - 0
src/main/webapp/webpage/modules/workbidingdocument/workBidingDocumentView.jsp

@@ -0,0 +1,201 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>标书查看</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+	</script>
+
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workBidingDocument" class="form-horizontal">
+		<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">
+						${officeintroduce}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目组信息:</label></td>
+					<td class="width-35">
+						<div style="width:100%; float: left">
+							<div style="float:left;width: 80px; height: 100%; ">
+								负责人
+							</div>
+							<div style="float:left; height: 100%; width: 100%; ">
+								<div style="width: 100%; height: 100%; float: left">
+								</div>
+								<table id="listMasters"  style="text-align: center;width: 100%;margin-top:10px;"  class="table table-striped table-bordered table-condensed" >
+									<tr>
+										<td>序号</td><td>项目负责人</td><td>个人简介</td><td>评价汇总表</td><td>操作</td>
+									</tr>
+									<c:forEach items="${workBidProject.masterList}" var="master" varStatus="index">
+										<tr>
+											<td>${index.index + 1 }</td>
+											<td>${master.name}</td>
+											<td><span title="${master.remarks}">${fns:abbr(master.remarks, 30)}</span></td>
+											<%--<td>${master.workattachment.attachmentName}</td>--%>
+											<c:choose>
+												<c:when test="${fn:containsIgnoreCase(master.workattachment.attachmentName,'jpg')
+													   or fn:containsIgnoreCase(master.workattachment.attachmentName,'png')
+										 			   or fn:containsIgnoreCase(master.workattachment.attachmentName,'gif')
+													   or fn:containsIgnoreCase(master.workattachment.attachmentName,'jpeg')}">
+													<td><img src="${master.workattachment.url}"  onclick="openDialogView(' ','${ctx}/sys/picturepreview/picturePreview?url=${master.workattachment.url}','860px','600px')"	 width="50" height="50" alt="${master.workattachment.attachmentName}"/></td>
+												</c:when>
+												<c:otherwise>
+													<c:choose>
+														<c:when test="${fn:containsIgnoreCase(master.workattachment.attachmentName,'pdf')}">
+															<td><a href="javascript:void(0)" onclick="preview('预览','${master.workattachment.url}','80%','80%','1')">
+																<span title="${master.workattachment.attachmentName}">${fns:abbr(master.workattachment.attachmentName, 30)}</span></a></td>
+														</c:when>
+														<c:otherwise>
+															<td><a href="javascript:void(0)" onclick="preview('预览','${master.workattachment.url}','80%','80%')">
+																<span title="${master.workattachment.attachmentName}">${fns:abbr(master.workattachment.attachmentName, 30)}</span></a></td>
+														</c:otherwise>
+													</c:choose>
+												</c:otherwise>
+											</c:choose>
+											<td>
+												<c:if test="${!empty master.workattachment.url}">
+													<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${master.workattachment.url}');" class="btn btn-success btn-xs">下载</a>
+
+													<%--<a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${master.workattachment.url}" class="btn btn-success btn-xs">下载</a>
+												--%></c:if>
+											</td>
+										</tr>
+									</c:forEach>
+								</table>
+							</div>
+						</div>
+
+						<div style="width: 100%;  ">
+							<div style="float:left;width: 80px;height: 100%; ">
+								负责组成员
+							</div>
+							<div style="float:left; height: 100%; width: 100%; ">
+								<div style="width: 100%; height: 100%; float: left">
+								</div>
+								<table id="listMembers" style="text-align: center;width: 100%;margin-top:10px;" class="table table-striped table-bordered table-condensed" >
+									<tr>
+										<td>序号</td><td>项目组成员</td><td>个人简介</td><td>评价汇总表</td><td>操作</td>
+									</tr>
+									<c:forEach items="${workBidProject.memberList}" var="member" varStatus="index">
+										<tr>
+											<td>${index.index + 1}</td>
+											<td>${member.name}</td>
+											<td><span title="${member.remarks}">${fns:abbr(member.remarks, 30)}</span></td>
+											<c:choose>
+												<c:when test="${fn:containsIgnoreCase(member.workattachment.attachmentName,'jpg')
+													   or fn:containsIgnoreCase(member.workattachment.attachmentName,'png')
+										 			   or fn:containsIgnoreCase(member.workattachment.attachmentName,'gif')
+													   or fn:containsIgnoreCase(member.workattachment.attachmentName,'jpeg')}">
+													<td><img src="${member.workattachment.url}" onclick="openDialogView(' ','${ctx}/sys/picturepreview/picturePreview?url=${member.workattachment.url}','860px','600px')" width="50" height="50" alt="${member.workattachment.attachmentName}"/></td>
+												</c:when>
+												<c:otherwise>
+													<c:choose>
+														<c:when test="${fn:containsIgnoreCase(member.workattachment.attachmentName,'pdf')}">
+															<td><a href="javascript:void(0)" onclick="preview('预览','${member.workattachment.url}','80%','80%','1')">
+																<span title="${member.workattachment.attachmentName}">${fns:abbr(member.workattachment.attachmentName, 30)}</span></a></td>
+														</c:when>
+														<c:otherwise>
+															<td><a href="javascript:void(0)" onclick="preview('预览','${member.workattachment.url}','80%','80%')">
+																<span title="${member.workattachment.attachmentName}">${fns:abbr(member.workattachment.attachmentName, 30)}</span></a></td>
+														</c:otherwise>
+													</c:choose>
+												</c:otherwise>
+											</c:choose>
+											<td>
+												<c:if test="${!empty member.workattachment.url}">
+													<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${member.workattachment.url}');" class="btn btn-success btn-xs">下载</a>
+													<%--<a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${member.workattachment.url}" class="btn btn-success btn-xs">下载</a>--%>
+												</c:if>
+											</td>
+										</tr>
+									</c:forEach>
+								</table>
+							</div>
+						</div>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">方案编制:</label></td>
+					<td class="width-35">
+						<div style="width: 100%; ">
+							<div style="float:left;width: 80px; height: 100%; ">
+								附件
+							</div>
+							<div style="float:left; height: 100%; width: 100%; ">
+								<table id="listAttachment"  style="text-align: center;width: 100%;margin-top:10px;"  class="table table-striped table-bordered table-condensed" >
+									<tr>
+										<%--<td>序号</td>--%><td>文件名</td><td>上传人</td><td>上传时间</td><td>操作</td>
+									</tr>
+									<c:forEach items="${workAttachmentList}" var="attachment" varStatus="index">
+										<tr>
+											<%--<td>${index.index + 1}</td>--%>
+											<c:choose>
+												<c:when test="${fn:containsIgnoreCase(attachment.attachmentName,'jpg')
+													   or fn:containsIgnoreCase(attachment.attachmentName,'png')
+										 			   or fn:containsIgnoreCase(attachment.attachmentName,'gif')
+													   or fn:containsIgnoreCase(attachment.attachmentName,'jpeg')}">
+													<td><img src="${attachment.url}" onclick="openDialogView(' ','${ctx}/sys/picturepreview/picturePreview?url=${attachment.url}','860px','600px')" width="50" height="50" alt="${attachment.attachmentName}"/></td>
+												</c:when>
+												<c:otherwise>
+													<c:choose>
+														<c:when test="${fn:containsIgnoreCase(attachment.attachmentName,'pdf')}">
+															<td><a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%','1')">
+																<span title="${attachment.attachmentName}">${fns:abbr(attachment.attachmentName, 30)}</span></a></td>
+														</c:when>
+														<c:otherwise>
+															<td><a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%')">
+																<span title="${attachment.attachmentName}">${fns:abbr(attachment.attachmentName, 30)}</span></a></td>
+														</c:otherwise>
+													</c:choose>
+												</c:otherwise>
+											</c:choose>
+											<td>${attachment.attachmentUser}</td>
+											<td><fmt:formatDate value="${attachment.createDate}" pattern="yyyy-MM-dd"/></td>
+											<td>
+												<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${attachment.url}');" class="btn btn-success btn-xs">下载</a>
+
+												<%--<a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>
+											--%></td>
+										</tr>
+									</c:forEach>
+								</table>
+							</div>
+						</div>
+
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">投标报价:</label></td>
+					<td class="width-35">
+						<div style="width: 580px;">
+							<div style="width: 80px; height: 100%; float: left">
+								报价(元):
+							</div>
+							<div style="width: 500px; height: 100%; float: left">
+								${workBidingDocument.quote}
+							</div>
+						</div>
+						<br/><br/>
+						<div style="width: 580px;">
+							<div style="width: 80px; height: 100%; float: left">
+								备注:
+							</div>
+							<div style="width: 500px; height: 10%; float: left">
+								${workBidingDocument.remarks}
+							</div>
+						</div>
+
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 687 - 0
src/main/webapp/webpage/modules/workbidingevaluation/workBidingEvaluationForm.jsp

@@ -0,0 +1,687 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>评标管理管理</title>
+	<meta name="decorator" content="default"/>
+	<style type="text/css">
+		#d_1{border: 1px solid #eee}
+		#d_11,#d_12{float: left}
+		#d_1{border:0}
+		#d_13{clear: left}
+	</style>
+	<script type="text/javascript">
+        var currentTime = new Date().getTime();
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+		    $("#currentTime").val(currentTime);
+			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: '#startTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'datetime'
+            });
+            laydate.render({
+                elem: '#evaluationTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' ,//响应事件。如果没有传入event,则按照默认的click
+				type :'datetime'
+            });
+            laydate.render({
+                elem: '#appointmentTimeBegin', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type :'datetime'
+            });
+            laydate.render({
+                elem: '#appointmentTimeEnd', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type:'datetime'
+            });
+		});
+
+		function selectJudgeMembers(judgeType) {
+            var loadingMessage = parent.layer.load(0, {shade: [0.1,'#393d49']});
+            var consultType = $("#consult_type").val();
+            var judgeCount = $("#judgeCount").val();
+            if(judgeCount==null || judgeCount==undefined || judgeCount=="" ||isNaN(judgeCount)){
+                parent.layer.msg("请指定评委人数!!!",{icon:2});
+                parent.layer.close(loadingMessage);
+                return false;
+			}else{
+                judgeCount=parseInt(judgeCount);
+                if(judgeCount<=0){
+                    parent.layer.msg("评委人数必须大于0",{icon:2});
+                    parent.layer.close(loadingMessage);
+                    return false;
+                }
+			}
+            if(consultType==null || consultType == undefined || consultType==""){
+                parent.layer.msg("请选择咨询类型!!!",{icon:2});
+                parent.layer.close(loadingMessage);
+                return false;
+			}
+		    var judge;
+			if(judgeType=='0'){judge = 'judge';}
+			if(judgeType=='1'){judge = 'judgeBak';judgeCount *=2;}
+			$.ajax({
+				url:'${ctx}/workbidingevaluation/workBidingEvaluation/selectJudgeMembers',
+				data:{"judge":judge,"consultType":consultType,"currentTime":currentTime,
+					  "judgeCount":judgeCount,"workBidingEvaluationId":"${workBidingEvaluation.id}"},
+				dataType:'json',
+				type:'POST',
+				async:false,
+				cache:false,
+				success:function (resultData) {
+				    if(judgeType=="0"){
+				        $("#listJudge").html("");
+                    }
+                    if(judgeType=="1"){
+				        $("#listJudgeBak").html("");
+                    }
+                    var judgeList = resultData['body']['judgeList'];
+                    for(var i in judgeList){
+                        var judgeObj = judgeList[i];
+                        var judgeId = judgeObj.id;
+                        var judgeName = judgeObj.name;
+                        var judgeCompany = judgeObj.companyName;
+                        var a = "";
+                        var a2 = "";
+                        if(judgeType=="0"){
+							a = '<a href="javascript:void(0)" class="judgeLeaderSelect" onclick="saveJudgeLeader(\''+judgeId+'\',this)">设为组长</a>';
+							a2 = '<a href="javascript:void(0)" onclick="deleteJudgeMember(\''+judgeId+'\',\''+0+'\',this)">删除</a>';
+                        }
+                        if(judgeType=="1"){
+                            a = '<a href="javascript:void(0)" onclick="joinInJudgeMembers(\''+judgeId+'\',this)">加入评委组</a>';
+                            a2 = '<a href="javascript:void(0)" onclick="deleteJudgeMember(\''+judgeId+'\',\''+1+'\',this)">删除</a>';
+                        }
+						var tr = '<tr>'+
+									'<td>'+ judgeName+'</td>'+
+									'<td>'+ judgeCompany +'</td>'+
+									'<td>'+
+										'<input type="hidden" value="'+judgeId+'"/>'+
+										a+
+										'&nbsp;&nbsp;'+
+										a2+
+									'</td>'+
+								  '</tr>';
+
+                        if(judgeType=="0"){
+                            $("#listJudge").append(tr);
+                        }
+                        if(judgeType=="1"){
+                            $("#listJudgeBak").append(tr);
+                        }
+					}
+                    if(judgeType=="0"){
+                        var judgeListSize = parseInt(resultData['body']['judgeListSize']);
+                        if(judgeListSize > 0){
+                            parent.layer.msg("抽选到合适的评委 <strong style='color: red;'>"+judgeListSize+"</strong> 人",{icon:6});
+                            $("#judge_bak_select_abtn").replaceWith('<a id="judge_bak_select_hide" href="javascript:void(0)" onclick="selectJudgeMembers('+1+')" class="btn btn-info btn-xs">抽选备选评委</a>');
+                        }else{
+                            parent.layer.msg("没有合适的人选!!!",{icon:5});
+                        }
+                    }
+                    if(judgeType=="1"){
+                        var judgeBakListSize = parseInt(resultData['body']['judgeBakListSize']);
+                        if(judgeBakListSize > 0){
+                            parent.layer.msg("抽选到合适的备选评委 <strong style='color: red;'>"+judgeBakListSize+"</strong> 人",{icon:6});
+                        }else{
+                            parent.layer.msg("没有合适的人选!!!",{icon:5});
+                        }
+                    }
+                    parent.layer.close(loadingMessage);
+                }
+			})
+        }
+        function saveJudgeLeader(judgeId,obj) {
+            var loadingMessage = parent.layer.load(0, {shade: [0.1,'#393d49']});
+            var that = obj;
+			$.ajax({
+				url:'${ctx}/workbidingevaluation/workBidingEvaluation/saveJudgeLeader',
+				type:'POST',
+				data:{"judgeId":judgeId,"workBidingEvaluationId":"${workBidingEvaluation.id}","currentTime":currentTime},
+				dataType:'json',
+				cache:false,
+				async:false,
+				success:function (resultData) {
+                    $(".judgeLeaderSelect").removeAttr("style").text("设为组长");
+                    $(that).text("组长").css("color","red");
+                    parent.layer.msg("设置组长成功!!!",{icon:6});
+                    parent.layer.close(loadingMessage);
+                }
+			})
+        }
+        function deleteJudgeMember(judgeId,judgeType,obj) {
+            var loadingMessage = parent.layer.load(0, {shade: [0.1,'#393d49']});
+            var tr = $(obj).parent().parent();
+            $.ajax({
+                url:'${ctx}/workbidingevaluation/workBidingEvaluation/deleteJudgeMember',
+                type:'POST',
+                data:{"judgeId":judgeId,"workBidingEvaluationId":"${workBidingEvaluation.id}",
+					  "currentTime":currentTime,"judgeType":judgeType},
+                dataType:'json',
+                cache:false,
+                async:false,
+                success:function (resultData) {
+
+					tr.remove();
+					if(judgeType=='0'){
+					    var judgeCount = $("#judgeCount").val();
+					    judgeCount = parseInt(judgeCount)-1;
+					    $("#judgeCount").val(judgeCount);
+                    }
+                    parent.layer.msg("删除成员成功!!!",{icon:6});
+                    parent.layer.close(loadingMessage);
+                }
+            })
+        }
+        function joinInJudgeMembers(judgeId,obj) {
+            var loadingMessage = parent.layer.load(0, {shade: [0.1,'#393d49']});
+			var tr2 = $(obj).parent().parent();
+            $.ajax({
+                url:'${ctx}/workbidingevaluation/workBidingEvaluation/joinInJudgeMembers',
+                type:'POST',
+                data:{"judgeId":judgeId,"workBidingEvaluationId":"${workBidingEvaluation.id}",
+                    "currentTime":currentTime},
+                dataType:'json',
+                cache:false,
+                async:false,
+                success:function (resultData) {
+                    tr2.remove();
+					var judgeCount = $("#judgeCount").val();
+					judgeCount = parseInt(judgeCount)+1;
+					$("#judgeCount").val(judgeCount);
+
+                    $("#listJudge").html("");
+                    var judgeList = resultData['body']['judgeList'];
+                    for(var i in judgeList){
+                        var judgeObj = judgeList[i];
+                        var judgeId = judgeObj.id;
+                        var judgeName = judgeObj.name;
+                        var judgeCompany = judgeObj.companyName;
+                        var a = '<a href="javascript:void(0)" class="judgeLeaderSelect" onclick="saveJudgeLeader(\''+judgeId+'\',this)">设为组长</a>';
+						var a2 = '<a href="javascript:void(0)" onclick="deleteJudgeMember(\''+judgeId+'\',\''+0+'\',this)">删除</a>';
+                        var tr = '<tr>'+
+                            '<td>'+ judgeName+'</td>'+
+                            '<td>'+ judgeCompany +'</td>'+
+                            '<td>'+
+                            '<input type="hidden" value="'+judgeId+'"/>'+
+                            a+
+                            '&nbsp;&nbsp;'+
+                            a2+
+                            '</td>'+
+                            '</tr>';
+                            $("#listJudge").append(tr);
+                    }
+
+                    parent.layer.msg("加入评委组成功!!!",{icon:6});
+                    parent.layer.close(loadingMessage);
+                }
+            })
+			
+        }
+        function confirmDeposit(num,obj,workProjectDepositId) {
+            var loadingMessage = parent.layer.load(0, {shade: [0.1,'#393d49']});
+		    var statusValue = $(obj).val();
+			$.post('${ctx}/workbidingevaluation/workBidingEvaluation/confirmDeposit',
+				  {"num":num,"statusValue":statusValue,"workProjectDepositId":workProjectDepositId},
+					function () {
+
+
+                        parent.layer.msg("确认成功!!!",{icon:6});
+                        parent.layer.close(loadingMessage);
+					}
+			);
+        }
+
+        function deleteDeposit(workProjectDepositId,obj) {
+            var loadingMessage = parent.layer.load(0, {shade: [0.1,'#393d49']});
+		    var that = obj;
+            $.get('${ctx}/workbidingevaluation/workBidingEvaluation/deleteDeposit?workProjectDepositId='+workProjectDepositId,
+                function () {
+					$(that).parent().parent().remove();
+                    parent.layer.msg("删除投标企业成功!!!",{icon:6});
+                    parent.layer.close(loadingMessage);
+                }
+            );
+        }
+
+	</script>
+	<script type="text/javascript">
+        function openDialogEdit(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: ['确定','关闭'],
+                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 formId = inputForm.attr("id");
+                    if(formId){
+                        var $document = iframeWin.contentWindow.document;
+                        $document.getElementById(formId).setAttribute("action","${ctx}/workbidingevaluation/workBidingEvaluation/saveDeposit");
+                        formSubmitEdit($document,formId,index);
+
+                    }
+                },
+                cancel: function(index){
+                }
+            });
+        }
+        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: ['确定','关闭'],
+                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 formId = inputForm.attr("id");
+                    if(formId){
+                        var $document = iframeWin.contentWindow.document;
+                        $document.getElementById(formId).setAttribute("action","${ctx}/workbidingevaluation/workBidingEvaluation/saveDeposit");
+                        formSubmit($document,formId,index);
+                    }
+                },
+                cancel: function(index){
+                }
+            });
+        }
+
+        function formSubmit($document,inputForm,index){
+            var validateForm = $($document.getElementById(inputForm)).validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $($document.getElementById("#messageBox")).text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            if(validateForm.form()){
+                var loadingMessage = parent.layer.load(0, {shade: false,opacity:0.1});
+
+                $($document.getElementById(inputForm)).ajaxSubmit({
+
+                    success:function(data) {
+                        parent.layer.msg("保存成功!!!",{icon:6});
+                        parent.layer.close(loadingMessage);
+                        top.layer.close(index);
+
+						var projectdeposit = data['body']['workProjectDeposit'];
+
+                            var projectdepositId = projectdeposit.id;
+                            var bidingOfficeName = projectdeposit.bidingOfficeName;
+                            var contacts = projectdeposit.contacts;
+                            var phone = projectdeposit.phone;
+                            var email = projectdeposit.email;
+                            var deposit = projectdeposit.deposit;
+                            var bidingDocumentFee = projectdeposit.bidingDocumentFee;
+                            console.log(projectdepositId+"-"+bidingOfficeName+"-"+contacts+
+                                "-"+phone+"-"+email+"-"+deposit+"-"+bidingDocumentFee);
+                            var a1 = '<a href="javascript:void(0)" onclick="openDialogEdit(\'修改信息\',\'${ctx}/workbidingevaluation/workBidingEvaluation/editDeposit?workProjectDepositId='+projectdepositId+'\',\'800px\',\'500px\')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>';
+                            var a2 = '<a href="javascript:void(0)" onclick="deleteDeposit(\''+projectdepositId+'\',this)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>';
+                            var tr =
+                                '<tr id='+projectdepositId+'>'+
+                                '<td>'+bidingOfficeName+'</td>'+
+                                '<td>'+contacts+'</td>'+
+                                '<td>'+phone+'</td>'+
+                                '<td>'+email+'</td>'+
+                                '<td>'+deposit+'</td>'+
+                                '<td>'+bidingDocumentFee+'</td>'+
+                                '<td>' +
+										'<div class="deposit_status" style="border: solid 1px #eee; width: 4em;height: 2em;text-align:center;line-height: 2em;float: left;background: #FF8C69;" >待缴纳</div>'+
+										'<div style="float: left;margin-right: 10px;margin-left: 10px;"> | </div>'+
+										'<div class="biding_documentFee" style="border: solid 1px #eee; width: 4em;height: 2em;text-align:center;line-height: 2em;float: left;background: #FF8C69;">待缴纳</div>'+
+								'</td>'+
+                                '<td>'+
+								a1+
+								a2+
+                                '</td>'+
+                                '</tr>';
+                            $("#bidCompanys").append(tr);
+
+
+                    }
+                });
+            }
+        }
+        function formSubmitEdit($document,inputForm,index){
+            var validateForm = $($document.getElementById(inputForm)).validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $($document.getElementById("#messageBox")).text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            if(validateForm.form()){
+                var loadingMessage = parent.layer.load(0, {shade: [0.1,'#393d49']});
+                $($document.getElementById(inputForm)).ajaxSubmit({
+
+                    success:function(data) {
+                        top.layer.close(index);
+                        parent.layer.msg("保存成功!!!",{icon:6});
+                        parent.layer.close(loadingMessage);
+
+                        var projectdeposit = data['body']['workProjectDeposit'];
+
+                        var projectdepositId = projectdeposit.id;
+                        var bidingOfficeName = projectdeposit.bidingOfficeName;
+                        var contacts = projectdeposit.contacts;
+                        var phone = projectdeposit.phone;
+                        var email = projectdeposit.email;
+                        var deposit = projectdeposit.deposit;
+                        var bidingDocumentFee = projectdeposit.bidingDocumentFee;
+                        console.log(projectdepositId+"-"+bidingOfficeName+"-"+contacts+
+                            "-"+phone+"-"+email+"-"+deposit+"-"+bidingDocumentFee);
+                        var a1 = '<a href="javascript:void(0)" onclick="openDialogEdit(\'修改信息\',\'${ctx}/workbidingevaluation/workBidingEvaluation/editDeposit?workProjectDepositId='+projectdepositId+'\',\'800px\',\'500px\')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>';
+                        var a2 = '<a href="javascript:void(0)" onclick="deleteDeposit(\''+projectdepositId+'\',this)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>';
+                        var tr =
+                            '<tr id='+projectdepositId+'>'+
+                            '<td>'+bidingOfficeName+'</td>'+
+                            '<td>'+contacts+'</td>'+
+                            '<td>'+phone+'</td>'+
+                            '<td>'+email+'</td>'+
+                            '<td>'+deposit+'</td>'+
+                            '<td>'+bidingDocumentFee+'</td>'+
+                            '<td>' +
+								'<div class="deposit_status" style="border: solid 1px #eee; width: 4em;height: 2em;text-align:center;line-height: 2em;float: left;background: #FF8C69;" >待缴纳</div>'+
+								'<div style="float: left;margin-right: 10px;margin-left: 10px;"> | </div>'+
+								'<div class="biding_documentFee" style="border: solid 1px #eee; width: 4em;height: 2em;text-align:center;line-height: 2em;float: left;background: #FF8C69;">待缴纳</div>'+
+                            '</td>'+
+                            '<td>'+
+                            a1+
+                            a2+
+                            '</td>'+
+                            '</tr>';
+                        $("#"+projectdepositId).replaceWith(tr);
+
+                    }
+                });
+            }
+        }
+	</script>
+	<script type="text/javascript">
+        $(document).ready(function() {
+            var status_array = ['待缴纳','已缴纳','已退还','未退还'];
+            var color_array  = ['#FF8C69','#83C75D','#83C75D','#FF8C69'];
+            $(".deposit_status,.biding_documentFee").each(function(){
+                var text = $(this).text().trim();
+                var index = status_array.indexOf(text);
+                $(this).css("background",color_array[index]);
+            });
+        })
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workBidingEvaluation" action="${ctx}/workbidingevaluation/workBidingEvaluation/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<input type="hidden" name="workBidingProjectId" value="${workBidingProjectId}"/>
+		<input type="hidden" id="currentTime" name="currentTime"/>
+		<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-30">
+						<input id="startTime" name="startTime" type="text" maxlength="20" class="laydate-icondate form-control layer-date input-sm"
+							 value="<fmt:formatDate value="${workBidingEvaluation.startTime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">开标地点:</label></td>
+					<td class="width-40" colspan="3">
+						<form:input path="startAddress" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">评标时间:</label></td>
+					<td class="width-30">
+						<input id="evaluationTime" name="evaluationTime" type="text" maxlength="20" class="laydate-icondate form-control layer-date input-sm"
+							value="<fmt:formatDate value="${workBidingEvaluation.evaluationTime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">评标地点:</label></td>
+					<td class="width-40" colspan="3">
+						<form:input path="evaluationAddress" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">评委人数:</label></td>
+					<td class="width-30">
+						<form:input id="judgeCount" path="judgeCount" htmlEscape="false"    class="form-control required number"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">评委咨询类型:</label></td>
+					<td class="width-30">
+						<form:select id="consult_type" path="consultType" class="form-control ">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getDictList('consult_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">评委抽选:</label></td>
+					<td class="width-30" colspan="3">
+						<div id="d_1">
+							<div id="d_11" style="align-content: center;margin: 10px 30px 10px 10px;height: 80%;width: 40%;">
+								<a href="javascript:void(0)" onclick="selectJudgeMembers('0')" class="btn btn-info btn-xs">抽选评委会成员</a><br>
+								<table  style="text-align: center;width: 100%;margin-top:10px;"  class="table table-striped table-bordered table-condensed" >
+									<thead>
+										<tr><td>评委名称</td><td>工作单位</td><td>操作</td></tr>
+									</thead>
+									<tbody id="listJudge" >
+										<c:forEach items="${workBidingEvaluation.judgeMembersList}" var="judge">
+											<tr>
+												<td>${judge.name}</td>
+												<td><span title="${judge.companyName}">${fns:abbr(judge.companyName, 30)}</span></td>
+												<td>
+													<input type="hidden" value="${judge.id}"/>
+													<c:if test="${workBidingEvaluation.judgeLeader == judge.id}">
+														<a href="javascript:void(0)" class="judgeLeaderSelect" style="color: red;" onclick="saveJudgeLeader('${judge.id}',this)">组长</a>
+													</c:if>
+													<c:if test="${workBidingEvaluation.judgeLeader != judge.id}">
+														<a href="javascript:void(0)" class="judgeLeaderSelect" onclick="saveJudgeLeader('${judge.id}',this)">设为组长</a>
+													</c:if>
+													&nbsp;&nbsp;
+													<a href="javascript:void(0)" onclick="deleteJudgeMember('${judge.id}','0',this)">删除</a>
+												</td>
+											</tr>
+										</c:forEach>
+									</tbody>
+								</table>
+							</div>
+							<div id="d_12" style="align-content: center;margin: 10px 10px 10px 30px;height: 80%;width: 40%;">
+								<a id="judge_bak_select_abtn" href="javascript:void(0)" onclick="javascript:parent.layer.msg('请先抽选评委成员',{icon:2})" class="btn btn-default btn-xs">抽选备选评委</a>
+								<table  style="text-align: center;width: 100%;margin-top:10px;"  class="table table-striped table-bordered table-condensed" >
+									<thead>
+										<tr><td>评委名称</td><td>工作单位</td><td>操作</td></tr>
+									</thead>
+									<tbody id="listJudgeBak" >
+									<c:forEach items="${workBidingEvaluation.judgeMembersBakList}" var="judge">
+										<tr>
+											<td>${judge.name}</td>
+											<td><span title="${judge.companyName}">${fns:abbr(judge.companyName, 30)}</span></td>
+											<td>
+												<input type="hidden" value="${judge.id}"/>
+												<a href="javascript:void(0)" onclick="joinInJudgeMembers('${judge.id}',this)">加入评委组</a>
+												&nbsp;&nbsp;
+												<a href="javascript:void(0)" onclick="deleteJudgeMember('${judge.id}','1',this)">删除</a>
+											</td>
+										</tr>
+									</c:forEach>
+									</tbody>
+								</table>
+							</div>
+							<div id="d_13"></div>
+						</div>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">其他相关工作人员:</label></td>
+					<td class="width-30" colspan="3">
+						<%--<form:input path="otherMembers" htmlEscape="false"    class="form-control "/>--%>
+						<div >
+							<div id="otherMembers" style="float:left;width: 100%">
+								<sys:treeselect id="otherMembers" name="otherMembers" value="${workBidingEvaluation.otherMembers}" labelName="otherMembersNames" labelValue="${workBidingEvaluation.otherMembersNames}"
+												title="用户" url="/sys/office/treeData?type=3&isAll=false" cssClass="form-control" allowClear="true" checked="true" notAllowSelectParent="true"/>
+							</div>
+						</div>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">评标室:</label></td>
+					<td class="width-30" colspan="3">
+						<%--<form:input path="workEvaluationRoom" htmlEscape="false"    class="form-control "/>--%>
+							<sys:gridselect2 url="${ctx}/workbidingevaluation/workBidingEvaluation/selectRoom"
+											 id="workEvaluationRoom" name="workEvaluationRoom.id"
+											 value="${workBidingEvaluation.workEvaluationRoom.id}"
+											 title="选择评标室"
+											 labelName="workEvaluationRoom.address"
+											 labelValue="${workBidingEvaluation.workEvaluationRoom.address}${workBidingEvaluation.workEvaluationRoom.floor}${workBidingEvaluation.workEvaluationRoom.houseNumber}"
+											 cssClass="form-control"
+											 fieldLabels="评标室" fieldKeys="address"
+											 searchLabel="评标室" searchKey="address"
+											 floorLabel="楼层" floorKey="floor"
+											 housenumberLabel="房间号" housenumberKey="houseNumber"
+							></sys:gridselect2>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">评标室预约时间(起):</label></td>
+					<td class="width-30">
+						<input id="appointmentTimeBegin" name="appointmentTimeBegin" type="text" maxlength="20" class="laydate-icondate form-control layer-date input-sm"
+							   value="<fmt:formatDate value="${workBidingEvaluation.appointmentTimeBegin}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">评标室预约时间(止):</label></td>
+					<td class="width-30">
+						<input id="appointmentTimeEnd" name="appointmentTimeEnd" type="text" maxlength="20" class="laydate-icondate form-control layer-date input-sm"
+							   value="<fmt:formatDate value="${workBidingEvaluation.appointmentTimeEnd}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">投标企业:</label></td>
+					<td class="width-30" colspan="3">
+						<div>
+							<a href="javascript:void(0)" onclick="openDialogre('新增投标企业', '${ctx}/workbidingevaluation/workBidingEvaluation/formDeposit?workBidingProjectId=${workBidingEvaluation.workBidingProjectId}','80%','80%')" class="btn btn-info btn-xs" > <i class="fa fa-plus"></i>新增投标企业</a>
+							<table  class="table table-striped table-bordered table-condensed" >
+								<thead>
+								<tr><td>企业名称</td><td>联系人</td><td>联系电话</td>
+									<td>电子邮箱</td><td>保证金(万元)</td><td>标书费(元)</td>
+									<td>保证金 | 标书费缴纳情况</td><td>操作</td>
+								</tr>
+								</thead>
+								<tbody id="bidCompanys">
+								<c:forEach items="${workBidingEvaluation.workProjectDepositList}" var="workProjectDeposit">
+									<tr id="${workProjectDeposit.id}">
+										<td>
+											${workProjectDeposit.bidingOfficeName}
+										</td>
+										<td>${workProjectDeposit.contacts}</td>
+										<td>${workProjectDeposit.phone}</td>
+										<td>${workProjectDeposit.email}</td>
+										<td>${workProjectDeposit.deposit}</td>
+										<td>${workProjectDeposit.bidingDocumentFee}</td>
+										<td>
+											<div class="deposit_status" style="border: solid 1px #eee; width: 4em;height: 2em;text-align:center;line-height: 2em;float: left" >
+													${fns:getDictLabel(workProjectDeposit.depositStatus,'deposit_status' , '')}
+											</div>
+											<div style="float: left;margin-right: 10px;margin-left: 10px;"> | </div>
+											<div class="biding_documentFee" style="border: solid 1px #eee; width: 4em;height: 2em;text-align:center;line-height: 2em;float: left">
+													${fns:getDictLabel(workProjectDeposit.bidingDocumentStatus,'biding_document_status' , '')}
+											</div>
+										</td>
+										<td>
+											<a href="javascript:void(0)" onclick="openDialogEdit('修改投标企业', '${ctx}/workbidingevaluation/workBidingEvaluation/editDeposit?workProjectDepositId=${workProjectDeposit.id}','80%','80%',this)" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+											<a href="javascript:void(0)" onclick="deleteDeposit('${workProjectDeposit.id}',this)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+										</td>
+									</tr>
+								</c:forEach>
+								</tbody>
+							</table>
+						</div>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-30" colspan="3">
+						<form:textarea path="remarks" htmlEscape="false" rows="2"    class="form-control "/>
+					</td>
+				</tr>
+		   </tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 147 - 0
src/main/webapp/webpage/modules/workbidingevaluation/workBidingEvaluationList.jsp

@@ -0,0 +1,147 @@
+<%@ 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="workBidingEvaluation" action="${ctx}/workbidingevaluation/workBidingEvaluation/" 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="workBidingProject.projectNumber" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+			<span>项目名称:</span>
+			<form:input path="workBidingProject.projectName" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+			<span>客户单位:</span>
+			<form:input path="workBidingProject.client.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="workbidingevaluation:workBidingEvaluation:add">--%>
+				<%--<table:addRow url="${ctx}/workbidingevaluation/workBidingEvaluation/form" title="评标管理"></table:addRow><!-- 增加按钮 -->--%>
+			<%--</shiro:hasPermission>--%>
+			<%--<shiro:hasPermission name="workbidingevaluation:workBidingEvaluation:edit">--%>
+			    <%--<table:editRow url="${ctx}/workbidingevaluation/workBidingEvaluation/form" title="评标管理" id="contentTable"></table:editRow><!-- 编辑按钮 -->--%>
+			<%--</shiro:hasPermission>--%>
+			<%--<shiro:hasPermission name="workbidingevaluation:workBidingEvaluation:del">--%>
+				<%--<table:delRow url="${ctx}/workbidingevaluation/workBidingEvaluation/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->--%>
+			<%--</shiro:hasPermission>--%>
+
+		<%--	<shiro:hasPermission name="workbidingevaluation:workBidingEvaluation:import">--%>
+				<table:importExcel url="${ctx}/workbidingevaluation/workBidingEvaluation/import"></table:importExcel><!-- 导入按钮 -->
+		<%--	</shiro:hasPermission>
+			<shiro:hasPermission name="workbidingevaluation:workBidingEvaluation:export">--%>
+	       		<table:exportExcel url="${ctx}/workbidingevaluation/workBidingEvaluation/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 style="text-align: center;width: 5%">序号</th>
+				<th style="text-align: center;width: 15%">项目编号</th>
+				<th style="text-align: center;width: 25%">项目名称</th>
+				<th style="text-align: center;width: 25%">客户单位</th>
+				<th style="text-align: center;width: 15%"  class="sort-column a.update_date">登记日期</th>
+				<th style="text-align: center;width: 15%">评标管理</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="workBidingEvaluation" varStatus="varStatus">
+			<tr>
+				<td> ${varStatus.index+1}</td>
+				<td>
+					${workBidingEvaluation.workBidingProject.projectNumber}
+				</td>
+				<td>
+					<a  href="javascript:void(0)" onclick="openDialogView('查看招标项目信息', '${ctx}/workbidingproject/workBidingProject/form?id=${workBidingEvaluation.workBidingProject.id}&name=view','1000px', '600px')">
+						${workBidingEvaluation.workBidingProject.projectName}
+					</a>
+				</td>
+				<td>
+					${workBidingEvaluation.workBidingProject.client.name}
+				</td>
+				<td>
+					<fmt:formatDate value="${workBidingEvaluation.workBidingProject.createDate}" pattern="yyyy-MM-dd"/>
+				</td>
+				<td>
+					<div style="text-align: center">
+				<%--	<shiro:hasPermission name="workbidingevaluation:workBidingEvaluation:view">--%>
+						<a href="javascript:void(0)" onclick="openDialogView('查看评标信息', '${ctx}/workbidingevaluation/workBidingEvaluation/form?id=${workBidingEvaluation.id}&view=view','1000px', '620px')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+				<%--	</shiro:hasPermission>
+					<shiro:hasPermission name="workbidingevaluation:workBidingEvaluation:edit">--%>
+    					<a href="javascript:void(0)" onclick="openDialog(${empty workBidingEvaluation.id}?'新增评标信息':'修改评标信息', '${ctx}/workbidingevaluation/workBidingEvaluation/form?id=${workBidingEvaluation.id}&workBidingProjectId=${workBidingEvaluation.workBidingProject.id}&view=edit','1000px', '620px')" class="btn btn-success btn-xs" >
+							<c:if test="${empty workBidingEvaluation.id}"><i class="fa fa-plus"></i> 新增</c:if>
+							<c:if test="${not empty workBidingEvaluation.id}"><i class="fa fa-edit"></i>修改</c:if>
+						</a>
+    			<%--	</shiro:hasPermission>--%>
+					</div>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 234 - 0
src/main/webapp/webpage/modules/workbidingevaluation/workBidingEvaluationView.jsp

@@ -0,0 +1,234 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>评标管理管理</title>
+	<meta name="decorator" content="default"/>
+	<style type="text/css">
+		#d_1{border: 1px solid #eee}
+		#d_11,#d_12{float: left}
+		#d_1{border:0}
+		#d_13{clear: left}
+	</style>
+	<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: '#startTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'datetime'
+            });
+            laydate.render({
+                elem: '#evaluationTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' ,//响应事件。如果没有传入event,则按照默认的click
+				type :'datetime'
+            });
+            laydate.render({
+                elem: '#appointmentTimeBegin', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type :'datetime'
+            });
+            laydate.render({
+                elem: '#appointmentTimeEnd', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type:'datetime'
+            });
+		});
+
+	</script>
+	<script type="text/javascript">
+        $(document).ready(function() {
+            var status_array = ['待缴纳','已缴纳','已退还','未退还'];
+            var color_array  = ['#FF8C69','#83C75D','#83C75D','#FF8C69'];
+            $(".deposit_status,.biding_documentFee").each(function(){
+                var text = $(this).text().trim();
+				var index = status_array.indexOf(text);
+				$(this).css("background",color_array[index]);
+            });
+        })
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workBidingEvaluation" action="${ctx}/workbidingevaluation/workBidingEvaluation/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-30">
+						<fmt:formatDate value="${workBidingEvaluation.startTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">开标地点:</label></td>
+					<td class="width-40" colspan="3">
+						${workBidingEvaluation.startAddress}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">评标时间:</label></td>
+					<td class="width-30">
+						<fmt:formatDate value="${workBidingEvaluation.evaluationTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">评标地点:</label></td>
+					<td class="width-40" colspan="3">
+						${workBidingEvaluation.evaluationAddress}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">评委人数:</label></td>
+					<td class="width-30">
+						${workBidingEvaluation.judgeCount}
+					</td>
+					<td class="width-15 active"><label class="pull-right">评委咨询类型:</label></td>
+					<td class="width-30">
+						${fns:getDictLabel(workBidingEvaluation.consultType,'consult_type' ,'' )}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">评委信息:</label></td>
+					<td class="width-30" colspan="3">
+						<div id="d_1">
+							<div id="d_11" style="align-content: center;margin: 10px 30px 10px 10px;height: 80%;width: 40%;">
+								<span>评委成员:(组长:${workBidingEvaluation.judgeLeaderName})</span>
+								<table  style="text-align: center;width: 100%;margin-top:10px;"  class="table table-striped table-bordered table-condensed" >
+									<thead>
+										<tr><td>评委名称</td><td>工作单位</td></tr>
+									</thead>
+									<tbody id="listJudge" >
+										<c:forEach items="${workBidingEvaluation.judgeMembersList}" var="judge">
+											<tr>
+												<td>${judge.name}</td>
+												<td>${judge.companyName}</td>
+											</tr>
+										</c:forEach>
+									</tbody>
+								</table>
+							</div>
+							<div id="d_12" style="align-content: center;margin: 10px 10px 10px 30px;height: 80%;width: 40%;">
+								<span>备选评委成员:</span>
+								<table  style="text-align: center;width: 100%;margin-top:10px;"  class="table table-striped table-bordered table-condensed" >
+									<thead>
+										<tr><td>评委名称</td><td>工作单位</td></tr>
+									</thead>
+									<tbody id="listJudgeBak" >
+									<c:forEach items="${workBidingEvaluation.judgeMembersBakList}" var="judge">
+										<tr>
+											<td>${judge.name}</td>
+											<td>${judge.companyName}</td>
+										</tr>
+									</c:forEach>
+									</tbody>
+								</table>
+							</div>
+							<div id="d_13"></div>
+						</div>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">其他相关工作人员:</label></td>
+					<td class="width-30" colspan="3">
+						${workBidingEvaluation.otherMembersNames}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">评标室:</label></td>
+					<td class="width-30" colspan="3">
+						<c:if test="${not empty workBidingEvaluation.workEvaluationRoom}">
+							<c:if test="${not empty workBidingEvaluation.workEvaluationRoom.address}">
+								${workBidingEvaluation.workEvaluationRoom.address}
+							</c:if>
+							<c:if test="${not empty workBidingEvaluation.workEvaluationRoom.floor}">
+								,${workBidingEvaluation.workEvaluationRoom.floor}楼,
+							</c:if>
+							<c:if test="${workBidingEvaluation.workEvaluationRoom.houseNumber}">
+								${workBidingEvaluation.workEvaluationRoom.houseNumber}室
+							</c:if>
+						</c:if>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">评标室预约时间(起):</label></td>
+					<td class="width-30">
+						<fmt:formatDate value="${workBidingEvaluation.appointmentTimeBegin}" pattern="yyyy-MM-dd HH:mm:ss"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">评标室预约时间(止):</label></td>
+					<td class="width-30">
+						<fmt:formatDate value="${workBidingEvaluation.appointmentTimeEnd}" pattern="yyyy-MM-dd HH:mm:ss"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">投标企业:</label></td>
+					<td class="width-30" colspan="3">
+						<div>
+							<table  class="table table-striped table-bordered table-condensed" >
+								<thead>
+								<tr><td>企业名称</td><td>联系人</td><td>联系电话</td>
+									<td>电子邮箱</td><td>保证金(万元)</td><td>标书费</td>
+									<td>保证金 | 标书费缴纳情况</td>
+								</tr>
+								</thead>
+								<tbody id="bidCompanys">
+								<c:forEach items="${workBidingEvaluation.workProjectDepositList}" var="workProjectDeposit">
+									<tr>
+										<td>${workProjectDeposit.bidingOfficeName}</td>
+										<td>${workProjectDeposit.contacts}</td>
+										<td>${workProjectDeposit.phone}</td>
+										<td>${workProjectDeposit.email}</td>
+										<td>${workProjectDeposit.deposit}</td>
+										<td>${workProjectDeposit.bidingDocumentFee}</td>
+										<td>
+											<div class="deposit_status" style="border: solid 1px #eee; width: 4em;height: 2em;text-align:center;line-height: 2em;float: left" >
+												${fns:getDictLabel(workProjectDeposit.depositStatus,'deposit_status' , '')}
+											</div>
+											<div style="float: left;margin-right: 10px;margin-left: 10px;"> | </div>
+											<div class="biding_documentFee" style="border: solid 1px #eee; width: 4em;height: 2em;text-align:center;line-height: 2em;float: left">
+												${fns:getDictLabel(workProjectDeposit.bidingDocumentStatus,'biding_document_status' , '')}
+											</div>
+										</td>
+									</tr>
+								</c:forEach>
+								</tbody>
+							</table>
+						</div>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-30" colspan="3">
+						${workBidingEvaluation.remarks}
+					</td>
+				</tr>
+		   </tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 79 - 0
src/main/webapp/webpage/modules/workbidingevaluation/workProjectDepositForm.jsp

@@ -0,0 +1,79 @@
+<%@ 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="workProjectDeposit" action="${ctx}/workbidingevaluation/workBidingEvaluation/saveDeposit" method="post" class="form-horizontal">
+		<input type="hidden" name="bidingProject.id" value="${workBidingProjectId}"/>
+		<input type="hidden" name="workProjectDepositId" value="${workProjectDepositId}"/>
+		<input type="hidden" name="id" value="${workProjectDepositId}"/>
+		<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="bidingOfficeName" 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="contacts" 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="phone" htmlEscape="false"    class="form-control number"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">E-mail:</label></td>
+					<td class="width-35">
+						<form:input path="email" htmlEscape="false"    class="form-control email"/>
+					</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="deposit" 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="bidingDocumentFee" htmlEscape="false"    class="form-control  required number"/>
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 488 - 0
src/main/webapp/webpage/modules/workbidingproject/workBidingProjectForm.jsp

@@ -0,0 +1,488 @@
+<%@ 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(){
+            var oneSize = $(".oneTab").size();
+            for(var i = 0;i < oneSize;i++){
+                var hei = $(".oneTab:eq("+i+")").parent().height();
+                $(".oneTab:eq("+i+")").css("height",hei-5)
+                    .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: '#projectStartDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#projectEndDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            var isControlPrice = "${workBidingProject.isControlPrice}";
+            if(isControlPrice==1){
+                $("#controlPrice").show();
+                $("#controlPriceVal").show();
+            }
+        });
+
+        var linkManList_contract = null;
+        function setContractValue(obj){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workengineeringproject/workEngineeringProject/getContractInfo',
+                data:{
+                    "obj":obj
+                },
+                success:function(data){
+                    var d = linkManList_contract = JSON.parse(data);
+                    $("#linkman_list").html("");
+                    $(".linkman_attr").val("");
+                    var defaultLinkMan = d[0];
+                    if(defaultLinkMan != null && defaultLinkMan != undefined && defaultLinkMan !=""){
+                        $("#contractNum").val(defaultLinkMan.contractNum);
+                        $("#clientName").val(defaultLinkMan.clientName);
+                        $("#clientId").val(defaultLinkMan.clientId);
+                        $("#linkmanName").val(defaultLinkMan.linkmanName);
+                        $("#linkmanPhone").val(defaultLinkMan.linkmanPhone);
+                        $("#linkmanEmail").val(defaultLinkMan.linkmanEmail);
+                        $("#linkmanPosition").val(defaultLinkMan.linkmanPosition);
+
+                        $.each(d,function(n,value) {
+                            var optionTag = '<option id="linkman_attr_'+n+'" type="text" value='+n+'>'+value.linkmanName+'</option>';
+                            $("#linkman_list").append(optionTag);
+                        });
+                        $("#linkman_list option:first").prop("selected","selected").text(defaultLinkMan.linkmanName);
+                    }
+                }
+            })
+        }
+
+        var linkManList = null;
+        function setValuee(obj){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workbidingproject/workBidingProject/getWorkClientInfo',
+                data:{
+                    "obj":obj
+                },
+                success:function(data){
+                    var d = JSON.parse(data);
+                    var defaultLinkMan = d[0];
+                    linkManList = d;
+                    $("#linkman_list").html("");
+                    $(".linkman_attr").val("");
+                    if(defaultLinkMan != null && defaultLinkMan != undefined && defaultLinkMan !=""){
+                        $("#clientName").val(defaultLinkMan.clientName);
+                        $("#clientId").val(defaultLinkMan.clientId);
+                        //$("#linkmanName").val(defaultLinkMan.linkmanName);
+                        $("#linkmanPhone").val(defaultLinkMan.linkmanPhone);
+                        $("#linkmanEmail").val(defaultLinkMan.linkmanEmail);
+                        $("#linkmanPosition").val(defaultLinkMan.linkmanPosition);
+
+                        $.each(d,function(n,value) {
+                            var optionTag = '<option id="linkman_attr_'+n+'" type="text" value='+n+'>'+value.linkmanName+'</option>';
+                            $("#linkman_list").append(optionTag);
+                        });
+                        $("#linkman_list option:first").prop("selected","selected").text(defaultLinkMan.linkmanName);
+                    }
+
+                }
+            })
+        }
+        /**
+         * 查看联系人(需要用到linkManList)
+         */
+        function selectLinkman(index,target) {
+            if(target=='linkman'){
+                var manList = null ;
+                if(linkManList_contract != null){
+                    manList = linkManList_contract; //合同关联的
+                }else{
+                    manList = linkManList; //自选的
+                }
+                if(manList ==null){
+                    manList = JSON.parse('${requestScope.linkmanList}');
+                }
+                var linkman = manList[index];
+                $("#linkmanPosition").val(linkman.linkmanPosition==undefined?"":linkman.linkmanPosition);
+                $("#linkmanPhone").val(linkman.linkmanPhone==undefined?"":linkman.linkmanPhone);
+                $("#linkmanEmail").val(linkman.linkmanEmail==undefined?"":linkman.linkmanEmail);
+            }
+        }
+
+
+        function display(n){
+            if(n==1){
+                $("#controlPrice").show();
+                $("#controlPriceVal").show();
+            }else{
+                $("#controlPrice").hide();
+                $("#controlPriceVal").hide();
+            }
+        }
+
+        function  chooseType() {
+            if($("#psort").val()==1){
+                $("#ssort ").attr("value","");
+                document.getElementById( "t1").style.display= "";
+                document.getElementById( "t2").style.display= "";
+                $("#ssort11").show();$("#ssort12").show();$("#ssort13").show();
+                $("#ssort21").hide();$("#ssort22").hide();$("#ssort23").hide();$("#ssort24").hide();
+                $("#ssort31").hide();$("#ssort32").hide();$("#ssort33").hide();$("#ssort34").hide();$("#ssort35").hide();$("#ssort36").hide();
+                $("#ssort41").hide();$("#ssort42").hide();
+                $("#ssort51").hide();$("#ssort52").hide();$("#ssort53").hide();$("#ssort54").hide();$("#ssort55").hide();
+                $("#ssort101").hide();$("#ssort102").hide();
+            }
+            else if($("#psort").val()==2){
+                $("#ssort ").attr("value","");
+                document.getElementById( "t1").style.display= "";
+                document.getElementById( "t2").style.display= "";
+                $("#ssort11").hide();$("#ssort12").hide();$("#ssort13").hide();
+                $("#ssort21").show();$("#ssort22").show();$("#ssort23").show();$("#ssort24").show();
+                $("#ssort31").hide();$("#ssort32").hide();$("#ssort33").hide();$("#ssort34").hide();$("#ssort35").hide();$("#ssort36").hide();
+                $("#ssort41").hide();$("#ssort42").hide();
+                $("#ssort51").hide();$("#ssort52").hide();$("#ssort53").hide();$("#ssort54").hide();$("#ssort55").hide();
+                $("#ssort101").hide();$("#ssort102").hide();
+            }
+            else if($("#psort").val()==3){
+                $("#ssort ").attr("value","");
+                document.getElementById( "t1").style.display= "";
+                document.getElementById( "t2").style.display= "";
+                $("#ssort11").hide();$("#ssort12").hide();$("#ssort13").hide();
+                $("#ssort21").hide();$("#ssort22").hide();$("#ssort23").hide();$("#ssort24").hide();
+                $("#ssort31").show();$("#ssort32").show();$("#ssort33").show();$("#ssort34").show();$("#ssort35").show();$("#ssort36").show();
+                $("#ssort41").hide();$("#ssort42").hide();
+                $("#ssort51").hide();$("#ssort52").hide();$("#ssort53").hide();$("#ssort54").hide();$("#ssort55").hide();
+                $("#ssort101").hide();$("#ssort102").hide();
+            }
+            else if($("#psort").val()==4){
+                $("#ssort ").attr("value","");
+                document.getElementById( "t1").style.display= "";
+                document.getElementById( "t2").style.display= "";
+                $("#ssort11").hide();$("#ssort12").hide();$("#ssort13").hide();
+                $("#ssort21").hide();$("#ssort22").hide();$("#ssort23").hide();$("#ssort24").hide();
+                $("#ssort31").hide();$("#ssort32").hide();$("#ssort33").hide();$("#ssort34").hide();
+                $("#ssort35").hide();$("#ssort36").hide();$("#ssort41").show();$("#ssort42").show();
+                $("#ssort51").hide();$("#ssort52").hide();$("#ssort53").hide();$("#ssort54").hide();$("#ssort55").hide();
+                $("#ssort101").hide();$("#ssort102").hide();
+            }
+            else if($("#psort").val()==5){
+                $("#ssort ").attr("value","");
+                document.getElementById( "t1").style.display= "";
+                document.getElementById( "t2").style.display= "";
+				$("#ssort11").hide();
+				$("#ssort12").hide();
+				$("#ssort13").hide();
+				$("#ssort21").hide();
+				$("#ssort22").hide();
+				$("#ssort23").hide();
+				$("#ssort24").hide();
+				$("#ssort31").hide();
+				$("#ssort32").hide();
+				$("#ssort33").hide();
+				$("#ssort34").hide();
+				$("#ssort35").hide();
+				$("#ssort36").hide();
+				$("#ssort41").hide();
+				$("#ssort42").hide();
+				$("#ssort51").show();
+				$("#ssort52").show();
+				$("#ssort53").show();
+				$("#ssort54").show();
+				$("#ssort55").show();
+				$("#ssort101").hide();
+				$("#ssort102").hide();
+            }
+            else if($("#psort").val()==10){
+                $("#ssort ").attr("value","");
+                document.getElementById( "t1").style.display= "";
+                document.getElementById( "t2").style.display= "";
+				$("#ssort11").hide();$("#ssort12").hide();$("#ssort13").hide();$("#ssort21").hide();
+				$("#ssort22").hide();$("#ssort23").hide();$("#ssort24").hide();$("#ssort31").hide();
+				$("#ssort32").hide();$("#ssort33").hide();$("#ssort34").hide();$("#ssort35").hide();
+				$("#ssort36").hide();$("#ssort41").hide();$("#ssort42").hide();$("#ssort51").hide();
+				$("#ssort52").hide();$("#ssort53").hide();$("#ssort54").hide();$("#ssort55").hide();
+				$("#ssort101").show();$("#ssort102").show();
+            }else{
+                document.getElementById( "t1").style.display= "none";
+                document.getElementById( "t2").style.display= "none";
+            }
+        }
+	</script>
+</head>
+<body class="hideScroll">
+<div class="wrapper wrapper-content">
+	<div class="ibox">
+		<form:form id="inputForm" modelAttribute="workBidingProject" action="${ctx}/workbidingproject/workBidingProject/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		   <div class="col-sm-12 m-t-xs">
+			   <div class="col-sm-2 gray-bg text-center oneTab">
+				   <label>基本信息</label>
+			   </div>
+			   <div class="col-sm-10 " >
+				   <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">
+								   <sys:gridselectContract url="${ctx}/workengineeringproject/workEngineeringProject/selectcontractId" id="contractId" name="contract.id" type="3" isTotal="" value="${workBidingProject.contract.id}"  title="选择合同名称" labelName="contract.name"
+														   labelValue="${workBidingProject.contract.name}" cssClass="form-control required" fieldLabels="合同信息" fieldKeys="name" searchLabel="合同名称" searchKey="name" ></sys:gridselectContract>
+							   </td>
+							   <td class="width-15 active"><label class="pull-right">合同编号:<font color="red">*</font></label></td>
+							   <td class="width-35">
+								   <form:input path="contract.contractNum" id="contractNum" htmlEscape="false"  readonly="true"   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">
+									<sys:gridselect url="${ctx}/workbidproject/workBidProject/selectbidCompany" id="client" name="client.id"  value="${workBidingProject.client.id}"  title="选择客户单位" labelName="client.name"
+													labelValue="${workBidingProject.client.name}" cssClass="form-control required" fieldLabels="客户" fieldKeys="name" searchLabel="客户名称" searchKey="name"  ></sys:gridselect>
+								</td>
+								<td class="width-15 active"><label class="pull-right">投资额(元):</label></td>
+								<td class="width-35">
+									<form:input path="investmentAmount" htmlEscape="false"    class="form-control  number"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="pull-right">招标方式:</label></td>
+								<td class="width-35">
+									<form:select path="biddingType" class="form-control ">
+										<form:option value="" label=""/>
+										<form:options items="${fns:getMainDictList('bidding_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+									</form:select>
+								</td>
+								<td class="width-15 active"><label class="pull-right">批次:</label></td>
+								<td class="width-35">
+									<form:select path="batch" class="form-control ">
+										<form:option value="" label=""/>
+										<form:options items="${fns:getDictList('bidding_batch')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+									</form:select>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="pull-right">行业分类:</label></td>
+								<td class="width-35">
+									<form:select id="psort" path="psort" class="form-control" onChange="chooseType()"><%--onChange="changeTypeExplain(this)"--%>
+										<form:option value="" label=""/>
+										<form:options items="${fns:getDictList('psort')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+									</form:select>
+								</td>
+								<td class="width-15 active" id="t1" style="display:none"><label class="pull-right">详细分类:</label></td>
+								<td class="width-35" id="t2" style="display:none">
+									<form:select path="ssort" class="form-control" onChange="changeTypeExplain(this)">
+										<form:option value="" label=""/>
+										<form:options id="ssort1" items="${fns:getDictList('ssort1')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+										<form:options id="ssort2" items="${fns:getDictList('ssort2')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+										<form:options id="ssort3" items="${fns:getDictList('ssort3')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+										<form:options id="ssort4" items="${fns:getDictList('ssort4')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+										<form:options id="ssort5" items="${fns:getDictList('ssort5')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+										<form:options id="ssort10" items="${fns:getDictList('ssort10')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+									</form:select>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="pull-right">项目编号:</label></td>
+								<td class="width-35">
+									<form:input path="projectNumber" htmlEscape="false"    class="form-control "/>
+								</td>
+								<td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+								<td class="width-35">
+									<form:input path="projectName" htmlEscape="false"    class="form-control "/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="pull-right">联系人姓名:</label></td>
+								<td class="width-35">
+									<select id="linkman_list" onchange="selectLinkman(this.value,'linkman')" class="linkman_list max-width-250 form-control" />
+								</td>
+								<td class="width-15 active"><label class="pull-right">职务:</label></td>
+								<td class="width-35">
+									<form:input path="client.workClientLinkmanList[0].position" id="linkmanPosition" readonly="true" class="form-control linkman_attr"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="pull-right"> 联系方式:</label></td>
+								<td class="width-35">
+									<form:input path="client.workClientLinkmanList[0].linkPhone" id="linkmanPhone" readonly="true" class="form-control linkman_attr"/>
+								</td>
+								<td class="width-15 active"><label class="pull-right">E-mail:</label></td>
+								<td class="width-35">
+									<form:input path="client.workClientLinkmanList[0].email" id="linkmanEmail" readonly="true" class="form-control linkman_attr"/>
+								</td>
+							</tr>
+					   </tbody>
+				   </table>
+			   </div>
+		   </div>
+		   <div class="col-sm-12 m-t-xs">
+			   <div class="col-sm-2 gray-bg text-center oneTab">
+				   <label>项目概况</label>
+			   </div>
+			   <div class="col-sm-10 " >
+				   <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">
+									<c:choose>
+										<c:when test="${workBidingProject.isControlPrice eq '1'}">
+											<input type="radio" value="0" id="isExt" name="isControlPrice" onclick="display(this.value)">无
+											<input type="radio" value="1" id="isExt" name="isControlPrice" onclick="display(this.value)" checked="checked">有
+										</c:when>
+										<c:otherwise>
+											<input type="radio" value="0" id="isExt" name="isControlPrice" onclick="display(this.value)" checked="checked">无
+											<input type="radio" value="1" id="isExt" name="isControlPrice" onclick="display(this.value)">有
+										</c:otherwise>
+									</c:choose>
+								</td>
+								<td class="width-15 active" id ="controlPrice" style="display:none"><label class="pull-right"><font color="red">*</font>标底或招标控制价(元):</label></td>
+								<td class="width-35" colspan="3" id ="controlPriceVal" style="display:none">
+									<form:input path="controlPrice" 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">
+									<sys:treeselect id="demandOffice" name="demandOffice.id" value="${workBidingProject.demandOffice.id}" labelName="demandOffice.name" labelValue="${workBidingProject.demandOffice.name}"
+													title="部门" url="/sys/office/treeDataAll?type=2" cssClass="form-control required" allowClear="true" notAllowSelectParent="true"/>
+								</td>
+								<td class="width-15 active"><label class="pull-right"><font color="red">*</font>施工地点/交货地:</label></td>
+								<td class="width-35">
+									<sys:treeselect id="area" name="area.id" value="${workBidingProject.area.id}" labelName="area.name" labelValue="${workBidingProject.area.name}"
+													title="区域" url="/sys/area/treeData" cssClass="form-control required" allowClear="true" notAllowSelectParent="true"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="pull-right">监督单位:</label></td>
+								<td class="width-35">
+									<form:input path="supervisoryOffice" htmlEscape="false"    class="form-control "/>
+								</td>
+								<td class="width-15 active"><label class="pull-right">资金属性:</label></td>
+								<td class="width-35">
+									<form:select path="capitalAttribute" class="form-control ">
+										<form:option value="" label=""/>
+										<form:options items="${fns:getDictList('biding_capital_attribute')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+									</form:select>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="pull-right">工期/交货期:</label></td>
+								<td class="width-35" >
+									<input id="projectStartDate" name="projectStartDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date "
+										   value="<fmt:formatDate value="${workBidingProject.projectStartDate}" pattern="yyyy-MM-dd"/>"/>
+								</td>
+								<td class="width-15 active">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;至</td>
+								</td>
+								<td class="width-35" >
+									<input id="projectEndDate" name="projectEndDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date "
+										   value="<fmt:formatDate value="${workBidingProject.projectEndDate}" pattern="yyyy-MM-dd"/>"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="pull-right">招标范围:</label></td>
+								<td class="width-35" colspan="3">
+									<form:textarea path="scopeOfBidding" 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" colspan="3">
+									<form:textarea path="bidEvaluationMethod" 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" colspan="3">
+									<form:textarea path="investorQualification" 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" colspan="3">
+									<form:textarea path="hostProjectQualification" 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" colspan="3">
+									<form:textarea path="otherRequirement" 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" colspan="3">
+										<sys:treeselect id="projectMaster" name="projectMasterIds" value="${workBidingProject.projectMasterIds}" labelName="projectMasterNames" labelValue="${workBidingProject.projectMasterName}"
+																	  title="选择负责人" url="/sys/office/treeData?type=3&isAll=false" cssClass="form-control" notAllowSelectParent="true" checked="true"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="pull-right">项目组成员:</label></td>
+								<td class="width-35" colspan="3">
+										<sys:treeselect id="projectMember" name="projectMemberIds" value="${workBidingProject.projectMemberIds}" labelName="projectMemberNames" labelValue="${workBidingProject.projectMemberName}"
+														title="选择成员" url="/sys/office/treeData?type=3&isAll=false" cssClass="form-control" notAllowSelectParent="true" checked="true"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="pull-right">清单编制人员:</label></td>
+								<td class="width-35" colspan="3">
+									<sys:treeselect id="inventorUser" name="inventorUserIds" value="${workBidingProject.inventorUserIds}" labelName="inventorUserNames" labelValue="${workBidingProject.inventorUserName}"
+													title="清单编制人员" url="/sys/office/treeDataAll?type=3&isAll=false" cssClass="form-control" notAllowSelectParent="true" checked="true"/>
+								</td>
+							</tr>
+					   </tbody>
+				   </table>
+			   </div>
+		   </div>
+	</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 211 - 0
src/main/webapp/webpage/modules/workbidingproject/workBidingProjectList.jsp

@@ -0,0 +1,211 @@
+<%@ 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() {
+            //搜索框收放
+            $('#moresee').click(function(){
+                if($('#moresees').is(':visible'))
+                {
+                    $('#moresees').slideUp('slow');
+                    $(this).text("更多").removeClass("fa fa-chevron-up").addClass("fa fa-chevron-down");
+                    //document.getElementById("moresees").style.visibility = "hidden";
+                }else{
+                    $('#moresees').slideDown('slow');
+                    $(this).text("收起").removeClass("fa fa-chevron-down").addClass("fa fa-chevron-up");
+                    //document.getElementById("moresees").style.visibility = "visible";
+                }
+            });
+		});
+	</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="workBidingProject" action="${ctx}/workbidingproject/workBidingProject/" 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>客户信息Id:</span>
+				<sys:gridselect url="${ctx}/workbidingproject/workBidingProject/selectclientId" id="client.id" name="client.id"  value="${workBidingProject.client.id}"  title="选择客户信息Id" labelName="client.id"
+					labelValue="${workBidingProject.client.id}" cssClass="form-control required" fieldLabels="" fieldKeys="" searchLabel="" searchKey="" ></sys:gridselect>
+			--%>
+			<%--<span>合同外键:</span>
+				<sys:gridselect url="${ctx}/workbidingproject/workBidingProject/selectcontractId" id="contract.id" name="contract.id"  value="${workBidingProject.contract.id}"  title="选择合同外键" labelName="contract.id"
+					labelValue="${workBidingProject.contract.id}" cssClass="form-control required" fieldLabels="" fieldKeys="" searchLabel="" searchKey="" ></sys:gridselect>
+			--%>
+			<span>项目编号:</span>
+				<form:input path="projectNumber" htmlEscape="false" maxlength="255"  class=" form-control input-sm"/>
+			<span>&nbsp;&nbsp;项目名称:</span>
+				<form:input path="projectName" htmlEscape="false" maxlength="255"  class=" form-control input-sm"/>
+			<span>&nbsp;&nbsp;招标方式:</span>
+				<form:select path="biddingType"  class="form-control m-b">
+					<form:option value="" label=""/>
+					<form:options items="${fns:getMainDictList('bidding_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+				</form:select>
+
+			<%--<span style="margin-top: 15px">&nbsp;&nbsp;合同名称: </span>
+				<div class="form-group shows">
+					<sys:gridselectContract url="${ctx}/workengineeringproject/workEngineeringProject/selectcontractId" id="contractId" name="contractId.id" type="1,2" value="${workBidingProject.contract.id}"  title="选择合同名称" labelName="contractId.name"
+									labelValue="${workBidingProject.contract.name}" cssClass="form-control required" fieldLabels="合同信息" fieldKeys="name" searchLabel="合同名称" searchKey="name" ></sys:gridselectContract>
+				</div>--%>
+		</div>
+		<div style="display:none;margin-top: 15px" id="moresees">
+			<span>行业分类:</span>
+			<form:select path="psort"  class="form-control m-b">
+				<form:option value="" label=""/>
+				<form:options items="${fns:getDictList('psort')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+			</form:select>
+			<span style="margin-top: 15px">客户名称: </span>
+			<div class="form-group shows">
+				<sys:gridselectcallproject url="${ctx}/workcontractinfo/workContractInfo/selectclient" id="client"
+					name="client.id" value="${workBidingProject.client.id}" title="选择客户"
+					labelName="client.name"
+					labelValue="${workBidingProject.client.name}"
+					cssClass="form-control required" fieldLabels="客户名称" fieldKeys="name"
+					searchLabel="客户名称" searchKey="name"></sys:gridselectcallproject>
+			</div>
+		</div>
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<%--<c:if test="${status eq 2}">--%>
+				<%--<shiro:hasPermission name="workbidingproject:workBidingProject:add">--%>
+					<table:addRow url="${ctx}/workbidingproject/workBidingProject/form" title="招标项目信息" ></table:addRow><!-- 增加按钮 -->
+				<%--</shiro:hasPermission>--%>
+		<%--	</c:if>--%>
+
+			<%--<shiro:hasPermission name="workbidingproject:workBidingProject:edit">
+			    <table:editRow url="${ctx}/workbidingproject/workBidingProject/form" title="招标项目信息" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workbidingproject:workBidingProject:del">
+				<table:delRow url="${ctx}/workbidingproject/workBidingProject/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>--%>
+			<shiro:hasPermission name="workbidingproject:workBidingProject:import">
+				<table:importExcel url="${ctx}/workbidingproject/workBidingProject/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workbidingproject:workBidingProject:export">
+	       		<table:exportExcel url="${ctx}/workbidingproject/workBidingProject/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 style="text-align: center;width: 5%"> 序号</th>
+				<th style="text-align: center;width: 15%"  class="sort-column createDate">登记日期</th>
+				<th style="text-align: center;width: 25%"  class="sort-column ce.name">客户名称</th>
+				<th style="text-align: center;width: 15%"  class="sort-column projectNumber">项目编号</th>
+				<th style="text-align: center;width: 25%"  class="sort-column projectName">项目名称</th>
+				<th style="text-align: center;width: 15%">操作</th>
+			</tr>
+		</thead>
+		<tbody>
+			<c:choose>
+			<c:when test="${not empty page.list}">
+				<c:forEach items="${page.list}" var="workBidingProject" varStatus="index">
+				<tr>
+					<td> ${index.index+1}</td>
+					<td>
+						<fmt:formatDate value="${workBidingProject.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+					</td>
+					<td>
+						<a  href="javascript:void(0)" onclick="openDialogView('查看客户管理', '${ctx}/workclientinfo/workClientInfo/detail?id=${workBidingProject.client.id}','80%', '80%')">
+							<span title="${workEngineeringProject.workClientInfo.name}">${fns:abbr(workBidingProject.client.name,30)}</span>
+						</a>
+
+					</td>
+					<td>
+						${workBidingProject.projectNumber}
+					</td>
+					<td>
+						<a  href="javascript:void(0)" onclick="openDialogView('查看招标项目信息', '${ctx}/workbidingproject/workBidingProject/form?id=${workBidingProject.id}&name=view','80%', '80%')">
+							${workBidingProject.projectName}
+						</a>
+
+					</td>
+					<td>
+						<div style="text-align: center">
+						<%--<shiro:hasPermission name="workbidingproject:workBidingProject:view">--%>
+							<a href="javascript:void(0)" onclick="openDialogView('查看招标项目信息', '${ctx}/workbidingproject/workBidingProject/form?id=${workBidingProject.id}&name=view','80%', '80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					<%--	</shiro:hasPermission>--%>
+						<c:if test="${workBidingProject.createBy.id eq fns:getUser().id}">
+							<%--<shiro:hasPermission name="workbidingproject:workBidingProject:edit">--%>
+								<a href="javascript:void(0)" onclick="openDialog('修改招标项目信息', '${ctx}/workbidingproject/workBidingProject/form?id=${workBidingProject.id}&name=edit','80%', '80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+						<%--	</shiro:hasPermission>--%>
+							<%--<shiro:hasPermission name="workbidingproject:workBidingProject:del">--%>
+								<a href="${ctx}/workbidingproject/workBidingProject/delete?id=${workBidingProject.id}" onclick="return confirmx('确认要删除该招标项目信息吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+						<%--	</shiro:hasPermission>--%>
+						</c:if>
+						</div>
+					</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>

+ 380 - 0
src/main/webapp/webpage/modules/workbidingproject/workBidingProjectView.jsp

@@ -0,0 +1,380 @@
+<%@ 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(){
+            var oneSize = $(".oneTab").size();
+            for(var i = 0;i < oneSize;i++){
+                var hei = $(".oneTab:eq("+i+")").parent().height();
+                $(".oneTab:eq("+i+")").css("height",hei-5)
+                    .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: '#projectStartDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#projectEndDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            var isControlPrice = "${workBidingProject.isControlPrice}";
+            if(isControlPrice==1){
+                $("#controlPrice").show();
+                $("#controlPriceVal").show();
+            }
+        });
+
+        function setContractValue(obj){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workengineeringproject/workEngineeringProject/getContractInfo',
+                data:{
+                    "obj":obj
+                },
+                success:function(data){
+                    var d = JSON.parse(data);
+                    $("#contractNum").val(d.contractNum);
+                    $("#clientName").val(d.clientName);
+                    $("#clientId").val(d.clientId);
+                    $("#linkmanName").val(d.linkmanName);
+                    $("#linkmanPhone").val(d.linkmanPhone);
+                    $("#linkmanEmail").val(d.linkmanEmail);
+                    $("#linkmanPosition").val(d.linkmanPosition);
+
+                }
+            })
+        }
+        function display(n){
+            if(n==1){
+                $("#controlPrice").show();
+                $("#controlPriceVal").show();
+            }else{
+                $("#controlPrice").hide();
+                $("#controlPriceVal").hide();
+            }
+        }
+	</script>
+	<script type="text/javascript">
+        $(function () {
+            if(${requestScope.linkmanList !=null}){
+                var defaultLinkmanName = "";
+                $.each(JSON.parse('${requestScope.linkmanList}'),function(n,value){
+                    var optionTag = '<option id="linkman_attr_'+n+'" type="text" value='+n+'>'+value.linkmanName+'</option>';
+                    $("#linkman_list").append(optionTag);
+                    if(n==0){
+                        defaultLinkmanName=value.linkmanName;
+                    }
+                });
+                $("#linkman_list option:first").prop("selected","selected").text(defaultLinkmanName);
+            }
+        });
+
+        /**
+         * 查看联系人(需要用到linkManList)
+         */
+        function selectLinkman(index,target) {
+            if(target=='linkman'){
+                var manList = JSON.parse('${requestScope.linkmanList}');
+
+                var linkman = manList[index];
+                $("#linkmanOffice").val(linkman.linkmanOffice);
+                $("#linkmanPosition").val(linkman.linkmanPosition);
+                $("#QQ").val(linkman.QQ);
+                $("#linkmanPhone").val(linkman.linkmanPhone);
+                $("#linkmanMobile").val(linkman.linkmanMobile);
+                $("#linkmanEmail").val(linkman.linkmanEmail);
+            }
+        }
+
+	</script>
+</head>
+<body class="hideScroll">
+<form:form id="inputForm" modelAttribute="workBidingProject" class="form-horizontal">
+	   <table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+			   <div class="tabs-container">
+				   <ul class="nav nav-tabs">
+					   <li class="active"><a data-toggle="tab" href="#tab-1" aria-expanded="true" style="margin-top: 25px">基本信息</a>
+					   </li>
+				   </ul>
+			   </div>
+				<tr>
+				   <td class="width-15 active"><label class="pull-right">合同名称:</label></td>
+				   <td class="width-35">
+					   ${workBidingProject.contract.name}
+				   </td>
+				   <td class="width-15 active"><label class="pull-right">合同编号:</label></td>
+				   <td class="width-25">
+					   ${workBidingProject.contract.contractNum}
+				   </td>
+				</tr>
+				<tr>
+
+					<td class="width-15 active"><label class="pull-right">投资额(元):</label></td>
+					<td class="width-35">
+						${workBidingProject.investmentAmount}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">招标方式:</label></td>
+					<td class="width-35">
+						${fns:getMainDictLabel(workBidingProject.biddingType, 'bidding_type', '')}
+					</td>
+					<td class="width-15 active"><label class="pull-right">批次:</label></td>
+					<td class="width-35">
+						${fns:getDictLabel(workBidingProject.batch, 'bidding_batch', '')}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">行业分类:</label></td>
+					<td class="width-35">
+						${fns:getDictLabel(workBidingProject.psort, 'psort', '')}
+					</td>
+					<td class="width-15 active"><label class="pull-right">详细分类:</label></td>
+					<td class="width-35">
+						<c:choose>
+							<c:when test="${workBidingProject.psort eq 1}">
+								${fns:getDictLabel(workBidingProject.ssort, 'ssort1', '')}
+							</c:when>
+							<c:when test="${workBidingProject.psort eq 2}">
+								${fns:getDictLabel(workBidingProject.ssort, 'ssort2', '')}
+							</c:when>
+							<c:when test="${workBidingProject.psort eq 3}">
+								${fns:getDictLabel(workBidingProject.ssort, 'ssort3', '')}
+							</c:when>
+							<c:when test="${workBidingProject.psort eq 4}">
+								${fns:getDictLabel(workBidingProject.ssort, 'ssort4', '')}
+							</c:when>
+							<c:when test="${workBidingProject.psort eq 5}">
+								${fns:getDictLabel(workBidingProject.ssort, 'ssort5', '')}
+							</c:when>
+							<c:when test="${workBidingProject.psort eq 10}">
+								${fns:getDictLabel(workBidingProject.ssort, 'ssort10', '')}
+							</c:when>
+							<c:otherwise>
+								无
+							</c:otherwise>
+						</c:choose>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目编号:</label></td>
+					<td class="width-35">
+						${workBidingProject.projectNumber}
+					</td>
+					<td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+					<td class="width-35">
+						${workBidingProject.projectName}
+					</td>
+				</tr>
+		   </tbody>
+	   </table>
+
+	   <table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+		   <div class="tabs-container">
+			   <ul class="nav nav-tabs">
+				   <li class="active"><a data-toggle="tab" href="#tab-1" aria-expanded="true" style="margin-top: 25px">客户单位</a>
+				   </li>
+			   </ul>
+		   </div>
+		   <tr>
+			   <td class="width-15 active"><label class="pull-right">客户信息:</label></td>
+			   <td class="width-35" colspan="3">
+				   ${workBidingProject.client.name}
+			   </td>
+		   </tr>
+		   <tr>
+			   <td class="width-15 active"><label class="pull-right">联系人:</label></td>
+			   <td class="width-35">
+				   <select id="linkman_list" onchange="selectLinkman(this.value,'linkman')" class="linkman_list max-width-200 form-control" />
+			   </td>
+			   <td class="width-15 active"><label class="pull-right">部门:</label></td>
+			   <td class="width-35">
+				   <input value="${workBidingProject.client.workClientLinkmanList[0].office}" id="linkmanOffice" readonly="true" class="form-control linkman_attr"/>
+			   </td>
+		   </tr>
+		   <tr>
+			   <td class="width-15 active"><label class="pull-right">职务:</label></td>
+			   <td class="width-35">
+				   <input value="${workBidingProject.client.workClientLinkmanList[0].position}" id="linkmanPosition" readonly="true" class="form-control linkman_attr"/>
+			   </td>
+			   <td class="width-15 active"><label class="pull-right">QQ:</label></td>
+			   <td class="width-35">
+				   <input value="${workBidingProject.client.workClientLinkmanList[0].qq}" id="QQ" readonly="true" class="form-control linkman_attr"/>
+			   </td>
+		   </tr>
+		   <tr>
+			   <td class="width-15 active"><label class="pull-right">电话:</label></td>
+			   <td class="width-35">
+				   <input value="${workBidingProject.client.workClientLinkmanList[0].linkPhone}" id="linkmanPhone" readonly="true" class="form-control linkman_attr"/>
+			   </td>
+			   <td class="width-15 active"><label class="pull-right">手机:</label></td>
+			   <td class="width-35">
+				   <input value="${workBidingProject.client.workClientLinkmanList[0].linkPhone}" id="linkmanMobile" readonly="true" class="form-control linkman_attr"/>
+			   </td>
+		   </tr>
+		   <tr>
+			   <td class="width-15 active"><label class="pull-right">E-mail:</label></td>
+			   <td class="width-35">
+				   <input value="${workBidingProject.client.workClientLinkmanList[0].email}" id="linkmanEmail" readonly="true" class="form-control linkman_attr"/>
+			   </td>
+		   </tr>
+		   </tbody>
+	   </table>
+
+
+	   <table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <div class="tabs-container">
+			   <ul class="nav nav-tabs">
+				   <li class="active"><a data-toggle="tab" href="#tab-1" aria-expanded="true" style="margin-top: 25px">项目信息</a>
+				   </li>
+			   </ul>
+		   </div>
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">标底或招标控制价:</label></td>
+					<td class="width-35">
+						<c:choose>
+							<c:when test="${workBidingProject.isControlPrice eq '1'}">
+								有
+							</c:when>
+							<c:otherwise>
+								无
+							</c:otherwise>
+						</c:choose>
+					</td>
+					<td class="width-15 active" id ="controlPrice" style="display:none"><label class="pull-right"><font color="red">*</font>标底或招标控制价(元):</label></td>
+					<td class="width-35" colspan="3" id ="controlPriceVal" style="display:none">
+						${workBidingProject.controlPrice}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">需求部门:</label></td>
+					<td class="width-35">
+						${workBidingProject.demandOffice.name}
+					</td>
+					<td class="width-15 active"><label class="pull-right">施工地点/交货地:</label></td>
+					<td class="width-35">
+						${workBidingProject.area.name}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">监督单位:</label></td>
+					<td class="width-35">
+						${workBidingProject.supervisoryOffice}
+					</td>
+					<td class="width-15 active"><label class="pull-right">资金属性:</label></td>
+					<td class="width-35">
+						${fns:getDictLabel(workBidingProject.capitalAttribute, 'biding_capital_attribute', '')}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">工期/交货期:</label></td>
+					<td class="width-35" >
+						<fmt:formatDate value="${workBidingProject.projectStartDate}" pattern="yyyy-MM-dd"/>
+					</td>
+					<td class="width-15 active">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;至</td>
+					</td>
+					<td class="width-35" >
+						<fmt:formatDate value="${workBidingProject.projectEndDate}" pattern="yyyy-MM-dd"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">招标范围:</label></td>
+					<td class="width-35" colspan="3">
+						${workBidingProject.scopeOfBidding}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">评标办法:</label></td>
+					<td class="width-35" colspan="3">
+						${workBidingProject.bidEvaluationMethod}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">投资人资质要求:</label></td>
+					<td class="width-35" colspan="3">
+						${workBidingProject.investorQualification}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目负责人资质要求:</label></td>
+					<td class="width-35" colspan="3">
+						${workBidingProject.hostProjectQualification}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">其他要求:</label></td>
+					<td class="width-35" colspan="3">
+						${workBidingProject.otherRequirement}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目组负责人:</label></td>
+					<td class="width-35" colspan="3">
+						${workBidingProject.projectMasterName}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目组成员:</label></td>
+					<td class="width-35" colspan="3">
+						${workBidingProject.projectMemberName}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">清单编制人员:</label></td>
+					<td class="width-35" colspan="3">
+						${workBidingProject.inventorUserName}
+					</td>
+				</tr>
+		   </tbody>
+	   </table>
+</form:form>
+</body>
+</html>

+ 690 - 0
src/main/webapp/webpage/modules/workbidproject/workBidProjectAudit.jsp

@@ -0,0 +1,690 @@
+<%@ 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(obj == 1){
+                $('#flag').val('yes');
+            }else{
+                $('#flag').val('no');
+            }
+            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: '#registrationDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#bidDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#trialDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#purchaseDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#refundDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#giveDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+            $("#attachment_btn2").click(function () {
+                $("#attachment_file2").click();
+            });
+            $("#attachment_btn3").click(function () {
+                $("#attachment_file3").click();
+            });
+            $("#attachment_btn4").click(function () {
+                $("#attachment_file4").click();
+            });
+            /*var isExt = "${workBidProject.isExt}";
+				    if(isExt==0){
+				        $("#contact").show();
+				        $("#btnAdd1").hide();
+				        //$("#btnAdd2").show();
+				        $("#extContact").hide();
+				    }else{
+				        $("#extContact").show();
+				        $("#btnAdd1").show();
+				        //$("#btnAdd2").hide();
+				        $("#contact").hide();
+				    }*/
+
+        });
+        function insertTitle(tValue){
+            var list = "${workBidProject.workAttachments}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "95";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+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 insertTitle2(tValue){
+            var list = "${workBidProject.workAttachmentsprice}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file2")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "96";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment2";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        function insertTitle3(tValue){
+            var list = "${workBidProject.workAttachmentsbid}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file3")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "97";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment3";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        function insertTitle4(tValue){
+            var list = "${workBidProject.workAttachmentsopenbid}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file4")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "98";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment4";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        /*function addRow(list, idx, workClientLinkmanTpl, row) {
+
+            $(list).append(Mustache.render(workClientLinkmanTpl, {
+                idx: idx, delBtn: true, row: row
+            }));
+            $(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).parent().parent().hide();
+                $(obj).html("&divide;").attr("title", "撤回删除");
+                $(obj).parent().parent().addClass("error");
+            }else if(delFlag.val() == "1"){
+                delFlag.val("0");
+                $(obj).html("&times;").attr("title", "删除");
+                $(obj).parent().parent().removeClass("error");
+            }
+        }
+
+	</script>
+</head>
+<body >
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="workBidProject" action="${ctx}/workbidproject/workBidProject/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"/>
+
+			<div class="form-group layui-row first lw16">
+				<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" readonly="true" class="form-control required layui-input" value="${workBidProject.projectName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<input path="projectNumber" htmlEscape="false" readonly="true" class="form-control layui-input" value="${workBidProject.projectNumber}"/>
+							<span class="input-group-btn">
+                            <label class="form-status"><c:choose><c:when test="${not empty workBidProject.status}">${fns:getDictLabel(workBidProject.status, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                         </span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>工程分类:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.projectType, 'contract_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">类型说明:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.typeExplain}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目来源:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.projectSource, 'bidProjectSource', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">来源说明:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.sourceExplain}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目规模:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.projectScale}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">规模类型:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.scaleType, 'scale_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">规模单位:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.scaleUnit, 'scale_unit', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投资额(万元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatNumber value="${workBidProject.investMoney}" pattern="#,#00.00"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">是否外部招标单位:</label>
+					<div class="layui-input-block">
+						<c:choose>
+							<c:when test="${workBidProject.isExt == '1'}">
+								<input htmlEscape="false" readonly="true" class="form-control layui-input" value="系统外招标单位" />
+							</c:when>
+							<c:otherwise>
+								<input htmlEscape="false" readonly="true" class="form-control layui-input" value="系统内招标单位" />
+							</c:otherwise>
+						</c:choose>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>招标单位:</label>
+					<div class="layui-input-block with-icon">
+						<c:choose>
+							<c:when test="${workBidProject.isExt == '1'}">
+								<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.extCompany}"/>
+							</c:when>
+							<c:otherwise>
+								<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.bidCompany.name}"/>
+							</c:otherwise>
+						</c:choose>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">招标编号:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.bidNumber}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">所属部门:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workBidProject.officeName}"/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>联系人</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable2" class="table table-bordered table-condensed details no-bottom-margin">
+						<thead>
+						<tr>
+							<th width="18%"><span class="require-item">*</span>联系人姓名</th>
+							<th width="13%">部门</th>
+							<th width="13%">职务</th>
+							<th width="13%">QQ</th>
+							<th width="16%"><span class="require-item">*</span>联系方式1</th>
+							<th width="16%">联系方式2</th>
+							<th width="13%">E-mail</th>
+						</tr>
+						</thead>
+						<tbody id="workClientLinkmanList">
+						<c:forEach items="${workBidProject.workClientLinkmanList}" var="workClientLinkman" varStatus="status">
+							<tr>
+								<td>${workClientLinkman.name}</td>
+								<td>${workClientLinkman.office}</td>
+								<td>${workClientLinkman.position}</td>
+								<td>${workClientLinkman.qq}</td>
+								<td>${workClientLinkman.linkPhone}</td>
+								<td>${workClientLinkman.linkMobile}</td>
+								<td>${workClientLinkman.email}</td>
+							</tr>
+						</c:forEach>
+						<c:if test="${empty workBidProject.workClientLinkmanList}">
+							<tr>
+								<td colspan="8">暂无数据</td>
+							</tr>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>招标代理机构</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable3" class="table table-bordered table-condensed details no-bottom-margin">
+						<thead>
+						<tr>
+							<th width="20%"><span class="require-item">*</span>机构名称</th>
+							<th width="20%">姓名</th>
+							<th width="20%"><span class="require-item">*</span>联系人电话</th>
+							<th width="20%">QQ</th>
+							<th width="22%">E-mail</th>
+						</tr>
+						</thead>
+						<tbody id="workClientLinkmanLists">
+						<c:forEach items="${workBidProject.workClientLinkmanLists}" var="workClientLinkman" varStatus="status">
+							<tr>
+								<td>${workClientLinkman.office}</td>
+								<td>${workClientLinkman.name}</td>
+								<td>${workClientLinkman.linkPhone}</td>
+								<td>${workClientLinkman.qq}</td>
+								<td>${workClientLinkman.email}</td>
+							</tr>
+						</c:forEach>
+						<c:if test="${empty workBidProject.workClientLinkmanList}">
+							<tr>
+								<td colspan="8">暂无数据</td>
+							</tr>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row lw16">
+				<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">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.registrationDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>投标日期:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.bidDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">资审日期:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.trialDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">资格审查:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getDictLabel(workBidProject.trialType, 'trial_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">文件费用(元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatNumber value="${workBidProject.documentCost}" pattern="#,#00.00"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金(元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatNumber value="${workBidProject.bidBond}" pattern="#,#00.00"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金形式:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.bondStyle, 'bond_style', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金交付时间:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.giveDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金退还时间:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.refundDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目协作部门:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.office.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">是否联合体投标:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getDictLabel(workBidProject.isBid, 'is_bid', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">业务类型:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.businessType, 'business_type', '')}"/>
+					</div>
+				</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="${workBidProject.subcontractCompany}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label"><span class="require-item">*</span>项目概况:</label>
+					<div class="layui-input-block">
+						<textarea  htmlEscape="false" rows="4" readonly="true" class="form-control ">${workBidProject.projectSituation}</textarea>
+					</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"  class="form-control ">${workBidProject.serviceContent}</textarea>
+					</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"  class="form-control ">${workBidProject.remarks}</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 width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:forEach items="${workBidProject.workAttachments}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>价格附件信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable2" 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_attachment2">
+						<c:forEach items="${workBidProject.workAttachmentsprice}" var = "workClientAttachment" varStatus="status">
+							<tr>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>招投标附件信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable3" 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_attachment3">
+						<c:forEach items="${workBidProject.workAttachmentsbid}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>开标附件信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+
+					<table id="upTable4" 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_attachment4">
+						<c:forEach items="${workBidProject.workAttachmentsopenbid}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>审批意见</h2></div>
+				<div class="layui-item layui-col-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="${workBidProject.act.procInsId}"/>
+					<act:histoicFlow procInsId="${workBidProject.act.procInsId}"/>
+				</div>
+			</div>
+
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 969 - 0
src/main/webapp/webpage/modules/workbidproject/workBidProjectForm.jsp

@@ -0,0 +1,969 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>投标项目管理</title>
+	<meta name="decorator" content="default"/>
+	<style>
+		#projectType-error{
+			left:0;
+			top:40px;
+		}
+		#projectSituation-error{
+			left:0;
+			top:80px;
+		}
+	</style>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+
+            if(obj == 2){
+                $("#inputForm").attr("action","${ctx}/workbidproject/workBidProject/store");
+            }else{
+                $("#inputForm").attr("action","${ctx}/workbidproject/workBidProject/save");
+            }
+		  if(validateForm.form()){
+              if($("#sign").val() == 'tbzy'){
+                  top.layer.alert('该数据处于投标专员节点,请投标专员前往首页待办列表处理,非投标专员禁止操作!', {icon: 0});
+                  return;
+              }
+			  $("#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: '#registrationDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+					});
+					laydate.render({
+			            elem: '#bidDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			         });
+					laydate.render({
+			            elem: '#trialDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			        });
+					laydate.render({
+			            elem: '#purchaseDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			        });
+					laydate.render({
+			            elem: '#refundDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			        });
+					laydate.render({
+						elem: '#giveDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+						event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+					});
+					$("#attachment_btn").click(function () {
+						$("#attachment_file").click();
+					});
+					$("#attachment_btn2").click(function () {
+						$("#attachment_file2").click();
+					});
+					$("#attachment_btn3").click(function () {
+						$("#attachment_file3").click();
+					});
+					$("#attachment_btn4").click(function () {
+						$("#attachment_file4").click();
+					});
+					$("input[name='isExt']").on('ifChecked', function(event){
+						var radioVal = $(this).val();
+						console.log(radioVal+"----------radioVal");
+						if(radioVal == 1){
+							$("#tr1").hide()
+							$("#tr2").show()
+                            //$("#extCompany").val("");
+						}else{
+							$("#tr1").show()
+							$("#tr2").hide()
+                           // $("#extCompany").val("");
+						}
+					});
+					if("${workBidProject.isExt}" == "1"){
+						$("#ext1").iCheck('check')
+					}else{
+						$("#ext").iCheck('check')
+					}
+					/*var isExt = "${workBidProject.isExt}";
+				    if(isExt==0){  
+				        $("#contact").show();
+				        $("#extContact").hide();
+				    }else{
+				        $("#extContact").show();
+				        $("#contact").hide();
+				    }*/
+					
+		});
+        function insertTitle(tValue){
+            var list = "${workBidProject.workAttachments}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "95";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+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 insertTitle2(tValue){
+            var list = "${workBidProject.workAttachmentsprice}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file2")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "96";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment2";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        function insertTitle3(tValue){
+            var list = "${workBidProject.workAttachmentsbid}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file3")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "97";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment3";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        function insertTitle4(tValue){
+            var list = "${workBidProject.workAttachmentsopenbid}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file4")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "98";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment4";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+		function addRow(list, idx, workClientLinkmanTpl, row) {
+				$(list).append(Mustache.render(workClientLinkmanTpl, {
+					idx: idx, delBtn: true, row: row
+				}));
+				$(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).parent().parent().hide();
+				$(obj).html("&divide;").attr("title", "撤回删除");
+				$(obj).parent().parent().addClass("error");
+			}else if(delFlag.val() == "1"){
+				delFlag.val("0");
+				$(obj).html("&times;").attr("title", "删除");
+				$(obj).parent().parent().removeClass("error");
+			}
+		}
+		/*function setRule() {
+            //giveDate,refundDate
+            laydate.render({
+                elem: dateId, //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'click', //响应事件。如果没有传入event,则按照默认的click
+                value:new Date(),
+                done:function(value,date){
+                    validateTime(value,dateId);
+                }
+            });
+        }
+        function validateTime(val,dateId) {
+            var regDate = strToDate(val);
+            var now = new Date();
+            var days = Math.ceil(Math.abs(regDate.getTime()-now.getTime())/(24*60*60*1000))
+            if(days>10){
+                parent.layer.msg("登记日期与当前时间差不能超过10天", {icon: 5});
+                $(dateId).val(new Date().format("yyyy-MM-dd"));
+                return false;
+            }
+            var arrDate = strToDate($("#arrivalDate").val());
+            if(regDate.getTime()<arrDate.getTime()){
+                parent.layer.msg("登记日期不能早于到账日期", {icon: 5});
+                $(dateId).val(new Date().format("yyyy-MM-dd"));
+                return false;
+            }
+        }
+        function strToDate(dateStr){
+            var dateStr = dateStr.replace(/-/g, "/");//现将yyyy-MM-dd类型转换为yyyy/MM/dd
+            var dateTime = Date.parse(dateStr);//将日期字符串转换为表示日期的秒数
+            //注意:Date.parse(dateStr)默认情况下只能转换:月/日/年 格式的字符串,但是经测试年/月/日格式的字符串也能被解析
+            var data = new Date(dateTime);//将日期秒数转换为日期格式
+            return data;
+        }*/
+		/*function display(n){
+		    if(n==0){
+		        $("#contact").show();
+		        $("#extContact").hide();
+		    }else{
+		        $("#extContact").show();
+		        $("#contact").hide();
+		    }
+
+            //显示系统外客户联系人
+            if(n==1){
+                getExtCompany();
+            }
+		}*/
+	/*	function getExtCompany(){
+            var workBidProjectId =$("#workBidProjectId").val(); console.log("id="+workBidProjectId);
+ 			$.get("${ctx}/workprequalification/workPrequalification/getExtCompany", {"workBidProjectId": workBidProjectId},
+					  function(data,textStatus){
+ 						data = data.body.list;
+			 		    if(data !=null){
+							for (var i=0; i<data.length; i++){
+								addRow('#workClientLinkmanList', workClientLinkmanRowIdx, workClientLinkmanTpl, data[i]);
+                                workClientLinkmanRowIdx = workClientLinkmanRowIdx + 1;
+							}
+						} 
+					  });  
+		}*/
+       /* function changeTypeExplain(obj) {
+            if (obj.value == 4){
+                $("#typeExplain").attr("class","form-control required");
+            }else {
+                $("#typeExplain").attr("class","form-control");
+            }
+        }
+        function changeSourceExplain(obj) {
+            if (obj.value == 3){
+                $("#sourceExplain").attr("class","form-control required");
+            }else {
+                $("#sourceExplain").attr("class","form-control");
+            }
+        }*/
+	</script>
+	<script type="text/javascript">
+        /**
+         * 设置系统内客户信息
+         * @param obj
+         */
+
+        function setValuee(obj){
+            $('#workClientLinkmanList').html("");
+            $.get("${ctx}/workclientinfo/workClientInfo/selectLinkman", { clientId: obj},
+                function(data,textStatus){
+                    data = data.body.list;
+                    if(data !=null){
+                        for (var i=0; i<data.length; i++){
+                            addRow('#workClientLinkmanList', workClientLinkmanRowIdx, workClientLinkmanTpl, data[i]);
+                            workClientLinkmanRowIdx = workClientLinkmanRowIdx + 1;
+                        }
+                    }
+                });
+        }
+
+        $(document).ready(function() {
+            console.log($('#workClientLinkmanLists tbody'))
+		})
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form  id="inputForm" modelAttribute="workBidProject" action="${ctx}/workbidproject/workBidProject/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<form:hidden path="status"/>
+		<input id="sign" name="sign" value="${workBidProject.sign}" type="hidden">
+			<div class="form-group layui-row first lw16">
+				<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="projectName" htmlEscape="false"    class="form-control required 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="projectNumber" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+							<span class="input-group-btn">
+                            <label class="form-status"><c:choose><c:when test="${not empty workBidProject.status}">${fns:getDictLabel(workBidProject.status, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                         </span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>工程分类:</label>
+					<div class="layui-input-block">
+						<form:select path="projectType" class="form-control required simple-select"><%--onChange="changeTypeExplain(this)--%>
+							<form:option value="" label="--请选择工程分类--"/>
+							<form:options items="${fns:getMainDictList('contract_type')}" 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="typeExplain" 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:select path="projectSource" class="form-control simple-select">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getMainDictList('bidProjectSource')}" 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="sourceExplain" 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="projectScale" 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:select path="scaleType" class="form-control selectpicker required layui-input">
+							<form:option value="" label="--请选择规模类型--"/>
+							<form:options items="${fns:getMainDictList('scale_type')}" 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:select path="scaleUnit" class="form-control selectpicker required layui-input">
+							<form:option value="" label="--请选择规模--"/>
+							<form:options items="${fns:getMainDictList('scale_unit')}" 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="investMoney" 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">
+						<input type="radio" class="i-checks" name="isExt" checked id="ext" value="0">
+						<label for="ext">系统内招标单位</label>
+						<input type="radio" class="i-checks" name="isExt" id="ext1" value="1">
+						<label for="ext1">系统外招标单位</label>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>招标单位:</label>
+					<div class="layui-input-block with-icon">
+						<div id ="tr2" style="display:none">
+							<form:input id="extCompany" path="extCompany" htmlEscape="false"    class="form-control required layui-input"/>
+						</div>
+						<div id ="tr1" style="display:block">
+							<sys:gridselect url="${ctx}/workbidproject/workBidProject/selectbidCompany" id="bidCompany" name="bidCompany.id"  value="${workBidProject.bidCompany.id}"  title="选择招标单位" labelName="bidCompany.name"
+											labelValue="${workBidProject.bidCompany.name}" cssClass="form-control required layui-input" fieldLabels="客户" fieldKeys="name" searchLabel="客户名称" searchKey="name"  ></sys:gridselect>
+						</div>
+
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">招标编号:</label>
+					<div class="layui-input-block">
+						<form:input path="bidNumber" 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">
+						<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workBidProject.officeName}"/>
+					</div>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>联系人</h2></div>
+				<div class="layui-item nav-btns">
+					<a class="nav-btn nav-btn-add" onclick="addRow('#workClientLinkmanList', workClientLinkmanRowIdx, workClientLinkmanTpl);workClientLinkmanRowIdx = workClientLinkmanRowIdx + 1;" title="新增"><i class="fa fa-plus"></i>&nbsp;新增</a>
+				</div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable2" class="table table-bordered table-condensed can-edit no-bottom-margin">
+						<thead>
+						<tr>
+							<th width="100px"><span class="require-item">*</span>联系人姓名</th>
+							<th width="100px">部门</th>
+							<th width="100px">职务</th>
+							<th width="100px">QQ</th>
+							<th width="100px"><span class="require-item">*</span>联系方式1</th>
+							<th width="100px">联系方式2</th>
+							<th width="100px">E-mail</th>
+							<th width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="workClientLinkmanList">
+						</tbody>
+					</table>
+
+					<script type="text/template" id="workClientLinkmanTpl">//<!--
+					<tr id="workClientLinkmanList{{idx}}">
+						<td class="hide">
+							<input id="workClientLinkmanList{{idx}}_id" name="workClientLinkmanList[{{idx}}].id" type="hidden" value="{{row.id}}" />
+							<input id="workClientLinkmanList{{idx}}_delFlag" name="workClientLinkmanList[{{idx}}].delFlag" type="hidden" value="0" />
+							<input id="workClientLinkmanList{{idx}}_remarks" name="workClientLinkmanList[{{idx}}].remarks" type="hidden" value="0" />
+						</td>
+
+						<td>
+							<input id="workClientLinkmanList{{idx}}_name" name="workClientLinkmanList[{{idx}}].name" type="text" value="{{row.name}}"    class="form-control required"/>
+						</td>
+						<td>
+							<input id="workClientLinkmanList{{idx}}_office" name="workClientLinkmanList[{{idx}}].office" type="text" value="{{row.office}}"    class="form-control "/>
+						</td>
+
+						<td>
+							<input id="workClientLinkmanList{{idx}}_position" name="workClientLinkmanList[{{idx}}].position" type="text" value="{{row.position}}"    class="form-control"/>
+						</td>
+
+
+						<td>
+							<input id="workClientLinkmanList{{idx}}_qq" name="workClientLinkmanList[{{idx}}].qq" type="text" value="{{row.qq}}"    class="form-control digits" />
+						</td>
+
+
+						<td>
+							<input id="workClientLinkmanList{{idx}}_linkPhone" name="workClientLinkmanList[{{idx}}].linkPhone" type="text" value="{{row.linkPhone}}"    class="form-control isTel required"/>
+						</td>
+
+
+						<td>
+							<input id="workClientLinkmanList{{idx}}_linkMobile" name="workClientLinkmanList[{{idx}}].linkMobile" type="text" value="{{row.linkMobile}}"    class="form-control isPhone" />
+						</td>
+
+
+						<td>
+							<input id="workClientLinkmanList{{idx}}_email" name="workClientLinkmanList[{{idx}}].email" type="text" value="{{row.email}}"    class="form-control email"/>
+						</td>
+						<td class="text-center op-td" >
+							{{#delBtn}}<span class="op-btn op-btn-delete" onclick="delRow(this, '#workClientLinkmanList{{idx}}')" title="删除"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>{{/delBtn}}
+						</td>
+					</tr>//-->
+					</script>
+				</div>
+			</div>
+
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>招标代理机构</h2></div>
+				<div class="layui-item nav-btns">
+					<a class="nav-btn nav-btn-add" onclick="addRow('#workClientLinkmanLists', workClientLinkmansRowIdx, workClientLinkmansTpl);workClientLinkmansRowIdx = workClientLinkmansRowIdx + 1;" title="新增"><i class="fa fa-plus"></i>&nbsp;新增</a>
+				</div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable3" class="table table-bordered table-condensed can-edit no-bottom-margin">
+						<thead>
+						<tr>
+							<th width="120px"><span class="require-item">*</span>机构名称</th>
+							<th width="120px">姓名</th>
+							<th width="120px"><span class="require-item">*</span>联系人电话</th>
+							<th width="120px">QQ</th>
+							<th width="120px">E-mail</th>
+							<th width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="workClientLinkmanLists">
+						</tbody>
+					</table>
+
+					<script type="text/template" id="workClientLinkmansTpl">//<!--
+					<tr id="workClientLinkmanLists{{idx}}">
+						<td class="hide">
+							<input id="workClientLinkmanLists{{idx}}_id" name="workClientLinkmanLists[{{idx}}].id" type="hidden" value="{{row.id}}" />
+							<input id="workClientLinkmanLists{{idx}}_delFlag" name="workClientLinkmanLists[{{idx}}].delFlag" type="hidden" value="0" />
+							<input id="workClientLinkmanLists{{idx}}_remarks" name="workClientLinkmanLists[{{idx}}].remarks" type="hidden" value="1" />
+						</td>
+						<td>
+							<input id="workClientLinkmanLists{{idx}}_office" name="workClientLinkmanLists[{{idx}}].office" type="text" value="{{row.office}}"    class="form-control required"/>
+						</td>
+						<td>
+							<input id="workClientLinkmanLists{{idx}}_name" name="workClientLinkmanLists[{{idx}}].name" type="text" value="{{row.name}}"    class="form-control"/>
+						</td>
+						<td>
+							<input id="workClientLinkmanLists{{idx}}_linkPhone" name="workClientLinkmanLists[{{idx}}].linkPhone" type="text" value="{{row.linkPhone}}"    class="form-control isTel required"/>
+						</td>
+						<td>
+							<input id="workClientLinkmanLists{{idx}}_qq" name="workClientLinkmanLists[{{idx}}].qq" type="text" value="{{row.qq}}"    class="form-control digits" />
+						</td>
+						<td>
+							<input id="workClientLinkmanLists{{idx}}_email" name="workClientLinkmanLists[{{idx}}].email" type="text" value="{{row.email}}"    class="form-control email"/>
+						</td>
+						<td class="text-center op-td" >
+							{{#delBtn}}<span class="op-btn op-btn-delete" onclick="delRow(this, '#workClientLinkmanLists{{idx}}')" title="删除"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>{{/delBtn}}
+						</td>
+					</tr>//-->
+					</script>
+					<script type="text/javascript">
+						var workClientLinkmanRowIdx = 0, workClientLinkmanTpl = $("#workClientLinkmanTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+						var workClientLinkmansRowIdx = 0, workClientLinkmansTpl = $("#workClientLinkmansTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+						$(document).ready(function() {
+							var data = ${fns:toJson(workBidProject.workClientLinkmanList)};
+							var data2 = ${fns:toJson(workBidProject.workClientLinkmanLists)};
+							if(data !=null){
+								for (var i=0; i<data.length; i++){
+									addRow('#workClientLinkmanList', workClientLinkmanRowIdx, workClientLinkmanTpl, data[i]);
+									workClientLinkmanRowIdx = workClientLinkmanRowIdx + 1;
+								}
+							}
+							if(data2 !=null){
+								for (var i=0; i<data2.length; i++){
+									addRow('#workClientLinkmanLists', workClientLinkmansRowIdx, workClientLinkmansTpl, data2[i]);
+									workClientLinkmansRowIdx = workClientLinkmansRowIdx + 1;
+								}
+							}
+						});
+
+					</script>
+				</div>
+			</div>
+
+
+			<div class="form-group layui-row lw16">
+				<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">
+						<input id="registrationDate" name="registrationDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workBidProject.registrationDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>投标日期:</label>
+					<div class="layui-input-block">
+						<input id="bidDate" name="bidDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon required"
+							   value="<fmt:formatDate value="${workBidProject.bidDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">资审日期:</label>
+					<div class="layui-input-block">
+						<input id="trialDate" name="trialDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workBidProject.trialDate}" 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="trialType" class="form-control  simple-select">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getDictList('trial_type')}" 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="documentCost" 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="bidBond" 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:select path="bondStyle" class="form-control  simple-select">
+							<form:option value="" label="--请选择保证金形式--"/>
+							<form:options items="${fns:getMainDictList('bond_style')}" 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 with-icon">
+						<input id="giveDate" name="giveDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workBidProject.giveDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金退还时间:</label>
+					<div class="layui-input-block">
+						<input id="refundDate" name="refundDate" onchange="setRule()" type="text" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workBidProject.refundDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目协作部门:</label>
+					<div class="layui-input-block with-icon">
+						<sys:treeselect id="office" name="office.id" value="${workBidProject.office.id}" labelName="office.name"
+										labelValue="${workBidProject.office.name}"
+										title="部门" url="/sys/office/treeDataAll?type=2" 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="isBid" class="form-control  simple-select">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getDictList('is_bid')}" 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:select path="businessType" class="form-control simple-select">
+							<form:option value="" label="--请选择业务类型--"/>
+							<form:options items="${fns:getMainDictList('business_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label">对外协作单位:</label>
+					<div class="layui-input-block">
+						<form:input path="subcontractCompany" htmlEscape="false"    class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label"><span class="require-item">*</span>项目概况:</label>
+					<div class="layui-input-block">
+						<form:textarea path="projectSituation" htmlEscape="false" rows="4"    maxlength="1000" class="form-control required"/>
+					</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="serviceContent" htmlEscape="false" rows="4"   maxlength="1000" class="form-control"/>
+					</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>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>投标附件信息</h2></div>
+				<%--<div class="layui-item nav-btns">
+					<a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+				</div>--%>
+				<div id="addFile_attachment" style="display: none" class="upload-progress">
+					<span id="fileName_attachment" ></span>
+					<b><span id="baifenbi_attachment" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>
+				<input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+				<span id="attachment_title"></span>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+							<th>文件预览</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+
+						<c:forEach items="${workBidProject.workAttachments}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+                                    <div class="op-btn-box" >
+                                        <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+                                        <c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+                                            <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+                                        </c:if>
+                                    </div>
+								</td>
+							</tr>
+						</c:forEach>
+					</tbody>
+				</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>价格附件信息</h2></div>
+				<%--<div class="layui-item nav-btns">
+					<a id="attachment_btn2" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+				</div>--%>
+				<div id="addFile_attachment2" style="display: none" class="upload-progress">
+					<span id="fileName_attachment2" ></span>
+					<b><span id="baifenbi_attachment2" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment2" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>
+				<input id="attachment_file2" type="file" name="attachment_file2" style="display: none;" multiple="multiple" onChange="if(this.value)insertTitle2(this.value);"/>
+				<span id="attachment_title2"></span>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable2" 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_attachment2">
+						<c:forEach items="${workBidProject.workAttachmentsprice}" var = "workClientAttachment" varStatus="status">
+							<tr>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<div class="op-btn-box" >
+                                        <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+                                        <c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+                                            <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+                                        </c:if>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>招投标附件信息</h2></div>
+               <%-- <div class="layui-item nav-btns">
+                    <a id="attachment_btn3" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+                </div>--%>
+                <div id="addFile_attachment3" style="display: none" class="upload-progress">
+                    <span id="fileName_attachment3" ></span>
+                    <b><span id="baifenbi_attachment3" ></span></b>
+                    <div class="progress">
+                        <div id="jindutiao_attachment3" class="progress-bar" style="width: 0%" aria-valuenow="0">
+                        </div>
+                    </div>
+                </div>
+                <input id="attachment_file3" type="file" name="attachment_file3" style="display: none;" multiple="multiple" onChange="if(this.value)insertTitle3(this.value);"/>
+                <span id="attachment_title3"></span>
+                <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable3" 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_attachment3">
+						<c:forEach items="${workBidProject.workAttachmentsbid}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+                                    <div class="op-btn-box" >
+                                        <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+                                        <c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+                                            <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+                                        </c:if>
+                                    </div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>开标附件信息</h2></div>
+				<%--<div class="layui-item nav-btns">
+					<a id="attachment_btn4" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+				</div>--%>
+				<div id="addFile_attachment4" style="display: none" class="upload-progress">
+					<span id="fileName_attachment4" ></span>
+					<b><span id="baifenbi_attachment4" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment4" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>
+				<input id="attachment_file4" type="file" name="attachment_file4" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle4(this.value);"/>
+				<span id="attachment_title4"></span>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+
+					<table id="upTable4" 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_attachment4">
+						<c:forEach items="${workBidProject.workAttachmentsopenbid}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+                                    <div class="op-btn-box" >
+                                        <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+                                        <c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+                                            <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+                                        </c:if>
+                                    </div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 363 - 0
src/main/webapp/webpage/modules/workbidproject/workBidProjectList.jsp

@@ -0,0 +1,363 @@
+<%@ 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: '#trialDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#bidDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#beginContractDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            laydate.render({
+                elem: '#endContractDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            //搜索框收放
+            $('#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");
+                }
+            });
+
+            laydate.render({
+                elem: '#bidDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+        });
+
+        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 openDialogreplay(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: ['送审','关闭'],
+                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
+                    }
+
+                },
+                cancel: function(index){
+                }
+            });
+        }
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="contentShadow layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="workBidProject" action="${ctx}/workbidproject/workBidProject/" 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">
+							<form:input path="projectName" htmlEscape="false" maxlength="64"  class=" form-control layui-input"/>
+						</div>
+					</div>
+					<div class="layui-item query athird">
+						<label class="layui-form-label">投标编号:</label>
+						<div class="layui-input-block with-icon">
+							<form:input path="projectNumber" htmlEscape="false" maxlength="64"  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">
+							<input id="beginContractDate" name="beginContractDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+								   value="<fmt:formatDate value="${workBidProject.beginContractDate}" pattern="yyyy-MM-dd"/>"/>
+							</input>
+							<span class="group-sep">-</span>
+							<input id="endContractDate" name="endContractDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+								   value="<fmt:formatDate value="${workBidProject.endContractDate}" pattern="yyyy-MM-dd"/>"/>
+							</input>
+						</div>
+					</div>
+
+					<div class="layui-item query athird">
+						<label class="layui-form-label">招标编号:</label>
+						<div class="layui-input-block with-icon">
+							<form:input path="bidNumber" htmlEscape="false" maxlength="64"  class=" form-control layui-input"/>
+						</div>
+					</div>
+					<div class="layui-item query athird">
+						<label class="layui-form-label">工程分类:</label>
+						<div class="layui-input-block">
+							<form:select path="projectType"  class="form-control simple-select">
+								<form:option value="" label=""/>
+								<form:options items="${fns:getMainDictList('contract_type')}" 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:select path="projectSource" class="form-control simple-select">
+								<form:option value="" label=""/>
+								<form:options items="${fns:getMainDictList('bidProjectSource')}" 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:select path="status"  class="form-control simple-select">
+								<form:option value="" label=""/>
+								<form:options items="${fns:getDictList('audit_state')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+							</form:select>
+						</div>
+						<div style="clear:both;"></div>
+					</div>
+					<%--<div class="layui-item query athird lw9">
+						<label class="layui-form-label double-line">工程投资额(万元):</label>
+						<div class="layui-input-block with-icon">
+							<form:input path="min" htmlEscape="false" maxlength="64"  class=" form-control number layui-input"/>
+						</div>
+					</div>
+					<div class="layui-item query athird">
+						<label class="layui-form-label">——&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label>
+						<div class="layui-input-block with-icon">
+							<form:input path="max" htmlEscape="false" maxlength="64"  class=" form-control number layui-input"/>
+						</div>
+					</div>--%>
+					</form:form>
+				</div>
+			</div>
+			<div class="full-width fl">
+				<div class="contentShadow layui-form contentDetails">
+					<div class="nav-btns">
+						<%--此处按钮样式包括 nav-btn-add nav-btn-refresh nav-btn-import nav-btn-export nav-btn-query nav-btn-reset--%>
+						<button class="nav-btn nav-btn-add" title="投标申请单" onclick="openDialogre('投标申请单','${ctx}/workbidproject/workBidProject/form','95%','95%')"><i class="fa fa-plus"></i>&nbsp;添加</button>
+
+						<table:exportExcel url="${ctx}/workbidproject/workBidProject/export"></table:exportExcel><!-- 导出按钮 -->
+
+						<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>
+    <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:'index',align:'center', title: '序号',width:40}
+                ,{field:'number',align:'center', title: '投标编号', minWidth:200,templet:function(d){
+                        var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看投标项目', '${ctx}/workbidproject/workBidProject/form?id=" + d.id + "&tabId=1','95%','95%')\">" +
+                            "<span title=" + d.number + ">" + d.number + "</span></a>";
+                        return xml;
+                    }}
+                ,{field:'name',align:'center', title: '投标名称', minWidth:200,templet:function(d){
+                        var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看投标项目', '${ctx}/workbidproject/workBidProject/form?id=" + d.id + "&tabId=1','95%','95%')\">" +
+                            "<span title=" + d.name + ">" + d.name + "</span></a>";
+                        return xml;
+                    }}
+                ,{field:'type',align:'center', title: '工程分类', width:160,templet:function(d){
+                        return "<span title='"+ d.type +"'>" + d.type + "</span>";
+                    }}
+                ,{field:'source', align:'center',title: '项目来源', width:120,templet:function(d){
+                        return "<span title='"+ d.source +"'>" + d.source + "</span>";
+                    }}
+                ,{field:'money', align:'center',title: '投资额(万元)', width:100,templet:function(d){
+                        return "<span title='"+ d.money +"'>" + d.money + "</span>";
+                    }}
+                ,{field:'date', align:'center',title: '投标日期',width:80}
+                ,{ title: '状态', align:'center', width:70,templet:function(d){
+                        <%--var st = getAuditState(d.status)--%>
+                        <%--var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/workbidproject/workBidProject/getProcessOne?id=" + d.id + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";--%>
+                        <%--return xml;--%>
+                        var st = getAuditState(d.status);
+                        if(st.action)
+                            var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/workbidproject/workBidProject/getProcessOne?id=" + d.id + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                        else
+                            var xml = "<span style=\"cursor:default;\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                        return xml;
+                    }}
+                // ,{fixed: 'right',align:'center', toolbar: '#op',title:"操作"}
+                ,{field:'op',align:'center',title:"操作",width:130,templet:function(d){
+                        ////对操作进行初始化
+                        var xml = "";
+                        if(d.cancancel != undefined && d.cancancel == "1")
+                            xml += "<a href=\"${ctx}/workbidproject/workBidProject/cancelInvalidate?id=" + d.id + "\" onclick=\"return confirmx('确认要强制撤回?', this.href)\"   class=\"op-btn op-btn-cancel\"><i class=\"glyphicon glyphicon-share-alt\"></i> 撤回</a>";
+                        if(d.canedit1 != undefined && d.canedit1 == "1")
+                            xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogre('修改申请单', '${ctx}/workbidproject/workBidProject/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=\"openDialogreplay('修改申请单', '${ctx}/workbidproject/workBidProject/form?id="+ d.id + "&tabId=3','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+                        if(d.canedit3 != undefined && d.canedit3 == "1")
+                            xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogreplay('重新申请单', '${ctx}/workbidproject/workBidProject/form?id=" + d.id + "&tabId=4','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+                        if(d.candelete != undefined && d.candelete == "1")
+                            xml +="<a href=\"${ctx}/workbidproject/workBidProject/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="workBidProject" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${workBidProject.id}"
+                    ,"number":"${workBidProject.projectNumber}"
+                    ,"name":"${workBidProject.projectName}"
+                    ,"type":"${fns:getMainDictLabel(workBidProject.projectType, 'contract_type', '')}"
+                    ,"source":"${fns:getMainDictLabel(workBidProject.projectSource, 'bidProjectSource', '')}"
+                    ,"date":"<fmt:formatDate value="${workBidProject.bidDate}" pattern="yyyy-MM-dd"/>"
+                    ,"money":"<fmt:formatNumber value="${workBidProject.investMoney}" pattern="#,#00.00"/>"
+                    ,"status":"${workBidProject.status}"
+                    <c:if test="${workBidProject.status == '2' && fns:getUser().id == workBidProject.createBy.id}">,"cancancel":"1"</c:if>
+                    <c:choose><c:when test="${fns:getUser().id == workBidProject.createBy.id && workBidProject.status == '1' }">,"canedit1":"1"</c:when>
+                    <c:when test="${fns:getUser().id == workBidProject.createBy.id && workBidProject.status == '4'}">,"canedit2":"1"</c:when>
+                    <c:when test="${workBidProject.status == '3' && fns:getUser().id == workBidProject.createBy.id}">,"canedit3":"1"</c:when>
+                    </c:choose>
+                    <c:choose><c:when test="${fns:getUser().id == workBidProject.createBy.id && (workBidProject.status == '1' or workBidProject.status == '3' or workBidProject.status == '4')}">,"candelete":"1"</c:when></c:choose>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+            // ,even: true
+            // ,height: 315
+        });
+
+    })
+
+    resizeListTable();
+</script>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 354 - 0
src/main/webapp/webpage/modules/workbidproject/workBidProjectLists.jsp

@@ -0,0 +1,354 @@
+<%@ 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: '#trialDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#bidDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#beginContractDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            laydate.render({
+                elem: '#endContractDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            //搜索框收放
+            $('#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");
+                }
+            });
+
+            laydate.render({
+                elem: '#bidDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+        });
+
+
+
+	</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="workBidProjectList" action="${ctx}/workbidprojectlist/workBidProjectList/" 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">
+							<form:input path="projectName" htmlEscape="false" maxlength="64"  class=" form-control layui-input"/>
+						</div>
+					</div>
+					<div class="layui-item query athird">
+						<label class="layui-form-label">投标日期:</label>
+						<div class="layui-input-block">
+							<input id="beginContractDate" name="beginContractDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+								   value="<fmt:formatDate value="${workBidProjectList.beginContractDate}" pattern="yyyy-MM-dd"/>"/>
+							</input>
+							<span class="group-sep">-</span>
+							<input id="endContractDate" name="endContractDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+								   value="<fmt:formatDate value="${workBidProjectList.endContractDate}" pattern="yyyy-MM-dd"/>"/>
+							</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">
+							<form:input path="projectNumber" htmlEscape="false" maxlength="64"  class=" form-control layui-input"/>
+						</div>
+					</div>
+
+					<div class="layui-item query athird">
+						<label class="layui-form-label">工程分类:</label>
+						<div class="layui-input-block">
+							<form:select path="projectType"  class="form-control simple-select">
+								<form:option value="" label=""/>
+								<form:options items="${fns:getMainDictList('contract_type')}" 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:select path="projectSource" class="form-control simple-select">
+								<form:option value="" label=""/>
+								<form:options items="${fns:getMainDictList('bidProjectSource')}" 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:select path="status"  class="form-control simple-select">
+								<form:option value="" label=""/>
+								<form:options items="${fns:getDictList('audit_state')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+							</form:select>
+						</div>
+						<div style="clear:both;"></div>
+					</div>
+					<%--<div class="layui-item query athird lw9">
+						<label class="layui-form-label double-line">工程投资额(万元):</label>
+						<div class="layui-input-block with-icon">
+							<form:input path="min" htmlEscape="false" maxlength="64"  class=" form-control number layui-input"/>
+						</div>
+					</div>
+					<div class="layui-item query athird">
+						<label class="layui-form-label">——&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label>
+						<div class="layui-input-block with-icon">
+							<form:input path="max" htmlEscape="false" maxlength="64"  class=" form-control number layui-input"/>
+						</div>
+					</div>--%>
+					</form:form>
+				</div>
+			</div>
+			<div class="full-width fl">
+				<div class="contentShadow layui-form contentDetails">
+					<div class="nav-btns">
+						<shiro:hasPermission name="workbidproject:workBidProject:export">
+							<table:exportExcel url="${ctx}/workbidprojectlist/workBidProjectList/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"></table>
+
+					<!-- 分页代码 -->
+					<table:page page="${page}"></table:page>
+					<div style="clear: both;"></div>
+				</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:'index',align:'center',fixed: 'left', title: '序号',width:40}
+                ,{field:'number',align:'center',fixed: true, title: '投标编号', minWidth:200,templet:function(d){
+                        var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看投标项目', '${ctx}/workbidproject/workBidProject/form?id=" + d.id + "&tabId=1','95%','95%')\">" +
+                            "<span title=" + d.number + ">" + d.number + "</span></a>";
+                        return xml;
+                    }}
+                ,{field:'name',align:'center', title: '投标名称', minWidth:200,templet:function(d){
+                        var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看投标项目', '${ctx}/workbidproject/workBidProject/form?id=" + d.id + "&tabId=1','95%','95%')\">" +
+                            "<span title=" + d.name + ">" + d.name + "</span></a>";
+                        return xml;
+                    }}
+                ,{field:'type',align:'center', title: '工程分类', width:160,templet:function(d){
+                        return "<span title='"+ d.type +"'>" + d.type + "</span>";
+                    }}
+                ,{field:'typeExplain',align:'center', title: '类型说明', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.typeExplain +"'>" + d.typeExplain + "</span>";
+                }}
+                ,{field:'source', align:'center',title: '项目来源', width:120,templet:function(d){
+                        return "<span title='"+ d.source +"'>" + d.source + "</span>";
+                    }}
+                ,{field:'sourceExplain',align:'center', title: '来源说明', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.sourceExplain +"'>" + d.sourceExplain + "</span>";
+                }}
+                ,{field:'projectScale',align:'center', title: '项目规模', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.projectScale +"'>" + d.projectScale + "</span>";
+                }}
+                ,{field:'scaleType',align:'center', title: '规模类型', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.scaleType +"'>" + d.scaleType + "</span>";
+                }}
+                ,{field:'scaleUnit',align:'center', title: '规模单位', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.scaleUnit +"'>" + d.scaleUnit + "</span>";
+                }}
+                ,{field:'money', align:'center',title: '投资额(万元)', width:100,templet:function(d){
+                        return "<span title='"+ d.money +"'>" + d.money + "</span>";
+                    }}
+                ,{field:'bidCompany',align:'center', title: '招标单位', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.bidCompany +"'>" + d.bidCompany + "</span>";
+                }}
+                ,{field:'registrationDate',align:'center', title: '报名日期', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.registrationDate +"'>" + d.registrationDate + "</span>";
+                }}
+                ,{field:'date', align:'center',title: '投标日期',width:80}
+                ,{field:'trialDate',align:'center', title: '资审日期', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.trialDate +"'>" + d.trialDate + "</span>";
+                }}
+                ,{field:'trialType',align:'center', title: '资格审查', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.trialType +"'>" + d.trialType + "</span>";
+                }}
+                ,{field:'documentCost',align:'center', title: '文件费用(元)', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.documentCost +"'>" + d.documentCost + "</span>";
+                }}
+                ,{field:'bidBond',align:'center', title: '投标保证金(元)', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.bidBond +"'>" + d.bidBond + "</span>";
+                }}
+                ,{field:'bondStyle',align:'center', title: '投标保证金形式', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.bondStyle +"'>" + d.bondStyle + "</span>";
+                }}
+                ,{field:'giveDate',align:'center', title: '投标保证金交付日期', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.giveDate +"'>" + d.giveDate + "</span>";
+                }}
+                ,{field:'refundDate',align:'center', title: '保证金退还日期', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.refundDate +"'>" + d.refundDate + "</span>";
+                }}
+                ,{field:'office',align:'center', title: '项目协作部门', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.office +"'>" + d.office + "</span>";
+                }}
+                ,{field:'isBid',align:'center', title: '是否联合体投标', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.isBid +"'>" + d.isBid + "</span>";
+                }}
+                ,{field:'subcontractCompany',align:'center', title: '对外协作单位', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.subcontractCompany +"'>" + d.subcontractCompany + "</span>";
+                }}
+                ,{field:'businessType',align:'center', title: '业务类型', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.businessType +"'>" + d.businessType + "</span>";
+                }}
+                ,{field:'projectSituation',align:'center', title: '项目概况', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.projectSituation +"'>" + d.projectSituation + "</span>";
+                }}
+                ,{field:'serviceContent',align:'center', title: '服务内容', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.serviceContent +"'>" + d.serviceContent + "</span>";
+                }}
+                ,{field:'remarks',align:'center', title: '备注信息', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.remarks +"'>" + d.remarks + "</span>";
+                }}
+                ,{field:'createBy',align:'center', title: '创建人', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.createBy +"'>" + d.createBy + "</span>";
+                }}
+                ,{field:'createDate',align:'center', title: '创建日期', minWidth:200,templet:function(d){
+                    return "<span title='"+ d.createDate +"'>" + d.createDate + "</span>";
+                }}
+                ,{ title: '状态', align:'center', width:70,templet:function(d){
+                        <%--var st = getAuditState(d.status)--%>
+                        <%--var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/workbidproject/workBidProject/getProcessOne?id=" + d.id + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";--%>
+                        <%--return xml;--%>
+                        var st = getAuditState(d.status);
+                        if(st.action)
+                            var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/workbidproject/workBidProject/getProcessOne?id=" + d.id + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                        else
+                            var xml = "<span style=\"cursor:default;\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                        return xml;
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="workBidProjectList" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${workBidProjectList.id}"
+                    ,"number":"${workBidProjectList.projectNumber}"
+                    ,"name":"${workBidProjectList.projectName}"
+                    ,"documentCost":"${workBidProjectList.documentCost}"
+                    ,"office":"${workBidProjectList.coopName}"
+                    ,"subcontractCompany":"${workBidProjectList.subcontractCompany}"
+                    ,"projectSituation":"${workBidProjectList.projectSituation}"
+                    ,"serviceContent":"${workBidProjectList.serviceContent}"
+                    ,"remarks":"${workBidProjectList.remark}"
+                    ,"createBy":"${workBidProjectList.createByName}"
+                    ,"type":"${fns:getMainDictLabel(workBidProjectList.projectType, 'contract_type', '')}"
+                    ,"source":"${fns:getMainDictLabel(workBidProjectList.projectSource, 'bidProjectSource', '')}"
+                    ,"date":"<fmt:formatDate value="${workBidProjectList.bidDate}" pattern="yyyy-MM-dd"/>"
+                    ,"registrationDate":"<fmt:formatDate value="${workBidProjectList.registrationDate}" pattern="yyyy-MM-dd"/>"
+                    ,"trialDate":"<fmt:formatDate value="${workBidProjectList.trialDate}" pattern="yyyy-MM-dd"/>"
+                    ,"giveDate":"<fmt:formatDate value="${workBidProjectList.giveDate}" pattern="yyyy-MM-dd"/>"
+                    ,"refundDate":"<fmt:formatDate value="${workBidProjectList.refundDate}" pattern="yyyy-MM-dd"/>"
+                    ,"createDate":"<fmt:formatDate value="${workBidProjectList.creaDates}" pattern="yyyy-MM-dd"/>"
+                    ,"isBid":"${fns:getDictLabel(workBidProjectList.isBid, 'is_bid', '')}"
+                    ,"bidBond":"<fmt:formatNumber value="${workBidProjectList.bidBond}" pattern="#,#00.00"/>"
+                    ,"money":"<fmt:formatNumber value="${workBidProjectList.investMoney}" pattern="#,#00.00"/>"
+					,"scaleType":"${fns:getMainDictLabel(workBidProjectList.scaleType, 'scale_type', '')}"
+                    ,"scaleUnit":"${fns:getMainDictLabel(workBidProjectList.scaleUnit, 'scale_unit', '')}"
+                    ,"trialType":"${fns:getDictLabel(workBidProjectList.trialType, 'trial_type', '')}"
+                    ,"bondStyle":"${fns:getMainDictLabel(workBidProjectList.bondStyle, 'bond_style', '')}"
+                    ,"businessType":"${fns:getMainDictLabel(workBidProjectList.businessType, 'business_type', '')}"
+                    ,"typeExplain":"${workBidProjectList.typeExplain}"
+                    ,"sourceExplain":"${workBidProjectList.sourceExplain}"
+                    ,"projectScale":"${workBidProjectList.projectScale}"
+                    <c:choose>
+						<c:when test="${workBidProjectList.isExt == '0' }">,"bidCompany":"${workBidProjectList.bidCompanyName}"</c:when>
+                    	<c:when test="${workBidProjectList.isExt == '1' }">,"bidCompany":"${workBidProjectList.extCompany}"</c:when>
+                    </c:choose>
+                    ,"status":"${workBidProjectList.status}"
+                }
+                </c:forEach>
+                </c:if>
+            ]
+            // ,even: true
+            // ,height: 315
+        });
+
+    })
+
+    resizeListTable();
+</script>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+  /*  var navg = window.navigator.userAgent;
+    if(navg.indexOf('Chrome')!==-1&& navg.indexOf('Edge')==-1){
+        $('.layui-table').children().eq(0).children().children().eq(1).css({"background":"transparent","position":"sticky","border-right":"1px solid #ccc","left":"0","background":"#F5F5F5","z-index":"999"});
+        var tableft = $('.layui-table').children().eq(0).children().children().eq(1).width();
+        $('.layui-table').children().eq(0).children().children().eq(2).css({"background":"transparent","position":"sticky","left":tableft,"background":"#F5F5F5","z-index":"999"});
+        var trone = $('.layui-table').children().eq(1).children();
+        var newArr = []
+        for(var i=0;i<trone.length;i++){
+            newArr.push(trone[i]);
+            $(newArr[i]).children().eq(1).css({"background":"transparent","position":"sticky","left":"0","background":"#fff","z-index":"999"});
+            $(newArr[i]).children().eq(2).css({"background":"transparent","position":"sticky","left":tableft,"background":"#fff","z-index":"999"});
+        }
+    }*/
+</script>
+</body>
+</html>

+ 930 - 0
src/main/webapp/webpage/modules/workbidproject/workBidProjectModify.jsp

@@ -0,0 +1,930 @@
+<%@ 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(obj == 2){
+                $("#flag").val("no");
+            }else{
+                $("#flag").val("yes");
+            }
+		  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: '#registrationDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+					});
+					laydate.render({
+			            elem: '#bidDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			         });
+					laydate.render({
+			            elem: '#trialDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			        });
+					laydate.render({
+			            elem: '#purchaseDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			        });
+					laydate.render({
+			            elem: '#refundDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			        });
+					laydate.render({
+						elem: '#giveDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+						event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+					});
+					$("#attachment_btn").click(function () {
+						$("#attachment_file").click();
+					});
+					$("#attachment_btn2").click(function () {
+						$("#attachment_file2").click();
+					});
+					$("#attachment_btn3").click(function () {
+						$("#attachment_file3").click();
+					});
+					$("#attachment_btn4").click(function () {
+						$("#attachment_file4").click();
+					});
+					$("input[name='isExt']").on('ifChecked', function(event){
+						var radioVal = $(this).val();
+						console.log(radioVal+"----------radioVal");
+						if(radioVal == 1){
+							$("#tr1").hide()
+							$("#tr2").show()
+						}else{
+							$("#tr1").show()
+							$("#tr2").hide()
+						}
+					});
+					if("${workBidProject.isExt}" == "1"){
+						$("#ext1").iCheck('check')
+					}else{
+						$("#ext").iCheck('check')
+					}
+					/*var isExt = "${workBidProject.isExt}";
+				    if(isExt==0){  
+				        $("#contact").show();
+				        $("#btnAdd1").hide();
+				        //$("#btnAdd2").show();
+				        $("#extContact").hide();  
+				    }else{
+				        $("#extContact").show();
+				        $("#btnAdd1").show();
+				        //$("#btnAdd2").hide();
+				        $("#contact").hide();  
+				    }*/
+					
+		});
+        function insertTitle(tValue){
+            var list = "${workBidProject.workAttachments}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "95";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+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 insertTitle2(tValue){
+            var list = "${workBidProject.workAttachmentsprice}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file2")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "96";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment2";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        function insertTitle3(tValue){
+            var list = "${workBidProject.workAttachmentsbid}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file3")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "97";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment3";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        function insertTitle4(tValue){
+            var list = "${workBidProject.workAttachmentsopenbid}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file4")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "98";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment4";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+		function addRow(list, idx, workClientLinkmanTpl, row) {
+
+				$(list).append(Mustache.render(workClientLinkmanTpl, {
+					idx: idx, delBtn: true, row: row
+				}));
+				$(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).parent().parent().hide();
+				$(obj).html("&divide;").attr("title", "撤回删除");
+				$(obj).parent().parent().addClass("error");
+			}else if(delFlag.val() == "1"){
+				delFlag.val("0");
+				$(obj).html("&times;").attr("title", "删除");
+				$(obj).parent().parent().removeClass("error");
+			}
+		}
+		
+		/*function display(n){
+            $('#workClientLinkmanList').html("");
+            $('#bidCompanyName').val("");
+		    if(n==0){  
+		        $("#contact").show();
+		        $("#btnAdd1").hide();
+		        //$("#btnAdd2").show();
+		        $("#extContact").hide();  
+		    }else{
+		        $("#extContact").show();
+		        $("#btnAdd1").show();
+		        //$("#btnAdd2").hide();
+		        $("#contact").hide();  
+		    }
+
+            //显示系统外客户联系人
+            if(n==1){
+                getExtCompany();
+            }
+		}*/
+	/*	function getExtCompany(){
+            var workBidProjectId =$("#workBidProjectId").val(); console.log("id="+workBidProjectId);
+ 			$.get("${ctx}/workprequalification/workPrequalification/getExtCompany", {"workBidProjectId": workBidProjectId},
+					  function(data,textStatus){
+ 						data = data.body.list;
+			 		    if(data !=null){
+							for (var i=0; i<data.length; i++){
+								addRow('#workClientLinkmanList', workClientLinkmanRowIdx, workClientLinkmanTpl, data[i]);
+                                workClientLinkmanRowIdx = workClientLinkmanRowIdx + 1;
+							}
+						} 
+					  });  
+		}*/
+       /* function changeTypeExplain(obj) {
+            if (obj.value == 4){
+                $("#typeExplain").attr("class","form-control required");
+            }else {
+                $("#typeExplain").attr("class","form-control");
+            }
+        }
+        function changeSourceExplain(obj) {
+            if (obj.value == 3){
+                $("#sourceExplain").attr("class","form-control required");
+            }else {
+                $("#sourceExplain").attr("class","form-control");
+            }
+        }*/
+
+	</script>
+	<script type="text/javascript">
+        /**
+         * 设置系统内客户信息
+         * @param obj
+         */
+
+        function setValuee(obj){
+            $('#workClientLinkmanList').html("");
+            $.get("${ctx}/workclientinfo/workClientInfo/selectLinkman", { clientId: obj},
+                function(data,textStatus){
+                    data = data.body.list;
+                    if(data !=null){
+                        for (var i=0; i<data.length; i++){
+                            addRow('#workClientLinkmanList', workClientLinkmanRowIdx, workClientLinkmanTpl, data[i]);
+                            workClientLinkmanRowIdx = workClientLinkmanRowIdx + 1;
+                        }
+                    }
+                });
+        }
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form  id="inputForm" modelAttribute="workBidProject" action="${ctx}/workbidproject/workBidProject/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"/>
+
+			<div class="form-group layui-row first lw16">
+				<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="projectName" htmlEscape="false"    class="form-control required 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="projectNumber" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+							<span class="input-group-btn">
+                            <label class="form-status"><c:choose><c:when test="${not empty workBidProject.status}">${fns:getDictLabel(workBidProject.status, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                         </span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>工程分类:</label>
+					<div class="layui-input-block">
+						<form:select path="projectType" class="form-control required simple-select"><%--onChange="changeTypeExplain(this)--%>
+							<form:option value="" label=""/>
+							<form:options items="${fns:getMainDictList('contract_type')}" 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="typeExplain" 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:select path="projectSource" class="form-control simple-select">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getMainDictList('bidProjectSource')}" 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="sourceExplain" 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="projectScale" 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:select path="scaleType" class="form-control simple-select">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getMainDictList('scale_type')}" 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:select path="scaleUnit" class="form-control simple-select">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getMainDictList('scale_unit')}" 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="investMoney" 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">
+						<input type="radio" class="i-checks" name="isExt" checked id="ext" value="0">
+						<label for="ext">系统内招标单位</label>
+						<input type="radio" class="i-checks" name="isExt" id="ext1" value="1">
+						<label for="ext1">系统外招标单位</label>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>招标单位:</label>
+					<div class="layui-input-block with-icon">
+						<div id ="tr2" style="display:none">
+							<form:input path="extCompany" htmlEscape="false"    class="form-control required layui-input"/>
+						</div>
+						<div id ="tr1" style="display:block">
+							<sys:gridselect url="${ctx}/workbidproject/workBidProject/selectbidCompany" id="bidCompany" name="bidCompany.id"  value="${workBidProject.bidCompany.id}"  title="选择招标单位" labelName="bidCompany.name"
+											labelValue="${workBidProject.bidCompany.name}" cssClass="form-control required layui-input" fieldLabels="客户" fieldKeys="name" searchLabel="客户名称" searchKey="name"  ></sys:gridselect>
+						</div>
+
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">招标编号:</label>
+					<div class="layui-input-block">
+						<form:input path="bidNumber" 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">
+						<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workBidProject.officeName}"/>
+					</div>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>联系人</h2></div>
+				<div class="layui-item nav-btns">
+					<a class="nav-btn nav-btn-add" onclick="addRow('#workClientLinkmanList', workClientLinkmanRowIdx, workClientLinkmanTpl);workClientLinkmanRowIdx = workClientLinkmanRowIdx + 1;" title="新增"><i class="fa fa-plus"></i>&nbsp;新增</a>
+				</div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable2" class="table table-bordered table-condensed can-edit no-bottom-margin">
+						<thead>
+						<tr>
+							<th><span class="require-item">*</span>联系人姓名</th>
+							<th>部门</th>
+							<th>职务</th>
+							<th>QQ</th>
+							<th><span class="require-item">*</span>联系方式1</th>
+							<th>联系方式2</th>
+							<th>E-mail</th>
+							<th width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="workClientLinkmanList">
+						</tbody>
+					</table>
+					<script type="text/template" id="workClientLinkmanTpl">//<!--
+					<tr id="workClientLinkmanList{{idx}}">
+						<td class="hide">
+							<input id="workClientLinkmanList{{idx}}_id" name="workClientLinkmanList[{{idx}}].id" type="hidden" value="{{row.id}}" />
+							<input id="workClientLinkmanList{{idx}}_delFlag" name="workClientLinkmanList[{{idx}}].delFlag" type="hidden" value="0" />
+							<input id="workClientLinkmanList{{idx}}_remarks" name="workClientLinkmanList[{{idx}}].remarks" type="hidden" value="0" />
+						</td>
+
+						<td>
+							<input id="workClientLinkmanList{{idx}}_name" name="workClientLinkmanList[{{idx}}].name" type="text" value="{{row.name}}"    class="form-control "/>
+						</td>
+						<td>
+							<input id="workClientLinkmanList{{idx}}_office" name="workClientLinkmanList[{{idx}}].office" type="text" value="{{row.office}}"    class="form-control "/>
+						</td>
+
+						<td>
+							<input id="workClientLinkmanList{{idx}}_position" name="workClientLinkmanList[{{idx}}].position" type="text" value="{{row.position}}"    class="form-control"/>
+						</td>
+
+
+						<td>
+							<input id="workClientLinkmanList{{idx}}_qq" name="workClientLinkmanList[{{idx}}].qq" type="text" value="{{row.qq}}"    class="form-control " />
+						</td>
+
+
+						<td>
+							<input id="workClientLinkmanList{{idx}}_linkPhone" name="workClientLinkmanList[{{idx}}].linkPhone" type="text" value="{{row.linkPhone}}"    class="form-control "/>
+						</td>
+
+
+						<td>
+							<input id="workClientLinkmanList{{idx}}_linkMobile" name="workClientLinkmanList[{{idx}}].linkMobile" type="text" value="{{row.linkMobile}}"    class="form-control " />
+						</td>
+
+
+						<td>
+							<input id="workClientLinkmanList{{idx}}_email" name="workClientLinkmanList[{{idx}}].email" type="text" value="{{row.email}}"    class="form-control "/>
+						</td>
+						<td class="text-center op-td" >
+							{{#delBtn}}<span class="op-btn op-btn-delete" onclick="delRow(this, '#workClientLinkmanList{{idx}}')" title="删除"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>{{/delBtn}}
+						</td>
+					</tr>//-->
+					</script>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>招标代理机构</h2></div>
+				<div class="layui-item nav-btns">
+					<a class="nav-btn nav-btn-add" onclick="addRow('#workClientLinkmanLists', workClientLinkmansRowIdx, workClientLinkmansTpl);workClientLinkmansRowIdx = workClientLinkmansRowIdx + 1;" title="新增"><i class="fa fa-plus"></i>&nbsp;新增</a>
+				</div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable3" class="table table-bordered table-condensed can-edit no-bottom-margin">
+						<thead>
+						<tr>
+							<th><span class="require-item">*</span>机构名称</th>
+							<th>姓名</th>
+							<th><span class="require-item">*</span>联系人电话</th>
+							<th>QQ</th>
+							<th>E-mail</th>
+							<th width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="workClientLinkmanLists">
+						</tbody>
+					</table>
+					<script type="text/template" id="workClientLinkmansTpl">//<!--
+					<tr id="workClientLinkmanLists{{idx}}">
+						<td class="hide">
+							<input id="workClientLinkmanLists{{idx}}_id" name="workClientLinkmanLists[{{idx}}].id" type="hidden" value="{{row.id}}" />
+							<input id="workClientLinkmanLists{{idx}}_delFlag" name="workClientLinkmanLists[{{idx}}].delFlag" type="hidden" value="0" />
+							<input id="workClientLinkmanLists{{idx}}_remarks" name="workClientLinkmanLists[{{idx}}].remarks" type="hidden" value="1" />
+						</td>
+						<td>
+							<input id="workClientLinkmanLists{{idx}}_office" name="workClientLinkmanLists[{{idx}}].office" type="text" value="{{row.office}}"    class="form-control required"/>
+						</td>
+						<td>
+							<input id="workClientLinkmanLists{{idx}}_name" name="workClientLinkmanLists[{{idx}}].name" type="text" value="{{row.name}}"    class="form-control "/>
+						</td>
+						<td>
+							<input id="workClientLinkmanLists{{idx}}_linkPhone" name="workClientLinkmanLists[{{idx}}].linkPhone" type="text" value="{{row.linkPhone}}"    class="form-control "/>
+						</td>
+						<td>
+							<input id="workClientLinkmanLists{{idx}}_qq" name="workClientLinkmanLists[{{idx}}].qq" type="text" value="{{row.qq}}"    class="form-control " />
+						</td>
+						<td>
+							<input id="workClientLinkmanLists{{idx}}_email" name="workClientLinkmanLists[{{idx}}].email" type="text" value="{{row.email}}"    class="form-control "/>
+						</td>
+						<td class="text-center op-td" >
+							{{#delBtn}}<span class="op-btn op-btn-delete" onclick="delRow(this, '#workClientLinkmanLists{{idx}}')" title="删除"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>{{/delBtn}}
+						</td>
+					</tr>//-->
+					</script>
+					<script type="text/javascript">
+						var workClientLinkmanRowIdx = 0, workClientLinkmanTpl = $("#workClientLinkmanTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+						var workClientLinkmansRowIdx = 0, workClientLinkmansTpl = $("#workClientLinkmansTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+						$(document).ready(function() {
+							var data = ${fns:toJson(workBidProject.workClientLinkmanList)};
+							var data2 = ${fns:toJson(workBidProject.workClientLinkmanLists)};
+							if(data !=null){
+								for (var i=0; i<data.length; i++){
+									addRow('#workClientLinkmanList', workClientLinkmanRowIdx, workClientLinkmanTpl, data[i]);
+									workClientLinkmanRowIdx = workClientLinkmanRowIdx + 1;
+								}
+							}
+							if(data2 !=null){
+								for (var i=0; i<data2.length; i++){
+									addRow('#workClientLinkmanLists', workClientLinkmansRowIdx, workClientLinkmansTpl, data2[i]);
+									workClientLinkmansRowIdx = workClientLinkmansRowIdx + 1;
+								}
+							}
+						});
+
+					</script>
+				</div>
+			</div>
+
+			<div class="form-group layui-row lw16">
+				<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">
+						<input id="registrationDate" name="registrationDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workBidProject.registrationDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>投标日期:</label>
+					<div class="layui-input-block">
+						<input id="bidDate" name="bidDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon required"
+							   value="<fmt:formatDate value="${workBidProject.bidDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">资审日期:</label>
+					<div class="layui-input-block">
+						<input id="trialDate" name="trialDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workBidProject.trialDate}" 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="trialType" class="form-control  simple-select">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getDictList('trial_type')}" 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="documentCost" 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="bidBond" 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:select path="bondStyle" class="form-control  simple-select">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getMainDictList('bond_style')}" 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 with-icon">
+						<input id="giveDate" name="giveDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workBidProject.giveDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金退还时间:</label>
+					<div class="layui-input-block">
+						<input id="refundDate" name="refundDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workBidProject.refundDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目协作部门:</label>
+					<div class="layui-input-block with-icon">
+						<sys:treeselect id="office" name="office.id" value="${workBidProject.office.id}" labelName="office.name"
+										labelValue="${workBidProject.office.name}"
+										title="部门" url="/sys/office/treeData?type=2" 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="isBid" class="form-control  simple-select">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getDictList('is_bid')}" 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:select path="businessType" class="form-control simple-select">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getMainDictList('business_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label">对外协作单位:</label>
+					<div class="layui-input-block">
+						<form:input path="subcontractCompany" htmlEscape="false"    class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label"><span class="require-item">*</span>项目概况:</label>
+					<div class="layui-input-block">
+						<form:textarea path="projectSituation" htmlEscape="false" rows="4"   maxlength="1000"  class="form-control required"/>
+					</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="serviceContent" htmlEscape="false" rows="4"  maxlength="1000"   class="form-control"/>
+					</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>
+
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>投标附件信息</h2></div>
+				<div class="layui-item nav-btns">
+					<a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+				</div>
+				<div id="addFile_attachment" style="display: none" class="upload-progress">
+					<span id="fileName_attachment" ></span>
+					<b><span id="baifenbi_attachment" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>
+				<input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+				<span id="attachment_title"></span>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+							<th>文件预览</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:forEach items="${workBidProject.workAttachments}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<div class="op-btn-box" >
+										<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+										<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+										</c:if>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>价格附件信息</h2></div>
+				<div class="layui-item nav-btns">
+					<a id="attachment_btn2" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+				</div>
+				<div id="addFile_attachment2" style="display: none" class="upload-progress">
+					<span id="fileName_attachment2" ></span>
+					<b><span id="baifenbi_attachment2" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment2" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>
+				<input id="attachment_file2" type="file" name="attachment_file2"  multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle2(this.value);"/>
+				<span id="attachment_title2"></span>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable2" 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_attachment2">
+						<c:forEach items="${workBidProject.workAttachmentsprice}" var = "workClientAttachment" varStatus="status">
+							<tr>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<div class="op-btn-box" >
+										<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+										<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+										</c:if>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>招投标附件信息</h2></div>
+				<div class="layui-item nav-btns">
+					<a id="attachment_btn3" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+				</div>
+				<div id="addFile_attachment3" style="display: none" class="upload-progress">
+					<span id="fileName_attachment3" ></span>
+					<b><span id="baifenbi_attachment3" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment3" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>
+				<input id="attachment_file3" type="file" name="attachment_file3"  multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle3(this.value);"/>
+				<span id="attachment_title3"></span>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable3" 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_attachment3">
+						<c:forEach items="${workBidProject.workAttachmentsbid}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<div class="op-btn-box" >
+										<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+										<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+										</c:if>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>开标附件信息</h2></div>
+				<div class="layui-item nav-btns">
+					<a id="attachment_btn4" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+				</div>
+				<div id="addFile_attachment4" style="display: none" class="upload-progress">
+					<span id="fileName_attachment4" ></span>
+					<b><span id="baifenbi_attachment4" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment4" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>
+				<input id="attachment_file4" type="file" name="attachment_file4"  multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle4(this.value);"/>
+				<span id="attachment_title4"></span>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+
+					<table id="upTable4" 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_attachment4">
+						<c:forEach items="${workBidProject.workAttachmentsopenbid}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<div class="op-btn-box" >
+										<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+										<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+										</c:if>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+
+
+</body>
+</html>

+ 20 - 0
src/main/webapp/webpage/modules/workbidproject/workBidProjectTrack.jsp

@@ -0,0 +1,20 @@
+<%@ 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="container form layui-form">
+		<act:flowChart procInsId="${processInstanceId}"/>
+		<act:histoicFlow procInsId="${processInstanceId}"/>
+</div>
+	<%--<div class="wrapper wrapper-content">--%>
+		<%--<act:flowChart procInsId="${processInstanceId}"/>--%>
+        <%--<act:histoicFlow procInsId="${processInstanceId}"/>--%>
+	<%--</div>--%>
+
+</body>
+</html>
+

+ 611 - 0
src/main/webapp/webpage/modules/workbidproject/workBidProjectView.jsp

@@ -0,0 +1,611 @@
+<%@ 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 () {
+            if (${requestScope.linkmanList !=null}) {
+                var defaultLinkmanName = "";
+                $.each(JSON.parse('${requestScope.linkmanList}'), function (n, value) {
+                    var optionTag = '<option id="linkman_attr_' + n + '" type="text" value=' + n + '>' + value.linkmanName + '</option>';
+                    $("#linkman_list").append(optionTag);
+                    if (n == 0) {
+                        defaultLinkmanName = value.linkmanName;
+                    }
+                });
+                $("#linkman_list option:first").prop("selected", "selected").text(defaultLinkmanName);
+            }
+        });
+
+        /**
+         * 查看联系人(需要用到linkManList)
+         */
+        function selectLinkman(index, target) {
+            if (target == 'linkman') {
+                var manList = JSON.parse('${requestScope.linkmanList}');
+
+                var linkman = manList[index];
+                $("#linkmanOffice").val(linkman.linkmanOffice);
+                $("#linkmanPosition").val(linkman.linkmanPosition);
+                $("#QQ").val(linkman.QQ);
+                $("#linkmanPhone").val(linkman.linkmanPhone);
+                $("#linkmanMobile").val(linkman.linkmanMobile);
+                $("#linkmanEmail").val(linkman.linkmanEmail);
+            }
+        }
+
+    </script>
+</head>
+<body>
+<div class="single-form view-form">
+    <div class="container">
+        <form:form id="inputForm" modelAttribute="workBidProject" action="${ctx}/workbidproject/workBidProject/save"
+                   method="post" class="form-horizontal">
+            <%--<form:hidden path="id"/>--%>
+            <div class="form-group layui-row first lw16">
+                <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" readonly="true" class="form-control required layui-input"
+                               value="${workBidProject.projectName}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">投标编号:</label>
+                    <div class="layui-input-block">
+                        <div class="input-group">
+                            <input path="projectNumber" htmlEscape="false" readonly="true"
+                                   class="form-control layui-input" value="${workBidProject.projectNumber}"/>
+                            <span class="input-group-btn">
+								<label class="form-status">
+									<c:choose>
+										<c:when test="${not empty workBidProject.status}">
+											${fns:getDictLabel(workBidProject.status, 'audit_state', '')}
+										</c:when>
+										<c:otherwise>新添</c:otherwise>
+									</c:choose>
+								</label>
+                         	</span>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>工程分类:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                               value="${fns:getMainDictLabel(workBidProject.projectType, 'contract_type', '')}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">类型说明:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                               value="${workBidProject.typeExplain}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">项目来源:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                               value="${fns:getMainDictLabel(workBidProject.projectSource, 'bidProjectSource', '')}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">来源说明:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                               value="${workBidProject.sourceExplain}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">项目规模:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                               value="${workBidProject.projectScale}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">规模类型:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                               value="${fns:getMainDictLabel(workBidProject.scaleType, 'scale_type', '')}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">规模单位:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                               value="${fns:getMainDictLabel(workBidProject.scaleUnit, 'scale_unit', '')}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">投资额(万元):</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                               value="<fmt:formatNumber value="${workBidProject.investMoney}" pattern="#,#00.00"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">是否外部招标单位:</label>
+                    <div class="layui-input-block">
+                        <c:choose>
+                            <c:when test="${workBidProject.isExt == '1'}">
+                                <input htmlEscape="false" readonly="true" class="form-control layui-input"
+                                       value="系统外招标单位"/>
+                            </c:when>
+                            <c:otherwise>
+                                <input htmlEscape="false" readonly="true" class="form-control layui-input"
+                                       value="系统内招标单位"/>
+                            </c:otherwise>
+                        </c:choose>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>招标单位:</label>
+                    <div class="layui-input-block with-icon">
+                        <c:choose>
+                            <c:when test="${workBidProject.isExt == '1'}">
+                                <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                                       value="${workBidProject.extCompany}"/>
+                            </c:when>
+                            <c:otherwise>
+                                <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                                       value="${workBidProject.bidCompany.name}"/>
+                            </c:otherwise>
+                        </c:choose>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">所属部门:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input"
+                               value="${workBidProject.officeName}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">招标编号:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                               value="${workBidProject.bidNumber}"/>
+                    </div>
+                </div>
+                <c:if test="${workBidProject.isSubcontract == 0}">
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label">中标结果:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                                   value="已中标"/>
+                        </div>
+                    </div>
+                </c:if>
+                <c:if test="${workBidProject.isSubcontract == 1}">
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label">中标结果:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                                   value="未中标"/>
+                        </div>
+                    </div>
+                </c:if>
+
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>联系人</h2></div>
+                <div class="layui-item layui-col-xs12 form-table-container">
+                    <table id="contentTable2" class="table table-bordered table-condensed details no-bottom-margin">
+                        <thead>
+                        <tr>
+                            <th width="18%"><span class="require-item">*</span>联系人姓名</th>
+                            <th width="13%">部门</th>
+                            <th width="13%">职务</th>
+                            <th width="13%">QQ</th>
+                            <th width="16%"><span class="require-item">*</span>联系方式1</th>
+                            <th width="16%">联系方式2</th>
+                            <th width="13%">E-mail</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workClientLinkmanList">
+                        <c:forEach items="${workBidProject.workClientLinkmanList}" var="workClientLinkman"
+                                   varStatus="status">
+                            <tr>
+                                <td>${workClientLinkman.name}</td>
+                                <td>${workClientLinkman.office}</td>
+                                <td>${workClientLinkman.position}</td>
+                                <td>${workClientLinkman.qq}</td>
+                                <td>${workClientLinkman.linkPhone}</td>
+                                <td>${workClientLinkman.linkMobile}</td>
+                                <td>${workClientLinkman.email}</td>
+                            </tr>
+                        </c:forEach>
+                        <c:if test="${empty workBidProject.workClientLinkmanList}">
+                            <tr>
+                                <td colspan="8">暂无数据</td>
+                            </tr>
+                        </c:if>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>招标代理机构</h2></div>
+                <div class="layui-item layui-col-xs12 form-table-container">
+                    <table id="contentTable3" class="table table-bordered table-condensed details no-bottom-margin">
+                        <thead>
+                        <tr>
+                            <th width="20%"><span class="require-item">*</span>机构名称</th>
+                            <th width="20%">姓名</th>
+                            <th width="20%"><span class="require-item">*</span>联系人电话</th>
+                            <th width="20%">QQ</th>
+                            <th width="22%">E-mail</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workClientLinkmanLists">
+                        <c:forEach items="${workBidProject.workClientLinkmanLists}" var="workClientLinkman"
+                                   varStatus="status">
+                            <tr>
+                                <td>${workClientLinkman.office}</td>
+                                <td>${workClientLinkman.name}</td>
+                                <td>${workClientLinkman.linkPhone}</td>
+                                <td>${workClientLinkman.qq}</td>
+                                <td>${workClientLinkman.email}</td>
+                            </tr>
+                        </c:forEach>
+                        <c:if test="${empty workBidProject.workClientLinkmanList}">
+                            <tr>
+                                <td colspan="8">暂无数据</td>
+                            </tr>
+                        </c:if>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+
+            <div class="form-group layui-row lw16">
+                <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">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                               value="<fmt:formatDate value="${workBidProject.registrationDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>投标日期:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                               value="<fmt:formatDate value="${workBidProject.bidDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">资审日期:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                               value="<fmt:formatDate value="${workBidProject.trialDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">资格审查:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                               value="${fns:getDictLabel(workBidProject.trialType, 'trial_type', '')}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">文件费用(元):</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                               value="<fmt:formatNumber value="${workBidProject.documentCost}" pattern="#,#00.00"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">投标保证金(元):</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                               value="<fmt:formatNumber value="${workBidProject.bidBond}" pattern="#,#00.00"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">投标保证金形式:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                               value="${fns:getMainDictLabel(workBidProject.bondStyle, 'bond_style', '')}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">投标保证金交付时间:</label>
+                    <div class="layui-input-block with-icon">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                               value="<fmt:formatDate value="${workBidProject.giveDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">投标保证金退还时间:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                               value="<fmt:formatDate value="${workBidProject.refundDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">项目协作部门:</label>
+                    <div class="layui-input-block with-icon">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                               value="${workBidProject.office.name}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">是否联合体投标:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                               value="${fns:getDictLabel(workBidProject.isBid, 'is_bid', '')}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">业务类型:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input"
+                               value="${fns:getMainDictLabel(workBidProject.businessType, 'business_type', '')}"/>
+                    </div>
+                </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="${workBidProject.subcontractCompany}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 with-textarea">
+                    <label class="layui-form-label"><span class="require-item">*</span>项目概况:</label>
+                    <div class="layui-input-block">
+                        <textarea htmlEscape="false" rows="4"
+                                  class="form-control ">${workBidProject.projectSituation}</textarea>
+                    </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"
+                                  class="form-control ">${workBidProject.serviceContent}</textarea>
+                    </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" class="form-control ">${workBidProject.remarks}</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 width="150px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="file_attachment">
+                        <c:forEach items="${workBidProject.workAttachments}" var="workClientAttachment"
+                                   varStatus="status">
+                            <tr>
+                                    <%-- <td>${status.index + 1}</td>--%>
+                                <c:choose>
+                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                        <td><img src="${workClientAttachment.url}" width="50" height="50"
+                                                 onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')"
+                                                 alt="${workClientAttachment.attachmentName}"></td>
+                                    </c:when>
+                                    <c:otherwise>
+                                        <c:choose>
+                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                <td><a href="javascript:void(0)"
+                                                       onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a>
+                                                </td>
+                                            </c:when>
+                                            <c:otherwise>
+                                                <td><a href="javascript:void(0)"
+                                                       onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a>
+                                                </td>
+                                            </c:otherwise>
+                                        </c:choose>
+                                    </c:otherwise>
+                                </c:choose>
+                                <td>${workClientAttachment.createBy.name}</td>
+                                <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                                <td class="op-td">
+                                    <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));"
+                                       class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>价格附件信息</h2></div>
+                <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+                    <table id="upTable2" 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_attachment2">
+                        <c:forEach items="${workBidProject.workAttachmentsprice}" var="workClientAttachment"
+                                   varStatus="status">
+                            <tr>
+                                <c:choose>
+                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                        <td><img src="${workClientAttachment.url}" width="50" height="50"
+                                                 onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')"
+                                                 alt="${workClientAttachment.attachmentName}"></td>
+                                    </c:when>
+                                    <c:otherwise>
+                                        <c:choose>
+                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                <td><a href="javascript:void(0)"
+                                                       onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a>
+                                                </td>
+                                            </c:when>
+                                            <c:otherwise>
+                                                <td><a href="javascript:void(0)"
+                                                       onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a>
+                                                </td>
+                                            </c:otherwise>
+                                        </c:choose>
+                                    </c:otherwise>
+                                </c:choose>
+                                <td>${workClientAttachment.createBy.name}</td>
+                                <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                                <td class="op-td">
+                                    <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));"
+                                       class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>招投标附件信息</h2></div>
+                <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+                    <table id="upTable3" 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_attachment3">
+                        <c:forEach items="${workBidProject.workAttachmentsbid}" var="workClientAttachment"
+                                   varStatus="status">
+                            <tr>
+                                    <%-- <td>${status.index + 1}</td>--%>
+                                <c:choose>
+                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                        <td><img src="${workClientAttachment.url}" width="50" height="50"
+                                                 onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')"
+                                                 alt="${workClientAttachment.attachmentName}"></td>
+                                    </c:when>
+                                    <c:otherwise>
+                                        <c:choose>
+                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                <td><a href="javascript:void(0)"
+                                                       onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a>
+                                                </td>
+                                            </c:when>
+                                            <c:otherwise>
+                                                <td><a href="javascript:void(0)"
+                                                       onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a>
+                                                </td>
+                                            </c:otherwise>
+                                        </c:choose>
+                                    </c:otherwise>
+                                </c:choose>
+                                <td>${workClientAttachment.createBy.name}</td>
+                                <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                                <td class="op-td">
+                                    <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));"
+                                       class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>开标附件信息</h2></div>
+                <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+
+                    <table id="upTable4" 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_attachment4">
+                        <c:forEach items="${workBidProject.workAttachmentsopenbid}" var="workClientAttachment"
+                                   varStatus="status">
+                            <tr>
+                                    <%-- <td>${status.index + 1}</td>--%>
+                                <c:choose>
+                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                        <td><img src="${workClientAttachment.url}" width="50" height="50"
+                                                 onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')"
+                                                 alt="${workClientAttachment.attachmentName}"></td>
+                                    </c:when>
+                                    <c:otherwise>
+                                        <c:choose>
+                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                <td><a href="javascript:void(0)"
+                                                       onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a>
+                                                </td>
+                                            </c:when>
+                                            <c:otherwise>
+                                                <td><a href="javascript:void(0)"
+                                                       onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a>
+                                                </td>
+                                            </c:otherwise>
+                                        </c:choose>
+                                    </c:otherwise>
+                                </c:choose>
+                                <td>${workClientAttachment.createBy.name}</td>
+                                <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                                <td class="op-td">
+                                    <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));"
+                                       class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+            <div class="form-group layui-row page-end"></div>
+        </form:form>
+    </div>
+</div>
+</body>
+</html>

+ 743 - 0
src/main/webapp/webpage/modules/workbidproject/workBidProjectbzAudit.jsp

@@ -0,0 +1,743 @@
+<%@ 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调用提交表单。
+                $('#flag').val('yes');
+            if(validateForm.form()){
+                if($("#file_attachment tr").length==0){
+                    top.layer.alert('请上传投标附件!', {icon: 0});
+                    return;
+                }
+                if($("#file_attachment_2 tr").length==0){
+                    top.layer.alert('请上传价格附件!', {icon: 0});
+                    return;
+                }
+                if($("#file_attachment_3 tr").length==0){
+                    top.layer.alert('请上传招投标附件!', {icon: 0});
+                    return;
+                }
+                $("#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: '#registrationDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#bidDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#trialDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#purchaseDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#refundDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#giveDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+            $("#attachment_2_btn").click(function () {
+                $("#attachment_2_file").click();
+            });
+            $("#attachment_3_btn").click(function () {
+                $("#attachment_3_file").click();
+            });
+            $("#attachment_4_btn").click(function () {
+                $("#attachment_4_file").click();
+            });
+            /*var isExt = "${workBidProject.isExt}";
+				    if(isExt==0){
+				        $("#contact").show();
+				        $("#btnAdd1").hide();
+				        //$("#btnAdd2").show();
+				        $("#extContact").hide();
+				    }else{
+				        $("#extContact").show();
+				        $("#btnAdd1").show();
+				        //$("#btnAdd2").hide();
+				        $("#contact").hide();
+				    }*/
+
+        });
+        function insertTitle(tValue){
+            var list = "${workBidProject.workAttachments}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "95";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+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 insertTitle2(tValue){
+            var list = "${workBidProject.workAttachmentsprice}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_2_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "96";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment_2";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        function insertTitle3(tValue){
+            var list = "${workBidProject.workAttachmentsbid}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_3_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "97";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment_3";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        function insertTitle4(tValue){
+            var list = "${workBidProject.workAttachmentsopenbid}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_4_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "98";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment_4";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        /*function addRow(list, idx, workClientLinkmanTpl, row) {
+
+            $(list).append(Mustache.render(workClientLinkmanTpl, {
+                idx: idx, delBtn: true, row: row
+            }));
+            $(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).parent().parent().hide();
+                $(obj).html("&divide;").attr("title", "撤回删除");
+                $(obj).parent().parent().addClass("error");
+            }else if(delFlag.val() == "1"){
+                delFlag.val("0");
+                $(obj).html("&times;").attr("title", "删除");
+                $(obj).parent().parent().removeClass("error");
+            }
+        }
+
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="workBidProject" action="${ctx}/workbidproject/workBidProject/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"/>
+			<div class="form-group layui-row first lw16">
+				<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" readonly="true" class="form-control required layui-input" value="${workBidProject.projectName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<input path="projectNumber" htmlEscape="false" readonly="true" class="form-control layui-input" value="${workBidProject.projectNumber}"/>
+							<span class="input-group-btn">
+                            <label class="form-status"><c:choose><c:when test="${not empty workBidProject.status}">${fns:getDictLabel(workBidProject.status, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                         </span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>工程分类:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.projectType, 'contract_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">类型说明:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.typeExplain}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目来源:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.projectSource, 'bidProjectSource', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">来源说明:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.sourceExplain}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目规模:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.projectScale}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">规模类型:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.scaleType, 'scale_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">规模单位:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.scaleUnit, 'scale_unit', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投资额(万元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatNumber value="${workBidProject.investMoney}" pattern="#,#00.00"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">是否外部招标单位:</label>
+					<div class="layui-input-block">
+						<c:choose>
+							<c:when test="${workBidProject.isExt == '1'}">
+								<input htmlEscape="false" readonly="true" class="form-control layui-input" value="系统外招标单位" />
+							</c:when>
+							<c:otherwise>
+								<input htmlEscape="false" readonly="true" class="form-control layui-input" value="系统内招标单位" />
+							</c:otherwise>
+						</c:choose>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>招标单位:</label>
+					<div class="layui-input-block with-icon">
+						<c:choose>
+							<c:when test="${workBidProject.isExt == '1'}">
+								<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.extCompany}"/>
+							</c:when>
+							<c:otherwise>
+								<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.bidCompany.name}"/>
+							</c:otherwise>
+						</c:choose>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">招标编号:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.bidNumber}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">所属部门:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workBidProject.officeName}"/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>联系人</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable2" class="table table-bordered table-condensed details no-bottom-margin">
+						<thead>
+						<tr>
+							<th width="18%"><span class="require-item">*</span>联系人姓名</th>
+							<th width="13%">部门</th>
+							<th width="13%">职务</th>
+							<th width="13%">QQ</th>
+							<th width="16%"><span class="require-item">*</span>联系方式1</th>
+							<th width="16%">联系方式2</th>
+							<th width="13%">E-mail</th>
+						</tr>
+						</thead>
+						<tbody id="workClientLinkmanList">
+						<c:forEach items="${workBidProject.workClientLinkmanList}" var="workClientLinkman" varStatus="status">
+							<tr>
+								<td>${workClientLinkman.name}</td>
+								<td>${workClientLinkman.office}</td>
+								<td>${workClientLinkman.position}</td>
+								<td>${workClientLinkman.qq}</td>
+								<td>${workClientLinkman.linkPhone}</td>
+								<td>${workClientLinkman.linkMobile}</td>
+								<td>${workClientLinkman.email}</td>
+							</tr>
+						</c:forEach>
+						<c:if test="${empty workBidProject.workClientLinkmanList}">
+							<tr>
+								<td colspan="8">暂无数据</td>
+							</tr>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>招标代理机构</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable3" class="table table-bordered table-condensed details no-bottom-margin">
+						<thead>
+						<tr>
+							<th width="20%"><span class="require-item">*</span>机构名称</th>
+							<th width="20%">姓名</th>
+							<th width="20%"><span class="require-item">*</span>联系人电话</th>
+							<th width="20%">QQ</th>
+							<th width="22%">E-mail</th>
+						</tr>
+						</thead>
+						<tbody id="workClientLinkmanLists">
+						<c:forEach items="${workBidProject.workClientLinkmanLists}" var="workClientLinkman" varStatus="status">
+							<tr>
+								<td>${workClientLinkman.office}</td>
+								<td>${workClientLinkman.name}</td>
+								<td>${workClientLinkman.linkPhone}</td>
+								<td>${workClientLinkman.qq}</td>
+								<td>${workClientLinkman.email}</td>
+							</tr>
+						</c:forEach>
+						<c:if test="${empty workBidProject.workClientLinkmanList}">
+							<tr>
+								<td colspan="8">暂无数据</td>
+							</tr>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row lw16">
+				<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">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.registrationDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>投标日期:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.bidDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">资审日期:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.trialDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">资格审查:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getDictLabel(workBidProject.trialType, 'trial_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">文件费用(元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatNumber value="${workBidProject.documentCost}" pattern="#,#00.00"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金(元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatNumber value="${workBidProject.bidBond}" pattern="#,#00.00"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金形式:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.bondStyle, 'bond_style', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金交付时间:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.giveDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金退还时间:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.refundDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目协作部门:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.office.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">是否联合体投标:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getDictLabel(workBidProject.isBid, 'is_bid', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">业务类型:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.businessType, 'business_type', '')}"/>
+					</div>
+				</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="${workBidProject.subcontractCompany}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label"><span class="require-item">*</span>项目概况:</label>
+					<div class="layui-input-block">
+						<textarea  htmlEscape="false" rows="4"  readonly="true"  class="form-control ">${workBidProject.projectSituation}</textarea>
+					</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"  class="form-control ">${workBidProject.serviceContent}</textarea>
+					</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"  class="form-control ">${workBidProject.remarks}</textarea>
+					</div>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>投标附件信息</h2></div>
+				<div class="layui-item nav-btns">
+					<a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+				</div>
+				<div id="addFile_attachment" style="display: none" class="upload-progress">
+					<span id="fileName_attachment" ></span>
+					<b><span id="baifenbi_attachment" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>
+				<input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+				<span id="attachment_title"></span>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+							<th>文件预览</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:forEach items="${workBidProject.workAttachments}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+									<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+										<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile_attachment','_attachment')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+									</c:if>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>价格附件信息</h2></div>
+				<div class="layui-item nav-btns">
+					<a id="attachment_2_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+				</div>
+				<div id="addFile_attachment_2" style="display: none" class="upload-progress">
+					<span id="fileName_attachment_2" ></span>
+					<b><span id="baifenbi_attachment_2" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment_2" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>
+				<input id="attachment_2_file" type="file" name="attachment_2_file"  multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle2(this.value);"/>
+				<span id="attachment_title_2"></span>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable2" 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_2">
+						<c:forEach items="${workBidProject.workAttachmentsprice}" var = "workClientAttachment" varStatus="status">
+							<tr>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+									<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+										<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile_attachment','_attachment_2')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+									</c:if>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>招投标附件信息</h2></div>
+				<div class="layui-item nav-btns">
+					<a id="attachment_3_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+				</div>
+				<div id="addFile_attachment_3" style="display: none" class="upload-progress">
+					<span id="fileName_attachment_3" ></span>
+					<b><span id="baifenbi_attachment_3" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment_3" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>
+				<input id="attachment_3_file" type="file" name="attachment_3_file"  multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle3(this.value);"/>
+				<span id="attachment_title_3"></span>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable3" 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_3">
+						<c:forEach items="${workBidProject.workAttachmentsbid}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+									<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+										<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile_attachment','_attachment_3')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+									</c:if>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>开标附件信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+
+					<table id="upTable4" 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_attachment4">
+						<c:forEach items="${workBidProject.workAttachmentsopenbid}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>审批意见</h2></div>
+				<div class="layui-item layui-col-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="${workBidProject.act.procInsId}"/>
+					<act:histoicFlow procInsId="${workBidProject.act.procInsId}"/>
+				</div>
+			</div>
+
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 759 - 0
src/main/webapp/webpage/modules/workbidproject/workBidProjectgzAudit.jsp

@@ -0,0 +1,759 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<%@ page trimDirectiveWhitespaces="true" %>
+<html>
+<head>
+	<title>投标项目管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+        var validateForm;
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+                $('#flag').val('yes');
+            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: '#registrationDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#bidDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#trialDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#purchaseDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#refundDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#giveDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+            $("#attachment_btn2").click(function () {
+                $("#attachment_file2").click();
+            });
+            $("#attachment_btn3").click(function () {
+                $("#attachment_file3").click();
+            });
+            $("#attachment_btn4").click(function () {
+                $("#attachment_file4").click();
+            });
+            /*var isExt = "${workBidProject.isExt}";
+				    if(isExt==0){
+				        $("#contact").show();
+				        $("#btnAdd1").hide();
+				        //$("#btnAdd2").show();
+				        $("#extContact").hide();
+				    }else{
+				        $("#extContact").show();
+				        $("#btnAdd1").show();
+				        //$("#btnAdd2").hide();
+				        $("#contact").hide();
+				    }*/
+
+        });
+        function insertTitle(tValue){
+            var list = "${workBidProject.workAttachments}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "95";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+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 insertTitle2(tValue){
+            var list = "${workBidProject.workAttachmentsprice}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file2")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "96";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment2";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        function insertTitle3(tValue){
+            var list = "${workBidProject.workAttachmentsbid}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file3")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "97";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment3";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        function insertTitle4(tValue){
+            var list = "${workBidProject.workAttachmentsopenbid}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file4")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "98";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment4";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        /*function addRow(list, idx, workClientLinkmanTpl, row) {
+
+            $(list).append(Mustache.render(workClientLinkmanTpl, {
+                idx: idx, delBtn: true, row: row
+            }));
+            $(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).parent().parent().hide();
+                $(obj).html("&divide;").attr("title", "撤回删除");
+                $(obj).parent().parent().addClass("error");
+            }else if(delFlag.val() == "1"){
+                delFlag.val("0");
+                $(obj).html("&times;").attr("title", "删除");
+                $(obj).parent().parent().removeClass("error");
+            }
+        }
+
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="workBidProject" action="${ctx}/workbidproject/workBidProject/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"/>
+			<div class="form-group layui-row first lw16">
+				<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" readonly="true" class="form-control required layui-input" value="${workBidProject.projectName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<input path="projectNumber" htmlEscape="false" readonly="true" class="form-control layui-input" value="${workBidProject.projectNumber}"/>
+							<span class="input-group-btn">
+                            <label class="form-status"><c:choose><c:when test="${not empty workBidProject.status}">${fns:getDictLabel(workBidProject.status, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                         </span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>工程分类:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.projectType, 'contract_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">类型说明:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.typeExplain}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目来源:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.projectSource, 'bidProjectSource', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">来源说明:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.sourceExplain}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目规模:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.projectScale}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">规模类型:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.scaleType, 'scale_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">规模单位:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.scaleUnit, 'scale_unit', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投资额(万元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatNumber value="${workBidProject.investMoney}" pattern="#,#00.00"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">是否外部招标单位:</label>
+					<div class="layui-input-block">
+						<c:choose>
+							<c:when test="${workBidProject.isExt == '1'}">
+								<input htmlEscape="false" readonly="true" class="form-control layui-input" value="系统外招标单位" />
+							</c:when>
+							<c:otherwise>
+								<input htmlEscape="false" readonly="true" class="form-control layui-input" value="系统内招标单位" />
+							</c:otherwise>
+						</c:choose>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>招标单位:</label>
+					<div class="layui-input-block with-icon">
+						<c:choose>
+							<c:when test="${workBidProject.isExt == '1'}">
+								<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.extCompany}"/>
+							</c:when>
+							<c:otherwise>
+								<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.bidCompany.name}"/>
+							</c:otherwise>
+						</c:choose>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">招标编号:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.bidNumber}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">所属部门:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workBidProject.officeName}"/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>联系人</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable2" class="table table-bordered table-condensed details no-bottom-margin">
+						<thead>
+						<tr>
+							<th width="18%"><span class="require-item">*</span>联系人姓名</th>
+							<th width="13%">部门</th>
+							<th width="13%">职务</th>
+							<th width="13%">QQ</th>
+							<th width="16%"><span class="require-item">*</span>联系方式1</th>
+							<th width="16%">联系方式2</th>
+							<th width="13%">E-mail</th>
+						</tr>
+						</thead>
+						<tbody id="workClientLinkmanList">
+						<c:forEach items="${workBidProject.workClientLinkmanList}" var="workClientLinkman" varStatus="status">
+							<tr>
+								<td>${workClientLinkman.name}</td>
+								<td>${workClientLinkman.office}</td>
+								<td>${workClientLinkman.position}</td>
+								<td>${workClientLinkman.qq}</td>
+								<td>${workClientLinkman.linkPhone}</td>
+								<td>${workClientLinkman.linkMobile}</td>
+								<td>${workClientLinkman.email}</td>
+							</tr>
+						</c:forEach>
+						<c:if test="${empty workBidProject.workClientLinkmanList}">
+							<tr>
+								<td colspan="8">暂无数据</td>
+							</tr>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>招标代理机构</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable3" class="table table-bordered table-condensed details no-bottom-margin">
+						<thead>
+						<tr>
+							<th width="20%"><span class="require-item">*</span>机构名称</th>
+							<th width="20%">姓名</th>
+							<th width="20%"><span class="require-item">*</span>联系人电话</th>
+							<th width="20%">QQ</th>
+							<th width="22%">E-mail</th>
+						</tr>
+						</thead>
+						<tbody id="workClientLinkmanLists">
+						<c:forEach items="${workBidProject.workClientLinkmanLists}" var="workClientLinkman" varStatus="status">
+							<tr>
+								<td>${workClientLinkman.office}</td>
+								<td>${workClientLinkman.name}</td>
+								<td>${workClientLinkman.linkPhone}</td>
+								<td>${workClientLinkman.qq}</td>
+								<td>${workClientLinkman.email}</td>
+							</tr>
+						</c:forEach>
+						<c:if test="${empty workBidProject.workClientLinkmanList}">
+							<tr>
+								<td colspan="8">暂无数据</td>
+							</tr>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row lw16">
+				<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">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.registrationDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>投标日期:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.bidDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">资审日期:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.trialDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">资格审查:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getDictLabel(workBidProject.trialType, 'trial_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">文件费用(元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatNumber value="${workBidProject.documentCost}" pattern="#,#00.00"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金(元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatNumber value="${workBidProject.bidBond}" pattern="#,#00.00"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金形式:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.bondStyle, 'bond_style', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金交付时间:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.giveDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金退还时间:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.refundDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目协作部门:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.office.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">是否联合体投标:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getDictLabel(workBidProject.isBid, 'is_bid', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">业务类型:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.businessType, 'business_type', '')}"/>
+					</div>
+				</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="${workBidProject.subcontractCompany}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label"><span class="require-item">*</span>项目概况:</label>
+					<div class="layui-input-block">
+						<textarea  htmlEscape="false" rows="4"  readonly="true"  class="form-control ">${workBidProject.projectSituation}</textarea>
+					</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"  class="form-control ">${workBidProject.serviceContent}</textarea>
+					</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"  class="form-control ">${workBidProject.remarks}</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 width="220px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:forEach items="${workBidProject.workAttachments}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<div class="op-btn-box" >
+                                        <c:set var="signflag" value="${fns:getSysParam('sign_flag',fns:getUser())}"/>
+                                        <c:choose>
+                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'doc')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'docx')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'xls')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'xlsx')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'ppt')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'pptx')}">
+                                                <a href="${ctx}/isignature/iSignatureDocument/sign?recordId=${workClientAttachment.id}" class="op-btn op-btn-sign" target="_blank">签章</a>
+                                                <a href="javascript:void(0);" onclick="openDialogView('查看电子签章信息', '${ctx}/isignature/iSignatureDocument/form?recordId=${workClientAttachment.id}','95%', '95%')" class="op-btn op-btn-view" ><i class="fa fa-search-plus"></i> 查看</a>
+                                                <c:choose>
+                                                    <c:when test="${signflag == '是'}">
+                                                        <a href="javascript:location.href='${ctx}/isignature/iSignatureDocument/download?recordId=${workClientAttachment.id}'" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                                    </c:when>
+                                                    <c:otherwise>
+                                                        <a href="javascript:location.href='${ctx}/workcontractinfo/workContractInfo/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                                    </c:otherwise>
+                                                </c:choose>
+                                            </c:when>
+                                            <c:otherwise>
+                                                <a href="javascript:location.href='${ctx}/workcontractinfo/workContractInfo/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                            </c:otherwise>
+                                        </c:choose>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>价格附件信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable2" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+								<%-- <th>序号</th>--%>
+							<th>文件名称</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="220px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment2">
+						<c:forEach items="${workBidProject.workAttachmentsprice}" var = "workClientAttachment" varStatus="status">
+							<tr>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<div class="op-btn-box" >
+                                        <c:set var="signflag" value="${fns:getSysParam('sign_flag',fns:getUser())}"/>
+                                        <c:choose>
+                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'doc')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'docx')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'xls')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'xlsx')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'ppt')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'pptx')}">
+                                                <a href="javascript:void(0);" onclick="openDialogView('查看电子签章信息', '${ctx}/isignature/iSignatureDocument/form?recordId=${workClientAttachment.id}','95%', '95%')" class="op-btn op-btn-view" ><i class="fa fa-search-plus"></i> 查看</a>
+                                                <c:choose>
+                                                    <c:when test="${signflag == '是'}">
+                                                        <a href="javascript:location.href='${ctx}/isignature/iSignatureDocument/download?recordId=${workClientAttachment.id}'" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                                    </c:when>
+                                                    <c:otherwise>
+                                                        <a href="javascript:location.href='${ctx}/workcontractinfo/workContractInfo/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                                    </c:otherwise>
+                                                </c:choose>
+                                            </c:when>
+                                            <c:otherwise>
+                                                <a href="javascript:location.href='${ctx}/workcontractinfo/workContractInfo/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                            </c:otherwise>
+                                        </c:choose>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>招投标附件信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable3" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+								<%-- <th>序号</th>--%>
+							<th>文件名称</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="220px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment3">
+						<c:forEach items="${workBidProject.workAttachmentsbid}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td class="op-td">
+									<div class="op-btn-box" >
+                                        <c:set var="signflag" value="${fns:getSysParam('sign_flag',fns:getUser())}"/>
+                                        <c:choose>
+                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'doc')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'docx')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'xls')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'xlsx')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'ppt')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'pptx')}">
+                                                    <a href="${ctx}/isignature/iSignatureDocument/sign?recordId=${workClientAttachment.id}" class="op-btn op-btn-sign" target="_blank">签章</a>
+                                                <a href="javascript:void(0);" onclick="openDialogView('查看电子签章信息', '${ctx}/isignature/iSignatureDocument/form?recordId=${workClientAttachment.id}','95%', '95%')" class="op-btn op-btn-view" ><i class="fa fa-search-plus"></i> 查看</a>
+                                                <c:choose>
+                                                    <c:when test="${signflag == '是'}">
+                                                        <a href="javascript:location.href='${ctx}/isignature/iSignatureDocument/download?recordId=${workClientAttachment.id}'" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                                    </c:when>
+                                                    <c:otherwise>
+                                                        <a href="javascript:location.href='${ctx}/workcontractinfo/workContractInfo/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                                    </c:otherwise>
+                                                </c:choose>
+                                            </c:when>
+                                            <c:otherwise>
+                                                <a href="javascript:location.href='${ctx}/workcontractinfo/workContractInfo/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                            </c:otherwise>
+                                        </c:choose>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>开标附件信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+
+					<table id="upTable4" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+								<%-- <th>序号</th>--%>
+							<th>文件名称</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="220px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment4">
+						<c:forEach items="${workBidProject.workAttachmentsopenbid}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>审批意见</h2></div>
+				<div class="layui-item layui-col-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="${workBidProject.act.procInsId}"/>
+					<act:histoicFlow procInsId="${workBidProject.act.procInsId}"/>
+				</div>
+			</div>
+
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 705 - 0
src/main/webapp/webpage/modules/workbidproject/workBidProjectkbAudit.jsp

@@ -0,0 +1,705 @@
+<%@ 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调用提交表单。
+                $('#flag').val('yes');
+            if(validateForm.form()){
+                if($("#file_attachment_4 tr").length==0){
+                    top.layer.alert('请上传开标附件!', {icon: 0});
+                    return;
+                }
+                $("#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: '#registrationDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#bidDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#trialDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#purchaseDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#refundDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#giveDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+            $("#attachment_2_btn").click(function () {
+                $("#attachment_2_file").click();
+            });
+            $("#attachment_3_btn").click(function () {
+                $("#attachment_3_file").click();
+            });
+            $("#attachment_4_btn").click(function () {
+                $("#attachment_4_file").click();
+            });
+            /*var isExt = "${workBidProject.isExt}";
+				    if(isExt==0){
+				        $("#contact").show();
+				        $("#btnAdd1").hide();
+				        //$("#btnAdd2").show();
+				        $("#extContact").hide();
+				    }else{
+				        $("#extContact").show();
+				        $("#btnAdd1").show();
+				        //$("#btnAdd2").hide();
+				        $("#contact").hide();
+				    }*/
+
+        });
+        function insertTitle(tValue){
+            var list = "${workBidProject.workAttachments}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+                var attachmentId = "";
+                var attachmentFlag = "95";
+                console.log(file);
+                var timestamp=new Date().getTime();
+
+                var storeAs = "attachment-file/workBidProject/"+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 insertTitle2(tValue){
+            var list = "${workBidProject.workAttachmentsprice}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_2_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+                var attachmentId = "";
+                var attachmentFlag = "96";
+                console.log(file);
+                var timestamp=new Date().getTime();
+
+                var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+                var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+                var divId = "_attachment_2";
+                $("#addFile"+divId).show();
+                multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        function insertTitle3(tValue){
+            var list = "${workBidProject.workAttachmentsbid}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_3_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+                var attachmentId = "";
+                var attachmentFlag = "97";
+                console.log(file);
+                var timestamp=new Date().getTime();
+
+                var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+                var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+                var divId = "_attachment_3";
+                $("#addFile"+divId).show();
+                multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        function insertTitle4(tValue){
+            var list = "${workBidProject.workAttachmentsopenbid}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_4_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+                var attachmentId = "";
+                var attachmentFlag = "98";
+                console.log(file);
+                var timestamp=new Date().getTime();
+
+                var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+                var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+                var divId = "_attachment_4";
+                $("#addFile"+divId).show();
+                multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        /*function addRow(list, idx, workClientLinkmanTpl, row) {
+
+            $(list).append(Mustache.render(workClientLinkmanTpl, {
+                idx: idx, delBtn: true, row: row
+            }));
+            $(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).parent().parent().hide();
+                $(obj).html("&divide;").attr("title", "撤回删除");
+                $(obj).parent().parent().addClass("error");
+            }else if(delFlag.val() == "1"){
+                delFlag.val("0");
+                $(obj).html("&times;").attr("title", "删除");
+                $(obj).parent().parent().removeClass("error");
+            }
+        }
+
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="workBidProject" action="${ctx}/workbidproject/workBidProject/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"/>
+
+			<div class="form-group layui-row first lw16">
+				<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" readonly="true" class="form-control required layui-input" value="${workBidProject.projectName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<input path="projectNumber" htmlEscape="false" readonly="true" class="form-control layui-input" value="${workBidProject.projectNumber}"/>
+							<span class="input-group-btn">
+                            <label class="form-status"><c:choose><c:when test="${not empty workBidProject.status}">${fns:getDictLabel(workBidProject.status, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                         </span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>工程分类:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.projectType, 'contract_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">类型说明:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.typeExplain}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目来源:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.projectSource, 'bidProjectSource', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">来源说明:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.sourceExplain}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目规模:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.projectScale}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">规模类型:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.scaleType, 'scale_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">规模单位:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.scaleUnit, 'scale_unit', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投资额(万元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatNumber value="${workBidProject.investMoney}" pattern="#,#00.00"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">是否外部招标单位:</label>
+					<div class="layui-input-block">
+						<c:choose>
+							<c:when test="${workBidProject.isExt == '1'}">
+								<input htmlEscape="false" readonly="true" class="form-control layui-input" value="系统外招标单位" />
+							</c:when>
+							<c:otherwise>
+								<input htmlEscape="false" readonly="true" class="form-control layui-input" value="系统内招标单位" />
+							</c:otherwise>
+						</c:choose>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>招标单位:</label>
+					<div class="layui-input-block with-icon">
+						<c:choose>
+							<c:when test="${workBidProject.isExt == '1'}">
+								<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.extCompany}"/>
+							</c:when>
+							<c:otherwise>
+								<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.bidCompany.name}"/>
+							</c:otherwise>
+						</c:choose>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">招标编号:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.bidNumber}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">所属部门:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workBidProject.officeName}"/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>联系人</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable2" class="table table-bordered table-condensed details no-bottom-margin">
+						<thead>
+						<tr>
+							<th width="18%"><span class="require-item">*</span>联系人姓名</th>
+							<th width="13%">部门</th>
+							<th width="13%">职务</th>
+							<th width="13%">QQ</th>
+							<th width="16%"><span class="require-item">*</span>联系方式1</th>
+							<th width="16%">联系方式2</th>
+							<th width="13%">E-mail</th>
+						</tr>
+						</thead>
+						<tbody id="workClientLinkmanList">
+						<c:forEach items="${workBidProject.workClientLinkmanList}" var="workClientLinkman" varStatus="status">
+							<tr>
+								<td>${workClientLinkman.name}</td>
+								<td>${workClientLinkman.office}</td>
+								<td>${workClientLinkman.position}</td>
+								<td>${workClientLinkman.qq}</td>
+								<td>${workClientLinkman.linkPhone}</td>
+								<td>${workClientLinkman.linkMobile}</td>
+								<td>${workClientLinkman.email}</td>
+							</tr>
+						</c:forEach>
+						<c:if test="${empty workBidProject.workClientLinkmanList}">
+							<tr>
+								<td colspan="8">暂无数据</td>
+							</tr>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>招标代理机构</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable3" class="table table-bordered table-condensed details no-bottom-margin">
+						<thead>
+						<tr>
+							<th width="20%"><span class="require-item">*</span>机构名称</th>
+							<th width="20%">姓名</th>
+							<th width="20%"><span class="require-item">*</span>联系人电话</th>
+							<th width="20%">QQ</th>
+							<th width="22%">E-mail</th>
+						</tr>
+						</thead>
+						<tbody id="workClientLinkmanLists">
+						<c:forEach items="${workBidProject.workClientLinkmanLists}" var="workClientLinkman" varStatus="status">
+							<tr>
+								<td>${workClientLinkman.office}</td>
+								<td>${workClientLinkman.name}</td>
+								<td>${workClientLinkman.linkPhone}</td>
+								<td>${workClientLinkman.qq}</td>
+								<td>${workClientLinkman.email}</td>
+							</tr>
+						</c:forEach>
+						<c:if test="${empty workBidProject.workClientLinkmanList}">
+							<tr>
+								<td colspan="8">暂无数据</td>
+							</tr>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row lw16">
+				<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">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.registrationDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>投标日期:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.bidDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">资审日期:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.trialDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">资格审查:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getDictLabel(workBidProject.trialType, 'trial_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">文件费用(元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatNumber value="${workBidProject.documentCost}" pattern="#,#00.00"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金(元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatNumber value="${workBidProject.bidBond}" pattern="#,#00.00"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金形式:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.bondStyle, 'bond_style', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金交付时间:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.giveDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金退还时间:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.refundDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目协作部门:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.office.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">是否联合体投标:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getDictLabel(workBidProject.isBid, 'is_bid', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">业务类型:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.businessType, 'business_type', '')}"/>
+					</div>
+				</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="${workBidProject.subcontractCompany}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label"><span class="require-item">*</span>项目概况:</label>
+					<div class="layui-input-block">
+						<textarea  htmlEscape="false" rows="4"  readonly="true"  class="form-control ">${workBidProject.projectSituation}</textarea>
+					</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" class="form-control ">${workBidProject.serviceContent}</textarea>
+					</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"  class="form-control ">${workBidProject.remarks}</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 width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:forEach items="${workBidProject.workAttachments}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>价格附件信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable2" 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_2">
+						<c:forEach items="${workBidProject.workAttachmentsprice}" var = "workClientAttachment" varStatus="status">
+							<tr>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>招投标附件信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable3" 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_3">
+						<c:forEach items="${workBidProject.workAttachmentsbid}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>开标附件信息</h2></div>
+				<div class="layui-item nav-btns">
+					<a id="attachment_4_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+				</div>
+				<div id="addFile_attachment_4" style="display: none" class="upload-progress">
+					<span id="fileName_attachment_4" ></span>
+					<b><span id="baifenbi_attachment_4" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment_4" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>
+				<input id="attachment_4_file" type="file" name="attachment_file4" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle4(this.value);"/>
+				<span id="attachment_title_4"></span>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+
+					<table id="upTable4" 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_4">
+						<c:forEach items="${workBidProject.workAttachmentsopenbid}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+									<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+										<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile_attachment','_attachment_4')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+									</c:if>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>审批意见</h2></div>
+				<div class="layui-item layui-col-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="${workBidProject.act.procInsId}"/>
+					<act:histoicFlow procInsId="${workBidProject.act.procInsId}"/>
+				</div>
+			</div>
+
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 699 - 0
src/main/webapp/webpage/modules/workbidproject/workBidProjectwhAudit.jsp

@@ -0,0 +1,699 @@
+<%@ 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调用提交表单。
+                $('#flag').val('yes');
+            if(validateForm.form()){
+                if($("#isSubcontract").val() == "" || $("#isSubcontract").val() == null){
+                    top.layer.alert('请您确认是否中标!', {icon: 0});
+                    return;
+                }
+                $("#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: '#registrationDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#bidDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#trialDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#purchaseDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#refundDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#giveDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+            $("#attachment_btn2").click(function () {
+                $("#attachment_file2").click();
+            });
+            $("#attachment_btn3").click(function () {
+                $("#attachment_file3").click();
+            });
+            $("#attachment_btn4").click(function () {
+                $("#attachment_file4").click();
+            });
+            /*var isExt = "${workBidProject.isExt}";
+				    if(isExt==0){
+				        $("#contact").show();
+				        $("#btnAdd1").hide();
+				        //$("#btnAdd2").show();
+				        $("#extContact").hide();
+				    }else{
+				        $("#extContact").show();
+				        $("#btnAdd1").show();
+				        //$("#btnAdd2").hide();
+				        $("#contact").hide();
+				    }*/
+
+        });
+        function insertTitle(tValue){
+            var list = "${workBidProject.workAttachments}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "95";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+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 insertTitle2(tValue){
+            var list = "${workBidProject.workAttachmentsprice}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file2")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "96";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment2";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        function insertTitle3(tValue){
+            var list = "${workBidProject.workAttachmentsbid}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file3")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "97";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment3";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        function insertTitle4(tValue){
+            var list = "${workBidProject.workAttachmentsopenbid}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file4")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "98";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment4";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        /*function addRow(list, idx, workClientLinkmanTpl, row) {
+
+            $(list).append(Mustache.render(workClientLinkmanTpl, {
+                idx: idx, delBtn: true, row: row
+            }));
+            $(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).parent().parent().hide();
+                $(obj).html("&divide;").attr("title", "撤回删除");
+                $(obj).parent().parent().addClass("error");
+            }else if(delFlag.val() == "1"){
+                delFlag.val("0");
+                $(obj).html("&times;").attr("title", "删除");
+                $(obj).parent().parent().removeClass("error");
+            }
+        }
+
+	</script>
+</head>
+<body >
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="workBidProject" action="${ctx}/workbidproject/workBidProject/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"/>
+
+			<div class="form-group layui-row first lw16">
+				<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" readonly="true" class="form-control required layui-input" value="${workBidProject.projectName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<input path="projectNumber" htmlEscape="false" readonly="true" class="form-control layui-input" value="${workBidProject.projectNumber}"/>
+							<span class="input-group-btn">
+				<label class="form-status"><c:choose><c:when test="${not empty workBidProject.status}">${fns:getDictLabel(workBidProject.status, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+			 </span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>工程分类:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.projectType, 'contract_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">类型说明:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.typeExplain}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目来源:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.projectSource, 'bidProjectSource', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">来源说明:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.sourceExplain}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目规模:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.projectScale}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">规模类型:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.scaleType, 'scale_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">规模单位:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.scaleUnit, 'scale_unit', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投资额(万元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatNumber value="${workBidProject.investMoney}" pattern="#,#00.00"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">是否外部招标单位:</label>
+					<div class="layui-input-block">
+						<c:choose>
+							<c:when test="${workBidProject.isExt == '1'}">
+								<input htmlEscape="false" readonly="true" class="form-control layui-input" value="系统外招标单位" />
+							</c:when>
+							<c:otherwise>
+								<input htmlEscape="false" readonly="true" class="form-control layui-input" value="系统内招标单位" />
+							</c:otherwise>
+						</c:choose>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>招标单位:</label>
+					<div class="layui-input-block with-icon">
+						<c:choose>
+							<c:when test="${workBidProject.isExt == '1'}">
+								<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.extCompany}"/>
+							</c:when>
+							<c:otherwise>
+								<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.bidCompany.name}"/>
+							</c:otherwise>
+						</c:choose>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">招标编号:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.bidNumber}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">所属部门:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workBidProject.officeName}"/>
+					</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:select path="isSubcontract" id="isSubcontract" class="form-control simple-select">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getDictList('is_subcontract')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>联系人</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable2" class="table table-bordered table-condensed details no-bottom-margin">
+						<thead>
+						<tr>
+							<th width="18%"><span class="require-item">*</span>联系人姓名</th>
+							<th width="13%">部门</th>
+							<th width="13%">职务</th>
+							<th width="13%">QQ</th>
+							<th width="16%"><span class="require-item">*</span>联系方式1</th>
+							<th width="16%">联系方式2</th>
+							<th width="13%">E-mail</th>
+						</tr>
+						</thead>
+						<tbody id="workClientLinkmanList">
+						<c:forEach items="${workBidProject.workClientLinkmanList}" var="workClientLinkman" varStatus="status">
+							<tr>
+								<td>${workClientLinkman.name}</td>
+								<td>${workClientLinkman.office}</td>
+								<td>${workClientLinkman.position}</td>
+								<td>${workClientLinkman.qq}</td>
+								<td>${workClientLinkman.linkPhone}</td>
+								<td>${workClientLinkman.linkMobile}</td>
+								<td>${workClientLinkman.email}</td>
+							</tr>
+						</c:forEach>
+						<c:if test="${empty workBidProject.workClientLinkmanList}">
+							<tr>
+								<td colspan="8">暂无数据</td>
+							</tr>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>招标代理机构</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable3" class="table table-bordered table-condensed details no-bottom-margin">
+						<thead>
+						<tr>
+							<th width="20%"><span class="require-item">*</span>机构名称</th>
+							<th width="20%">姓名</th>
+							<th width="20%"><span class="require-item">*</span>联系人电话</th>
+							<th width="20%">QQ</th>
+							<th width="22%">E-mail</th>
+						</tr>
+						</thead>
+						<tbody id="workClientLinkmanLists">
+						<c:forEach items="${workBidProject.workClientLinkmanLists}" var="workClientLinkman" varStatus="status">
+							<tr>
+								<td>${workClientLinkman.office}</td>
+								<td>${workClientLinkman.name}</td>
+								<td>${workClientLinkman.linkPhone}</td>
+								<td>${workClientLinkman.qq}</td>
+								<td>${workClientLinkman.email}</td>
+							</tr>
+						</c:forEach>
+						<c:if test="${empty workBidProject.workClientLinkmanList}">
+							<tr>
+								<td colspan="8">暂无数据</td>
+							</tr>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row lw16">
+				<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">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.registrationDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>投标日期:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.bidDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">资审日期:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.trialDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">资格审查:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getDictLabel(workBidProject.trialType, 'trial_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">文件费用(元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatNumber value="${workBidProject.documentCost}" pattern="#,#00.00"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金(元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatNumber value="${workBidProject.bidBond}" pattern="#,#00.00"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金形式:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.bondStyle, 'bond_style', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金交付时间:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.giveDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金退还时间:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.refundDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目协作部门:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.office.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">是否联合体投标:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getDictLabel(workBidProject.isBid, 'is_bid', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">业务类型:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.businessType, 'business_type', '')}"/>
+					</div>
+				</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="${workBidProject.subcontractCompany}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label"><span class="require-item">*</span>项目概况:</label>
+					<div class="layui-input-block">
+						<textarea  htmlEscape="false" rows="4" readonly="true" class="form-control ">${workBidProject.projectSituation}</textarea>
+					</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"  class="form-control ">${workBidProject.serviceContent}</textarea>
+					</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"  class="form-control ">${workBidProject.remarks}</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 width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:forEach items="${workBidProject.workAttachments}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+													   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+													   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+													   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+													   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>价格附件信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable2" 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_attachment2">
+						<c:forEach items="${workBidProject.workAttachmentsprice}" var = "workClientAttachment" varStatus="status">
+							<tr>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+													   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+													   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+													   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+													   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>招投标附件信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable3" 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_attachment3">
+						<c:forEach items="${workBidProject.workAttachmentsbid}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+													   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+													   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+													   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+													   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>开标附件信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+
+					<table id="upTable4" 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_attachment4">
+						<c:forEach items="${workBidProject.workAttachmentsopenbid}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+													   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+													   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+													   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+													   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>审批意见</h2></div>
+				<div class="layui-item layui-col-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="${workBidProject.act.procInsId}"/>
+					<act:histoicFlow procInsId="${workBidProject.act.procInsId}"/>
+				</div>
+			</div>
+
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 693 - 0
src/main/webapp/webpage/modules/workbidproject/workBidProjectzjlAudit.jsp

@@ -0,0 +1,693 @@
+<%@ 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(obj == 1){
+                $('#flag').val('yes');
+            }else{
+                $('#flag').val('no');
+            }
+            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: '#registrationDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#bidDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#trialDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#purchaseDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#refundDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#giveDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+            $("#attachment_btn2").click(function () {
+                $("#attachment_file2").click();
+            });
+            $("#attachment_btn3").click(function () {
+                $("#attachment_file3").click();
+            });
+            $("#attachment_btn4").click(function () {
+                $("#attachment_file4").click();
+            });
+            /*var isExt = "${workBidProject.isExt}";
+				    if(isExt==0){
+				        $("#contact").show();
+				        $("#btnAdd1").hide();
+				        //$("#btnAdd2").show();
+				        $("#extContact").hide();
+				    }else{
+				        $("#extContact").show();
+				        $("#btnAdd1").show();
+				        //$("#btnAdd2").hide();
+				        $("#contact").hide();
+				    }*/
+
+        });
+        function insertTitle(tValue){
+            var list = "${workBidProject.workAttachments}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "95";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+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 insertTitle2(tValue){
+            var list = "${workBidProject.workAttachmentsprice}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file2")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "96";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment2";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        function insertTitle3(tValue){
+            var list = "${workBidProject.workAttachmentsbid}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file3")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "97";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment3";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        function insertTitle4(tValue){
+            var list = "${workBidProject.workAttachmentsopenbid}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file4")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "98";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workBidProject/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment4";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        /*function addRow(list, idx, workClientLinkmanTpl, row) {
+
+            $(list).append(Mustache.render(workClientLinkmanTpl, {
+                idx: idx, delBtn: true, row: row
+            }));
+            $(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).parent().parent().hide();
+                $(obj).html("&divide;").attr("title", "撤回删除");
+                $(obj).parent().parent().addClass("error");
+            }else if(delFlag.val() == "1"){
+                delFlag.val("0");
+                $(obj).html("&times;").attr("title", "删除");
+                $(obj).parent().parent().removeClass("error");
+            }
+        }
+
+	</script>
+</head>
+<body >
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="workBidProject" action="${ctx}/workbidproject/workBidProject/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"/>
+
+			<div class="form-group layui-row first lw16">
+				<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" readonly="true" class="form-control required layui-input" value="${workBidProject.projectName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<input path="projectNumber" htmlEscape="false" readonly="true" class="form-control layui-input" value="${workBidProject.projectNumber}"/>
+							<span class="input-group-btn">
+                            <label class="form-status"><c:choose><c:when test="${not empty workBidProject.status}">${fns:getDictLabel(workBidProject.status, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                         </span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>工程分类:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.projectType, 'contract_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">类型说明:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.typeExplain}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目来源:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.projectSource, 'bidProjectSource', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">来源说明:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.sourceExplain}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目规模:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.projectScale}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">规模类型:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.scaleType, 'scale_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">规模单位:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.scaleUnit, 'scale_unit', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投资额(万元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatNumber value="${workBidProject.investMoney}" pattern="#,#00.00"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">是否外部招标单位:</label>
+					<div class="layui-input-block">
+						<c:choose>
+							<c:when test="${workBidProject.isExt == '1'}">
+								<input htmlEscape="false" readonly="true" class="form-control layui-input" value="系统外招标单位" />
+							</c:when>
+							<c:otherwise>
+								<input htmlEscape="false" readonly="true" class="form-control layui-input" value="系统内招标单位" />
+							</c:otherwise>
+						</c:choose>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>招标单位:</label>
+					<div class="layui-input-block with-icon">
+						<c:choose>
+							<c:when test="${workBidProject.isExt == '1'}">
+								<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.extCompany}"/>
+							</c:when>
+							<c:otherwise>
+								<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.bidCompany.name}"/>
+							</c:otherwise>
+						</c:choose>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">招标编号:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workBidProject.bidNumber}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">所属部门:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workBidProject.officeName}"/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>联系人</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable2" class="table table-bordered table-condensed details no-bottom-margin">
+						<thead>
+						<tr>
+							<th width="18%"><span class="require-item">*</span>联系人姓名</th>
+							<th width="13%">部门</th>
+							<th width="13%">职务</th>
+							<th width="13%">QQ</th>
+							<th width="16%"><span class="require-item">*</span>联系方式1</th>
+							<th width="16%">联系方式2</th>
+							<th width="13%">E-mail</th>
+						</tr>
+						</thead>
+						<tbody id="workClientLinkmanList">
+						<c:forEach items="${workBidProject.workClientLinkmanList}" var="workClientLinkman" varStatus="status">
+							<tr>
+								<td>${workClientLinkman.name}</td>
+								<td>${workClientLinkman.office}</td>
+								<td>${workClientLinkman.position}</td>
+								<td>${workClientLinkman.qq}</td>
+								<td>${workClientLinkman.linkPhone}</td>
+								<td>${workClientLinkman.linkMobile}</td>
+								<td>${workClientLinkman.email}</td>
+							</tr>
+						</c:forEach>
+						<c:if test="${empty workBidProject.workClientLinkmanList}">
+							<tr>
+								<td colspan="8">暂无数据</td>
+							</tr>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>招标代理机构</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable3" class="table table-bordered table-condensed details no-bottom-margin">
+						<thead>
+						<tr>
+							<th width="20%"><span class="require-item">*</span>机构名称</th>
+							<th width="20%">姓名</th>
+							<th width="20%"><span class="require-item">*</span>联系人电话</th>
+							<th width="20%">QQ</th>
+							<th width="22%">E-mail</th>
+						</tr>
+						</thead>
+						<tbody id="workClientLinkmanLists">
+						<c:forEach items="${workBidProject.workClientLinkmanLists}" var="workClientLinkman" varStatus="status">
+							<tr>
+								<td>${workClientLinkman.office}</td>
+								<td>${workClientLinkman.name}</td>
+								<td>${workClientLinkman.linkPhone}</td>
+								<td>${workClientLinkman.qq}</td>
+								<td>${workClientLinkman.email}</td>
+							</tr>
+						</c:forEach>
+						<c:if test="${empty workBidProject.workClientLinkmanList}">
+							<tr>
+								<td colspan="8">暂无数据</td>
+							</tr>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row lw16">
+				<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">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.registrationDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>投标日期:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.bidDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">资审日期:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.trialDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">资格审查:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getDictLabel(workBidProject.trialType, 'trial_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">文件费用(元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatNumber value="${workBidProject.documentCost}" pattern="#,#00.00"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金(元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatNumber value="${workBidProject.bidBond}" pattern="#,#00.00"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金形式:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.bondStyle, 'bond_style', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金交付时间:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.giveDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">投标保证金退还时间:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="<fmt:formatDate value="${workBidProject.refundDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目协作部门:</label>
+					<div class="layui-input-block with-icon">
+						<sys:treeselect id="office" name="office.id" value="${workBidProject.office.id}" labelName="office.name"
+										labelValue="${workBidProject.office.name}"
+										title="部门" url="/sys/office/treeDataAll?type=2" 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">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getDictLabel(workBidProject.isBid, 'is_bid', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">业务类型:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${fns:getMainDictLabel(workBidProject.businessType, 'business_type', '')}"/>
+					</div>
+				</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="${workBidProject.subcontractCompany}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label"><span class="require-item">*</span>项目概况:</label>
+					<div class="layui-input-block">
+						<textarea  htmlEscape="false" rows="4" readonly="true" class="form-control ">${workBidProject.projectSituation}</textarea>
+					</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"  class="form-control ">${workBidProject.serviceContent}</textarea>
+					</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"  class="form-control ">${workBidProject.remarks}</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 width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:forEach items="${workBidProject.workAttachments}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>价格附件信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable2" 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_attachment2">
+						<c:forEach items="${workBidProject.workAttachmentsprice}" var = "workClientAttachment" varStatus="status">
+							<tr>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>招投标附件信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable3" 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_attachment3">
+						<c:forEach items="${workBidProject.workAttachmentsbid}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>开标附件信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+
+					<table id="upTable4" 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_attachment4">
+						<c:forEach items="${workBidProject.workAttachmentsopenbid}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+																   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td  class="op-td">
+									<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>审批意见</h2></div>
+				<div class="layui-item layui-col-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="${workBidProject.act.procInsId}"/>
+					<act:histoicFlow procInsId="${workBidProject.act.procInsId}"/>
+				</div>
+			</div>
+
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 171 - 0
src/main/webapp/webpage/modules/workborrowmangement/workBorrowBackAudit.jsp

@@ -0,0 +1,171 @@
+<%@ 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);
+					}
+				}
+			});
+           /* laydate.render({
+                elem: '#borrowDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });*/
+
+		});
+	</script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+		<form:form id="inputForm" modelAttribute="workBorrowBack" action="${ctx}/workborrowmangement/workBorrowBack/saveAudit" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+        <form:hidden path="borrowMangementId"/>
+        <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"/>
+            <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:input path="workBorrowMangement.userName" htmlEscape="false" readonly="true" class="form-control  layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>借用编号:</label>
+                    <div class="layui-input-block">
+                        <div class="input-group">
+                            <form:input path="workBorrowMangement.number" htmlEscape="false"  readonly="true"  class="form-control  layui-input"/>
+                            <span class="input-group-btn">
+                                <label class="form-status"><c:choose><c:when test="${not empty workBorrowBack.workBorrowMangement.state}">${fns:getDictLabel(workBorrowBack.workBorrowMangement.state, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                             </span>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>借用日期:</label>
+                    <div class="layui-input-block">
+                        <input type="text" readonly="true" class="form-control layui-input"
+                               value="<fmt:formatDate value="${workBorrowBack.workBorrowMangement.borrowDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>借用部门:</label>
+                    <div class="layui-input-block">
+                        <form:input path="workBorrowMangement.officeName" htmlEscape="false" readonly="true" class="form-control  layui-input required"/>
+                    </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="workBorrowMangement.borrowFor" cssStyle="resize: none" htmlEscape="false" rows="4"    maxlength="255" class="form-control "/>
+                    </div>
+                </div>
+            </div>
+            <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  double-line"><span class="require-item">*</span>固定资产编号:</label>
+                    <div class="layui-input-block">
+                        <form:input id="assetsNumber" readonly="true" path="workBorrowMangement.assetsNumber" htmlEscape="false" class="form-control required layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>物品名称:</label>
+                    <div class="layui-input-block">
+                        <form:input id="itemName" readonly="true" path="workBorrowMangement.itemName" htmlEscape="false" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>物品分类:</label>
+                    <div class="layui-input-block">
+                        <form:input id="itemType" readonly="true" path="workBorrowMangement.itemType" htmlEscape="false" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>物品编号:</label>
+                    <div class="layui-input-block">
+                        <form:input id="itemNumber" readonly="true" path="workBorrowMangement.itemNumber" htmlEscape="false" class="form-control  layui-input "/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>规格型号:</label>
+                    <div class="layui-input-block">
+                        <form:input id="itemModel" readonly="true" path="workBorrowMangement.itemModel" htmlEscape="false" class="form-control layui-input "/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>计量单位:</label>
+                    <div class="layui-input-block">
+                        <form:input id="itemPrimaryUnit" readonly="true" path="workBorrowMangement.itemPrimaryUnit" htmlEscape="false" class="form-control  layui-input "/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12  ">
+                    <label class="layui-form-label">归还状态:</label>
+                    <div class="layui-input-block">
+                        <form:input id="backState" readonly="true" path="workBorrowMangement.backState" value="0" htmlEscape="false" class="form-control  hidden layui-input "/>
+                        <form:input id="" readonly="true" path="" htmlEscape="false" value="未归还" class="form-control  layui-input "/>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>审批意见</h2></div>
+                <div class="layui-item layui-col-xs12 with-textarea" >
+                    <label class="layui-form-label">审批意见:</label>
+                    <div class="layui-input-block">
+                        <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="${workBorrowBack.act.procInsId}"/>
+                    <act:histoicFlow procInsId="${workBorrowBack.act.procInsId}"/>
+                </div>
+            </div>
+
+            <div class="form-group layui-row page-end"></div>
+	</form:form>
+    </div>
+</div>
+</body>
+</html>

+ 123 - 0
src/main/webapp/webpage/modules/workborrowmangement/workBorrowBackView.jsp

@@ -0,0 +1,123 @@
+<%@ 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() {
+
+            if($("#backState").val()=="0"){
+                $("#backState").val("未归还");
+            }else if(($("#backState").val()=="1")){
+                $("#backState").val("已归还")
+            }else if(($("#backState").val()=="2")){
+                $("#backState").val("归还中")
+            }
+           /* laydate.render({
+                elem: '#borrowDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });*/
+
+        });
+
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container view-form">
+		<form:form id="inputForm" modelAttribute="workBorrowBack" action="${ctx}/workborrowmangement/workBorrowMangement/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"><span class="require-item">*</span>借用人:</label>
+					<div class="layui-input-block">
+						<form:input id="borrower" path="workBorrowMangement.userName" readonly="true" htmlEscape="false" class="form-control  layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>借用编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<form:input path="workBorrowMangement.number" htmlEscape="false"  readonly="true"  class="form-control  layui-input"/>
+							<span class="input-group-btn">
+                                <label class="form-status"><c:choose><c:when test="${not empty workBorrowBack.workBorrowMangement.state}">${fns:getDictLabel(workBorrowBack.workBorrowMangement.state, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                             </span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>借用日期:</label>
+					<div class="layui-input-block">
+						<input id="borrowDate" name="workBorrowMangement.borrowDate"  readonly="readonly" type="text"  maxlength="20" class="laydate-icondate form-control layer-date  layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workBorrowBack.workBorrowMangement.borrowDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>借用部门:</label>
+					<div class="layui-input-block">
+						<form:input id="officeName" readonly="true" path="workBorrowMangement.officeName" 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="workBorrowMangement.borrowFor" cssStyle="resize: none" htmlEscape="false" rows="4"    maxlength="255" class="form-control "/>
+					</div>
+				</div>
+			</div>
+			<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  double-line"><span class="require-item">*</span>固定资产编号:</label>
+					<div class="layui-input-block">
+						<form:input id="assetsNumber" path="workBorrowMangement.assetsNumber" readonly="true" htmlEscape="false" class="form-control required layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>物品名称:</label>
+					<div class="layui-input-block">
+						<form:input id="itemName" readonly="true" path="workBorrowMangement.itemName" htmlEscape="false" class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>物品分类:</label>
+					<div class="layui-input-block">
+						<form:input id="itemType" readonly="true" path="workBorrowMangement.itemType" htmlEscape="false" class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>物品编号:</label>
+					<div class="layui-input-block">
+						<form:input id="itemNumber" readonly="true" path="workBorrowMangement.itemNumber" htmlEscape="false" class="form-control  layui-input "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>规格型号:</label>
+					<div class="layui-input-block">
+						<form:input id="itemModel" readonly="true" path="workBorrowMangement.itemModel" htmlEscape="false" class="form-control layui-input "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>计量单位:</label>
+					<div class="layui-input-block">
+						<form:input id="itemPrimaryUnit" readonly="true" path="workBorrowMangement.itemPrimaryUnit" htmlEscape="false" class="form-control  layui-input "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12  ">
+					<label class="layui-form-label">归还状态:</label>
+					<div class="layui-input-block">
+						<form:input id="backState" readonly="true" path="workBorrowMangement.backState" htmlEscape="false" class="form-control  layui-input "/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 187 - 0
src/main/webapp/webpage/modules/workborrowmangement/workBorrowMangementAudit.jsp

@@ -0,0 +1,187 @@
+<%@ 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);
+					}
+				}
+			});
+           /* laydate.render({
+                elem: '#borrowDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });*/
+
+		});
+        function setValue(obj){
+            $("#itemName").val(obj.itemName);
+            $("#itemType").val(obj.type);
+            $("#itemNumber").val(obj.itemNumber);
+            $("#itemModel").val(obj.model);
+            $("#itemPrimaryUnit").val(obj.primaryUnit);
+        }
+	</script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+		<form:form id="inputForm" modelAttribute="workBorrowMangement" action="${ctx}/workborrowmangement/workBorrowMangement/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"/>
+            <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:input path="userName" htmlEscape="false" readonly="true" class="form-control  layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>借用编号:</label>
+                    <div class="layui-input-block">
+                        <div class="input-group">
+                            <form:input path="number" htmlEscape="false"  readonly="true"  class="form-control  layui-input"/>
+                            <span class="input-group-btn">
+                                <label class="form-status"><c:choose><c:when test="${not empty workBorrowMangement.state}">${fns:getDictLabel(workBorrowMangement.state, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                             </span>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>借用日期:</label>
+                    <div class="layui-input-block">
+                        <input type="text" readonly="readonly" class="form-control layui-input"
+                               value="<fmt:formatDate value="${workBorrowMangement.borrowDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>借用部门:</label>
+                    <div class="layui-input-block">
+                        <form:input path="officeName" htmlEscape="false" readonly="true" class="form-control  layui-input required"/>
+                    </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="borrowFor" cssStyle="resize: none"  readonly="true" htmlEscape="false" rows="4"    maxlength="255" class="form-control "/>
+                    </div>
+                </div>
+            </div>
+            <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  double-line"><span class="require-item">*</span>固定资产编号:</label>
+                    <c:choose>
+                    <c:when test="${workBorrowMangement.act.taskDefKey eq 'xzzg'}">
+                    <div class="layui-input-block with-icon">
+                        <sys:gridselectItem url="${ctx}/workitem/workItem/selectItem" id="fixedAssetsNumber" name="fixedAssetsNumber"  value="${workBorrowMangement.fixedAssetsNumber}"  title="选择固定资产" labelName="assetsNumber"
+                                            labelValue="${workBorrowMangement.assetsNumber}" isOne="true" cssClass="form-control layui-input required" fieldLabels="固定资产" fieldKeys="name" searchLabel="物品名称" searchKey="name" ></sys:gridselectItem>
+                    </div>
+                    </c:when>
+                    <c:otherwise>
+                        <div class="layui-input-block">
+                            <form:input id="assetsNumber"  readonly="true" path="assetsNumber" htmlEscape="false" class="form-control required layui-input"/>
+                        </div>
+                    </c:otherwise>
+                    </c:choose>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>物品名称:</label>
+                    <div class="layui-input-block">
+                        <form:input id="itemName" readonly="true" path="itemName" htmlEscape="false" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>物品分类:</label>
+                    <div class="layui-input-block">
+                        <form:input id="itemType" readonly="true" path="itemType" htmlEscape="false" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>物品编号:</label>
+                    <div class="layui-input-block">
+                        <form:input id="itemNumber" readonly="true" path="itemNumber" htmlEscape="false" class="form-control  layui-input "/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>规格型号:</label>
+                    <div class="layui-input-block">
+                        <form:input id="itemModel" readonly="true" path="itemModel" htmlEscape="false" class="form-control layui-input "/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>计量单位:</label>
+                    <div class="layui-input-block">
+                        <form:input id="itemPrimaryUnit" readonly="true" path="itemPrimaryUnit" htmlEscape="false" class="form-control  layui-input "/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12  ">
+                    <label class="layui-form-label">归还状态:</label>
+                    <div class="layui-input-block">
+                        <form:input id="backState" readonly="true" path="backState" value="0" htmlEscape="false" class="form-control  hidden layui-input "/>
+                        <form:input id="" readonly="true" path="" htmlEscape="false" value="未归还" class="form-control  layui-input "/>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>审批意见</h2></div>
+                <div class="layui-item layui-col-xs12 with-textarea" >
+                    <label class="layui-form-label">审批意见:</label>
+                    <div class="layui-input-block">
+                        <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="${workBorrowMangement.act.procInsId}"/>
+                    <act:histoicFlow procInsId="${workBorrowMangement.act.procInsId}"/>
+                </div>
+            </div>
+
+            <div class="form-group layui-row page-end"></div>
+	</form:form>
+    </div>
+</div>
+</body>
+</html>

+ 168 - 0
src/main/webapp/webpage/modules/workborrowmangement/workBorrowMangementForm.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">
+        var validateForm;
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(obj == 2){
+                $("#inputForm").attr("action","${ctx}/workborrowmangement/workBorrowMangement/store");
+            }else{
+                $("#inputForm").attr("action","${ctx}/workborrowmangement/workBorrowMangement/save");
+            }
+            if(validateForm.form()){
+                $("#inputForm").submit();
+                return true;
+            }else {
+                parent.layer.msg("信息未填写完整!", {icon: 5});
+            }
+            return false;
+        }
+        $(document).ready(function() {
+            checkContentKeyUp('borrowFor',255);
+            if($("#borrowDate").val()==null || $("#borrowDate").val()==''){
+                $("#borrowDate").val(getNowFormatDate());
+            }
+            laydate.render({
+                elem: '#borrowDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            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 getNowFormatDate() {
+            var date = new Date();
+            var seperator1 = "-";
+            var seperator2 = ":";
+            var month = date.getMonth() + 1;
+            var strDate = date.getDate();
+            month = (month < 10)?"0"+month:month;
+            strDate = (strDate < 10)?"0"+strDate:strDate;
+            var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate;
+            return currentdate;
+        }
+
+
+        function setValue(obj){
+            $("#itemName").val(obj.itemName);
+            $("#itemType").val(obj.type);
+            $("#itemNumber").val(obj.itemNumber);
+            $("#itemModel").val(obj.model);
+            $("#itemPrimaryUnit").val(obj.primaryUnit);
+        }
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="workBorrowMangement" action="${ctx}/workborrowmangement/workBorrowMangement/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"><span class="require-item">*</span>借用人:</label>
+					<div class="layui-input-block">
+						<form:input id="borrower" path="userName" readonly="true" htmlEscape="false" class="form-control  layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>借用编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<form:input path="number" htmlEscape="false"  readonly="true"  class="form-control  layui-input"/>
+							<span class="input-group-btn">
+                                <label class="form-status"><c:choose><c:when test="${not empty workBorrowMangement.state}">${fns:getDictLabel(workBorrowMangement.state, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                             </span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>借用日期:</label>
+					<div class="layui-input-block">
+						<input id="borrowDate" name="borrowDate" type="text"  maxlength="20" class="laydate-icondate form-control layer-date  layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workBorrowMangement.borrowDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>借用部门:</label>
+					<div class="layui-input-block">
+						<form:input id="officeName" readonly="true" path="officeName" 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="borrowFor" htmlEscape="false" rows="4" onkeyup="checkContentKeyUp('borrowFor',255);"   maxlength="255" class="form-control "/>
+					</div>
+					<span id="contentMsg" style="float: right"></span>
+				</div>
+			</div>
+			<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  double-line"><span class="require-item">*</span>固定资产编号:</label>
+					<div class="layui-input-block with-icon">
+						<sys:gridselectItem url="${ctx}/workitem/workItem/selectItem" id="fixedAssetsNumber" name="fixedAssetsNumber"  value="${workBorrowMangement.fixedAssetsNumber}"  title="选择固定资产" labelName="assetsNumber"
+											  labelValue="${workBorrowMangement.assetsNumber}" isOne="true" cssClass="form-control layui-input required" fieldLabels="固定资产" fieldKeys="name" searchLabel="物品名称" searchKey="name" ></sys:gridselectItem>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>物品名称:</label>
+					<div class="layui-input-block">
+						<form:input id="itemName" readonly="true" path="itemName" htmlEscape="false" class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>物品分类:</label>
+					<div class="layui-input-block">
+						<form:input id="itemType" readonly="true" path="itemType" htmlEscape="false" class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>物品编号:</label>
+					<div class="layui-input-block">
+						<form:input id="itemNumber" readonly="true" path="itemNumber" htmlEscape="false" class="form-control  layui-input "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>规格型号:</label>
+					<div class="layui-input-block">
+						<form:input id="itemModel" readonly="true" path="itemModel" htmlEscape="false" class="form-control layui-input "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>计量单位:</label>
+					<div class="layui-input-block">
+						<form:input id="itemPrimaryUnit" readonly="true" path="itemPrimaryUnit" htmlEscape="false" class="form-control  layui-input "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12  ">
+					<label class="layui-form-label">归还状态:</label>
+					<div class="layui-input-block">
+						<form:input id="backState" readonly="true" path="backState" value="0" htmlEscape="false" class="form-control  hidden layui-input "/>
+						<form:input id="" readonly="true" path="" htmlEscape="false" value="未归还" class="form-control  layui-input "/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 375 - 0
src/main/webapp/webpage/modules/workborrowmangement/workBorrowMangementList.jsp

@@ -0,0 +1,375 @@
+<%@ 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"/>
+	<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="workBorrowMangement" action="${ctx}/workborrowmangement/workBorrowMangement/" 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="borrower" name="borrower" type="text"  maxlength="64" class=" form-control  layui-input laydate-icon" value="${workBorrowMangement.borrower}" />
+								</input>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">借用日期:</label>
+							<div class="layui-input-block">
+								<input id="beginDate" placeholder="开始时间" name="beginDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${workBorrowMangement.beginDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+								<span class="group-sep">-</span>
+								<input id="endDate" placeholder="结束时间" name="endDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${workBorrowMangement.endDate}" pattern="yyyy-MM-dd"/>"/>
+								</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">
+								<form:select path="state" class=" form-control  simple-select">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('audit_state')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</div>
+						</div>
+						<div class="layui-item query athird lw9">
+						<label class="layui-form-label">固定资产编号:</label>
+						<div class="layui-input-block">
+							<input id="assetsNumber" name="assetsNumber" type="text"  maxlength="64" class=" form-control  layui-input laydate-icon" value="${workBorrowMangement.assetsNumber}" />
+							</input>
+						</div>
+					</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">物品名称:</label>
+							<div class="layui-input-block">
+								<input id="itemName" name="itemName" type="text"  maxlength="64" class=" form-control  layui-input laydate-icon" value="${workBorrowMangement.itemName}" />
+								</input>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">规格型号:</label>
+							<div class="layui-input-block">
+								<input id="itemModel" name="itemModel" type="text"  maxlength="64" class=" form-control  layui-input laydate-icon" value="${workBorrowMangement.itemModel}" />
+								</input>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+						<label class="layui-form-label">归还状态:</label>
+						<div class="layui-input-block">
+							<form:select path="backState" class=" form-control  simple-select">
+								<form:option value="" label=""/>
+								<form:option value="0" label="未归还"/>
+								<form:option value="2" label="归还中"/>
+								<form:option value="1" label="已归还"/>
+							</form:select>
+						</div>
+					</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">所属部门:</label>
+							<div class="layui-input-block with-icon">
+								<sys:treeselect id="officeId" name="officeId" value="${workBorrowMangement.officeId}" labelName="officeName" labelValue="${workBorrowMangement.officeName}"
+												title="部门" url="/sys/office/treeDataAll?type=2" cssClass="form-control layui-input" 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">
+					<%--此处按钮样式包括 nav-btn-add nav-btn-refresh nav-btn-import nav-btn-export nav-btn-query nav-btn-reset--%>
+					<shiro:hasPermission name="workborrowmangement:workBorrowMangement:add">
+						<a href="javascript:void(0)" onclick="openDialog('新增借用', '${ctx}/workborrowmangement/workBorrowMangement/form?tabId=1','95%','95%')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i>&nbsp;添加</a>
+					</shiro:hasPermission>
+					<%--<shiro:hasPermission name="workborrowmangement:workBorrowMangement:export">
+						<table:exportExcel url="${ctx}/workborrowmangement/workBorrowMangement/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"></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:'number',align:'center',sort: true, width:120,title: '借用编号', templet:function(d){
+                        var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看借用', '${ctx}/workborrowmangement/workBorrowMangement/view?id=" + d.id + "','95%','95%')\">" +
+                            "<span title=" + d.number + ">" + d.number + "</span></a>";
+                        return xml;
+                    }},
+                {field:'itemName',align:'center', minWidth:150, title: '物品名称',templet:function(d){
+                        return "<span title='"+ d.itemName +"'>" + d.itemName + "</span>";
+                    }}
+                ,{field:'assetsNumber',align:'center',width:150, title: '固定资产编号',templet:function(d){
+                        return "<span title='"+ d.assetsNumber +"'>" + d.assetsNumber + "</span>";
+                    }}
+                ,{field:'itemType',align:'center',width:100, title: '物品分类',templet:function(d){
+                        return "<span title='"+ d.itemType +"'>" + d.itemType + "</span>";
+                    }}
+                ,{field:'itemModel',align:'center',width:150, title: '规格型号',templet:function(d){
+                        return "<span title='"+ d.itemModel +"'>" + d.itemModel + "</span>";
+                    }}
+                ,{field:'borrowDate', align:'center',width:100,title: '借用日期'}
+                ,{field:'userName',align:'center',width:100, title: '借用人',templet:function(d){
+                        return "<span title='"+ d.userName +"'>" + d.userName + "</span>";
+                    }}
+                ,{field:'officeName',align:'center',width:200, title: '所属部门',templet:function(d){
+                        return "<span title='"+ d.officeName +"'>" + d.officeName + "</span>";
+                    }}
+                ,{field:'state',align:'center',width:80, title: '申请状态',templet:function(d){
+                        var st = getAuditState(d.state);
+                        if(st.action)
+                            var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/workborrowmangement/workBorrowMangement/getProcess?id=" + d.id + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                        else
+                            var xml = "<span style=\"cursor:default;\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                        return xml;
+                    }}
+                ,{field:'backState',align:'center',width:100, title: '归还状态', templet:function(d){
+                        return "<span title='"+ d.backState +"'>" + d.backState + "</span>";
+                    }}
+                ,{align:'caozuo',align:'center',title:"操作",width:160,templet:function(d){
+
+                        var xml = "";
+
+                        if(d.canedit != undefined && d.canedit == "1"){
+                            xml +="<a href=\"javascript:void(0)\" onclick=\"openDialog('修改借用', '${ctx}/workborrowmangement/workBorrowMangement/form?id=" + d.id+"','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i>修改</a>"
+                        }
+                        if(d.canmodify != undefined && d.canmodify =="1"){
+                            xml+="<a href=\"#\" onclick=\"openDialogremodify('修改借用', '${ctx}/workborrowmangement/workBorrowMangement/modify?id=" + d.id + "','95%', '95%','','重新申请,关闭')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+                        }
+                        if(d.candelete != undefined && d.candelete == "1"){
+                            xml +="<a href=\"${ctx}/workborrowmangement/workBorrowMangement/delete?id=" + d.id+"\" 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}/workborrowmangement/workBorrowMangement/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>";
+                        }
+                        if(d.canback != undefined && d.canback =="1"){
+                            xml+="<a href=\"${ctx}/workborrowmangement/workBorrowBack/save?id=" + d.id +"\" 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="workBorrowMangement" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "id":"${workBorrowMangement.id}"
+                    ,"number":"${workBorrowMangement.number}"
+                    ,"itemName":"${workBorrowMangement.itemName}"
+                    ,"assetsNumber":"${workBorrowMangement.assetsNumber}"
+                    ,"itemType":"${workBorrowMangement.itemType}"
+                    ,"itemModel":"${workBorrowMangement.itemModel}"
+                    ,"borrowDate":"<fmt:formatDate value="${workBorrowMangement.borrowDate}" pattern="yyyy-MM-dd"/>"
+                    ,"userName":"${workBorrowMangement.userName}"
+                    ,"officeName":"${workBorrowMangement.officeName}"
+                    ,"state":"${workBorrowMangement.state}"
+                    ,"backState":<c:if test="${workBorrowMangement.backState eq '0'}">"未归还"</c:if> <c:if test="${workBorrowMangement.backState eq '1'}">"已归还"</c:if><c:if test="${workBorrowMangement.backState eq '2'}">"归还中"</c:if>
+                    ,"procId":"${workBorrowMangement.processInstanceId}"
+                    <c:if test="${flag == '1' or fns:getUser().id == workBorrowMangement.createBy.id}">
+                    <shiro:hasPermission name="workborrowmangement:workBorrowMangement:edit">,"canedit":<c:choose><c:when test="${workBorrowMangement.state == 1 or workBorrowMangement.state == 3}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    ,"canmodify":<c:choose><c:when test="${workBorrowMangement.state == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </shiro:hasPermission>
+                    <shiro:hasPermission name="workborrowmangement:workBorrowMangement:del">,"candelete":<c:choose><c:when test="${workBorrowMangement.state == 1 or workBorrowMangement.state == 3 or workBorrowMangement.state == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose></shiro:hasPermission>
+                    ,"cancancel":<c:choose><c:when test="${workBorrowMangement.state == 2}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    ,"canback":<c:choose><c:when test="${workBorrowMangement.state == 5 and workBorrowMangement.backState eq '0' and fns:getUser().id == workBorrowMangement.borrower}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </c:if>
+                }
+                </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");
+            }
+        });
+
+        laydate.render({
+            elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            format: 'yyyy-MM-dd',
+            type : 'date'
+        });
+
+        laydate.render({
+            elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            format: 'yyyy-MM-dd',
+            type : 'date'
+        });
+
+    });
+    function switchInput(obj){
+        $("#"+obj).show();
+        $("#"+obj).siblings().hide();
+    }
+
+    function openDialogremodify(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 openDialog(title,url,width,height,target) {
+        if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+            width = 'auto';
+            height = 'auto';
+        } else {//如果是PC端,根据用户设置的width和height显示。
+        }
+        top.layer.open({
+            type: 2,
+            area: [width, height],
+            title: title,
+            maxmin: true, //开启最大化最小化按钮
+            content: url,
+            skin: 'three-btns',
+            btn: ['送审', '暂存', '关闭'],
+            btn1: function(index, layero){
+                var body = top.layer.getChildFrame('body', index);
+                var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                var inputForm = body.find('#inputForm');
+                var top_iframe;
+                if(target){
+                    top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                }else{
+                    top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                }
+                inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                if(iframeWin.contentWindow.doSubmit(1) ){
+                    // top.layer.close(index);//关闭对话框。
+                    setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                }
+            },
+            btn2:function(index,layero){
+                var body = top.layer.getChildFrame('body', index);
+                var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                var inputForm = body.find('#inputForm');
+                var top_iframe;
+                if(target){
+                    top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                }else{
+                    top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                }
+                inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                if(iframeWin.contentWindow.doSubmit(2) ){
+                    // top.layer.close(index);//关闭对话框。
+                    setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                }else {
+                    return false;
+                }
+            },
+            btn3: function (index) {
+            }
+        });
+    }
+</script>
+</body>
+</html>

+ 152 - 0
src/main/webapp/webpage/modules/workborrowmangement/workBorrowMangementModifyApply.jsp

@@ -0,0 +1,152 @@
+<%@ 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() {
+            checkContentKeyUp('borrowFor',255);
+			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: '#borrowDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+		});
+        function setValue(obj){
+            $("#itemName").val(obj.itemName);
+            $("#itemType").val(obj.type);
+            $("#itemNumber").val(obj.itemNumber);
+            $("#itemModel").val(obj.model);
+            $("#itemPrimaryUnit").val(obj.primaryUnit);
+        }
+	</script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+		<form:form id="inputForm" modelAttribute="workBorrowMangement" action="${ctx}/workborrowmangement/workBorrowMangement/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"/>
+            <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:input path="userName" htmlEscape="false" readonly="true" class="form-control  layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>借用编号:</label>
+                    <div class="layui-input-block">
+                        <div class="input-group">
+                            <form:input path="number" htmlEscape="false"  readonly="true"  class="form-control  layui-input"/>
+                            <span class="input-group-btn">
+                                <label class="form-status"><c:choose><c:when test="${not empty workBorrowMangement.state}">${fns:getDictLabel(workBorrowMangement.state, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                             </span>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>借用日期:</label>
+                    <div class="layui-input-block">
+                        <input type="text" readonly="readonly" class="form-control layui-input"
+                               value="<fmt:formatDate value="${workBorrowMangement.borrowDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>借用部门:</label>
+                    <div class="layui-input-block">
+                        <form:input path="officeName" htmlEscape="false" readonly="true" class="form-control  layui-input required"/>
+                    </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="borrowFor" htmlEscape="false" rows="4"  onkeyup="checkContentKeyUp('borrowFor',255);"  maxlength="255" class="form-control "/>
+                    </div>
+                    <span id="contentMsg" style="float: right"></span>
+                </div>
+            </div>
+            <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  double-line"><span class="require-item">*</span>固定资产编号:</label>
+                    <div class="layui-input-block with-icon">
+                        <sys:gridselectItem url="${ctx}/workitem/workItem/selectItem" id="fixedAssetsNumber" name="fixedAssetsNumber"  value="${workBorrowMangement.fixedAssetsNumber}"  title="选择固定资产" labelName="assetsNumber"
+                                            labelValue="${workBorrowMangement.assetsNumber}" isOne="true" cssClass="form-control layui-input required" fieldLabels="固定资产" fieldKeys="name" searchLabel="物品名称" searchKey="name" ></sys:gridselectItem>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>物品名称:</label>
+                    <div class="layui-input-block">
+                        <form:input id="itemName" readonly="true" path="itemName" htmlEscape="false" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>物品分类:</label>
+                    <div class="layui-input-block">
+                        <form:input id="itemType" readonly="true" path="itemType" htmlEscape="false" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>物品编号:</label>
+                    <div class="layui-input-block">
+                        <form:input id="itemNumber" readonly="true" path="itemNumber" htmlEscape="false" class="form-control  layui-input "/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>规格型号:</label>
+                    <div class="layui-input-block">
+                        <form:input id="itemModel" readonly="true" path="itemModel" htmlEscape="false" class="form-control layui-input "/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>计量单位:</label>
+                    <div class="layui-input-block">
+                        <form:input id="itemPrimaryUnit" readonly="true" path="itemPrimaryUnit" htmlEscape="false" class="form-control  layui-input "/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12  ">
+                    <label class="layui-form-label">归还状态:</label>
+                    <div class="layui-input-block">
+                        <form:input id="backState" readonly="true" path="backState" value="0" htmlEscape="false" class="form-control  hidden layui-input "/>
+                        <form:input id="" readonly="true" path="" htmlEscape="false" value="未归还" class="form-control  layui-input "/>
+                    </div>
+                </div>
+            </div>
+	</form:form>
+    </div>
+</div>
+</body>
+</html>

+ 15 - 0
src/main/webapp/webpage/modules/workborrowmangement/workBorrowMangementTask.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="container form layui-form">
+	<act:flowChart procInsId="${processInstanceId}"/>
+	<act:histoicFlow procInsId="${processInstanceId}"/>
+</div>
+</body>
+</html>
+

+ 123 - 0
src/main/webapp/webpage/modules/workborrowmangement/workBorrowMangementView.jsp

@@ -0,0 +1,123 @@
+<%@ 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() {
+
+            if($("#backState").val()=="0"){
+                $("#backState").val("未归还");
+            }else if(($("#backState").val()=="1")){
+                $("#backState").val("已归还")
+            }else if(($("#backState").val()=="2")){
+                $("#backState").val("归还中")
+            }
+            /*laydate.render({
+                elem: '#borrowDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });*/
+
+        });
+
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container view-form">
+		<form:form id="inputForm" modelAttribute="workBorrowMangement" action="${ctx}/workborrowmangement/workBorrowMangement/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"><span class="require-item">*</span>借用人:</label>
+					<div class="layui-input-block">
+						<form:input id="borrower" path="userName" readonly="true" htmlEscape="false" class="form-control  layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>借用编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<form:input path="number" htmlEscape="false"  readonly="true"  class="form-control  layui-input"/>
+							<span class="input-group-btn">
+                                <label class="form-status"><c:choose><c:when test="${not empty workBorrowMangement.state}">${fns:getDictLabel(workBorrowMangement.state, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                             </span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>借用日期:</label>
+					<div class="layui-input-block">
+						<input id="borrowDate"  readonly="readonly" name="borrowDate" type="text"  maxlength="20" class="laydate-icondate form-control layer-date  layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workBorrowMangement.borrowDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>借用部门:</label>
+					<div class="layui-input-block">
+						<form:input id="officeName" readonly="true" path="officeName" 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="borrowFor" cssStyle="resize: none" htmlEscape="false" rows="4"    maxlength="255" class="form-control "/>
+					</div>
+				</div>
+			</div>
+			<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  double-line"><span class="require-item">*</span>固定资产编号:</label>
+					<div class="layui-input-block">
+						<form:input id="assetsNumber" readonly="true" path="assetsNumber" htmlEscape="false" class="form-control required layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>物品名称:</label>
+					<div class="layui-input-block">
+						<form:input id="itemName" readonly="true" path="itemName" htmlEscape="false" class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>物品分类:</label>
+					<div class="layui-input-block">
+						<form:input id="itemType" readonly="true" path="itemType" htmlEscape="false" class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>物品编号:</label>
+					<div class="layui-input-block">
+						<form:input id="itemNumber" readonly="true" path="itemNumber" htmlEscape="false" class="form-control  layui-input "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>规格型号:</label>
+					<div class="layui-input-block">
+						<form:input id="itemModel" readonly="true" path="itemModel" htmlEscape="false" class="form-control layui-input "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>计量单位:</label>
+					<div class="layui-input-block">
+						<form:input id="itemPrimaryUnit" readonly="true" path="itemPrimaryUnit" htmlEscape="false" class="form-control  layui-input "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12  ">
+					<label class="layui-form-label">归还状态:</label>
+					<div class="layui-input-block">
+						<form:input id="backState" readonly="true" path="backState" htmlEscape="false" class="form-control  layui-input "/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 119 - 0
src/main/webapp/webpage/modules/workcalendar/workCalendarDayList.jsp

@@ -0,0 +1,119 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作日历管理</title>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
+    <style>
+        *{
+            margin:0;
+            padding: 0;
+        }
+        .daylist{
+            width: 400px;
+        }
+        a{
+            text-decoration: none;
+            color:#000;
+        }
+        .dayHead{
+            width: 100%;
+            height: 45px;
+            line-height: 45px;
+            background: #0f92fb;
+            position: absolute;
+            top:-10px;
+            left:-10px;
+            color:#fff;
+            text-align: left;
+            padding-left: 5%;
+            font-family: '微软雅黑';
+        }
+        #fancybox-close{
+            position: absolute;
+            top:10px;
+            right:0;
+            background-image: none;
+            font-size: 25px;
+            color:#fff;
+        }
+        .daycont{
+            width: 100%;
+            margin-top: 55px;
+        }
+        .cltime{
+            width: 10%;
+            float:left;
+            height: 10px;
+        }
+        .clcon{
+            width:85%;
+            margin-left:5%;
+            text-align: left;
+            display: inline-block;
+        }
+    </style>
+    <script type="text/javascript">
+        function openDialogDelete(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: ['删除', '关闭'],
+                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
+                    }
+
+                },
+                btn2: function (index) {
+                }
+            });
+        }
+        $('#fancybox-close').text('×');
+    </script>
+</head>
+<body>
+<div>
+<%--<div><fmt:formatDate value="${workCalendar.startDate}" pattern="MM-dd"/></div>--%>
+<div class="daylist">
+    <h3 class="dayHead">主题</h3>
+    <div class="daycont">
+        <c:forEach items="${list}" var="calendar">
+            <div style="width: inherit;">
+                <a class="attention-info" href=javascript:void(0); onclick="openDialogDelete('查看工作日历', '${ctx}/workcalendar/workCalendar/view?id=${calendar.id}','95%','95%')">
+                    <span class="cltime"><fmt:formatDate value="${calendar.remindTime}" pattern="HH:mm"/></span>
+                    <span class="clcon">${calendar.subject}</span>
+                </a><div style="clear: both;"></div>
+            </div>
+        </c:forEach>
+    </div>
+
+</divcla>
+</div>
+</body>
+</html>

+ 311 - 0
src/main/webapp/webpage/modules/workcalendar/workCalendarForm.jsp

@@ -0,0 +1,311 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作日历管理</title>
+	<meta name="decorator" content="default"/>
+    <link href="${ctxStatic}/bootstrap-select-1.12.4/css/bootstrap-select.min.css" rel="stylesheet" />
+    <script src="${ctxStatic}/bootstrap-select-1.12.4/js/bootstrap-select.min.js"></script>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+              var val = $("#remindTime").val();
+              if(val!=undefined&&val!=null&&val!=''){
+                  var d1 = new Date();
+                  var format = d1.format('yyyy-MM-dd');
+                  $("#remindTime").val(format+" "+val+":00");
+              }
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+
+        Date.prototype.format = function(fmt) {
+            var o = {
+                "M+" : this.getMonth()+1,                 //月份
+                "d+" : this.getDate(),                    //日
+                "h+" : this.getHours(),                   //小时
+                "m+" : this.getMinutes(),                 //分
+                "s+" : this.getSeconds(),                 //秒
+                "q+" : Math.floor((this.getMonth()+3)/3), //季度
+                "S"  : this.getMilliseconds()             //毫秒
+            };
+            if(/(y+)/.test(fmt)) {
+                fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
+            }
+            for(var k in o) {
+                if(new RegExp("("+ k +")").test(fmt)){
+                    fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
+                }
+            }
+            return fmt;
+        }
+		$(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
+            });
+            laydate.render({
+                elem: '#remindTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type:'time',
+                format:'HH:mm'
+            });
+
+            repeatChg();
+            remindChg();
+
+            {
+                var val = $("#repeatType").val();
+                if(val==1){
+                    var arr="${workCalendar.repeatDate}".split(',');
+                    $('#repeatDate').selectpicker('val',arr);
+                }
+            }
+		});
+		function repeatChg() {
+            var val = $("#repeatType").val();
+            if(val==''||val==0){
+                $('.month').show();
+                $('.selectpicker').selectpicker('hide');
+                $('.selectpicker').selectpicker('deselectAll');
+                $(".month").val("");
+                $(".month").attr("disabled","disabled");
+            }else {
+                if(val==1){
+                    $('.selectpicker').selectpicker('show');
+                    $('.month').hide();
+                }else {
+                    $('.selectpicker').selectpicker('hide');
+                    $('.selectpicker').selectpicker('deselectAll');
+                    $('.month').show();
+                    $('.month').removeAttr("disabled");
+                }
+            }
+        }
+        function remindChg() {
+            var v = $("#remind").val();
+            if(v==1){
+                $("#remindTime").removeAttr("disabled");
+            }else {
+                $("#remindTime").val("");
+                $("#remindTime").attr("disabled","disabled");
+            }
+        }
+	</script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+		<form:form id="inputForm" modelAttribute="workCalendar" action="${ctx}/workcalendar/workCalendar/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+            <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:input path="subject" htmlEscape="false" maxlength="64"  class="form-control required layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>地    点:</label>
+                    <div class="layui-input-block">
+                        <form:input path="address" htmlEscape="false" maxlength="64" class="form-control required 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="content" htmlEscape="false" rows="3" maxlength="512" onkeyup="checkContentKeyUp('content',512);" class="form-control"/>
+                    </div>
+                    <span id="contentMsg" style="float: right"></span>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>开始日期:</label>
+                    <div class="layui-input-block">
+                        <input id="startDate" name="startDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                               value="<fmt:formatDate value="${workCalendar.startDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">结束日期:</label>
+                    <div class="layui-input-block">
+                        <input id="endDate" name="endDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon"
+                               value="<fmt:formatDate value="${workCalendar.endDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>重复类型:</label>
+                    <div class="layui-input-block">
+                            <form:select path="repeatType" class="form-control simple-select required query-group" onchange="repeatChg();">
+                                <form:options items="${fns:getDictList('calender_repeat_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                            </form:select>
+                            <span class="group-sep"></span>
+                            <select name="repeatDate" id="repeatDate" class="form-control selectpicker required layui-input query-group" multiple="true" >
+                                <c:forEach items="${fns:getDictList('week_day')}" var="item">
+                                    <option value="${item.label}">${item.label}</option>
+                                </c:forEach>
+                            </select>
+                            <form:select path="repeatDate" class="form-control required month query-group simple-select">
+                                <form:option value="" label=""/>
+                                <form:options items="${fns:getDictList('month_day')}" itemLabel="label" itemValue="label" 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:select path="remind" class="form-control simple-select query-group required" onchange="remindChg();">
+                                <form:options items="${fns:getDictList('calender_remind_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                            </form:select>
+                            <span class="group-sep"></span>
+                            <input name="remindTime" id="remindTime" htmlEscape="false" class="laydate-icondate form-control layui-input layer-date laydate-icon required query-group"
+                                        value="<fmt:formatDate value="${workCalendar.remindTime}" pattern="HH:mm"/>"/>
+                    </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">&nbsp;&nbsp;
+                        <form:radiobutton class="usccClass i-checks required" path="sendDaily" value="1" label="是"></form:radiobutton>
+                        &nbsp;&nbsp;
+                        <form:radiobutton class="usccClass i-checks required" path="sendDaily" value="2" label="否"></form:radiobutton>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">创 建 人:</label>
+                    <div class="layui-input-block">
+                        <form:input path="createBy.name" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                        <form:hidden path="createBy.id" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>日历共享人</h2></div>
+                <div class="layui-item nav-btns">
+                    <sys:treeselectusers id="users" name="" value="" labelName="memberNameStr" labelValue=""
+                                         retnParent="true" title="用户" url="/sys/office/treeDataBranchOffice?type=3" checked="true" cssClass="form-control required" allowClear="true" notAllowSelectParent="true"/>
+                </div>
+                <table id="userTable" class="table table-bordered table-condensed details">
+                    <thead>
+                    <tr>
+                        <th class="hide"></th>
+                        <th>姓名</th>
+                        <th>部门</th>
+                        <th>职级</th>
+                        <th>操作</th>
+                    </tr>
+                    </thead>
+                    <tbody id="userTableList">
+                    </tbody>
+                </table>
+                <script type="text/template" id="userTpl">//<!--
+                    <tr id="userList{{idx}}">
+                        <td class="hide">
+                            <input id="userList{{idx}}_id" name="userList[{{idx}}].id" readonly="true" value="{{row.id}}" type="hidden" class="form-control userId"/>
+                        </td>
+                        <td>
+                        {{row.name}}
+                        </td>
+                        <td>
+                        {{row.officeName}}
+                        </td>
+                        <td>
+                        </td>
+                        <td class="text-center op-td">
+                                    <a href=javascript:void(0); onclick="delRow(this, '#userList{{idx}}')"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
+                        </td>
+                    </tr>//-->
+                </script>
+                <script type="text/javascript">
+                    var userIdx = 0, userTpl = $("#userTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+
+                    $(document).ready(function() {
+                        var dataBank = ${fns:toJson(workCalendar.userList)};
+                        if (dataBank!=null) {
+                            for (var i = 0; i < dataBank.length; i++) {
+                                addRow('#userTableList', userIdx, userTpl, dataBank[i]);
+                                userIdx = userIdx + 1;
+                            }
+                        }
+                    });
+
+                    function addRow(list, idx, tpl, row){
+                        var idx1 = $("#userTableList tr").length
+                        bornTemplete(list, idx, tpl, row, idx1);
+                    }
+                    function bornTemplete(list, idx, tpl, row, idx1){
+                        $(list).append(Mustache.render(tpl, {
+                            idx: idx, delBtn: true, row: row,
+                            order:idx1 + 1, idx1:idx1
+                        }));
+                        $(list+idx).find("select").each(function(){
+                            $(this).val($(this).attr("data-value"));
+                        });
+                        $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                            var ss = $(this).attr("data-value").split(',');
+                            for (var i=0; i<ss.length; i++){
+                                if($(this).val() == ss[i]){
+                                    $(this).attr("checked","checked");
+                                }
+                            }
+                        });
+                    }
+                    function delRow(obj, prefix,idx){
+                        $(obj).parent().parent().remove();
+                    }
+
+                    function changeUser(ids,names,parents) {
+                        var split = ids.split(',');
+                        var split2 = names.split(',');
+                        $("#userTableList").html("");
+                        userIdx=0;
+                        for(var i=0;i<split.length;i++){
+                            var id = split[i];
+                            if(id==''||id==null){
+                                continue;
+                            }
+                            var obj = {'id':id,'name':split2[i],'officeName':parents[i]};
+                            addRow('#userTableList',userIdx,userTpl,obj);
+                            userIdx+=1;
+                        }
+                    }
+
+                    function getSelectUserIds() {
+                        var selectedIds = "";
+                        var pidArr = $("#userTableList tr .userId");
+                        for(var i=0;i<pidArr.length;i++){
+                            selectedIds+=$(pidArr[i]).val();
+                            selectedIds+=",";
+                        }
+                        return selectedIds;
+                    }
+                </script>
+            </div>
+	</form:form>
+    </div>
+</div>
+</body>
+</html>

+ 301 - 0
src/main/webapp/webpage/modules/workcalendar/workCalendarList.jsp

@@ -0,0 +1,301 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作日历管理</title>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
+    <link href='${ctxStatic}/fullcalendar1/fullcalendar.css' rel='stylesheet' />
+    <link href='${ctxStatic}/fullcalendar1/fullcalendar.print.css' rel='stylesheet' media='print' />
+    <link rel="stylesheet" type="text/css" href="${ctxStatic}/fullcalendar/css/fancybox.css">
+    <style>
+        .daylist{
+            line-height: 25px;
+        }
+    </style>
+    <script src='${ctxStatic}/fullcalendar1/js/jquery.min.js'></script>
+    <script src='${ctxStatic}/fullcalendar1/js/jquery-ui.custom.min.js'></script>
+    <script src='${ctxStatic}/fullcalendar1/fullcalendar.js'></script>
+    <script src='${ctxStatic}/fullcalendar/js/jquery.fancybox-1.3.1.pack.js'></script>
+    <script type="text/javascript">
+        /** 当天信息初始化 **/
+        $(function(){
+            var dayDate = new Date();
+            var d = $.fullCalendar.formatDate(dayDate,"dddd");
+            var m = $.fullCalendar.formatDate(dayDate,"yyyy年MM月dd日");
+            var lunarDate = lunar(dayDate);
+            $(".alm_date").html(m + "&nbsp;" + d);
+            $(".today_date").html(dayDate.getDate())
+            $("#alm_cnD").html("农历"+ lunarDate.lMonth + "月" + lunarDate.lDate);
+            $("#alm_cnY").html(lunarDate.gzYear+"年&nbsp;"+lunarDate.gzMonth+"月&nbsp;"+lunarDate.gzDate+"日");
+            $("#alm_cnA").html("【"+lunarDate.animal+"年】");
+            var fes = lunarDate.festival();
+            if(fes.length>0){
+                $(".alm_lunar_date").html($.trim(lunarDate.festival()[0].desc));
+                $(".alm_lunar_date").show();
+            }else{
+                $(".alm_lunar_date").hide();
+            }
+
+        });
+        /** calendar配置 **/
+        $(document).ready(
+            function() {
+                var date = new Date();
+                var d = date.getDate();
+                var m = date.getMonth();
+                var y = date.getFullYear();
+                $("#calendar").fullCalendar(
+                    {
+                        header : {
+                            left : 'prevYear,nextYear',
+                            center : 'title',
+                            right : 'prev,next today'
+                        },
+                        buttonText: {
+                            prev: "<span class='fc-text-arrow'>&lsaquo;上个月</span>",
+                            next: "<span class='fc-text-arrow'>下个月&rsaquo;</span>",
+                            prevYear: "<span class='fc-text-arrow'>&laquo;上一年</span>",
+                            nextYear: "<span class='fc-text-arrow'>下一年&raquo;</span>"
+                        },
+                        editable : false,
+                        events: function(start,end,callback) {
+                            var fcsYear = $("#fcs_date_year").val();
+                            var fcsMonth = parseInt($("#fcs_date_month").val())+1;
+                            if(fcsMonth<10){
+                                fcsMonth = "0"+fcsMonth;
+                            }
+                            var date = fcsYear+"-"+fcsMonth+"-01";
+                            // console.log(date);
+                            $.ajax({
+                                url: '${ctx}/workcalendar/workCalendar/list',
+                                dataType: 'json',
+                                type:'post',
+                                data: {
+                                    'startDate': date
+                                },
+                                success: function(json) { // 获取当前月的数据
+                                    var events = [];
+                                    if (json.success) {
+                                        $.each(json.body.list,function(i,c) {
+                                            var backCo;
+                                            if(c.title.indexOf("我的工作") != -1){
+                                                backCo = 'pink';
+                                            }else if(c.title.indexOf("我的管理") != -1){
+                                                backCo = 'skyblue';
+                                            }
+                                            events.push({
+                                                title: c.title+"("+c.count+")",
+                                                start: c.start, // will be parsed
+                                                end: c.end,
+                                                backgroundColor : backCo
+                                            });
+                                        });
+                                    }
+                                    callback(events);
+                                }
+                            });
+                        },
+                        dayClick : function(dayDate, allDay, jsEvent, view) { //点击单元格事件
+                            var d = $.fullCalendar.formatDate(dayDate,"dddd");
+                            var m = $.fullCalendar.formatDate(dayDate,"yyyy年MM月dd日");
+                            var lunarDate = lunar(dayDate);
+                            $(".alm_date").html(m + "&nbsp;" + d);
+                            $(".today_date").html(dayDate.getDate())
+                            $("#alm_cnD").html("农历"+ lunarDate.lMonth + "月" + lunarDate.lDate);
+                            $("#alm_cnY").html(lunarDate.gzYear+"年&nbsp;"+lunarDate.gzMonth+"月&nbsp;"+lunarDate.gzDate+"日");
+                            $("#alm_cnA").html("【"+lunarDate.animal+"年】");
+                            var fes = lunarDate.festival();
+                            if(fes.length>0){
+                                $(".alm_lunar_date").html($.trim(lunarDate.festival()[0].desc));
+                                $(".alm_lunar_date").show();
+                            }else{
+                                $(".alm_lunar_date").hide();
+                            }
+                            // 当天则显示“当天”标识
+                            var now = new Date();
+                            if (now.getDate() == dayDate.getDate() && now.getMonth() == dayDate.getMonth() && now.getFullYear() == dayDate.getFullYear()){
+                                $(".today_icon").show();
+                            }else{
+                                $(".today_icon").hide();
+                            }
+                            now.setMilliseconds(0);
+                            now.setSeconds(0);
+                            now.setMinutes(0);
+                            now.setHours(0);
+                            if(dayDate>=now){
+                            openDialog("新增工作日历","${ctx}/workcalendar/workCalendar/form","95%","95%","");
+                            }
+                        },
+                        loading : function(bool) {
+                            if (bool)
+                                $("#msgTopTipWrapper").show();
+                            else
+                                $("#msgTopTipWrapper").fadeOut();
+                        },
+                        eventClick: function(calEvent, jsEvent, view) {
+                            var formatDate = $.fullCalendar.formatDate(calEvent.start,('yyyy-MM-dd'));
+                            if(calEvent.title.indexOf("主题") != -1){
+                                $.fancybox({
+                                    'type':'ajax',
+                                    'href':'${ctx}/workcalendar/workCalendar/dayList?startDate='+formatDate+'&tmp='+ new Date().getTime(),
+                                    // 'autoDimensions':true,
+                                    'scrolling':'no',
+                                });
+                                return;
+                            }
+
+                            var time=calEvent.start;
+                            var year = time.getFullYear();
+                            var month =(time.getMonth() + 1).toString();
+                            var day = (time.getDate()).toString();
+                            if (month.length == 1) {
+                                month = "0" + month;
+                            }
+                            if (day.length == 1) {
+                                day = "0" + day;
+                            }
+                            var dateTime = year + "-" + month + "-" + day;
+                            if(calEvent.title.indexOf("我的工作")!=-1){
+                                openDialogView("查看我的工作","${ctx}/work/report/workReport/reportlist?start=" + dateTime + "&flat=1","95%","95%","");
+                            }else{
+                                openDialogView("查看我的管理","${ctx}/work/report/workReport/reportlist?start=" + dateTime ,"95%","95%","");
+                            }
+                        }
+                    });
+            });
+
+        /** 绑定事件到日期下拉框 **/
+        $(function(){
+            $("#fc-dateSelect").delegate("select","change",function(){
+                var fcsYear = $("#fcs_date_year").val();
+                var fcsMonth = $("#fcs_date_month").val();
+                $("#calendar").fullCalendar('gotoDate', fcsYear, fcsMonth);
+            });
+        });
+        //打开对话框(查看)
+        function openDialogView(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,
+                skin: 'one-btn',
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                btn: ['关闭'],
+                cancel: function(index){
+                }
+            });
+        }
+        function openDialog(title,url,width,height,target) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url,
+                skin: 'three-btns',
+                btn: ['提交', '关闭'],
+                yes: function (index, layero) {
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if (target) {
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    } else {
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target", top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+
+                    if (iframeWin.contentWindow.doSubmit()) {
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function () {
+                            top.layer.close(index)
+                        }, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+
+                },
+                btn2: function (index) {
+                }
+            });
+        }
+        $(function() {
+            // var treve = $('.fc-content').children().children().eq(1).children().eq(1).children();
+            // var newArr = [];
+            // for(var i=0;i<treve.length;i++){
+            //     newArr.push(treve[i]);
+            //     // console.log($(newArr[i]).children().children().children().children());
+            // }
+            console.log($('html').css({'overflow-y':'none','overflow-x':'none'}))
+            $('#fancybox-outer').height(400).css({'overflow-y':'none'});
+
+        });
+
+    </script>
+    <style>
+
+        body {
+            margin-top: 40px;
+            text-align: center;
+            font-size: 14px;
+            font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif;
+        }
+
+        .calendarWrapper {
+            width: 1190px;
+            margin: 0 auto 15px;
+        }
+
+        #calendar {
+            width: 885px;
+            background: #fff;
+            padding: 15px 10px;
+        }
+
+        .calendarWrapper .rightSidePanel {
+            width: 240px;
+            padding: 0px 15px;
+        }
+        .dib{display: inline-block;}
+        .fr{float: right;}
+
+    </style>
+</head>
+<body>
+<sys:message content="${message}"/>
+<div id="msgTopTipWrapper" style="display:none">
+    <div id="msgTopTip">
+        <span><i class="iconTip"></i>正在载入日历数据...</span>
+    </div>
+</div>
+<div class="calendarWrapper">
+    <div class="rightSidePanel mb50 fr">
+        <div id="div_day_detail" class="h_calendar_alm">
+            <div class="alm_date"></div>
+            <div class="alm_content nofestival">
+                <div class="today_icon"></div>
+                <div class="today_date"></div>
+                <p id="alm_cnD"></p>
+                <p id="alm_cnY"></p>
+                <p id="alm_cnA"></p>
+                <div class="alm_lunar_date"></div>
+            </div>
+        </div>
+    </div>
+    <div id="calendar" class="dib"></div>
+</div>
+</body>
+</html>

+ 247 - 0
src/main/webapp/webpage/modules/workcalendar/workCalendarView.jsp

@@ -0,0 +1,247 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作日历管理</title>
+	<meta name="decorator" content="default"/>
+    <link href="${ctxStatic}/bootstrap-select-1.12.4/css/bootstrap-select.min.css" rel="stylesheet" />
+    <script src="${ctxStatic}/bootstrap-select-1.12.4/js/bootstrap-select.min.js"></script>
+	<script type="text/javascript">
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            $("#inputForm").submit();
+		  return true;
+		}
+
+        Date.prototype.format = function(fmt) {
+            var o = {
+                "M+" : this.getMonth()+1,                 //月份
+                "d+" : this.getDate(),                    //日
+                "h+" : this.getHours(),                   //小时
+                "m+" : this.getMinutes(),                 //分
+                "s+" : this.getSeconds(),                 //秒
+                "q+" : Math.floor((this.getMonth()+3)/3), //季度
+                "S"  : this.getMilliseconds()             //毫秒
+            };
+            if(/(y+)/.test(fmt)) {
+                fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
+            }
+            for(var k in o) {
+                if(new RegExp("("+ k +")").test(fmt)){
+                    fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
+                }
+            }
+            return fmt;
+        }
+		$(document).ready(function() {
+            repeatChg();
+            {
+                var val = $("#repeatType").val();
+                if(val==1){
+                    var arr="${workCalendar.repeatDate}".split(',');
+                    $('#repeatDate').selectpicker('val',arr);
+                }
+            }
+		});
+		function repeatChg() {
+            var val = $("#repeatType").val();
+            if(val==''||val==0){
+                $('.month').show();
+                $('.selectpicker').selectpicker('hide');
+                $('.selectpicker').selectpicker('deselectAll');
+                $(".month").val("");
+                $(".month").attr("disabled","disabled");
+            }else {
+                if(val==1){
+                    $('.selectpicker').selectpicker('show');
+                    $('.month').hide();
+                }else {
+                    $('.selectpicker').selectpicker('hide');
+                    $('.selectpicker').selectpicker('deselectAll');
+                    $('.month').show();
+                }
+            }
+        }
+	</script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container view-form">
+		<form:form id="inputForm" modelAttribute="workCalendar" action="${ctx}/workcalendar/workCalendar/delete" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+            <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:input path="subject" htmlEscape="false" readonly="true" class="form-control required layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>地    点:</label>
+                    <div class="layui-input-block">
+                        <form:input path="address" htmlEscape="false" readonly="true" class="form-control required 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="content" htmlEscape="false" readonly="true" rows="3" class="form-control"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>开始日期:</label>
+                    <div class="layui-input-block">
+                        <input id="startDate" name="startDate" type="text" maxlength="20" readonly="true" class="form-control layui-input"
+                               value="<fmt:formatDate value="${workCalendar.startDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">结束日期:</label>
+                    <div class="layui-input-block">
+                        <input id="endDate" name="endDate" type="text" maxlength="20" readonly="true" class="form-control layui-input"
+                               value="<fmt:formatDate value="${workCalendar.endDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>重复类型:</label>
+                    <div class="layui-input-block">
+                            <form:select path="repeatType" disabled="true" class="form-control simple-select required query-group" onchange="repeatChg();">
+                                <form:option value="" label=""/>
+                                <form:options items="${fns:getDictList('calender_repeat_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                            </form:select>
+                            <span class="group-sep"></span>
+                            <select name="repeatDate" id="repeatDate" disabled="true" class="form-control selectpicker required layui-input query-group" multiple="true" >
+                                <c:forEach items="${fns:getDictList('week_day')}" var="item">
+                                    <option value="${item.label}">${item.label}</option>
+                                </c:forEach>
+                            </select>
+                            <form:select path="repeatDate" disabled="true" class="form-control required month query-group simple-select">
+                                <form:option value="" label=""/>
+                                <form:options items="${fns:getDictList('month_day')}" itemLabel="label" itemValue="label" 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">
+                            <input id="remind" readonly value="${fns:getDictLabel(workCalendar.remind,'calender_remind_type','')}" class="form-control layui-input query-group"/>
+                            <span class="group-sep"></span>
+                            <input name="remindTime" id="remindTime" htmlEscape="false" readonly="readonly" class="form-control layui-input query-group"
+                                        value="<fmt:formatDate value="${workCalendar.remindTime}" pattern="HH:mm"/>"/>
+                    </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">&nbsp;&nbsp;
+                        <form:radiobutton class="usccClass i-checks" disabled="true" path="sendDaily" value="1" label="是"></form:radiobutton>
+                        &nbsp;&nbsp;
+                        <form:radiobutton class="usccClass i-checks" disabled="true" path="sendDaily" value="2" label="否"></form:radiobutton>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">创 建 人:</label>
+                    <div class="layui-input-block">
+                        <form:input path="createBy.name" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                        <form:hidden path="createBy.id" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>日历共享人</h2></div>
+                <table id="userTable" class="table table-bordered table-condensed details">
+                    <thead>
+                    <tr>
+                        <th class="hide"></th>
+                        <th>姓名</th>
+                        <th>部门</th>
+                        <th>职级</th>
+                    </tr>
+                    </thead>
+                    <tbody id="userTableList">
+                    </tbody>
+                </table>
+                <script type="text/template" id="userTpl">//<!--
+                    <tr id="userList{{idx}}">
+                        <td class="hide">
+                            <input id="userList{{idx}}_id" name="userList[{{idx}}].id" readonly="true" value="{{row.id}}" type="hidden" class="form-control userId"/>
+                        </td>
+                        <td>
+                        {{row.name}}
+                        </td>
+                        <td>
+                        {{row.officeName}}
+                        </td>
+                        <td>
+                        </td>
+                    </tr>//-->
+                </script>
+                <script type="text/javascript">
+                    var userIdx = 0, userTpl = $("#userTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+
+                    $(document).ready(function() {
+                        var dataBank = ${fns:toJson(workCalendar.userList)};
+                        if (dataBank!=null) {
+                            for (var i = 0; i < dataBank.length; i++) {
+                                addRow('#userTableList', userIdx, userTpl, dataBank[i]);
+                                userIdx = userIdx + 1;
+                            }
+                        }
+                    });
+
+                    function addRow(list, idx, tpl, row){
+                        var idx1 = $("#userTableList tr").length
+                        bornTemplete(list, idx, tpl, row, idx1);
+                    }
+                    function bornTemplete(list, idx, tpl, row, idx1){
+                        $(list).append(Mustache.render(tpl, {
+                            idx: idx, delBtn: true, row: row,
+                            order:idx1 + 1, idx1:idx1
+                        }));
+                        $(list+idx).find("select").each(function(){
+                            $(this).val($(this).attr("data-value"));
+                        });
+                        $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                            var ss = $(this).attr("data-value").split(',');
+                            for (var i=0; i<ss.length; i++){
+                                if($(this).val() == ss[i]){
+                                    $(this).attr("checked","checked");
+                                }
+                            }
+                        });
+                    }
+                    function delRow(obj, prefix,idx){
+                        $(obj).parent().parent().remove();
+                    }
+
+                    function changeUser(ids,names,parents) {
+                        var split = ids.split(',');
+                        var split2 = names.split(',');
+                        $("#userTableList").html("");
+                        userIdx=0;
+                        for(var i=0;i<split.length;i++){
+                            var id = split[i];
+                            if(id==''||id==null){
+                                continue;
+                            }
+                            var obj = {'id':id,'name':split2[i],'officeName':parents[i]};
+                            addRow('#userTableList',userIdx,userTpl,obj);
+                            userIdx+=1;
+                        }
+                    }
+
+                    function getSelectUserIds() {
+                        var selectedIds = "";
+                        var pidArr = $("#userTableList tr .userId");
+                        for(var i=0;i<pidArr.length;i++){
+                            selectedIds+=$(pidArr[i]).val();
+                            selectedIds+=",";
+                        }
+                        return selectedIds;
+                    }
+                </script>
+            </div>
+	</form:form>
+    </div>
+</div>
+</body>
+</html>

+ 175 - 0
src/main/webapp/webpage/modules/workcatalogueitem/workCatalogueItemForm.jsp

@@ -0,0 +1,175 @@
+<%@ 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() {
+            if("${workCatalogueItem.isAssets}" == "1"){
+                $("#isAssets1").iCheck('check')
+            }else{
+                $("#isAssets").iCheck('check')
+            }
+
+            if($("#createDate").val()==null || $("#createDate").val()==''){
+                $("#createDate").val(getNowFormatDate());
+            }
+
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                rules:{
+                },
+                messages:{
+                },
+                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: '#createDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                format: 'yyyy-MM-dd',
+                type : 'date'
+            });
+        });
+        function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+			$("#inputForm").attr("action","${ctx}/workcatalogueitem/workCatalogueItem/save");
+            if(validateForm.form()){
+
+                $("#inputForm").submit();
+                return true;
+            }else {
+                parent.layer.msg("信息未填写完整!", {icon: 5});
+            }
+            return false;
+        }
+
+
+        function getNowFormatDate() {
+            var date = new Date();
+            var seperator1 = "-";
+            var seperator2 = ":";
+            var month = date.getMonth() + 1;
+            var strDate = date.getDate();
+            month = (month < 10)?"0"+month:month;
+            strDate = (strDate < 10)?"0"+strDate:strDate;
+            var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate;
+            return currentdate;
+        }
+
+        function isNumber(val){
+            if(val === "" || val ==null){
+                return false;
+            }
+            var regPos = /^\d+(\.\d+)?$/; //非负浮点数
+            var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数
+            if(regPos.test(val) || regNeg.test(val)){
+                return true;
+            }else{
+                return false;
+            }
+
+        }
+
+	</script>
+	<style>
+		/*超过5个汉字,调整label的长度,以下是配套的*/
+		.layui-item .layui-form-label{
+			width:90px;
+		}
+		.form-group .layui-item .layui-input-block,
+		.query .layui-input-block {
+			margin-left: 116px;
+		}
+		label.error {
+			left:0;
+			top:40px;
+		}
+	</style>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="workCatalogueItem" action="${ctx}/workcatalogueitem/workCatalogueItem/save" method="post" class="form-horizontal" >
+			<form:hidden path="id"/>
+			<form:hidden path="removeFlat" value="0"/>
+			<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:input path="name" htmlEscape="false"   id="name"  class="form-control required layui-input" value="${workCatalogueItem.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>物品编号:</label>
+					<div class="layui-input-block">
+						<form:input path="number" htmlEscape="false"   id="number"  class="form-control required layui-input" value="${workCatalogueItem.number}"/>
+					</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:select path="type"  class="form-control required  simple-select">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getMainDictList('item_type')}" 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="model" htmlEscape="false"   id="model"  class="form-control required layui-input" value="${workCatalogueItem.model}"/>
+					</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:select path="primaryUnit" class="form-control required  simple-select">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getMainDictList('full_count_unit')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label  double-line">是否固定资产:</label>
+					<div class="layui-input-block">
+						<input type="radio" class="i-checks" name="isAssets" checked id="isAssets1" value="1">
+						<label for="isAssets1">是</label>
+						<input type="radio" class="i-checks" name="isAssets" checked id="isAssets" value="0">
+						<label for="isAssets">否</label>
+					</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="" htmlEscape="false"  readonly="true" id="removeFlat"  class="form-control  layui-input" value="正常"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">创建日期:</label>
+					<div class="layui-input-block">
+						<input id="createDate" name="createDate" type="text"  maxlength="20" class="laydate-icondate form-control layer-date required layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workCatalogueItem.createDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+			</div>
+
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+
+</body>
+</html>

+ 310 - 0
src/main/webapp/webpage/modules/workcatalogueitem/workCatalogueItemList.jsp

@@ -0,0 +1,310 @@
+<%@ 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"/>
+
+
+	<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="workCatalogueItem" action="${ctx}/workcatalogueitem/workCatalogueItem/" 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="name" name="name" type="text"  maxlength="64" class=" form-control  layui-input laydate-icon" value="${workCatalogueItem.name}" />
+								</input>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<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:getMainDictList('item_type')}" 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;">
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">移除状态:</label>
+							<div class="layui-input-block">
+								<form:select path="removeFlat" class=" form-control  simple-select">
+									<form:option value="" label=""/>
+									<form:option value="0" label="正常"/>
+									<form:option value="1" label="移除"/>
+								</form:select>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">物品编号:</label>
+							<div class="layui-input-block">
+								<input id="number" name="number" type="text"  maxlength="64" class=" form-control  layui-input laydate-icon" value="${workCatalogueItem.number}" />
+								</input>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">规格型号:</label>
+							<div class="layui-input-block">
+								<input id="model" name="model" type="text"  maxlength="64" class=" form-control  layui-input laydate-icon" value="${workCatalogueItem.model}" />
+								</input>
+							</div>
+						</div>
+						<div class="layui-item query athird lw9">
+							<label class="layui-form-label">是否固定资产:</label>
+							<div class="layui-input-block">
+								<form:select path="isAssets" class=" form-control  simple-select">
+									<form:option value="" label=""/>
+									<form:option value="1" label="是"/>
+									<form:option value="0" label="否"/>
+								</form:select>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">计量单位:</label>
+							<div class="layui-input-block">
+								<form:select path="primaryUnit" class="form-control simple-select">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getMainDictList('full_count_unit')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</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">
+					<%--此处按钮样式包括 nav-btn-add nav-btn-refresh nav-btn-import nav-btn-export nav-btn-query nav-btn-reset--%>
+					<shiro:hasPermission name="workcatalogueitem:workCatalogueItem:add">
+						<a href="javascript:void(0)" onclick="openDialogre('新增物品', '${ctx}/workcatalogueitem/workCatalogueItem/form','95%','95%')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i>&nbsp;添加</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="workcatalogueitem:workCatalogueItem:export">
+							<table:exportExcel url="${ctx}/workcatalogueitem/workCatalogueItem/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"></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:'number',align:'center',sort: true, width:120,title: '物品编号', templet:function(d){
+                            var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看物品目录', '${ctx}/workcatalogueitem/workCatalogueItem/form?id=" + d.id + "&tabId=1','95%','95%')\">" +
+                                "<span title=" + d.number + ">" + d.number + "</span></a>";
+                            return xml;
+                    }},
+                {field:'name',align:'center', minWidth:150, title: '物品名称',templet:function(d){
+                        return "<span title='"+ d.name +"'>" + d.name + "</span>";
+                    }}
+                ,{field:'type',align:'center', minWidth:150, title: '物品分类',templet:function(d){
+                        return "<span title='"+ d.type +"'>" + d.type + "</span>";
+                    }}
+                ,{field:'model',align:'center', minWidth:150, title: '规格型号',templet:function(d){
+                        return "<span title='"+ d.model +"'>" + d.model + "</span>";
+                    }}
+                ,{field:'primaryUnit',align:'center',minWidth:150, title: '计量单位',templet:function(d){
+                        return "<span title='"+ d.primaryUnit +"'>" + d.primaryUnit + "</span>";
+                    }}
+                ,{field:'createDate', align:'center',width:80,title: '创建日期'}
+                ,{field:'isAssets',align:'center',width:100, title: '是否固定资产', templet:function(d){
+                        return "<span title='"+ d.isAssets +"'>" + d.isAssets + "</span>";
+                    }}
+                ,{field:'removeFlat',align:'center',width:80, title: '移除标记', templet:function(d){
+                        return "<span title='"+ d.removeFlat +"'>" + d.removeFlat + "</span>";
+                    }}
+                ,{align:'caozuo',align:'center',title:"操作",width:160,templet:function(d){
+                        ////对操作进行初始化
+                        var xml = "";
+                        if(d.removeFlat != undefined && d.removeFlat == "正常"){
+                            xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogre('修改物品', '${ctx}/workcatalogueitem/workCatalogueItem/form?id="+ d.id + "','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+                            xml +="<a href=\"${ctx}/workcatalogueitem/workCatalogueItem/update?id=" + d.id + "&flat=2"+"\" onclick=\"return confirmx('确认要移除该物品吗?', this.href)\"   class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 移除</a>";
+						}
+						if(d.removeFlat != undefined && d.removeFlat == "移除")
+                            xml +="<a href=\"${ctx}/workcatalogueitem/workCatalogueItem/update?id=" + d.id + "&flat=3"+"\" 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="workCatalogueItem" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "id":"${workCatalogueItem.id}"
+                    ,"number":"${workCatalogueItem.number}"
+                    ,"name":"${workCatalogueItem.name}"
+                    ,"type":"${fns:getMainDictLabel(workCatalogueItem.type, 'item_type', '')}"
+                    ,"model":"${workCatalogueItem.model}"
+                    ,"primaryUnit":"${fns:getMainDictLabel(workCatalogueItem.primaryUnit, 'full_count_unit', '')}"
+                    ,"createDate":"<fmt:formatDate value="${workCatalogueItem.createDate}" pattern="yyyy-MM-dd"/>"
+                    ,"isAssets":<c:if test="${workCatalogueItem.isAssets eq '0'}">"否"</c:if> <c:if test="${workCatalogueItem.isAssets !='0'}">"是"</c:if>
+                    ,"removeFlat":<c:if test="${workCatalogueItem.removeFlat eq '0'}">"正常"</c:if> <c:if test="${workCatalogueItem.removeFlat !='0'}">"移除"</c:if>
+                }
+                </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>

+ 101 - 0
src/main/webapp/webpage/modules/workcatalogueitem/workCatalogueItemview.jsp

@@ -0,0 +1,101 @@
+<%@ 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 getNowFormatDate() {
+            var date = new Date();
+            var seperator1 = "-";
+            var seperator2 = ":";
+            var month = date.getMonth() + 1;
+            var strDate = date.getDate();
+            month = (month < 10)?"0"+month:month;
+            strDate = (strDate < 10)?"0"+strDate:strDate;
+            var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate;
+            return currentdate;
+        }
+
+	</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 view-form">
+		<form:form id="inputForm" modelAttribute="workCatalogueItem"  method="post" class="form-horizontal" >
+			<form:hidden path="id"/>
+			<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:input path="name" htmlEscape="false" readonly="true"  id="name"  class="form-control required layui-input" value="${workCatalogueItem.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>物品编号:</label>
+					<div class="layui-input-block">
+						<form:input path="number" htmlEscape="false" readonly="true"  id="number"  class="form-control required layui-input" value="${workCatalogueItem.number}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">物品分类:</label>
+					<div class="layui-input-block">
+						<form:input path="type" htmlEscape="false" readonly="true"   id="type"  class="form-control layui-input" value="${fns:getMainDictLabel(workCatalogueItem.type, 'item_type', '')}"/>
+					</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="model" htmlEscape="false" readonly="true"   id="model"  class="form-control required layui-input" value="${workCatalogueItem.model}"/>
+					</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="primaryUnit" htmlEscape="false" readonly="true"   id="primaryUnit"  class="form-control layui-input" value="${fns:getMainDictLabel(workCatalogueItem.primaryUnit, 'full_count_unit', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label double-line"><span class="require-item">*</span>是否固定资产:</label>
+					<div class="layui-input-block">
+                    <span class="radio-box">&nbsp;&nbsp;
+                        <input type="radio" class="usccClass i-checks" name="isAssets" label="是" disabled="true" <c:if test="${workCatalogueItem.isAssets eq 1}">checked="true"</c:if> />是
+                        &nbsp;&nbsp;
+                        <input type="radio" class="usccClass i-checks" name="isAssets" label="否" disabled="true" <c:if test="${workCatalogueItem.isAssets eq 0}">checked="true"</c:if> />否
+                    </span>
+					</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="" htmlEscape="false"  readonly="true" id="removeFlat"  class="form-control  layui-input" value="正常"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">创建日期:</label>
+					<div class="layui-input-block">
+						<input id="createDate" name="createDate" readonly="true" type="text"  maxlength="20" class="laydate-icondate form-control layer-date required layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workCatalogueItem.createDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+			</div>
+
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+
+</body>
+</html>

+ 95 - 0
src/main/webapp/webpage/modules/workcatalogueitemstock/workCatalogueItemStockForm.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);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workCatalogueItemStock" action="${ctx}/workcatalogueitemstock/workCatalogueItemStock/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="number" htmlEscape="false"    class="form-control "/>
+					</td>
+					<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>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">规格型号:</label></td>
+					<td class="width-35">
+						<form:input path="model" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">计量单位:</label></td>
+					<td class="width-35">
+						<form:input path="primaryUnit" 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="count" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">描述:</label></td>
+					<td class="width-35">
+						<form:input path="detail" 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="stockId" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"></td>
+		   			<td class="width-35" ></td>
+		  		</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 154 - 0
src/main/webapp/webpage/modules/workcatalogueitemstock/workCatalogueItemStockList.jsp

@@ -0,0 +1,154 @@
+<%@ 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="workCatalogueItemStock" action="${ctx}/workcatalogueitemstock/workCatalogueItemStock/" 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="workcatalogueitemstock:workCatalogueItemStock:add">
+				<table:addRow url="${ctx}/workcatalogueitemstock/workCatalogueItemStock/form" title="采购申请物品"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workcatalogueitemstock:workCatalogueItemStock:edit">
+			    <table:editRow url="${ctx}/workcatalogueitemstock/workCatalogueItemStock/form" title="采购申请物品" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workcatalogueitemstock:workCatalogueItemStock:del">
+				<table:delRow url="${ctx}/workcatalogueitemstock/workCatalogueItemStock/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workcatalogueitemstock:workCatalogueItemStock:import">
+				<table:importExcel url="${ctx}/workcatalogueitemstock/workCatalogueItemStock/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workcatalogueitemstock:workCatalogueItemStock:export">
+	       		<table:exportExcel url="${ctx}/workcatalogueitemstock/workCatalogueItemStock/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 number">物品编号</th>
+				<th  class="sort-column type">物品分类</th>
+				<th  class="sort-column model">规格型号</th>
+				<th  class="sort-column primaryUnit">计量单位</th>
+				<th  class="sort-column count">数量</th>
+				<th  class="sort-column detail">描述</th>
+				<th  class="sort-column stockId">采购申请主键</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="workCatalogueItemStock">
+			<tr>
+				<td> <input type="checkbox" id="${workCatalogueItemStock.id}" class="i-checks"></td>
+				<td><a  href="#" onclick="openDialogView('查看采购申请物品', '${ctx}/workcatalogueitemstock/workCatalogueItemStock/form?id=${workCatalogueItemStock.id}','800px', '500px')">
+					${workCatalogueItemStock.remarks}
+				</a></td>
+				<td>
+					${workCatalogueItemStock.name}
+				</td>
+				<td>
+					${workCatalogueItemStock.number}
+				</td>
+				<td>
+					${workCatalogueItemStock.type}
+				</td>
+				<td>
+					${workCatalogueItemStock.model}
+				</td>
+				<td>
+					${workCatalogueItemStock.primaryUnit}
+				</td>
+				<td>
+					${workCatalogueItemStock.count}
+				</td>
+				<td>
+					${workCatalogueItemStock.detail}
+				</td>
+				<td>
+					${workCatalogueItemStock.stockId}
+				</td>
+				<td>
+					<shiro:hasPermission name="workcatalogueitemstock:workCatalogueItemStock:view">
+						<a href="#" onclick="openDialogView('查看采购申请物品', '${ctx}/workcatalogueitemstock/workCatalogueItemStock/form?id=${workCatalogueItemStock.id}','800px', '500px')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="workcatalogueitemstock:workCatalogueItemStock:edit">
+    					<a href="#" onclick="openDialog('修改采购申请物品', '${ctx}/workcatalogueitemstock/workCatalogueItemStock/form?id=${workCatalogueItemStock.id}','800px', '500px')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="workcatalogueitemstock:workCatalogueItemStock:del">
+						<a href="${ctx}/workcatalogueitemstock/workCatalogueItemStock/delete?id=${workCatalogueItemStock.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>

+ 197 - 0
src/main/webapp/webpage/modules/workchangejob/workChangeJobAudit.jsp

@@ -0,0 +1,197 @@
+<%@ 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 doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                if(obj == 1){
+                    $('#flag').val('yes');
+                }else{
+                    $('#flag').val('no');
+                }
+                $("#inputForm").submit();
+                return true;
+            }
+
+            return false;
+        }
+        var validateForm;
+        var count = 0;
+        $(document).ready(function() {
+            if($("#changeDate").val()==null || $("#changeDate").val()==''){
+                $("#changeDate").val(getNowFormatDate());
+            }
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                rules:{
+                },
+                messages:{
+                },
+                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 getNowFormatDate() {
+            var date = new Date();
+            var seperator1 = "-";
+            var seperator2 = ":";
+            var month = date.getMonth() + 1;
+            var strDate = date.getDate();
+            month = (month < 10)?"0"+month:month;
+            strDate = (strDate < 10)?"0"+strDate:strDate;
+            var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate;
+            return currentdate;
+        }
+
+	</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 view-form">
+		<form:form id="inputForm" modelAttribute="workChangeJob" action="${ctx}/workchangejob/workChangeJob/saveAudit" method="post" class="form-horizontal" >
+			<form:hidden path="id"/>
+			<form:hidden  path="changer"/>
+			<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"/>
+			<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:input id="userName" readonly="true" path="userName" htmlEscape="false" class="form-control   layui-input"/>
+
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>调整编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<form:input path="number" htmlEscape="false"  readonly="true"  class="form-control  layui-input"/>
+							<span class="input-group-btn">
+                                <label class="form-status"><c:choose><c:when test="${not empty workChangeJob.state}">${fns:getDictLabel(workChangeJob.state, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                             </span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>调整日期:</label>
+					<div class="layui-input-block">
+						<input id="changeDate" name="changeDate" readonly="true" type="text"  maxlength="20" class="laydate-icondate form-control layer-date  layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workChangeJob.changeDate}" pattern="yyyy-MM-dd"/>"/>
+					</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="changeFor" readonly="true" htmlEscape="false" rows="4"    maxlength="255" class="form-control "/>
+					</div>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>调整成员</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable" class="table table-bordered table-condensed can-edit no-bottom-margin">
+						<thead>
+						<tr>
+							<th width="200px">工号</th>
+							<th width="200px">姓名</th>
+							<th width="150px">部门</th>
+							<th width="200px">身份证号</th>
+							<th width="200px">员工状态</th>
+							<th width="200px">职级</th>
+							<th width="200px">调整职级</th>
+						</tr>
+						</thead>
+						<tbody id="workChangeJobUserList">
+						<c:if test="${not empty workChangeJob.workChangeJobUserList}">
+							<c:forEach items="${workChangeJob.workChangeJobUserList}" var="workChangeJobUser" varStatus="index">
+								<tr id="workChangeJobUserList${index.index}">
+									<td class="hide">
+										<input id="workChangeJobUserList${index.index}_id" name="workChangeJobUserList[${index.index}].id" type="hidden" value="${workChangeJobUser.id}"/>
+										<input id="workChangeJobUserList${index.index}_basicInfoId" name="workChangeJobUserList[${index.index}].basicInfoId" type="hidden" value="${workChangeJobUser.basicInfoId}"/>
+										<input id="workChangeJobUserList${index.index}_userId" name="workChangeJobUserList[${index.index}].userId" type="hidden" value="${workChangeJobUser.userId}"/>
+										<input id="workChangeJobUserList${index.index}_before" name="workChangeJobUserList[${index.index}].before" type="hidden" value="${workChangeJobUser.before}"/>
+										<input id="workChangeJobUserList${index.index}_after"  name="workChangeJobUserList[${index.index}].after" type="hidden" value="${workChangeJobUser.after}"/>
+										<input id="workChangeJobUserList${index.index}_delFlag" name="workChangeJobUserList[${index.index}].delFlag" type="hidden" value="0"/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_1"  readonly="true"   type="text" value="${workChangeJobUser.workStaffBasicInfo.no}"   class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_2"  readonly="true"   type="text" value="${workChangeJobUser.workStaffBasicInfo.name}"   class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_3"  readonly="true"    type="text" value="${workChangeJobUser.workStaffBasicInfo.office.name}"   class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_4"  readonly="true"    type="text" value="${workChangeJobUser.workStaffBasicInfo.idCard}"   class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_5"  readonly="true"    type="text" value="${workChangeJobUser.workStaffBasicInfo.status}"  class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_6"  readonly="true"    type="text" value="${workChangeJobUser.beforeName}"   class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_afterName"  readonly="true"    type="text" value="${workChangeJobUser.afterName}"  class="form-control "/>
+									</td>
+								</tr>
+							</c:forEach>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>审批意见</h2></div>
+				<div class="layui-item layui-col-xs12 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" />
+					</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="${workChangeJob.act.procInsId}"/>
+					<act:histoicFlow procInsId="${workChangeJob.act.procInsId}"/>
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 445 - 0
src/main/webapp/webpage/modules/workchangejob/workChangeJobForm.jsp

@@ -0,0 +1,445 @@
+<%@ 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;
+        var count = 0;
+        $(document).ready(function() {
+            checkContentKeyUp('changeFor',255);
+            if($("#changeDate").val()==null || $("#changeDate").val()==''){
+                $("#changeDate").val(getNowFormatDate());
+            }
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                rules:{
+                },
+                messages:{
+                },
+                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: '#changeDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                format: 'yyyy-MM-dd',
+                type : 'date'
+            });*/
+
+
+        });
+
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            var idArr = $("#workChangeJobUserList tr:visible");
+            if(idArr.length<1){
+                parent.layer.msg("请选择调整成员!", {icon: 5});
+                return false;
+            }
+            if(obj == 2){
+                $("#inputForm").attr("action","${ctx}/workchangejob/workChangeJob/store");
+            }else if(obj == 1){
+                $("#inputForm").attr("action","${ctx}/workchangejob/workChangeJob/save");
+            }else{
+                return false;
+			}
+            if(validateForm.form()){
+                $("#inputForm").submit();
+                return true;
+            }else {
+                parent.layer.msg("信息未填写完整!", {icon: 5});
+            }
+
+            return false;
+        }
+
+        function deleteRow(obj,index){
+            $(obj).parent().parent().remove();
+            str[index] = " ";
+            mon[index] = 0;
+
+        }
+        function getNowFormatDate() {
+            var date = new Date();
+            var seperator1 = "-";
+            var seperator2 = ":";
+            var month = date.getMonth() + 1;
+            var strDate = date.getDate();
+            month = (month < 10)?"0"+month:month;
+            strDate = (strDate < 10)?"0"+strDate:strDate;
+            var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate;
+            return currentdate;
+        }
+
+        function addRow(list, idx, tpl, row){
+            var idx1 = $("#workChangeJobUserList tr").length;
+            bornTemplete(list, idx, tpl, row, idx1);
+        }
+        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() == ""){
+                delFlag.val("1");
+                $(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");
+            }
+        }
+
+        function setUserInfo(d){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workchangejob/workChangeJob/getBasicInfo',
+                data:{
+                    "ids":d
+                },
+                success:function(data){
+                    for(var i=0;i<data.length;i++){
+                        var idArr = $("#workChangeJobUserList tr:visible .basicInfoId");
+                        if(data[i].id!=''&&!hasInArr(data[i].id,idArr)){
+                            addRow('#workChangeJobUserList', workChangeJobUserListRowIdx, workChangeJobUserListTpl);
+                            workChangeJobUserListRowIdx = workChangeJobUserListRowIdx + 1;
+                            var row = workChangeJobUserListRowIdx - 1 ;
+                            $("#"+"workChangeJobUserList"+row+"_basicInfoId").val(data[i].id);
+                            $("#"+"workChangeJobUserList"+row+"_userId").val(data[i].userId);
+                            if(data[i].jobGrade!=null){
+                                $("#"+"workChangeJobUserList"+row+"_before").val(data[i].jobGrade.id);
+                                $("#"+"workChangeJobUserList"+row+"_6").val(data[i].jobGrade.name);
+                            }
+                            $("#"+"workChangeJobUserList"+row+"_1").val(data[i].no);
+                            $("#"+"workChangeJobUserList"+row+"_2").val(data[i].name);
+                            $("#"+"workChangeJobUserList"+row+"_3").val(data[i].office.name);
+                            $("#"+"workChangeJobUserList"+row+"_4").val(data[i].idCard);
+                            $("#"+"workChangeJobUserList"+row+"_5").val(data[i].status);
+						}
+                    }
+                }
+            });
+        }
+
+        function hasInArr(id,idArr) {
+            for(var i=0;i<idArr.length;i++){
+                if(id==$(idArr[i]).val()){
+                    return true;
+                }
+            }
+            return false;
+        }
+        function setExcelInfo(data){
+            for(var i=0;i<data.length;i++){
+                var idArr = $("#workChangeJobUserList tr:visible .basicInfoId");
+                if(data[i].id!=''&&!hasInArr(data[i].id,idArr)){
+                    addRow('#workChangeJobUserList', workChangeJobUserListRowIdx, workChangeJobUserListTpl);
+                    workChangeJobUserListRowIdx = workChangeJobUserListRowIdx + 1;
+                    var row = workChangeJobUserListRowIdx - 1 ;
+                    $("#"+"workChangeJobUserList"+row+"_basicInfoId").val(data[i].id);
+                    $("#"+"workChangeJobUserList"+row+"_userId").val(data[i].userId);
+                    if(data[i].jobGrade!=null){
+                        $("#"+"workChangeJobUserList"+row+"_before").val(data[i].jobGrade.id);
+					}
+                    $("#"+"workChangeJobUserList"+row+"_1").val(data[i].no);
+                    $("#"+"workChangeJobUserList"+row+"_2").val(data[i].name);
+                    $("#"+"workChangeJobUserList"+row+"_3").val(data[i].office.name);
+                    $("#"+"workChangeJobUserList"+row+"_4").val(data[i].idCard);
+                    $("#"+"workChangeJobUserList"+row+"_5").val(data[i].status);
+                    if(data[i].jobGrade!=null){
+                        $("#"+"workChangeJobUserList"+row+"_6").val(data[i].jobGrade.name);
+					}
+                    $("#"+"workChangeJobUserList"+row+"_afterId").val(data[i].bankName);//新职级id
+                    $("#"+"workChangeJobUserList"+row+"_afterName").val(data[i].sqlStr);
+                }
+            }
+        }
+        function openDialogreUser(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: ['90%','90%'],
+                title:title,
+                skin:"two-btns",
+                name:'friend',
+                content: encodeURI("${ctx}/sys/office/gridSelectUser?url=${ctx}/sys/office/gridSelectUser&isAll=true&type=null&isSingle=false") ,
+                btn: ['确定', '关闭'],
+                yes: function(index, layero){
+                    var iframeWin = layero.find('iframe')[0].contentWindow; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var item = iframeWin.getSelectedItem();
+                    if(item == "-1"){
+                        return;
+                    }
+                    if(false){//单选
+                        selectUserInfo(item.userId);
+                    }else{//多选
+                        var ids = [], names = [];
+                        for (var i=0;i<item.length;i++){
+                            ids.push(item[i].id);
+                            names.push(item[i].name);
+                        }
+                        var arr=ids.join(",").replace(/u_/ig,"");
+                        setUserInfo(arr);
+                    }
+                    top.layer.close(index);//关闭对话框。
+
+                },
+                cancel: function(index){
+                }
+            });
+        }
+
+        function openDialogreExcel(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: 1,
+                area: [500, 300],
+                title:"导入数据",
+                skin: 'three-btns with-demo',
+                content:$("#importBox").html() ,
+                btn: ['下载模板','确定', '关闭'],
+                btn1: function(index, layero){
+                    window.location.href=url+'/template';
+                },
+                btn2: function(index, layero){
+
+                    var formData = new FormData();
+                    formData.append("file",top.$("#uploadFile")[0].files[0]);
+                    $.ajax({
+                        type: 'post',
+                        url: url,
+                        data: formData,
+                        dataType: "json",
+                        cache: false,
+                        processData: false,
+                        contentType: false,
+                    }).success(function (result) {
+                        setExcelInfo(result.data);
+                        top.layer.msg(result.message);
+                    }).error(function () {
+                        top.layer.msg("导入文件失败!");
+                    });
+                    top.layer.close(index);
+                },
+                btn3: function(index){
+                    top.layer.close(index);
+                }
+            });
+        }
+
+	</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="workChangeJob" action="#" onsubmit="return false;" method="post" class="form-horizontal" >
+			<form:hidden path="id"/>
+			<form:hidden  path="changer"/>
+			<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:input id="userName" readonly="true" path="userName" htmlEscape="false" class="form-control   layui-input"/>
+
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>调整编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<form:input path="number" htmlEscape="false"  readonly="true"  class="form-control  layui-input"/>
+							<span class="input-group-btn">
+                                <label class="form-status"><c:choose><c:when test="${not empty workChangeJob.state}">${fns:getDictLabel(workChangeJob.state, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                             </span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>调整日期:</label>
+					<div class="layui-input-block">
+						<input id="changeDate" name="changeDate" type="text" readonly="true"  maxlength="20" class="laydate-icondate form-control layer-date  layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workChangeJob.changeDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+
+				<div class="layui-item layui-col-sm12  with-textarea">
+					<label class="layui-form-label"><span class="require-item">*</span>调整原因:</label>
+					<div class="layui-input-block">
+						<form:textarea path="changeFor" htmlEscape="false" rows="4" onkeyup="checkContentKeyUp('changeFor',255);"   maxlength="255" class="form-control required"/>
+					</div>
+					<span id="contentMsg" style="float: right"></span>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>调整成员</h2></div>
+				<div class="layui-item nav-btns ">
+					<a href="javascript:void(0)" onclick="openDialogreUser('选择用户', '${ctx}/sys/office/gridSelectUser','90%','90%')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i>&nbsp;选择</a>
+					<%--<table:importExcelChangeOffice url="${ctx}/workchangejob/workChangeJobUser/import"></table:importExcelChangeOffice>--%>
+					<a href="javascript:void(0)" onclick="openDialogreExcel('导入数据', '${ctx}/workchangejob/workChangeJobUser/import','90%','90%')" class="nav-btn nav-btn-import" ><i class="fa fa-plus"></i>&nbsp;导入</a>
+					<div id="importBox" class="hide">
+						<input id="uploadFile" name="file" type="file" style="width:330px"/>导入文件不能超过5M,仅允许导入“xls”或“xlsx”格式文件!<br/>  
+					</div>
+				</div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable" class="table table-bordered table-condensed can-edit no-bottom-margin">
+						<thead>
+						<tr>
+							<th width="200px">工号</th>
+							<th width="200px">姓名</th>
+							<th width="150px">部门</th>
+							<th width="200px">身份证号</th>
+							<th width="200px">员工状态</th>
+							<th width="200px">职级</th>
+							<th width="200px">调整职级</th>
+							<th width="200px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="workChangeJobUserList">
+						<c:if test="${not empty workChangeJob.workChangeJobUserList}">
+							<c:forEach items="${workChangeJob.workChangeJobUserList}" var="workChangeJobUser" varStatus="index">
+								<tr id="workChangeJobUserList${index.index}">
+									<td class="hide">
+										<input id="workChangeJobUserList${index.index}_id" name="workChangeJobUserList[${index.index}].id" type="hidden" value="${workChangeJobUser.id}"/>
+										<input id="workChangeJobUserList${index.index}_basicInfoId" name="workChangeJobUserList[${index.index}].basicInfoId" type="hidden" value="${workChangeJobUser.basicInfoId}" class="basicInfoId"/>
+										<input id="workChangeJobUserList${index.index}_userId" name="workChangeJobUserList[${index.index}].userId" type="hidden" value="${workChangeJobUser.userId}"/>
+										<input id="workChangeJobUserList${index.index}_before" name="workChangeJobUserList[${index.index}].before" type="hidden" value="${workChangeJobUser.before}"/>
+										<input id="workChangeJobUserList${index.index}_delFlag" name="workChangeJobUserList[${index.index}].delFlag" type="hidden" value="0"/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_1"  readonly="true"   type="text" value="${workChangeJobUser.workStaffBasicInfo.no}"   class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_2"  readonly="true"   type="text" value="${workChangeJobUser.workStaffBasicInfo.name}"   class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_3"  readonly="true"    type="text" value="${workChangeJobUser.workStaffBasicInfo.office.name}"   class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_4"  readonly="true"    type="text" value="${workChangeJobUser.workStaffBasicInfo.idCard}"   class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_5"  readonly="true"    type="text" value="${workChangeJobUser.workStaffBasicInfo.status}"  class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_6"  readonly="true"    type="text" value="${workChangeJobUser.beforeName}"   class="form-control "/>
+									</td>
+									<td>
+										<sys:treeselectJob id="workChangeJobUserList${index.index}_after" name="workChangeJobUserList[${index.index}].after" value="${workChangeJobUser.after}" labelName="workChangeJobUserList[${index.index}].afterName" labelValue="${workChangeJobUser.afterName}"
+																title="职级类型" url="/workjobgrade/workJobGrade/treeData"  cssClass="form-control layui-input required" allowClear="false" notAllowSelectParent="true"/>
+									</td>
+									<td class="text-center op-td" >
+										<span class="op-btn op-btn-delete" id="workChangeJobUserList${index.index}_span" onclick="delRow(this, '#workChangeJobUserList${index.index}')" title="删除"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>
+									</td>
+								</tr>
+							</c:forEach>
+						</c:if>
+						</tbody>
+					</table>
+					<script type="text/template" id="workChangeJobUserListTpl">//<!--
+                                    <tr id="workChangeJobUserList{{idx}}">
+                                        <td class="hide">
+                                            <input id="workChangeJobUserList{{idx}}_id" name="workChangeJobUserList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+                                            <input id="workChangeJobUserList{{idx}}_basicInfoId" name="workChangeJobUserList[{{idx}}].basicInfoId" type="hidden" value="{{row.workStaffBasicInfo.id}}" class="basicInfoId"/>
+                                            <input id="workChangeJobUserList{{idx}}_userId" name="workChangeJobUserList[{{idx}}].userId" type="hidden" value="{{row.workStaffBasicInfo.userId}}"/>
+                                            <input id="workChangeJobUserList{{idx}}_before" name="workChangeJobUserList[{{idx}}].before" type="hidden" value="{{row.before}}"/>
+                                            <input id="workChangeJobUserList{{idx}}_delFlag" name="workChangeJobUserList[{{idx}}].delFlag" type="hidden" value="0"/>
+                                        </td>
+                                        <td>
+                                            <input id="workChangeJobUserList{{idx}}_1"   name="workChangeJobUserList[{{idx}}].workStaffBasicInfo.no" type="text" value="{{row.workStaffBasicInfo.no}}"  readonly="true"   class="form-control "/>
+                                        </td>
+                                        <td>
+                                            <input id="workChangeJobUserList{{idx}}_2"  name="workChangeJobUserList[{{idx}}].workStaffBasicInfo.name" type="text" value="{{row.workStaffBasicInfo.name}}"   readonly="true"  class="form-control "/>
+                                        </td>
+                                         <td>
+                                            <input id="workChangeJobUserList{{idx}}_3"  name="workChangeJobUserList[{{idx}}].workStaffBasicInfo.office.name" type="text" value="{{row.workStaffBasicInfo.office.name}}"   readonly="true"  class="form-control "/>
+                                        </td>
+                                         <td>
+                                            <input id="workChangeJobUserList{{idx}}_4"  name="workChangeJobUserList[{{idx}}].workStaffBasicInfo.idCard" type="text" value="{{row.workStaffBasicInfo.idCard}}"   readonly="true"  class="form-control "/>
+                                        </td>
+                                         <td>
+                                            <input id="workChangeJobUserList{{idx}}_5"  name="workChangeJobUserList[{{idx}}].workStaffBasicInfo.status" type="text" value="{{row.workStaffBasicInfo.status}}"   readonly="true"  class="form-control "/>
+                                        </td>
+                                         <td>
+                                            <input id="workChangeJobUserList{{idx}}_6"  name="workChangeJobUserList[{{idx}}].beforeName" type="text" value="{{row.beforeName}}"   readonly="true"  class="form-control "/>
+                                        </td>
+                                         <td>
+                                            <sys:treeselectJob id="workChangeJobUserList{{idx}}_after" name="workChangeJobUserList[{{idx}}].after" value="${row.after}" labelName="workChangeJobUserList[{{idx}}].afterName" labelValue="${row.afterName}"
+																title="职级类型" url="/workjobgrade/workJobGrade/treeData"  cssClass="form-control layui-input required" allowClear="true" notAllowSelectParent="true"/>
+                                        </td>
+                                        <td class="text-center op-td" >
+                                            {{#delBtn}}<span class="op-btn op-btn-delete" id="workChangeJobUserList{{idx}}_span" onclick="delRow(this, '#workChangeJobUserList{{idx}}')" title="删除"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>{{/delBtn}}
+                                        </td>
+                                    </tr>//-->
+					</script>
+					<script type="text/javascript">
+                        var workChangeJobUserListRowIdx = ${fn:length(workChangeJob.workChangeJobUserList)}, workChangeJobUserListTpl = $("#workChangeJobUserListTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+                        if($("#id").val()){
+                            workChangeJobUserListIdx = ${fn:length(workChangeJob.workChangeJobUserList)};
+                        }
+                        $(document).ready(function() {
+                        });
+					</script>
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+
+	</div>
+</div>
+</body>
+</html>

+ 311 - 0
src/main/webapp/webpage/modules/workchangejob/workChangeJobList.jsp

@@ -0,0 +1,311 @@
+<%@ 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"/>
+	<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="workChangeJob" action="${ctx}/workchangejob/workChangeJob/" 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="changer" name="userName" type="text"  maxlength="64" class=" form-control  layui-input laydate-icon" value="${workChangeJob.userName}" />
+								</input>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">调整日期:</label>
+							<div class="layui-input-block">
+								<input id="beginDate" placeholder="开始时间" name="beginDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${workChangeJob.beginDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+								<span class="group-sep">-</span>
+								<input id="endDate" placeholder="结束时间" name="endDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${workChangeJob.endDate}" pattern="yyyy-MM-dd"/>"/>
+								</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">
+								<form:select path="state" class=" form-control  simple-select">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('audit_state')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</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">
+					<%--此处按钮样式包括 nav-btn-add nav-btn-refresh nav-btn-import nav-btn-export nav-btn-query nav-btn-reset--%>
+					<shiro:hasPermission name="workchangejob:workChangeJob:add">
+						<a href="javascript:void(0)" onclick="openDialog('新增职级调整', '${ctx}/workchangejob/workChangeJob/form?tabId=1','95%','95%')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i>&nbsp;添加</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="workchangejob:workChangeJob:export">
+						<table:exportExcel url="${ctx}/workchangejob/workChangeJob/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"></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:'number',align:'center', width:150,title: '调整编号', templet:function(d){
+                        var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看调转', '${ctx}/workchangejob/workChangeJob/view?id=" + d.id + "','95%','95%')\">" +
+                            "<span title=" + d.number + ">" + d.number + "</span></a>";
+                        return xml;
+                    }},
+                {field:'changeDate',sort: true, align:'center',width:150,title: '调整日期'},
+                {field:'userName',align:'center',width:150, title: '调整人',templet:function(d){
+                        return "<span title='"+ d.userName +"'>" + d.userName + "</span>";
+                    }},
+                {field:'changeFor',align:'center',minWidth:150, title: '调整事由',templet:function(d){
+                        return "<span title='"+ d.changeFor +"'>" + d.changeFor + "</span>";
+                    }},
+                {field:'state',align:'center',width:80, title: '申请状态',templet:function(d){
+                        var st = getAuditState(d.state);
+                        if(st.action)
+                            var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/workchangejob/workChangeJob/getProcess?id=" + d.id + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                        else
+                            var xml = "<span style=\"cursor:default;\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                        return xml;
+                    }}
+                ,{align:'caozuo',align:'center',title:"操作",width:160,templet:function(d){
+                        var xml = "";
+                        if(d.canedit != undefined && d.canedit == "1"){
+                            xml +="<a href=\"javascript:void(0)\" onclick=\"openDialog('修改调整申请', '${ctx}/workchangejob/workChangeJob/form?id=" + d.id+"','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i>修改</a>"
+                        }
+                        if(d.canmodify != undefined && d.canmodify =="1"){
+                            xml+="<a href=\"#\" onclick=\"openDialogremodify('修改调整申请', '${ctx}/workchangejob/workChangeJob/modify?id=" + d.id + "','95%', '95%','','重新申请,关闭')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+                        }
+                        if(d.candelete != undefined && d.candelete == "1"){
+                            xml +="<a href=\"${ctx}/workchangejob/workChangeJob/delete?id=" + d.id+"\" 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}/workchangejob/workChangeJob/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="workChangeJob" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "id":"${workChangeJob.id}"
+                    ,"number":"${workChangeJob.number}"
+                    ,"changeDate":"<fmt:formatDate value="${workChangeJob.changeDate}" pattern="yyyy-MM-dd"/>"
+                    ,"userName":"${workChangeJob.userName}"
+                    ,"changeFor":"${workChangeJob.changeFor}"
+                    ,"state":"${workChangeJob.state}"
+                    ,"procId":"${workChangeJob.processInstanceId}"
+                    <c:if test="${flag == '1' or fns:getUser().id == workChangeJob.createBy.id}">
+                    <shiro:hasPermission name="workchangejob:workChangeJob:edit">,"canedit":<c:choose><c:when test="${workChangeJob.state == 1 or workChangeJob.state == 3}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    ,"canmodify":<c:choose><c:when test="${workChangeJob.state == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </shiro:hasPermission>
+                    <shiro:hasPermission name="workchangejob:workChangeJob:del">
+                    ,"candelete":<c:choose><c:when test="${workChangeJob.state == 1 or workChangeJob.state == 3 or workChangeJob.state == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </shiro:hasPermission>
+                    ,"cancancel":<c:choose><c:when test="${workChangeJob.state == 2}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </c:if>
+                }
+                </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");
+            }
+        });
+
+        laydate.render({
+            elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            format: 'yyyy-MM-dd',
+            type : 'date'
+        });
+
+        laydate.render({
+            elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            format: 'yyyy-MM-dd',
+            type : 'date'
+        });
+
+    });
+    function switchInput(obj){
+        $("#"+obj).show();
+        $("#"+obj).siblings().hide();
+    }
+
+    function openDialogremodify(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 openDialog(title,url,width,height,target) {
+        if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+            width = 'auto';
+            height = 'auto';
+        } else {//如果是PC端,根据用户设置的width和height显示。
+        }
+        top.layer.open({
+            type: 2,
+            area: [width, height],
+            title: title,
+            maxmin: true, //开启最大化最小化按钮
+            content: url,
+            skin: 'three-btns',
+            btn: ['送审', '暂存', '关闭'],
+            btn1: function(index, layero){
+                var body = top.layer.getChildFrame('body', index);
+                var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                var inputForm = body.find('#inputForm');
+                var top_iframe;
+                if(target){
+                    top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                }else{
+                    top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                }
+                inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                if(iframeWin.contentWindow.doSubmit(1) ){
+                    // top.layer.close(index);//关闭对话框。
+                    setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                }
+            },
+            btn2:function(index,layero){
+                var body = top.layer.getChildFrame('body', index);
+                var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                var inputForm = body.find('#inputForm');
+                var top_iframe;
+                if(target){
+                    top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                }else{
+                    top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                }
+                inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                if(iframeWin.contentWindow.doSubmit(2) ){
+                    // top.layer.close(index);//关闭对话框。
+                    setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                }else {
+                    return false;
+                }
+            },
+            btn3: function (index) {
+            }
+        });
+    }
+</script>
+</body>
+</html>

+ 440 - 0
src/main/webapp/webpage/modules/workchangejob/workChangeJobModifyApply.jsp

@@ -0,0 +1,440 @@
+<%@ 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 doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            var idArr = $("#workChangeJobUserList tr:visible");
+            if(idArr.length<1){
+                parent.layer.msg("请选择调整成员!", {icon: 5});
+                return false;
+            }
+            if(validateForm.form()){
+                $("#inputForm").submit();
+                return true;
+            }
+
+            return false;
+        }
+        var validateForm;
+        var count = 0;
+        $(document).ready(function() {
+            checkContentKeyUp('changeFor',255);
+            if($("#changeDate").val()==null || $("#changeDate").val()==''){
+                $("#changeDate").val(getNowFormatDate());
+            }
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                rules:{
+                },
+                messages:{
+                },
+                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: '#changeDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                format: 'yyyy-MM-dd',
+                type : 'date'
+            });*/
+
+
+        });
+
+
+        function deleteRow(obj,index){
+            $(obj).parent().parent().remove();
+            str[index] = " ";
+            mon[index] = 0;
+
+        }
+        function getNowFormatDate() {
+            var date = new Date();
+            var seperator1 = "-";
+            var seperator2 = ":";
+            var month = date.getMonth() + 1;
+            var strDate = date.getDate();
+            month = (month < 10)?"0"+month:month;
+            strDate = (strDate < 10)?"0"+strDate:strDate;
+            var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate;
+            return currentdate;
+        }
+
+        function addRow(list, idx, tpl, row){
+            var idx1 = $("#workChangeJobUserList tr").length;
+            bornTemplete(list, idx, tpl, row, idx1);
+        }
+        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() == ""){
+                delFlag.val("1");
+                $(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");
+            }
+        }
+
+        function setUserInfo(d){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workchangejob/workChangeJob/getBasicInfo',
+                data:{
+                    "ids":d
+                },
+                success:function(data){
+                    for(var i=0;i<data.length;i++){
+                        var idArr = $("#workChangeJobUserList tr:visible .basicInfoId");
+                        if(data[i].id!=''&&!hasInArr(data[i].id,idArr)){
+                            addRow('#workChangeJobUserList', workChangeJobUserListRowIdx, workChangeJobUserListTpl);
+                            workChangeJobUserListRowIdx = workChangeJobUserListRowIdx + 1;
+                            var row = workChangeJobUserListRowIdx - 1 ;
+                            $("#"+"workChangeJobUserList"+row+"_basicInfoId").val(data[i].id);
+                            $("#"+"workChangeJobUserList"+row+"_userId").val(data[i].userId);
+                            if(data[i].jobGrade!=null){
+                                $("#"+"workChangeJobUserList"+row+"_before").val(data[i].jobGrade.id);
+                                $("#"+"workChangeJobUserList"+row+"_6").val(data[i].jobGrade.name);
+                            }
+                            $("#"+"workChangeJobUserList"+row+"_1").val(data[i].no);
+                            $("#"+"workChangeJobUserList"+row+"_2").val(data[i].name);
+                            $("#"+"workChangeJobUserList"+row+"_3").val(data[i].office.name);
+                            $("#"+"workChangeJobUserList"+row+"_4").val(data[i].idCard);
+                            $("#"+"workChangeJobUserList"+row+"_5").val(data[i].status);
+                        }
+                    }
+                }
+            });
+        }
+        function hasInArr(id,idArr) {
+            for(var i=0;i<idArr.length;i++){
+                if(id==$(idArr[i]).val()){
+                    return true;
+                }
+            }
+            return false;
+        }
+        function setExcelInfo(data){
+            for(var i=0;i<data.length;i++){
+                var idArr = $("#workChangeJobUserList tr:visible .basicInfoId");
+                if(data[i].id!=''&&!hasInArr(data[i].id,idArr)){
+                    addRow('#workChangeJobUserList', workChangeJobUserListRowIdx, workChangeJobUserListTpl);
+                    workChangeJobUserListRowIdx = workChangeJobUserListRowIdx + 1;
+                    var row = workChangeJobUserListRowIdx - 1 ;
+                    $("#"+"workChangeJobUserList"+row+"_basicInfoId").val(data[i].id);
+                    $("#"+"workChangeJobUserList"+row+"_userId").val(data[i].userId);
+                    if(data[i].jobGrade!=null){
+                        $("#"+"workChangeJobUserList"+row+"_before").val(data[i].jobGrade.id);
+                    }
+                    $("#"+"workChangeJobUserList"+row+"_1").val(data[i].no);
+                    $("#"+"workChangeJobUserList"+row+"_2").val(data[i].name);
+                    $("#"+"workChangeJobUserList"+row+"_3").val(data[i].office.name);
+                    $("#"+"workChangeJobUserList"+row+"_4").val(data[i].idCard);
+                    $("#"+"workChangeJobUserList"+row+"_5").val(data[i].status);
+                    if(data[i].jobGrade!=null){
+                        $("#"+"workChangeJobUserList"+row+"_6").val(data[i].jobGrade.name);
+                    }
+                    $("#"+"workChangeJobUserList"+row+"_afterId").val(data[i].bankName);//新职级id
+                    $("#"+"workChangeJobUserList"+row+"_afterName").val(data[i].sqlStr);
+                }
+            }
+        }
+        function openDialogreUser(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: ['90%','90%'],
+                title:title,
+                skin:"two-btns",
+                name:'friend',
+                content: encodeURI("${ctx}/sys/office/gridSelectUser?url=${ctx}/sys/office/gridSelectUser&isAll=true&type=null&isSingle=false") ,
+                btn: ['确定', '关闭'],
+                yes: function(index, layero){
+                    var iframeWin = layero.find('iframe')[0].contentWindow; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var item = iframeWin.getSelectedItem();
+                    if(item == "-1"){
+                        return;
+                    }
+                    if(false){//单选
+                        selectUserInfo(item.userId);
+                    }else{//多选
+                        var ids = [], names = [];
+                        for (var i=0;i<item.length;i++){
+                            ids.push(item[i].id);
+                            names.push(item[i].name);
+                        }
+                        var arr=ids.join(",").replace(/u_/ig,"");
+                        setUserInfo(arr);
+                    }
+                    top.layer.close(index);//关闭对话框。
+
+                },
+                cancel: function(index){
+                }
+            });
+        }
+
+        function openDialogreExcel(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: 1,
+                area: [500, 300],
+                title:"导入数据",
+                skin: 'three-btns with-demo',
+                content:$("#importBox").html() ,
+                btn: ['下载模板','确定', '关闭'],
+                btn1: function(index, layero){
+                    window.location.href=url+'/template';
+                },
+                btn2: function(index, layero){
+
+                    var formData = new FormData();
+                    formData.append("file",top.$("#uploadFile")[0].files[0]);
+                    $.ajax({
+                        type: 'post',
+                        url: url,
+                        data: formData,
+                        dataType: "json",
+                        cache: false,
+                        processData: false,
+                        contentType: false,
+                    }).success(function (result) {
+                        setExcelInfo(result.data);
+                        top.layer.msg(result.message);
+                    }).error(function () {
+                        top.layer.msg("导入文件失败!");
+                    });
+                    top.layer.close(index);
+                },
+                btn3: function(index){
+                    top.layer.close(index);
+                }
+            });
+        }
+	</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="workChangeJob" action="${ctx}/workchangejob/workChangeJob/saveAudit" method="post" class="form-horizontal" >
+			<form:hidden path="id"/>
+			<form:hidden  path="changer"/>
+            <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"/>
+			<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:input id="userName" readonly="true" path="userName" htmlEscape="false" class="form-control   layui-input"/>
+
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>调整编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<form:input path="number" htmlEscape="false"  readonly="true"  class="form-control  layui-input"/>
+							<span class="input-group-btn">
+                                <label class="form-status"><c:choose><c:when test="${not empty workChangeJob.state}">${fns:getDictLabel(workChangeJob.state, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                             </span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>调整日期:</label>
+					<div class="layui-input-block">
+						<input id="changeDate" name="changeDate" type="text"  maxlength="20" class="laydate-icondate form-control layer-date  layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workChangeJob.changeDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+
+				<div class="layui-item layui-col-sm12  with-textarea">
+					<label class="layui-form-label"><span class="require-item">*</span>调整事由:</label>
+					<div class="layui-input-block">
+						<form:textarea path="changeFor" htmlEscape="false" rows="4" onkeyup="checkContentKeyUp('changeFor',255);"   maxlength="255" class="form-control required"/>
+					</div>
+					<span id="contentMsg" style="float: right"></span>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>调整成员</h2></div>
+				<div class="layui-item nav-btns">
+					<a href="javascript:void(0)" onclick="openDialogreUser('选择用户', '${ctx}/sys/office/gridSelectUser','90%','90%')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i>&nbsp;选择</a>
+						<%--<table:importExcelChangeOffice url="${ctx}/workchangejob/workChangeJobUser/import"></table:importExcelChangeOffice>--%>
+					<a href="javascript:void(0)" onclick="openDialogreExcel('导入数据', '${ctx}/workchangejob/workChangeJobUser/import','90%','90%')" class="nav-btn nav-btn-import" ><i class="fa fa-plus"></i>&nbsp;导入</a>
+					<div id="importBox" class="hide">
+						<input id="uploadFile" name="file" type="file" style="width:330px"/>导入文件不能超过5M,仅允许导入“xls”或“xlsx”格式文件!<br/>  
+					</div>
+				</div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable" class="table table-bordered table-condensed can-edit no-bottom-margin">
+						<thead>
+						<tr>
+							<th width="200px">工号</th>
+							<th width="200px">姓名</th>
+							<th width="150px">部门</th>
+							<th width="200px">身份证号</th>
+							<th width="200px">员工状态</th>
+							<th width="200px">职级</th>
+							<th width="200px">调整职级</th>
+							<th width="200px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="workChangeJobUserList">
+						<c:if test="${not empty workChangeJob.workChangeJobUserList}">
+							<c:forEach items="${workChangeJob.workChangeJobUserList}" var="workChangeJobUser" varStatus="index">
+								<tr id="workChangeJobUserList${index.index}">
+									<td class="hide">
+										<input id="workChangeJobUserList${index.index}_id" name="workChangeJobUserList[${index.index}].id" type="hidden" value="${workChangeJobUser.id}"/>
+										<input id="workChangeJobUserList${index.index}_basicInfoId" name="workChangeJobUserList[${index.index}].basicInfoId" type="hidden" value="${workChangeJobUser.basicInfoId}" class="basicInfoId"/>
+										<input id="workChangeJobUserList${index.index}_userId" name="workChangeJobUserList[${index.index}].userId" type="hidden" value="${workChangeJobUser.userId}"/>
+										<input id="workChangeJobUserList${index.index}_before" name="workChangeJobUserList[${index.index}].before" type="hidden" value="${workChangeJobUser.before}"/>
+										<input id="workChangeJobUserList${index.index}_delFlag" name="workChangeJobUserList[${index.index}].delFlag" type="hidden" value="0"/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_1"  readonly="true"   type="text" value="${workChangeJobUser.workStaffBasicInfo.no}"   class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_2"  readonly="true"   type="text" value="${workChangeJobUser.workStaffBasicInfo.name}"   class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_3"  readonly="true"    type="text" value="${workChangeJobUser.workStaffBasicInfo.office.name}"   class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_4"  readonly="true"    type="text" value="${workChangeJobUser.workStaffBasicInfo.idCard}"   class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_5"  readonly="true"    type="text" value="${workChangeJobUser.workStaffBasicInfo.status}"  class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_6"  readonly="true"    type="text" value="${workChangeJobUser.beforeName}"   class="form-control "/>
+									</td>
+									<td>
+										<sys:treeselectJob id="workChangeJobUserList${index.index}_after" name="workChangeJobUserList[${index.index}].after" value="${workChangeJobUser.after}" labelName="workChangeJobUserList[${index.index}].afterName" labelValue="${workChangeJobUser.afterName}"
+														   title="职级类型" url="/workjobgrade/workJobGrade/treeData"  cssClass="form-control layui-input required" allowClear="false" notAllowSelectParent="true"/>
+									</td>
+									<td class="text-center op-td" >
+										<span class="op-btn op-btn-delete" id="workChangeJobUserList${index.index}_span" onclick="delRow(this, '#workChangeJobUserList${index.index}')" title="删除"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>
+									</td>
+								</tr>
+							</c:forEach>
+						</c:if>
+						</tbody>
+					</table>
+					<script type="text/template" id="workChangeJobUserListTpl">//<!--
+                                    <tr id="workChangeJobUserList{{idx}}">
+                                        <td class="hide">
+                                            <input id="workChangeJobUserList{{idx}}_id" name="workChangeJobUserList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+                                            <input id="workChangeJobUserList{{idx}}_basicInfoId" name="workChangeJobUserList[{{idx}}].basicInfoId" type="hidden" value="{{row.workStaffBasicInfo.id}}" class="basicInfoId"/>
+                                           <input id="workChangeJobUserList{{idx}}_before" name="workChangeJobUserList[{{idx}}].before" type="hidden" value="{{row.before}}"/>
+                                            <input id="workChangeJobUserList{{idx}}_userId" name="workChangeJobUserList[{{idx}}].userId" type="hidden" value="{{row.workStaffBasicInfo.userId}}"/>
+                                            <input id="workChangeJobUserList{{idx}}_delFlag" name="workChangeJobUserList[{{idx}}].delFlag" type="hidden" value="0"/>
+                                        </td>
+                                        <td>
+                                            <input id="workChangeJobUserList{{idx}}_1"   name="workChangeJobUserList[{{idx}}].workStaffBasicInfo.no" type="text" value="{{row.workStaffBasicInfo.no}}"  readonly="true"   class="form-control "/>
+                                        </td>
+                                        <td>
+                                            <input id="workChangeJobUserList{{idx}}_2"  name="workChangeJobUserList[{{idx}}].workStaffBasicInfo.name" type="text" value="{{row.workStaffBasicInfo.name}}"   readonly="true"  class="form-control "/>
+                                        </td>
+                                         <td>
+                                            <input id="workChangeJobUserList{{idx}}_3"  name="workChangeJobUserList[{{idx}}].workStaffBasicInfo.office.name" type="text" value="{{row.workStaffBasicInfo.office.name}}"   readonly="true"  class="form-control "/>
+                                        </td>
+                                         <td>
+                                            <input id="workChangeJobUserList{{idx}}_4"  name="workChangeJobUserList[{{idx}}].workStaffBasicInfo.idCard" type="text" value="{{row.workStaffBasicInfo.idCard}}"   readonly="true"  class="form-control "/>
+                                        </td>
+                                        <td>
+                                            <input id="workChangeJobUserList{{idx}}_5"  name="workChangeJobUserList[{{idx}}].workStaffBasicInfo.status" type="text" value="{{row.workStaffBasicInfo.status}}"   readonly="true"  class="form-control "/>
+                                        </td>
+                                         <td>
+                                            <input id="workChangeJobUserList{{idx}}_6"  name="workChangeJobUserList[{{idx}}].beforeName" type="text" value="{{row.beforeName}}"   readonly="true"  class="form-control "/>
+                                        </td>
+                                          <td>
+                                            <sys:treeselectJob id="workChangeJobUserList{{idx}}_after" name="workChangeJobUserList[{{idx}}].after" value="${row.after}" labelName="workChangeJobUserList[{{idx}}].afterName" labelValue="${row.afterName}"
+																title="职级类型" url="/workjobgrade/workJobGrade/treeData"  cssClass="form-control layui-input required" allowClear="true" notAllowSelectParent="true"/>
+                                        </td>
+                                        <td class="text-center op-td" >
+                                            {{#delBtn}}<span class="op-btn op-btn-delete" id="workChangeJobUserList{{idx}}_span" onclick="delRow(this, '#workChangeJobUserList{{idx}}')" title="删除"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>{{/delBtn}}
+                                        </td>
+                                    </tr>//-->
+					</script>
+					<script type="text/javascript">
+                        var workChangeJobUserListRowIdx = ${fn:length(workChangeJob.workChangeJobUserList)}, workChangeJobUserListTpl = $("#workChangeJobUserListTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+                        if($("#id").val()){
+                            workChangeJobUserListIdx = ${fn:length(workChangeJob.workChangeJobUserList)};
+                        }
+                        $(document).ready(function() {
+                        });
+					</script>
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 15 - 0
src/main/webapp/webpage/modules/workchangejob/workChangeJobTask.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="container form layui-form">
+	<act:flowChart procInsId="${processInstanceId}"/>
+	<act:histoicFlow procInsId="${processInstanceId}"/>
+</div>
+</body>
+</html>
+

+ 87 - 0
src/main/webapp/webpage/modules/workchangejob/workChangeJobUserForm.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="workChangeJobUser" action="${ctx}/workchangejob/workChangeJobUser/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="officeId" 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="companyId" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">调整表主键:</label></td>
+					<td class="width-35">
+						<form:input path="changeId" 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="userId" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">入职表主键:</label></td>
+					<td class="width-35">
+						<form:input path="basicInfoId" 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="after" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">调整前:</label></td>
+					<td class="width-35">
+						<form:input path="before" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 152 - 0
src/main/webapp/webpage/modules/workchangejob/workChangeJobUserList.jsp

@@ -0,0 +1,152 @@
+<%@ 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="workChangeJobUser" action="${ctx}/workchangejob/workChangeJobUser/" 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="changeId" 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="workchangejob:workChangeJobUser:add">
+				<table:addRow url="${ctx}/workchangejob/workChangeJobUser/form" title="职级调整明细"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workchangejob:workChangeJobUser:edit">
+			    <table:editRow url="${ctx}/workchangejob/workChangeJobUser/form" title="职级调整明细" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workchangejob:workChangeJobUser:del">
+				<table:delRow url="${ctx}/workchangejob/workChangeJobUser/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workchangejob:workChangeJobUser:import">
+				<table:importExcel url="${ctx}/workchangejob/workChangeJobUser/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workchangejob:workChangeJobUser:export">
+	       		<table:exportExcel url="${ctx}/workchangejob/workChangeJobUser/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 officeId">所属部门</th>
+				<th  class="sort-column companyId">所属公司</th>
+				<th  class="sort-column changeId">调整表主键</th>
+				<th  class="sort-column userId">用户表主键</th>
+				<th  class="sort-column basicInfoId">入职表主键</th>
+				<th  class="sort-column after">调整后</th>
+				<th  class="sort-column before">调整前</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="workChangeJobUser">
+			<tr>
+				<td> <input type="checkbox" id="${workChangeJobUser.id}" class="i-checks"></td>
+				<td><a  href="#" onclick="openDialogView('查看职级调整明细', '${ctx}/workchangejob/workChangeJobUser/form?id=${workChangeJobUser.id}','800px', '500px')">
+					${workChangeJobUser.remarks}
+				</a></td>
+				<td>
+					${workChangeJobUser.officeId}
+				</td>
+				<td>
+					${workChangeJobUser.companyId}
+				</td>
+				<td>
+					${workChangeJobUser.changeId}
+				</td>
+				<td>
+					${workChangeJobUser.userId}
+				</td>
+				<td>
+					${workChangeJobUser.basicInfoId}
+				</td>
+				<td>
+					${workChangeJobUser.after}
+				</td>
+				<td>
+					${workChangeJobUser.before}
+				</td>
+				<td>
+					<shiro:hasPermission name="workchangejob:workChangeJobUser:view">
+						<a href="#" onclick="openDialogView('查看职级调整明细', '${ctx}/workchangejob/workChangeJobUser/form?id=${workChangeJobUser.id}','800px', '500px')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="workchangejob:workChangeJobUser:edit">
+    					<a href="#" onclick="openDialog('修改职级调整明细', '${ctx}/workchangejob/workChangeJobUser/form?id=${workChangeJobUser.id}','800px', '500px')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="workchangejob:workChangeJobUser:del">
+						<a href="${ctx}/workchangejob/workChangeJobUser/delete?id=${workChangeJobUser.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>

+ 166 - 0
src/main/webapp/webpage/modules/workchangejob/workChangeJobView.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">
+        var validateForm;
+        var count = 0;
+        $(document).ready(function() {
+            if($("#changeDate").val()==null || $("#changeDate").val()==''){
+                $("#changeDate").val(getNowFormatDate());
+            }
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                rules:{
+                },
+                messages:{
+                },
+                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 getNowFormatDate() {
+            var date = new Date();
+            var seperator1 = "-";
+            var seperator2 = ":";
+            var month = date.getMonth() + 1;
+            var strDate = date.getDate();
+            month = (month < 10)?"0"+month:month;
+            strDate = (strDate < 10)?"0"+strDate:strDate;
+            var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate;
+            return currentdate;
+        }
+
+	</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 view-form">
+		<form:form id="inputForm" modelAttribute="workChangeJob" action="${ctx}/workchangejob/workChangeJob/save" method="post" class="form-horizontal" >
+			<form:hidden path="id"/>
+			<form:hidden  path="changer"/>
+			<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:input id="userName" readonly="true" path="userName" htmlEscape="false" class="form-control   layui-input"/>
+
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>调整编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<form:input path="number" htmlEscape="false"  readonly="true"  class="form-control  layui-input"/>
+							<span class="input-group-btn">
+                                <label class="form-status"><c:choose><c:when test="${not empty workChangeJob.state}">${fns:getDictLabel(workChangeJob.state, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                             </span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>调整日期:</label>
+					<div class="layui-input-block">
+						<input id="changeDate" name="changeDate" type="text"  maxlength="20" class="laydate-icondate form-control layer-date  layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workChangeJob.changeDate}" pattern="yyyy-MM-dd"/>"/>
+					</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="changeFor"  readonly="true" htmlEscape="false" rows="4"    maxlength="255" class="form-control "/>
+					</div>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>调整成员</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable" class="table table-bordered table-condensed can-edit no-bottom-margin">
+						<thead>
+						<tr>
+							<th width="200px">工号</th>
+							<th width="200px">姓名</th>
+							<th width="150px">部门</th>
+							<th width="200px">身份证号</th>
+							<th width="200px">员工状态</th>
+							<th width="200px">职级</th>
+							<th width="200px">调整职级</th>
+
+						</tr>
+						</thead>
+						<tbody id="workChangeJobUserList">
+						<c:if test="${not empty workChangeJob.workChangeJobUserList}">
+							<c:forEach items="${workChangeJob.workChangeJobUserList}" var="workChangeJobUser" varStatus="index">
+								<tr id="workChangeJobUserList${index.index}">
+									<td class="hide">
+										<input id="workChangeJobUserList${index.index}_id" name="workChangeJobUserList[${index.index}].id" type="hidden" value="${workChangeJobUser.id}"/>
+										<input id="workChangeJobUserList${index.index}_basicInfoId" name="workChangeJobUserList[${index.index}].basicInfoId" type="hidden" value="${workChangeJobUser.basicInfoId}"/>
+										<input id="workChangeJobUserList${index.index}_userId" name="workChangeJobUserList[${index.index}].userId" type="hidden" value="${workChangeJobUser.userId}"/>
+										<input id="workChangeJobUserList${index.index}_delFlag" name="workChangeJobUserList[${index.index}].delFlag" type="hidden" value="0"/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_1"  readonly="true"   type="text" value="${workChangeJobUser.workStaffBasicInfo.no}"   class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_2"  readonly="true"   type="text" value="${workChangeJobUser.workStaffBasicInfo.name}"   class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_3"  readonly="true"    type="text" value="${workChangeJobUser.workStaffBasicInfo.office.name}"   class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_4"  readonly="true"    type="text" value="${workChangeJobUser.workStaffBasicInfo.idCard}"   class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_5"  readonly="true"    type="text" value="${workChangeJobUser.workStaffBasicInfo.status}"  class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_6"  readonly="true"    type="text" value="${workChangeJobUser.beforeName}"   class="form-control "/>
+									</td>
+									<td>
+										<input id="workChangeJobUserList${index.index}_afterName"  readonly="true"    type="text" value="${workChangeJobUser.afterName}"  class="form-control "/>
+									</td>
+
+								</tr>
+							</c:forEach>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 27 - 0
src/main/webapp/webpage/modules/workclientinfo/Excel.jsp

@@ -0,0 +1,27 @@
+<%@ page language="java"
+	import="java.util.*,com.zhuozhengsoft.pageoffice.*"
+	pageEncoding="UTF-8"%>
+<%
+PageOfficeCtrl poCtrl=(PageOfficeCtrl)request.getAttribute("poCtrl");
+    String path = request.getContextPath();
+%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+   <title>最简单的打开保存Excel文件</title>
+   <script type="text/javascript" src="<%=path%>/jquery.min.js"></script>
+   <script type="text/javascript" src="<%=path%>/pageoffice.js" id="po_js_main"></script>
+</head>
+<body>
+    <script type="text/javascript">
+        function Save() {
+            document.getElementById("PageOfficeCtrl1").WebSave();
+            POBrowser.closeWindow();//关闭POBrowser窗口
+        }
+    </script>
+    <div style=" width:100%; height:100%;">
+      <%=poCtrl.getHtmlCode("PageOfficeCtrl1")%>
+    </div>
+</body>
+</html>

+ 48 - 0
src/main/webapp/webpage/modules/workclientinfo/Word.jsp

@@ -0,0 +1,48 @@
+<%@ page language="java"
+	import="java.util.*,com.zhuozhengsoft.pageoffice.*"
+	pageEncoding="UTF-8"%>
+<%
+PageOfficeCtrl poCtrl=(PageOfficeCtrl)request.getAttribute("poCtrl");
+    String path = request.getContextPath();
+%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+   <title>最简单的打开保存Word文件</title>
+   <script type="text/javascript" src="<%=path%>/jquery.min.js"></script>
+   <script type="text/javascript" src="<%=path%>/pageoffice.js" id="po_js_main"></script>
+</head>
+<body>
+    <script type="text/javascript">
+        function Save() {
+            document.getElementById("PageOfficeCtrl1").WebSave();
+             POBrowser.closeWindow();//关闭POBrowser窗口
+        }
+        function InsertSeal() {
+            try {
+                document.getElementById("PageOfficeCtrl1").ZoomSeal.AddSeal();
+            } catch(e) {}
+        }
+
+        function AddHandSign() {
+            try {
+                document.getElementById("PageOfficeCtrl1").ZoomSeal.LocateSealPosition("Seal1");
+                document.getElementById("PageOfficeCtrl1").ZoomSeal.AddHandSign("admin",null,"Seal1");
+            } catch(e) {};
+        }
+
+        function VerifySeal() {
+            document.getElementById("PageOfficeCtrl1").ZoomSeal.VerifySeal();
+        }
+
+        function ChangePsw() {
+            document.getElementById("PageOfficeCtrl1").ZoomSeal.ShowSettingsBox();
+        }
+    </script>
+    <div style="width:100%; height:100%;">
+       <%=poCtrl.getHtmlCode("PageOfficeCtrl1")%>
+    </div>
+
+</body>
+</html>

+ 902 - 0
src/main/webapp/webpage/modules/workclientinfo/workClientInfoForm.jsp

@@ -0,0 +1,902 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<%
+    String param = request.getParameter("param");
+
+%>
+<html>
+<head>
+	<title>客户信息管理</title>
+	<meta name="decorator" content="default"/>
+    <%--<style type="text/css">--%>
+        <%--.btn-file{--%>
+            <%--margin-top:8px;--%>
+        <%--}--%>
+        <%--.btn-default:hover, .btn-default:focus, .btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default {--%>
+            <%--background-color:#fff;--%>
+            <%--color: #110F0F;--%>
+        <%--}--%>
+        <%--.btn-default{--%>
+            <%--background-color:#fff;--%>
+            <%--color: #110F0F;--%>
+        <%--}--%>
+    <%--</style>--%>
+    <link href="${ctxStatic}/bootstrap-select-1.12.4/css/bootstrap-select.min.css" rel="stylesheet" />
+    <style>
+        #companyType-error{
+            left:0;
+            top:40px;
+        }
+        #clientType-error{
+            left:0;
+            top:40px;
+        }
+        #companyIndustry-error{
+            left:0;
+            top:40px;
+        }
+    </style>
+    <script src="${ctxStatic}/bootstrap-select-1.12.4/js/bootstrap-select.min.js"></script>
+	<script type="text/javascript">
+		var validateForm;
+		var exitName = true;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+              var tableObj = document.getElementById('contentTable').rows[1];
+              if (tableObj == null) {
+                  parent.layer.msg("请填写联系人信息!", {icon: 5});
+                  return false;
+              }
+              if(!exitName){
+                  return false;
+              }
+			  $("#inputForm").submit();
+			  return true;
+		  }else {
+              parent.layer.msg("信息未填写完整!", {icon: 5});
+          }
+
+		  return false;
+		}
+		$(document).ready(function() {
+            checkContentKeyUp('unitIntroduction',500);
+            $.validator.messages["orUnicode"] = true;
+            $.validator.methods["orUnicode"] = function( value, element ) {
+                return this.optional( element ) || /^[a-z0-9A-Z\-]*$/.test( value );
+            }
+            $.validator.messages["fax"] = true;
+            $.validator.methods["fax"] = function( value, element ) {
+                return this.optional( element ) || /^[0-9\-]*$/.test( value );
+            }
+            $.validator.messages["telephone"] = true;
+            $.validator.methods["telephone"] = function( value, element ) {
+                return this.optional( element ) || /^[0-9\-]*$/.test( value );
+            }
+            $.validator.messages["ourBank"] = true;
+            $.validator.methods["ourBank"] = function( value, element ) {
+                return this.optional( element ) || /^[\u4e00-\u9fa5]*$/.test( value );
+            }
+            $.validator.messages["taxId"] = true;
+            $.validator.methods["taxId"] = function( value, element ) {
+                return this.optional( element ) || /^[a-z0-9A-Z]*$/.test( value );
+            }
+
+            jQuery.validator.addMethod("isUscCode", function(value, element) {
+                if (this.optional(element)){
+                    return true;
+                }
+                var uscCode = /^((\w{15})|(\w{18})|(\w{20}))$/;
+                return uscCode.test(value);
+            }, "请填写正确的统一社会信用代码");
+
+			validateForm = $("#inputForm").validate({
+                rules:{
+                    orUnicode:{
+                        orUnicode:true
+                    },
+                    zipCode:{
+                        digits:true
+                    },
+                    email:{
+                        email:true
+                    },
+                    fax:{
+                        fax:true
+                    },
+                    telephone:{
+                        telephone:true
+                    },
+                    taxId:{
+                        taxId:true
+                    }
+                    <%--uscCode:{remote: "${ctx}/workclientinfo/workClientInfo/checkUscCode?oldUscCode=" + encodeURIComponent($("#oldUscCode").val())}--%>
+				},
+                messages:{
+                    orUnicode:{
+                        orUnicode:"仅允许输入数字、大写拉丁字母、符号“-”"
+                    },
+                    zipCode:{
+                        required:"必须输入数字"
+                    },
+                    email:{
+                        email:"请输入合法的邮箱地址"
+                    },
+                    fax:{
+                        fax:"仅允许输入数字、符号“-”"
+                    },
+                    telephone:{
+                        telephone:"仅允许输入数字、符号“-”"
+                    },
+                    taxId:{
+                        taxId:"仅允许输入数字、大写拉丁字母"
+                    }
+                    // uscCode:{remote:"重复的统一社会信用代码"}
+                },
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+            $('input[name="hasUscc"]').on('ifChecked', function(event){
+                disUscc(event.target.defaultValue);
+            });
+            disUscc($('input[name="hasUscc"]:checked').val());
+            if($("#uscCode").val()!=null&&$("#uscCode").val()!='') {
+                $("#inputForm").validate().element($("#uscCode"));
+            }
+            // $("#name").blur(function(){
+            //     checkName();
+            // })
+            $("#name").on("change",function(){
+                var id = $("#id").val();
+                var name = $("#name").val();
+                var uscCode = $("#uscCode").val();
+                $.ajax({
+                    url:"${ctx}/workclientinfo/workClientInfo/checkClient",
+                    type:"post",
+                    data:{"id":id,
+                        "name":name,
+                        "uscCode":uscCode},
+                    success:function(data){
+                        if(data==="false"){
+                            exitName=false
+                            $("#ph").html("该客户已存在");
+                        }else {
+                            exitName=true
+                            $("#ph").html('');
+                        }
+                    }
+                });
+                }
+
+            )
+            <%--var arr="${workClientInfo.clientType}".split(',');--%>
+            // $('#clientType').selectpicker('val',arr);
+           dismissDiv();
+
+        });
+
+		function testOurBank(value){
+		    if(!/^[\u4e00-\u9fa5]*$/.test( value )){
+                parent.layer.msg("开户银行必须输入汉字",{icon:6});
+            }
+        }
+
+        /**
+         * 只允许输入数字
+         * @param value
+         */
+        function testBankNumber(value){
+            if(!/^\d*$/.test( value )){
+                parent.layer.msg("开户帐号必须输入数字",{icon:6});
+            }
+        }
+		function addRow(list, idx, tpl, row){
+            var idx1 = $("#workClientBankList tr").length;
+		    if(list == '#workClientBankList'){
+                bornTemplete(list, idx, tpl, row, idx1);
+            }
+            var idx2 = $("#workClientLinkmanList tr").length;
+            if(list == '#workClientLinkmanList'){
+                bornTemplete(list, idx, tpl, row, idx2);
+            }
+		}
+		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");
+			}
+
+		}
+        function urlRedict(file,attach){
+		    parent.layer.confirm('确定删除吗?', {
+                btn: ['确认', '取消'] //可以无限个按钮
+            }, function(index, layero){
+                var index1 = parent.layer.load(0, {shade: false});
+                $.post("${ctx}/workfullmanage/workFullManage/deleteFile",
+                    {"file":file,"attach":attach},
+                    function(result){
+                        var d = JSON.parse(result);
+                        if(d.str){
+                            location.reload();
+                            parent.layer.msg("删除成功!!!",{icon:6});
+                            parent.layer.close(index1);
+                            parent.layer.close(index);
+                        }
+                    });
+            }, function(index){
+                parent.layer.close(index)
+            });
+
+        }
+
+        function checkName() {
+            var id = $("#id").val();
+            var name = $("#name").val();
+            var uscCode = $("#uscCode").val();
+            $.ajax({
+                url:"${ctx}/workclientinfo/workClientInfo/checkClient",
+                type:"post",
+                data:{"id":id,
+                    "name":name,
+                    "uscCode":uscCode},
+                success:function(data){
+                    if(data==="false"){
+                        exitName=false
+                        $("#ph").html("该客户已存在");
+                    }else {
+                        exitName=true
+                        $("#ph").html('');
+                    }
+                }
+            });
+        }
+
+        function insertTitle(tValue){
+            var list = "${workClientInfo.workAttachments}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file")[0].files;
+            for(var i = 0;i<files.length;i++) {
+                var file = files[i];
+                var attachmentId = "";
+                var attachmentFlag = "5";
+                console.log(file);
+                var timestamp = new Date().getTime();
+
+                var storeAs = "attachment-file/workClientInfo/" + 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 disUscc(hasUscc) {
+            if("2"==hasUscc){
+                $(".companyType_uscCode").hide();
+                /*$('input[name="uscCode"]').attr("class","form-control");*/
+                $('input[name="uscCode"]').val("");
+            }else {
+                $(".companyType_uscCode").show();
+                /*$('input[name="uscCode"]').attr("class","form-control required isUscCode layui-input");*/
+            }
+        }
+
+        // 模糊查询下拉框
+        function fuzzyQuery(){
+            var keyword = $("#name").val();
+            if (keyword == null || keyword === "") {
+                return;
+            }
+            $.post(
+                "${ctx}/workclientinfo/workClientInfo/enterpriseSearchByName",
+                {"keyword": keyword},
+                function (result) {
+                    if (result == null) {
+                        return;
+                    }
+                    var json = eval(result.data.items);
+                    //如果精准查询,只有一条数据,则不显示模糊查询div,直接赋值
+                    if (json.length == 1) {
+                        var id = json[0].id;
+                        $.getJSON(
+                            "${ctx}/workclientinfo/workClientInfo/enterpriseTicketInfo",
+                            {"id": id},
+                            function (data) {
+                                $("#name").val(data.ENTNAME).change();
+                                $("#uscCode").val(data.TAXNUMBER);
+                                $("#registerAddress").val(data.OPLOC);
+                            }
+                        );
+                        return;
+                    }
+                    var html = "<ul>";
+                    for (var i = 0; i < json.length; i++) {
+                        html += "<li value=" + json[i].id + ">" + json[i].entname + "</li>";
+                    }
+                    html += "</ul>";
+                    $("#fuzzyQuerySelect").show().html(html);
+
+                    //鼠标移动到某行上改变颜色
+                    $("li").bind("mouseover", function () {
+                        $(this).css("background-color", "grey");
+                    });
+                    $("li").bind("mouseout", function () {
+                        $(this).css("background-color", "white");
+                    });
+                    //单击某行
+                    $("li").bind("click", function () {
+                        $("#fuzzyQuerySelect").hide();
+                        var id = $(this).val();
+                        $.getJSON(
+                            "${ctx}/workclientinfo/workClientInfo/enterpriseTicketInfo",
+                            {"id": id},
+                            function (data) {
+                                $("#name").val(data.ENTNAME).change();
+                                $("#uscCode").val(data.TAXNUMBER);
+                                $("#registerAddress").val(data.OPLOC);
+                            }
+                        );
+
+                    });
+                }, "json");
+        }
+
+
+	</script>
+
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+        <input type="hidden" value="${param.param}" id="param">
+        <form:form id="inputForm" modelAttribute="workClientInfo" enctype="multipart/form-data"
+                   onkeydown="if(event.keyCode==13)return false;" action="${ctx}/workclientinfo/workClientInfo/save"
+                   method="post" class="form-horizontal">
+            <form:hidden path="id"/>
+            <div class="form-group layui-row first">
+                <div class="form-group-label"><h2>基本信息</h2></div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>拥有统一社会信用代码:</label>
+                    <div class="layui-input-block">&nbsp;&nbsp;
+                        <form:radiobutton class="usccClass i-checks" path="hasUscc" value="1" label="是" checked="true" />
+                        &nbsp;&nbsp;
+                        <form:radiobutton class="usccClass i-checks" path="hasUscc" value="2" label="否" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7" id="search">
+                    <label class="layui-form-label"><span class="require-item">*</span>客户名称:&nbsp;&nbsp;</label>
+                    <div class="layui-input-block">
+                        <form:input path="name" htmlEscape="false" id="name" class="form-control required layui-input"/>
+                        <a onclick="fuzzyQuery()"  class="nav-btn nav-btn-add" style="margin-right: 0px;top:0px;right:1px;position: absolute;height:40px;line-height: 40px;">查询</a>
+                        <span id="ph" style="color:#cc5965"></span>
+                    </div>
+                    <div id="fuzzyQuerySelect"
+                         style="z-index:1;display:none;background-color:white; position: relative; width:333px;left:120px; border: 1px solid gray;">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>客户编号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="number" htmlEscape="false" class="form-control layui-input" readonly="true"/>
+                    </div>
+                </div>
+
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>客户性质:</label>
+                    <div class="layui-input-block">
+                        <form:select path="companyType" class="form-control simple-select required" id="companyType">
+                            <form:option value="" label="--请选择客户性质--"/>
+                            <form:options items="${fns:getMainDictList('company_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7 companyType_uscCode">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>统一社会信用代码:</label>
+                    <div class="layui-input-block">
+                        <form:input path="uscCode" htmlEscape="false" id="uscCode" class="form-control required isUscCode layui-input"/>
+                        <input type="hidden" id="oldUscCode" value="${workClientInfo.uscCode}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>所在行业:</label>
+                    <div class="layui-input-block">
+                        <form:select path="companyIndustry" class="form-control simple-select required">
+                            <form:option value="" label="--请选择行业--"/>
+                            <form:options items="${fns:getMainDictList('company_industry')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>所在地区:</label>
+                    <div class="layui-input-block with-icon">
+                        <sys:treeselect id="area" name="area.id" value="${workClientInfo.area.id}" labelName="area.name"
+                                        labelValue="${workClientInfo.area.name}"
+                                        title="区域" url="/sys/area/treeData" cssClass="form-control required layui-input"
+                                        allowClear="true" notAllowSelectParent="false"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">法人代表:</label>
+                    <div class="layui-input-block">
+                        <form:input path="lawerPresint" htmlEscape="false" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">邮政编码:</label>
+                    <div class="layui-input-block">
+                        <form:input path="zipCode" htmlEscape="false" minlength="6" maxlength="6"
+                                    class="form-control digits layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">传真:</label>
+                    <div class="layui-input-block">
+                        <form:input path="fax" htmlEscape="false" class="form-control isTel layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>客户类型:</label>
+                    <div class="layui-input-block">
+                        <form:select path="clientType" class="form-control simple-select required">
+                            <form:option value="" label="--请选择客户类型--"/>
+                            <form:options items="${fns:getMainDictList('client_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>公司电话:</label>
+                    <div class="layui-input-block">
+                        <form:input path="telephone" htmlEscape="false"
+                                    class="form-control isTel required layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">公司网址:</label>
+                    <div class="layui-input-block">
+                        <form:input path="companyUrl" htmlEscape="false" class="form-control isUrl layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>注册地址:</label>
+                    <div class="layui-input-block">
+                        <form:input path="registerAddress" htmlEscape="false"
+                                    class="form-control required layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw7">
+                    <label class="layui-form-label">详细地址:</label>
+                    <div class="layui-input-block">
+                        <form:input path="address" htmlEscape="false" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>开户行信息:</label>
+                    <div class="layui-input-block">
+                        <div class="layui-item nav-btns" style="padding-left:0px;">
+                            <a class="nav-btn nav-btn-add"
+                               onclick="addRow('#workClientBankList', workClientBankRowIdx, workClientBankTpl);workClientBankRowIdx = workClientBankRowIdx + 1;"
+                               title="新增"><i class="fa fa-plus"></i> 新增</a>
+                        </div>
+                        <table id="bankinfo" class="table table-bordered table-condensed can-edit">
+                            <thead>
+                            <tr>
+                                <th class="sort-column companyType"><font color="red">*</font>开户银行</th>
+                                <th width="400px;"><font color="red">*</font>开户账号</th>
+                                <th width="100px">操作</th>
+                            </tr>
+                            </thead>
+                            <tbody id="workClientBankList">
+
+                            </tbody>
+                        </table>
+                        <script type="text/template" id="workClientBankTpl">//<!--
+                                <tr id="workClientBankList{{idx}}">
+                                    <td class="hide">
+                                        <input id="workClientBankList{{idx}}_id" name="workClientBankList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+                                        <input id="workClientBankList{{idx}}_delFlag" name="workClientBankList[{{idx}}].delFlag" type="hidden" value="0"/>
+                                    </td>
+
+                                    <td>
+                                        <input id="workClientBankList{{idx}}_ourBank" onblur="testOurBank(this.value)" name="workClientBankList[{{idx}}].ourBank" type="text" value="{{row.ourBank}}"    class="form-control required"/>
+                                    </td>
+
+                                    <td>
+                                        <input id="workClientBankList{{idx}}_bankNumber" onblur="testBankNumber(this.value)" name="workClientBankList[{{idx}}].bankNumber" type="text" value="{{row.bankNumber}}"  minlength="16" maxlength="19"  class="form-control required digits "/>
+                                    </td>
+
+                                    <td class="text-center op-td" width="10">
+                                        {{#delBtn}}<span class="op-btn op-btn-delete" onclick="delRow(this, '#workClientBankList{{idx}}')" title="删除"><i class="fa fa-trash"></i>&nbsp;删除</span>{{/delBtn}}
+                                    </td>
+                                </tr>//-->
+                        </script>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw7">
+                    <label class="layui-form-label">单位简介:</label>
+                    <div class="layui-input-block">
+                        <form:textarea path="unitIntroduction" htmlEscape="false" rows="4" maxlength="500"
+                                       onkeyup="checkContentKeyUp('unitIntroduction',500);" class="form-control "/>
+                    </div>
+                    <span id="contentMsg" style="float: right"></span>
+                </div>
+            </div>
+
+
+            <%--<td class="companyType_orUnicode width-15 active"><label class="pull-right"><font color="red">*</font>组织机构代码或税务号:</label></td>
+            <td class="companyType_orUnicode width-35">
+                <form:input path="orUnicode" htmlEscape="false"  class="form-control required"/>
+            </td>
+
+            <td class="companyType_taxId width-15 active"><label class="pull-right"><font color="red">*</font>组织机构代码或税务号:</label></td>
+            <td class="companyType_taxId width-35" colspan="3">
+                <form:input path="taxId" htmlEscape="false"    class="form-control required"/>
+            </td>
+            <script type="text/javascript">
+                $(function () {
+                    var defaultValue = $("#companyType option:selected").val();
+                    var companyTypeValue = "${workClientInfo.companyType}";
+                    console.log("defaultValue="+defaultValue);
+                    if(defaultValue == 1 || companyTypeValue == 1){
+                        $(".companyType_taxId").hide();
+                        $(".companyType_orUnicode").show();
+                    }else{
+                        $(".companyType_orUnicode").hide();
+                        $(".companyType_taxId").show();
+                    }
+                    $("select#companyType").change(function () {
+                        var currentValue = $(this).val();
+                        if(currentValue == 1){
+                            $(".companyType_taxId").hide();
+                            $(".companyType_orUnicode").show();
+                        }else{
+                            $(".companyType_orUnicode").hide();
+                            $(".companyType_taxId").show();
+                        }
+                    });
+                })
+            </script>--%>
+
+            <%--<tr>
+            <td class="width-15 active"><label class="pull-right"><font color="red">*</font>客户类型:</label></td>
+                   <td class="width-35">
+                       <form:select path="clientType" class="form-control required">
+                           <form:option value="" label=""/>
+                           <form:options items="${fns:getMainDictList('client_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                       </form:select>
+                   </td>
+               <td class="width-15 active"><label class="pull-right">信用等级:</label></td>
+                       <td class="width-35">
+                           <form:select path="creditRank" class="form-control ">
+                               <form:option value="" label=""/>
+                               <form:options items="${fns:getDictList('credit_rank')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                           </form:select>
+                       </td>
+                   </tr>--%>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>联系人信息</h2></div>
+                <div class="layui-item nav-btns">
+                    <a class="nav-btn nav-btn-add"
+                       onclick="addRow('#workClientLinkmanList', workClientLinkmanRowIdx, workClientLinkmanTpl);workClientLinkmanRowIdx = workClientLinkmanRowIdx + 1;"
+                       title="新增"><i class="fa fa-plus"></i> 新增</a>
+                </div>
+                <div class="layui-item layui-col-xs12 form-table-container">
+                    <table id="contentTable" class="table table-bordered table-condensed can-edit">
+                        <thead>
+                        <tr>
+                            <th class="hide"></th>
+                            <th width="100px"><font color="red">*</font>联系人姓名</th>
+                            <th width="100px">部门</th>
+                            <th width="100px">职务</th>
+                            <th width="100px">QQ</th>
+                            <th width="100px">联系方式1</th>
+                            <th width="100px">联系方式2</th>
+                            <th width="150px">E-mail</th>
+                            <th width="100px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workClientLinkmanList">
+                        <c:forEach items="${workClientInfo.workClientLinkmanList}" var="workClientLinkman" varStatus="status">
+                            <tr>
+                                   <td class="hide">
+                                       <input id="workClientLinkmanList${status.index + 1}_id"
+                                              name="workClientLinkmanList[${status.index + 1}].id" type="hidden"
+                                              value="${workClientLinkman.id}"/>
+                                       <input id="workClientLinkmanList${status.index + 1}_delFlag"
+                                              name="workClientLinkmanList[${status.index + 1}].delFlag" type="hidden"
+                                              value="0" readonly/>
+                                   </td>
+                                   <td><input id="workClientLinkmanList${status.index + 1}_name"
+                                              name="workClientLinkmanList[${status.index + 1}].name" type="text"
+                                              value="${workClientLinkman.name}" readonly class="form-control required"/></td>
+                                   <td><input id="workClientLinkmanList${status.index + 1}_office"
+                                              name="workClientLinkmanList[${status.index + 1}].office" type="text"
+                                              value="${workClientLinkman.office}" readonly class="form-control "/></td>
+                                   <td><input id="workClientLinkmanList${status.index + 1}_position"
+                                              name="workClientLinkmanList[${status.index + 1}].position" type="text"
+                                              value="${workClientLinkman.position}" readonly class="form-control "/></td>
+                                   <td><input id="workClientLinkmanList${status.index + 1}_qq"
+                                              name="workClientLinkmanList[${status.index + 1}].qq"
+                                              type="text" value="${workClientLinkman.qq}" readonly class="form-control digits"/>
+                                   </td>
+                                   <td><input id="workClientLinkmanList${status.index + 1}_linkMobile"
+                                              name="workClientLinkmanList[${status.index + 1}].linkMobile" type="text"
+                                              value="${workClientLinkman.linkMobile}" readonly class="form-control isPhone"/></td>
+                                   <td><input id="workClientLinkmanList${status.index + 1}_linkPhone"
+                                              name="workClientLinkmanList[${status.index + 1}].linkPhone" type="text"
+                                              value="${workClientLinkman.linkPhone}" readonly class="form-control isTel"/></td>
+                                   <td><input id="workClientLinkmanList{{idx}}_email"
+                                              name="workClientLinkmanList[${status.index + 1}].email" type="text"
+                                              value="${workClientLinkman.email}"
+                                              class="form-control email" readonly/></td>
+                                   <td class="text-center op-td">
+                                    <span class="op-btn op-btn-delete"
+                                          onclick="delRow(this, '#workClientLinkmanList${status.index + 1}')"
+                                          title="删除"><i
+                                            class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>
+                                   </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                    <script type="text/template" id="workClientLinkmanTpl">//<!--
+            <tr id="workClientLinkmanList{{idx}}">
+                <td class="hide">
+                    <input id="workClientLinkmanList{{idx}}_id" name="workClientLinkmanList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+                    <input id="workClientLinkmanList{{idx}}_delFlag" name="workClientLinkmanList[{{idx}}].delFlag" type="hidden" value="0"/>
+                </td>
+
+                <td>
+                    <input id="workClientLinkmanList{{idx}}_name" name="workClientLinkmanList[{{idx}}].name" type="text" value="{{row.name}}"    class="form-control required"/>
+                </td>
+                <td>
+                    <input id="workClientLinkmanList{{idx}}_office" name="workClientLinkmanList[{{idx}}].office" type="text" value="{{row.office}}"    class="form-control "/>
+                </td>
+                <td>
+                    <input id="workClientLinkmanList{{idx}}_position" name="workClientLinkmanList[{{idx}}].position" type="text" value="{{row.position}}"    class="form-control "/>
+                </td>
+
+
+                <td>
+                    <input id="workClientLinkmanList{{idx}}_qq" name="workClientLinkmanList[{{idx}}].qq" type="text" value="{{row.qq}}"    class="form-control digits"/>
+                </td>
+
+
+                <td>
+                    <input id="workClientLinkmanList{{idx}}_linkPhone" name="workClientLinkmanList[{{idx}}].linkPhone" type="text" value="{{row.linkPhone}}"    class="form-control isTel"/>
+                </td>
+
+
+                <td>
+                    <input id="workClientLinkmanList{{idx}}_linkMobile" name="workClientLinkmanList[{{idx}}].linkMobile" type="text" value="{{row.linkMobile}}"    class="form-control isPhone"/>
+                </td>
+
+
+                <td>
+                    <input id="workClientLinkmanList{{idx}}_email" name="workClientLinkmanList[{{idx}}].email" type="text" value="{{row.email}}"    class="form-control email"/>
+                </td>
+
+                <td class="text-center op-td" >
+                    {{#delBtn}}<span class="op-btn op-btn-delete" onclick="delRow(this, '#workClientLinkmanList{{idx}}')" title="删除"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>{{/delBtn}}
+                </td>
+            </tr>//-->
+                    </script>
+                    <script type="text/javascript">
+                        var workClientLinkmanRowIdx = 0,
+                            workClientLinkmanTpl = $("#workClientLinkmanTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g, "");
+                        var workClientBankRowIdx = 0,
+                            workClientBankTpl = $("#workClientBankTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g, "");
+                        $(document).ready(function () {
+                            var data = ${fns:toJson(workClientInfo.workClientLinkmanList)};
+                            for (var i = 0; i < data.length; i++) {
+                                addRow('#workClientLinkmanList', workClientLinkmanRowIdx, workClientLinkmanTpl, data[i]);
+                                workClientLinkmanRowIdx = workClientLinkmanRowIdx + 1;
+                            }
+                            var dataBank = ${fns:toJson(workClientInfo.workClientBankList)};
+                            for (var i = 0; i < dataBank.length; i++) {
+                                addRow('#workClientBankList', workClientBankRowIdx, workClientBankTpl, dataBank[i]);
+                                workClientBankRowIdx = workClientBankRowIdx + 1;
+                            }
+                        });
+
+                    </script>
+                </div>
+            </div>
+
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>附件信息</h2></div>
+                <div class="layui-item nav-btns">
+                    <a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+                </div>
+                <div id="addFile_attachment" style="display: none" class="upload-progress">
+                    <span id="fileName_attachment"></span>
+                    <b><span id="baifenbi_attachment"></span></b>
+                    <div class="progress">
+                            <%--进度条--%>
+                        <div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+                        </div>
+                    </div>
+                </div>
+                <input id="attachment_file" type="file" name="attachment_file" multiple="multiple"
+                       style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+                <span id="attachment_title"></span>
+                <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+                    <table id="upTable" class="table table-bordered table-condensed details">
+                        <thead>
+                        <tr>
+                                <%-- <th>序号</th>--%>
+                            <th>文件</th>
+                            <th>上传人</th>
+                            <th>上传时间</th>
+                            <th width="150px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="file_attachment">
+                        <c:forEach items="${workClientInfo.workAttachments}" var="workClientAttachment"
+                                   varStatus="status">
+                            <tr>
+                                    <%-- <td>${status.index + 1}</td>--%>
+                                <c:choose>
+                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                        <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+                                    </c:when>
+                                    <c:otherwise>
+                                        <c:choose>
+                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                <td><a class="attention-info" href="javascript:void(0)"
+                                                       onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a>
+                                                </td>
+                                            </c:when>
+                                            <c:otherwise>
+                                                <td><a class="attention-info" href="javascript:void(0)"
+                                                       onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a>
+                                                </td>
+                                            </c:otherwise>
+                                        </c:choose>
+                                    </c:otherwise>
+                                </c:choose>
+                                <td>${workClientAttachment.createBy.name}</td>
+                                <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                                <td class="op-td">
+                                    <div class="op-btn-box">
+                                        <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));"
+                                           class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                        <c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+                                            <a href="javascript:void(0)"
+                                               onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')"
+                                               class="op-btn op-btn-delete"><i class="fa fa-trash"></i>&nbsp;删除</a>
+                                        </c:if>
+                                    </div>
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+            <div class="form-group layui-row page-end"></div>
+        </form:form>
+    </div>
+</div>
+
+
+
+<%--<script type="text/javascript">--%>
+  <%----%>
+    <%--//上传--%>
+    <%--function upload_image_button(index){--%>
+        <%--$("#upload_file_"+index).click();--%>
+    <%--}--%>
+    <%--function upload_show_image(index){--%>
+        <%--var image =$("#upload_file_"+index)[0].files[0];--%>
+        <%--var url = window.URL.createObjectURL(image);--%>
+        <%--if(image.name.indexOf("jpg") != -1--%>
+            <%--|| image.name.indexOf("png") != -1--%>
+            <%--|| image.name.indexOf("jpeg") != -1--%>
+            <%--|| image.name.indexOf("gif") != -1--%>
+            <%--|| image.name.indexOf("PNG") != -1){--%>
+            <%--url = window.URL.createObjectURL(image);--%>
+        <%--}else if(image.name.indexOf("pdf") != -1 || image.name.indexOf("PDF") != -1){--%>
+            <%--url = "${ctxStatic}/common/img/pdf5.png";--%>
+        <%--}else if(image.name.indexOf("doc") != -1 || image.name.indexOf("DOC") != -1--%>
+            <%--|| image.name.indexOf("docx") != -1 || image.name.indexOf("DOCX") != -1){--%>
+            <%--url = "${ctxStatic}/common/img/word.png";--%>
+        <%--}else if(image.name.indexOf("xlsx") != -1 || image.name.indexOf("XLSX") != -1--%>
+            <%--|| image.name.indexOf("xls") != -1 || image.name.indexOf("XLSX") != -1){--%>
+            <%--url = "${ctxStatic}/common/img/excel.png";--%>
+        <%--}else{--%>
+            <%--url = "${ctxStatic}/common/img/file.jpg";--%>
+        <%--}--%>
+        <%--$("#upload_image_"+index).attr("src",url);--%>
+        <%--var length = $("#upload_image_div :file").length;--%>
+        <%--if( index == length &&  length < 5 ){--%>
+            <%--upload_image_append(index);--%>
+            <%--add_x(index);--%>
+        <%--}else if(index == length && length ==5){--%>
+            <%--var span = '<span id="upload_close_'+index+'" class="close_ico" style="cursor:pointer; position: absolute;top:-1px;right: -2px; display:inline-block;z-index:1;" onclick="close_img('+index+');"><i class="fa fa-close"></i></span>';--%>
+            <%--$("#upload_image_5").before(span);--%>
+        <%--}--%>
+    <%--}--%>
+    <%--function upload_image_append(index){--%>
+        <%--var div1 = "<div id='upload_div_"+(index+1)+"' style='float:left;position:relative;width: 64px;height: 57px;margin-left:5px;'>";--%>
+        <%--var img = '<img id="upload_image_'+(index+1)+'" class="upload_ico" width="50px" height="50px"  onclick="upload_image_button('+(index+1)+')" src = "${pageContext.request.contextPath}/static/uploadify/upload_ico.png" style="cursor:pointer;width:50px;height:50px;"/>';--%>
+        <%--var input = '<input id="upload_file_'+(index+1)+'" type="file" style="display:none;" name="upload_files" onChange="upload_show_image('+(index+1)+')" /><br>';--%>
+        <%--var div2 = "</div>";--%>
+        <%--$("#upload_image_div").append(div1+img+input+div2);--%>
+    <%--}--%>
+    <%--function close_img(index) {--%>
+        <%--$("#upload_div_"+index).remove();--%>
+        <%--var length = $("#upload_image_div :file").length;--%>
+        <%--if(length == 0){--%>
+            <%--add_div();--%>
+        <%--}else if(length == 1){--%>
+            <%--var x = $("#upload_image_div").find("span").text();--%>
+            <%--if("x" != x){--%>
+                <%--add_div();--%>
+            <%--}--%>
+        <%--}--%>
+    <%--}--%>
+    <%--function add_x(index) {--%>
+        <%--var span = '<span id="upload_close_'+index+'" class="close_ico" style="cursor:pointer; position: absolute;top:-1px;right: -2px; display:inline-block;z-index:1;" onclick="close_img('+index+');"><i class="fa fa-close"></i></span>';--%>
+        <%--$("img:eq(-2)").before(span);--%>
+    <%--}--%>
+    <%--function add_div() {--%>
+        <%--var upload_div_1 =--%>
+            <%--'<div id="upload_div_1" style="float: left;position:relative;width: 64px;height: 57px;margin-left:5px;" >'+--%>
+            <%--'<img  id="upload_image_1" class="upload_ico" style="cursor:pointer;width:50px;height:50px;"  src="${pageContext.request.contextPath}/static/uploadify/upload_ico.png"  onclick="upload_image_button(1)"/>'+--%>
+            <%--'<input id="upload_file_1" type="file" style="display:none"  name="upload_files"  onchange="upload_show_image(1)" /><br>'+--%>
+            <%--'</div>';--%>
+        <%--$("#upload_image_div").html("").append(upload_div_1);--%>
+    <%--}--%>
+
+
+<%--</script>--%>
+</body>
+</html>

+ 245 - 0
src/main/webapp/webpage/modules/workclientinfo/workClientInfoFormDetail.jsp

@@ -0,0 +1,245 @@
+<%@ page contentType="text/html;charset=UTF-8"%>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+    <title>客户信息</title>
+    <meta name="decorator" content="default"/>
+</head>
+<body >
+<div class="single-form view-form">
+    <div class="container">
+        <div class="form-group layui-row first">
+            <div class="form-group-label"><h2>基本信息</h2></div>
+            <div class="layui-item layui-col-sm6 lw7">
+                <label class="layui-form-label"><span class="require-item">*</span>客户名称:</label>
+                <div class="layui-input-block">
+                    <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workClientInfo.name}"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6 lw7">
+                <label class="layui-form-label double-line"><span class="require-item">*</span>拥有统一社会信用代码:</label>
+                <div class="layui-input-block">
+                    <span class="radio-box">&nbsp;&nbsp;
+                        <input type="radio" class="usccClass" name="hasUscc" label="是" disabled="true" <c:if test="${workClientInfo.hasUscc eq 1}">checked="true"</c:if> />是
+                        &nbsp;&nbsp;
+                        <input type="radio" class="usccClass" name="hasUscc" label="否" disabled="true" <c:if test="${workClientInfo.hasUscc eq 2}">checked="true"</c:if> />否
+                    </span>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6 lw7">
+                <label class="layui-form-label"><span class="require-item">*</span>客户性质:</label>
+                <div class="layui-input-block">
+                    <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getMainDictLabel(workClientInfo.companyType, 'company_type', '')}"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6 lw7">
+                <label class="layui-form-label double-line"><span class="require-item">*</span>统一社会信用代码:</label>
+                <div class="layui-input-block">
+                    <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workClientInfo.uscCode}"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6 lw7">
+                <label class="layui-form-label"><span class="require-item">*</span>所在行业:</label>
+                <div class="layui-input-block">
+                    <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getMainDictLabel(workClientInfo.companyIndustry, 'company_industry', '')}"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6 lw7">
+                <label class="layui-form-label"><span class="require-item">*</span>所在地区:</label>
+                <div class="layui-input-block with-icon">
+                    <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workClientInfo.area.name}"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6 lw7">
+                <label class="layui-form-label">法人代表:</label>
+                <div class="layui-input-block">
+                    <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workClientInfo.lawerPresint}"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6 lw7">
+                <label class="layui-form-label">邮政编码:</label>
+                <div class="layui-input-block">
+                    <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workClientInfo.zipCode}"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6 lw7">
+                <label class="layui-form-label">传真:</label>
+                <div class="layui-input-block">
+                    <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workClientInfo.fax}"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6 lw7">
+                <label class="layui-form-label">客户类型:</label>
+                <div class="layui-input-block">
+                    <input htmlEscape="false" readonly="true" class="form-control layui-input" value="<c:set value="${fn:split(workClientInfo.clientType, ',') }" var="clientTypes" /><c:forEach items="${clientTypes}" var="cType" varStatus="status">${fns:getMainDictLabel(cType, 'client_type', '')}<c:if test="${!status.last}">, </c:if></c:forEach>"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6 lw7">
+                <label class="layui-form-label">公司电话:</label>
+                <div class="layui-input-block">
+                    <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workClientInfo.telephone}"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6 lw7">
+                <label class="layui-form-label">公司网址:</label>
+                <div class="layui-input-block">
+                    <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workClientInfo.companyUrl}"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm12 lw7">
+                <label class="layui-form-label"><span class="require-item">*</span>注册地址:</label>
+                <div class="layui-input-block">
+                    <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workClientInfo.registerAddress}"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm12 lw7">
+                <label class="layui-form-label">详细地址:</label>
+                <div class="layui-input-block">
+                    <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workClientInfo.address}"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm12 lw7">
+                <label class="layui-form-label"><span class="require-item">*</span>开户行信息:</label>
+                <div class="layui-input-block">
+
+                    <table id="bankinfo" class="table table-bordered table-condensed details">
+                        <thead>
+                        <tr>
+                            <th width="80px">序号</th>
+                            <th ><font color="red">*</font>开户银行</th>
+                            <th width="400px;"><font color="red">*</font>开户账号</th>
+
+                        </tr>
+                        </thead>
+                        <tbody id="workClientBankList">
+                        <c:forEach items="${workClientInfo.workClientBankList}" var="workClientBank" varStatus="status">
+                            <tr>
+                                <td>${status.index + 1}</td>
+                                <td>${workClientBank.ourBank}</td>
+                                <td>${workClientBank.bankNumber}</td>
+                            </tr>
+                        </c:forEach>
+                        <c:if test="${bankSize == 0}">
+                            <tr>
+                                <td colspan="3">暂无数据</td>
+                            </tr>
+                        </c:if>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm12 with-textarea lw7">
+                <label class="layui-form-label">单位简介:</label>
+                <div class="layui-input-block">
+                    <textarea htmlEscape="false" rows="4" readonly="true" maxlength="1000" class="form-control" >${workClientInfo.unitIntroduction}</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 form-table-container" >
+                <table id="contentTable" class="table table-bordered table-condensed no-bottom-margin details">
+                    <thead>
+                    <tr>
+                        <th class="hide"></th>
+                        <th width="150px"><font color="red">*</font>联系人姓名</th>
+                        <th >部门</th>
+                        <th width="150px">职务</th>
+                        <th width="150px">QQ</th>
+                        <th width="150px">联系方式1</th>
+                        <th width="150px">联系方式2</th>
+                        <th width="150px">E-mail</th>
+                    </tr>
+                    </thead>
+                    <tbody id="workClientLinkmanList">
+                    <c:forEach items="${workClientInfo.workClientLinkmanList}" var="workClientLinkman" varStatus="status">
+                        <tr>
+                            <td class="hide">${status.index + 1}</td>
+                            <td >${workClientLinkman.name}</td>
+                            <td >${workClientLinkman.office}</td>
+                            <td >${workClientLinkman.position}</td>
+                            <td >${workClientLinkman.qq}</td>
+                            <td >${workClientLinkman.linkPhone}</td>
+                            <td >${workClientLinkman.linkMobile}</td>
+                            <td >${workClientLinkman.email}</td>
+                        </tr>
+                    </c:forEach>
+                    <c:if test="${linkManSize == 0}">
+                        <tr>
+                            <td colspan="8">暂无数据</td>
+                        </tr>
+                    </c:if>
+                    </tbody>
+                </table>
+            </div>
+        </div>
+        <div class="form-group layui-row">
+            <div class="form-group-label"><h2>附件信息</h2></div>
+            <div class="layui-item layui-col-xs12 form-table-container" >
+                <table id="contentTable1" 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="workClientAttachmentList">
+                    <c:choose>
+                        <c:when test="${not empty workClientInfo.workAttachments}">
+                            <c:forEach items="${workClientInfo.workAttachments}" var="workClientAttachment"
+                                       varStatus="status">
+                                <tr>
+                                        <%-- <td>${status.index + 1}</td>--%>
+                                    <c:choose>
+                                        <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                            <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+                                        </c:when>
+                                        <c:otherwise>
+                                            <c:choose>
+                                                <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                    <td><a href="javascript:void(0)"
+                                                           onclick="preview('预览','${workClientAttachment.url}','95%','95%','1')">${workClientAttachment.attachmentName}</a>
+                                                    </td>
+                                                </c:when>
+                                                <c:otherwise>
+                                                    <td><a href="javascript:void(0)"
+                                                           onclick="preview('预览','${workClientAttachment.url}','95%','95%')">${workClientAttachment.attachmentName}</a>
+                                                    </td>
+                                                </c:otherwise>
+                                            </c:choose>
+                                        </c:otherwise>
+                                    </c:choose>
+                                    <td>${workClientAttachment.createBy.name}</td>
+                                    <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                                    <td class="op-td">
+                                        <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));"
+                                           class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                    </td>
+                                </tr>
+                            </c:forEach>
+                        </c:when>
+                        <c:otherwise>
+                            <tr>
+                                <td colspan="4" align="center">暂无数据</td>
+                            </tr>
+                        </c:otherwise>
+                    </c:choose>
+                    </tbody>
+                </table>
+            </div>
+        </div>
+        <div class="form-group layui-row page-end"></div>
+
+    </div>
+</div>
+
+</body>
+</html>

+ 269 - 0
src/main/webapp/webpage/modules/workclientinfo/workClientInfoList.jsp

@@ -0,0 +1,269 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ page isELIgnored="false"%>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>客户管理管理</title>
+	<meta name="decorator" content="default"/>
+	<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");
+                }
+            });
+            laydate.render({
+                elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+		});
+        function switchInput(obj){
+            $("#"+obj).show();
+            $("#"+obj).siblings().hide();
+        }
+        //打开对话框(查看)
+        function openDialogNow(title,url,width,height){
+            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: ['关闭'],
+                cancel: function(index){
+                }
+            });
+        }
+	</script>
+	<script type="text/javascript">
+        $(function () {
+            function openNewWindowTab(url) {
+                alert(url);
+            }
+        })
+	</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">
+	<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="workClientInfo" action="${ctx}/workclientinfo/workClientInfo/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 lw14">
+						<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="${workClientInfo.area.id}" labelName="area.name" labelValue="${workClientInfo.area.name}"
+                                                title="区域" url="/sys/area/treeData" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="false"/>
+                            </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="lw14">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">创建时间:</label>
+							<div class="layui-input-block">
+								<input id="beginDate" placeholder="开始时间" name="beginDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${workClientInfo.beginDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+								<span class="group-sep">-</span>
+								<input id="endDate" placeholder="结束时间" name="endDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${workClientInfo.endDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+							</div>
+						</div>
+						
+						<div class="layui-item query athird">
+							<label class="layui-form-label">客户性质:</label>
+							<div class="layui-input-block">
+								<form:select path="companyType"  class="form-control simple-select">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getMainDictList('company_type')}" 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:select path="companyIndustry" class="form-control layui-input">
+                                    <form:option value="" label=""/>
+                                    <form:options items="${fns:getMainDictList('company_industry')}" 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:select path="clientType" class="form-control layui-input">
+                                    <form:option value="" label=""/>
+                               		<form:options items="${fns:getMainDictList('client_type')}" 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="uscCode" htmlEscape="false"  class="form-control layui-input"/>
+							</div>
+						</div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+
+		<div class="full-width fl">
+			<div class="contentShadow layui-form contentDetails">
+				<div class="nav-btns">
+					<%--此处按钮样式包括 nav-btn-add nav-btn-refresh nav-btn-import nav-btn-export nav-btn-query nav-btn-reset--%>
+					<shiro:hasPermission name="workclientinfo:workClientInfo:add">
+							<table:addRow url="${ctx}/workclientinfo/workClientInfo/form" title="客户管理"></table:addRow><!-- 增加按钮 -->
+					</shiro:hasPermission>
+					<shiro:hasPermission name="workclientinfo:workClientInfo:import">
+						<table:importExcel url="${ctx}/workclientinfo/workClientInfo/import"></table:importExcel><!-- 导入按钮 -->
+					</shiro:hasPermission>
+
+					<shiro:hasPermission name="workclientinfo:workClientInfo:export">
+						<table:exportExcel url="${ctx}/workclientinfo/workClientInfo/export"></table:exportExcel><!-- 导出按钮 -->
+					</shiro:hasPermission>
+
+					<table:importInfoErr url="${ctx}/workclientinfo/workClientInfo/importInfoErr" title="导入日志"></table:importInfoErr><!-- 导出按钮 -->
+
+					<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: [[
+				{field:'index',align:'center', title: '序号',width:40}
+				,{field:'clientName',align:'center', title: '客户名称',minWidth:200,templet:function(d){
+                        var xml = "<a class=\"attention-info\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看客户信息', '${ctx}/workclientinfo/workClientInfo/detail?id=" + d.id + "&wlId=" + d.linkman + "','95%','95%')\">" +
+                            "<span title=" + d.clientName + ">" + d.clientName.substr(0,40) + "</span></a>";
+                        return xml;
+                    }}
+				,{field:'number',align:'center', title: '客户编号',width:150}
+                ,{field:'clientProperty',align:'center', title: '客户性质',width:150}
+                ,{field:'trade',align:'center', title: '客户行业', width:150}
+                ,{field:'area', align:'center',title: '所在地区',width:200}
+                ,{field:'clientType', align:'center',title: '客户类型',minWidth:200,templet:function(d){
+                        return "<span title='"+ d.clientType +"'>" + d.clientType + "</span>";
+                    }}
+                ,{field:'code', align:'center',title: '统一社会信用代码',minWidth:250,templet:function(d){
+                        return "<span title='"+ d.code +"'>" + d.code + "</span>";
+                    }}
+                ,{field:'createDate',align:'center', title: '创建时间', width:85}
+                ,{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}/workclientinfo/workClientInfo/form?id=" + d.id + "&param=1','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i>修改</a>"
+
+                        if(d.candelete != undefined && d.candelete == "1")
+                            xml +="<a href=\"${ctx}/workclientinfo/workClientInfo/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="workClientInfo" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${workClientInfo.id}"
+                    ,"number":"${workClientInfo.number}"
+					,"linkman":"${workClientInfo.workClientLinkman.id}"
+                    ,"clientName":"${workClientInfo.name}"
+                    ,"clientProperty":"${fns:getMainDictLabel(workClientInfo.companyType, 'company_type', '')}"
+					,"trade":"${fns:getMainDictLabel(workClientInfo.companyIndustry, 'company_industry', '')}"
+                    ,"area":"${workClientInfo.area.name}"
+                    ,"clientType":"${fns:getMainDictLabels(workClientInfo.clientType,',','client_type', '')}"
+                    ,"code":"${workClientInfo.uscCode}"
+                    ,"createDate":"<fmt:formatDate value="${workClientInfo.createDate}" pattern="yyyy-MM-dd"/>"
+                    <c:if test="${flag == '1' or fns:getUser().id == workClientInfo.createBy.id}">
+                    <shiro:hasPermission name="workclientinfo:workClientInfo:edit">,"canedit":"1"</shiro:hasPermission>
+					<shiro:hasPermission name="workclientinfo:workClientInfo:del">,"candelete":"1"</shiro:hasPermission>
+                	</c:if>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+        });
+
+    })
+
+    resizeListTable();/*消除由于有竖向滚动条造成table出现横向滚动条*/
+    $("a").on("click",addLinkVisied);
+</script>
+
+<script type="text/javascript">
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+
+</html>
+

+ 160 - 0
src/main/webapp/webpage/modules/workcommongroup/workCommonGroupForm.jsp

@@ -0,0 +1,160 @@
+<%@ 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="workCommonGroup" action="${ctx}/workcommongroup/workCommonGroup/save" method="post" class="form-horizontal">
+            <form:hidden path="id"/>
+            <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 double-line"><span class="require-item">*</span>常用组名称:</label>
+                    <div class="layui-input-block">
+                        <form:input path="name" htmlEscape="false"    class="form-control  layui-input required"/>
+                    </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">
+                        <form:input path="num" htmlEscape="false" maxlength="2" class="form-control  layui-input digits required"/>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>常用组成员</h2></div>
+                <div class="layui-item nav-btns">
+                    <sys:treeselectusers id="users" name="" value="" labelName="memberNameStr" labelValue=""
+                                         retnParent="true" title="用户" url="/sys/office/treeData?type=3" checked="true" cssClass="form-control required" allowClear="true" notAllowSelectParent="true"/>
+                </div>
+                <table id="userTable" class="table table-bordered table-condensed details">
+                    <thead>
+                    <tr>
+                        <th class="hide"></th>
+                        <th>姓名</th>
+                        <th>部门</th>
+                        <th>操作</th>
+                    </tr>
+                    </thead>
+                    <tbody id="userTableList">
+                    </tbody>
+                </table>
+                <script type="text/template" id="userTpl">//<!--
+                    <tr id="userList{{idx}}">
+                        <td class="hide">
+                            <input id="userList{{idx}}_id" name="userList[{{idx}}].id" readonly="true" value="{{row.id}}" type="hidden" class="form-control userId"/>
+                        </td>
+                        <td>
+                        {{row.name}}
+                        </td>
+                        <td>
+                        {{row.officeName}}
+                        </td>
+                        <td class="text-center op-td">
+                                    <a href=javascript:void(0); onclick="delRow(this, '#userList{{idx}}')"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
+                        </td>
+                    </tr>//-->
+                </script>
+                <script type="text/javascript">
+                    var userIdx = 0, userTpl = $("#userTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+
+                    $(document).ready(function() {
+                        var dataBank = ${fns:toJson(workCommonGroup.userList)};
+                        if (dataBank!=null) {
+                            for (var i = 0; i < dataBank.length; i++) {
+                                addRow('#userTableList', userIdx, userTpl, dataBank[i]);
+                                userIdx = userIdx + 1;
+                            }
+                        }
+                    });
+
+                    function addRow(list, idx, tpl, row){
+                        var idx1 = $("#userTableList tr").length
+                        bornTemplete(list, idx, tpl, row, idx1);
+                    }
+                    function bornTemplete(list, idx, tpl, row, idx1){
+                        $(list).append(Mustache.render(tpl, {
+                            idx: idx, delBtn: true, row: row,
+                            order:idx1 + 1, idx1:idx1
+                        }));
+                        $(list+idx).find("select").each(function(){
+                            $(this).val($(this).attr("data-value"));
+                        });
+                        $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                            var ss = $(this).attr("data-value").split(',');
+                            for (var i=0; i<ss.length; i++){
+                                if($(this).val() == ss[i]){
+                                    $(this).attr("checked","checked");
+                                }
+                            }
+                        });
+                    }
+                    function delRow(obj, prefix,idx){
+                        $(obj).parent().parent().remove();
+                    }
+
+                    function getSelectUserIds() {
+                        var selectedIds = "";
+                        var pidArr = $("#userTableList tr .userId");
+                        for(var i=0;i<pidArr.length;i++){
+                            selectedIds+=$(pidArr[i]).val();
+                            selectedIds+=",";
+                        }
+                        return selectedIds;
+                    }
+
+                    function changeUser(ids,names,parents) {
+                        var split = ids.split(',');
+                        var split2 = names.split(',');
+                        $("#userTableList").html("");
+                        userIdx=0;
+                        for(var i=0;i<split.length;i++){
+                            var id = split[i];
+                            if(id==''||id==null){
+                                continue;
+                            }
+                            var obj = {'id':id,'name':split2[i],'officeName':parents[i]};
+                            addRow('#userTableList',userIdx,userTpl,obj);
+                            userIdx+=1;
+                        }
+                    }
+                </script>
+            </div>
+	    </form:form>
+    </div>
+</div>
+</body>
+</html>

+ 136 - 0
src/main/webapp/webpage/modules/workcommongroup/workCommonGroupList.jsp

@@ -0,0 +1,136 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>常用组管理</title>
+	<meta name="decorator" content="default"/>
+    <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>
+    <script type="text/javascript">
+        $(document).ready(function() {
+            $("#cus_name").show();
+            $("#cus_name").siblings().hide();
+            //搜索框收放
+        })
+	</script>
+</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="workCommonGroup" action="${ctx}/workcommongroup/workCommonGroup/" 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">
+                                <form:input path="name" htmlEscape="false" maxlength="64"  class=" form-control layui-input"/>
+                            </div>
+                        </div>
+                        <div class="layui-item query athird">
+                            <label class="layui-form-label">常用组编号:</label>
+                            <div class="layui-input-block">
+                                <form:input path="num" htmlEscape="false" maxlength="64"  class=" form-control layui-input"/>
+                            </div>
+                        </div>
+                        <div class="layui-item athird">
+                            <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="workcommongroup:workCommonGroup:add">
+                        <table:addRow url="${ctx}/workcommongroup/workCommonGroup/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 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:'index',align:'center', title: '序号',width:40}
+                ,{field:'name',align:'center', title: '常用组名称',sort:true,minWidth:200,templet:function(d){
+                        var xml = "<a class=\"attention-info\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看常用组', '${ctx}/workcommongroup/workCommonGroup/view?id="+d.id+"','95%','95%')\">" +
+                            "<span title=" + d.name + ">" + d.name + "</span></a>";
+                        return xml;
+                    }}
+                ,{field:'num',align:'center', title: '常用组编号',minWidth:150}
+                ,{field:'op',align:'center',title:"操作",width:150,templet:function(d){
+                        ////对操作进行初始化
+                        var xml = "";
+
+                        if(d.canedit != undefined && d.canedit == "1"){
+                            xml +="<a href=\"javascript:void(0)\" onclick=\"openDialog('修改常用组', '${ctx}/workcommongroup/workCommonGroup/form?id=" + d.id+"','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i>修改</a>"
+                        }
+                        if(d.candelete != undefined && d.candelete == "1"){
+                            xml +="<a href=\"${ctx}/workcommongroup/workCommonGroup/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="workCommonGroup" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${workCommonGroup.id}"
+                    ,"num":"${workCommonGroup.num}"
+                    ,"name":"<c:out value="${workCommonGroup.name}" escapeXml="true"/>"
+                    <c:if test="${flag == '1' or fns:getUser().id == workCommonGroup.createBy.id}">
+                    <shiro:hasPermission name="workcommongroup:workCommonGroup:edit">,"canedit":"1"</shiro:hasPermission>
+                    <shiro:hasPermission name="workcommongroup:workCommonGroup:del">,"candelete":"1"</shiro:hasPermission>
+                    </c:if>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+        });
+
+    })
+
+    resizeListTable(150);/*消除由于有竖向滚动条造成table出现横向滚动条*/
+</script>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 116 - 0
src/main/webapp/webpage/modules/workcommongroup/workCommonGroupView.jsp

@@ -0,0 +1,116 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>常用组管理</title>
+	<meta name="decorator" content="default"/>
+</head>
+<body>
+<div class="single-form">
+    <div class="container view-form">
+		<form:form id="inputForm" modelAttribute="workCommonGroup" action="${ctx}/workcommongroup/workCommonGroup/save" method="post" class="form-horizontal">
+            <form:hidden path="id"/>
+            <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 double-line"><span class="require-item">*</span>常用组名称:</label>
+                    <div class="layui-input-block">
+                        <form:input path="name" htmlEscape="false"  readonly="true"  class="form-control  layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>常用组编号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="num" htmlEscape="false" maxlength="2" readonly="true" class="form-control  layui-input digits required"/>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>常用组成员</h2></div>
+                <table id="userTable" class="table table-bordered table-condensed details">
+                    <thead>
+                    <tr>
+                        <th>姓名</th>
+                        <th>部门</th>
+                    </tr>
+                    </thead>
+                    <tbody id="userTableList">
+                    </tbody>
+                </table>
+                <script type="text/template" id="userTpl">//<!--
+                    <tr id="userList{{idx}}">
+                        <td>
+                        {{row.name}}
+                        </td>
+                        <td>
+                        {{row.officeName}}
+                        </td>
+                    </tr>//-->
+                </script>
+                <script type="text/javascript">
+                    var userIdx = 0, userTpl = $("#userTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+
+                    $(document).ready(function() {
+                        var dataBank = ${fns:toJson(workCommonGroup.userList)};
+                        if (dataBank!=null) {
+                            for (var i = 0; i < dataBank.length; i++) {
+                                addRow('#userTableList', userIdx, userTpl, dataBank[i]);
+                                userIdx = userIdx + 1;
+                            }
+                        }
+                    });
+
+                    function addRow(list, idx, tpl, row){
+                        var idx1 = $("#userTableList tr").length
+                        bornTemplete(list, idx, tpl, row, idx1);
+                    }
+                    function bornTemplete(list, idx, tpl, row, idx1){
+                        $(list).append(Mustache.render(tpl, {
+                            idx: idx, delBtn: true, row: row,
+                            order:idx1 + 1, idx1:idx1
+                        }));
+                        $(list+idx).find("select").each(function(){
+                            $(this).val($(this).attr("data-value"));
+                        });
+                        $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                            var ss = $(this).attr("data-value").split(',');
+                            for (var i=0; i<ss.length; i++){
+                                if($(this).val() == ss[i]){
+                                    $(this).attr("checked","checked");
+                                }
+                            }
+                        });
+                    }
+
+                    function getSelectUserIds() {
+                        var selectedIds = "";
+                        var pidArr = $("#userTableList tr .userId");
+                        for(var i=0;i<pidArr.length;i++){
+                            selectedIds+=$(pidArr[i]).val();
+                            selectedIds+=",";
+                        }
+                        return selectedIds;
+                    }
+
+                    function changeUser(ids,names,parents) {
+                        var split = ids.split(',');
+                        var split2 = names.split(',');
+                        $("#userTableList").html("");
+                        userIdx=0;
+                        for(var i=0;i<split.length;i++){
+                            var id = split[i];
+                            if(id==''||id==null){
+                                continue;
+                            }
+                            var obj = {'id':id,'name':split2[i],'officeName':parents[i]};
+                            addRow('#userTableList',userIdx,userTpl,obj);
+                            userIdx+=1;
+                        }
+                    }
+                </script>
+            </div>
+	    </form:form>
+    </div>
+</div>
+</body>
+</html>

+ 82 - 0
src/main/webapp/webpage/modules/workcommunicaterecord/workCommunicateContentForm.jsp

@@ -0,0 +1,82 @@
+<%@ 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({
+			            elem: '#contentDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			        });
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workCommunicateContent" action="${ctx}/workcommunicaterecord/workCommunicateContent/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="contentNumber" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">日期:</label></td>
+					<td class="width-35">
+						<input id="contentDate" name="contentDate" type="text" maxlength="20" class="laydate-icon form-control layer-date "
+							value="<fmt:formatDate value="${workCommunicateContent.contentDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">沟通内容:</label></td>
+					<td class="width-35">
+						<form:input path="contentDetail" 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="contentWay" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">反馈意见:</label></td>
+					<td class="width-35">
+						<form:input path="contentFeedback" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 146 - 0
src/main/webapp/webpage/modules/workcommunicaterecord/workCommunicateContentList.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="#">
+				<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="workCommunicateContent" action="${ctx}/workcommunicaterecord/workCommunicateContent/" 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="workcommunicaterecord:workCommunicateContent:add">
+				<table:addRow url="${ctx}/workcommunicaterecord/workCommunicateContent/form" title="沟通内容"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workcommunicaterecord:workCommunicateContent:edit">
+			    <table:editRow url="${ctx}/workcommunicaterecord/workCommunicateContent/form" title="沟通内容" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workcommunicaterecord:workCommunicateContent:del">
+				<table:delRow url="${ctx}/workcommunicaterecord/workCommunicateContent/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workcommunicaterecord:workCommunicateContent:import">
+				<table:importExcel url="${ctx}/workcommunicaterecord/workCommunicateContent/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workcommunicaterecord:workCommunicateContent:export">
+	       		<table:exportExcel url="${ctx}/workcommunicaterecord/workCommunicateContent/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 contentNumber">序号</th>
+				<th  class="sort-column contentDate">日期</th>
+				<th  class="sort-column contentDetail">沟通内容</th>
+				<th  class="sort-column contentWay">沟通方式</th>
+				<th  class="sort-column contentFeedback">反馈意见</th>
+				<th  class="sort-column communicateId">主表id</th>
+				<th  class="sort-column remarks">备注信息</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="workCommunicateContent">
+			<tr>
+				<td> <input type="checkbox" id="${workCommunicateContent.id}" class="i-checks"></td>
+				<td><a  href="#" onclick="openDialogView('查看沟通内容', '${ctx}/workcommunicaterecord/workCommunicateContent/form?id=${workCommunicateContent.id}','800px', '500px')">
+					${workCommunicateContent.remarks}
+				</a></td>
+				<td>
+					${workCommunicateContent.contentNumber}
+				</td>
+				<td>
+					<fmt:formatDate value="${workCommunicateContent.contentDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+				</td>
+				<td>
+					${workCommunicateContent.contentDetail}
+				</td>
+				<td>
+					${workCommunicateContent.contentWay}
+				</td>
+				<td>
+					${workCommunicateContent.contentFeedback}
+				</td>
+				<td>
+					${workCommunicateContent.communicateId}
+				</td>
+				<td>
+					<shiro:hasPermission name="workcommunicaterecord:workCommunicateContent:view">
+						<a href="#" onclick="openDialogView('查看沟通内容', '${ctx}/workcommunicaterecord/workCommunicateContent/form?id=${workCommunicateContent.id}','800px', '500px')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="workcommunicaterecord:workCommunicateContent:edit">
+    					<a href="#" onclick="openDialog('修改沟通内容', '${ctx}/workcommunicaterecord/workCommunicateContent/form?id=${workCommunicateContent.id}','800px', '500px')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="workcommunicaterecord:workCommunicateContent:del">
+						<a href="${ctx}/workcommunicaterecord/workCommunicateContent/delete?id=${workCommunicateContent.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>

+ 193 - 0
src/main/webapp/webpage/modules/workcommunicaterecord/workCommunicateRecordForm.jsp

@@ -0,0 +1,193 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>沟通记录表管理</title>
+	<meta name="decorator" content="default"/>
+	<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>
+	<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);
+					}
+				}
+			});
+            getCurrentDocumentHei()
+		});
+        function addRow(list, idx, tpl, row){
+            var idx2 = $("#workCommunicateRecords tr").length;
+            if(list == '#workCommunicateRecords'){
+                bornTemplete(list, idx, tpl, row, idx2);
+            }
+        }
+        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");
+//                    }
+//                }
+//            });
+            getCurrentDocumentHei()
+        }
+        function delRow(obj, prefix,othis){
+            var id = $(prefix+"_id");
+            var delFlag = $(prefix+"_delFlag");
+            if (id.val() == ""){
+                delFlag.val("1");
+                $(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).parent().parent().removeClass("error");
+            }
+            getCurrentDocumentHei(othis)
+        }
+        function getCurrentDocumentHei(obj){
+            var height = $(document).outerHeight();
+            if(height < 410){
+                height = height + 350;
+            }
+            var hei = 0;
+            if(obj){
+                hei = $(obj).find("tr").eq(0).height() || 0;
+            }
+            parent.$("#controltype").attr("height",(height - hei) +"px")
+        }
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workCommunicateRecord" action="${ctx}/workcommunicaterecord/workCommunicateRecord/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+		<input type="hidden" name="projectId" id="projectId">
+		<a class="btn btn-white btn-sm addBtn" onclick="addRow('#workCommunicateRecords', workCommunicateRecordsRowIdx, workCommunicateRecordsTpl);workCommunicateRecordsRowIdx = workCommunicateRecordsRowIdx + 1;" title="新增"><i class="fa fa-plus"></i> 新增</a>
+		<table id="contentTable2" class="table table-striped table-bordered table-condensed">
+			<thead>
+			<tr>
+				<th><font color="red">*</font>序号</th>
+				<th><font color="red">*</font>日期</th>
+				<th><font color="red">*</font>沟通内容</th>
+				<th><font color="red">*</font>沟通方式</th>
+				<th><font color="red">*</font>反馈意见</th>
+				<th>备注</th>
+				<th width="150px">操作</th>
+			</tr>
+			</thead>
+			<tbody id="workCommunicateRecords">
+			<c:if test="${not empty workCommunicateRecord.workCommunicateContentList}">
+				<c:forEach items="${workCommunicateRecord.workCommunicateContentList}" var="workCommunicateRecord" varStatus="index">
+					<tr id="workCommunicateContentList${index.index}">
+						<td class="hide">
+							<input id="workCommunicateContentList${index.index}_id" name="workCommunicateContentList[${index.index}].id" type="hidden" value="${workCommunicateRecord.id}"/>
+							<input id="workCommunicateContentList${index.index}_delFlag" name="workCommunicateContentList[${index.index}].delFlag" type="hidden" value="0"/>
+						</td>
+						<td>
+							<input id="workCommunicateContentList${index.index}_contentNumber"  name="workCommunicateContentList[${index.index}].contentNumber" type="text" value="${workCommunicateRecord.contentNumber}"    class="form-control required"/>
+						</td>
+
+						<td>
+							<input id="workCommunicateContentList${index.index}_contentDate" name="workCommunicateContentList[${index.index}].contentDate" onclick="laydate({istime: false,format: 'YYYY-MM-DD'})" value="<fmt:formatDate value="${workCommunicateRecord.contentDate}" pattern="yyyy-MM-dd"/>"    class="laydate-icon form-control layer-date required"/>
+						</td>
+						<td>
+							<input id="workCommunicateContentList${index.index}_contentDetail" name="workCommunicateContentList[${index.index}].contentDetail" type="text" value="${workCommunicateRecord.contentDetail}"    class="form-control required"/>
+						</td>
+						<td>
+							<input id="workCommunicateContentList${index.index}_contentWay" name="workCommunicateContentList[${index.index}].contentWay" type="text" value="${workCommunicateRecord.contentWay}"    class="form-control required"/>
+						</td>
+						<td>
+							<input id="workCommunicateContentList${index.index}_contentFeedback" name="workCommunicateContentList[${index.index}].contentFeedback" type="text" value="${workCommunicateRecord.contentFeedback}"    class="form-control required"/>
+						</td>
+						<td>
+							<input id="workCommunicateContentList${index.index}_remarks" name="workCommunicateContentList[${index.index}].remarks" type="text" value="${workCommunicateRecord.remarks}"    class="form-control"/>
+						</td>
+						<td class="text-center" style="width:80px;">
+							<button class="btn btn-danger btn-xs" onclick="delRow(this, '#workCommunicateContentList${index.index}','#workCommunicateRecords')" title="删除"><i class="fa fa-trash"></i> 删除</button>
+						</td>
+					</tr>
+				</c:forEach>
+			</c:if>
+			</tbody>
+		</table>
+		<script type="text/template" id="workCommunicateRecordsTpl">//<!--
+		<tr id="workCommunicateContentList{{idx}}">
+			<td class="hide">
+				<input id="workCommunicateContentList{{idx}}_id" name="workCommunicateContentList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+				<input id="workCommunicateContentList{{idx}}_delFlag" name="workCommunicateContentList[{{idx}}].delFlag" type="hidden" value="0"/>
+			</td>
+			<td>
+				<input id="workCommunicateContentList{{idx}}_contentNumber"  name="workCommunicateContentList[{{idx}}].contentNumber" type="text" value="{{row.contentNumber}}"    class="form-control required"/>
+			</td>
+			<td>
+				<input id="workCommunicateContentList{{idx}}_contentDate"  name="workCommunicateContentList[{{idx}}].contentDate" onclick="laydate({istime: false,format: 'YYYY-MM-DD'})" value="{{row.contentDate}}"    class="laydate-icon form-control layer-date required"/>
+			</td>
+			<td>
+				<input id="workCommunicateContentList{{idx}}_contentDetail" name="workCommunicateContentList[{{idx}}].contentDetail" type="text" value="{{row.contentDetail}}"    class="form-control required"/>
+			</td>
+			<td>
+				<input id="workCommunicateContentList{{idx}}_contentWay" name="workCommunicateContentList[{{idx}}].contentWay" type="text" value="{{row.contentWay}}"    class="form-control required"/>
+			</td>
+			<td>
+				<input id="workCommunicateContentList{{idx}}_contentFeedback" name="workCommunicateContentList[{{idx}}].contentFeedback" type="text" value="{{row.contentFeedback}}"    class="form-control required"/>
+			</td>
+			<td>
+				<input id="workCommunicateContentList{{idx}}_remarks" name="workCommunicateContentList[{{idx}}].remarks" type="text" value="{{row.remarks}}"    class="form-control"/>
+			</td>
+
+			<td class="text-center" style="width:80px;">
+				{{#delBtn}}<button class="btn btn-danger btn-xs" onclick="delRow(this, '#workCommunicateContentList{{idx}}','#workCommunicateRecords')" title="删除"><i class="fa fa-trash"></i> 删除</button>{{/delBtn}}
+			</td>
+		</tr>//-->
+		</script>
+		<script type="text/javascript">
+			var workCommunicateRecordsRowIdx = 0, workCommunicateRecordsTpl = $("#workCommunicateRecordsTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+			if($("#id").val()){
+                workCommunicateRecordsRowIdx = ${fn:length(workCommunicateRecord.workCommunicateContentList)};
+			}
+		</script>
+
+		<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">
+						<sys:treeselect id="comUser" name="comUser.id" value="${workCommunicateRecord.comUser.id}" labelName="comUser.name" labelValue="${workCommunicateRecord.comUser.name}"
+							title="用户" url="/sys/office/treeData?type=3" cssClass="form-control required" allowClear="true" notAllowSelectParent="true"/>
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 65 - 0
src/main/webapp/webpage/modules/workcommunicaterecord/workCommunicateRecordFormView.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"/>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+	<div class="form-group layui-row">
+		<div class="form-group-label"><h2>沟通记录表</h2></div>
+		<div class="layui-item layui-col-xs12 form-table-container" >
+			<table id="contentTable" class="table table-bordered table-condensed no-bottom-margin details">
+				<thead>
+				<tr>
+					<th><font color="red">*</font>序号</th>
+					<th><font color="red">*</font>日期</th>
+					<th><font color="red">*</font>沟通内容</th>
+					<th><font color="red">*</font>沟通方式</th>
+					<th><font color="red">*</font>反馈意见</th>
+					<th>备注</th>
+				</tr>
+				</thead>
+				<tbody>
+				<c:if test="${not empty workCommunicateRecord.workCommunicateContentList}">
+					<c:forEach items="${workCommunicateRecord.workCommunicateContentList}" var="workCommunicateRecord" varStatus="index">
+						<tr id="workCommunicateContentList${index.index}">
+							<td>
+									${workCommunicateRecord.contentNumber}
+							</td>
+
+							<td>
+								<fmt:formatDate value="${workCommunicateRecord.contentDate}" pattern="yyyy-MM-dd"/>
+							</td>
+							<td>
+									${workCommunicateRecord.contentDetail}
+							</td>
+							<td>
+									${workCommunicateRecord.contentWay}
+							</td>
+							<td>
+									${workCommunicateRecord.contentFeedback}
+							</td>
+							<td>
+									${workCommunicateRecord.remarks}
+							</td>
+						</tr>
+					</c:forEach>
+				</c:if>
+				</tbody>
+			</table>
+			<div class="form-group layui-row first">
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label" style="width:105px;"><span class="require-item">*</span>沟通记录人员:</label>
+					<div class="layui-input-block with-icon" style="margin-left:131px;">
+						<sys:treeselect id="comUser" name="workCommunicateRecord.comUser.id" disabled="disabled" value="${workCommunicateRecord.comUser.id}" labelName="workCommunicateRecord.comUser.name" labelValue="${workCommunicateRecord.comUser.name}"
+										title="用户" url="/sys/office/treeData?type=3" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div></div></div>
+</body>
+</html>

+ 122 - 0
src/main/webapp/webpage/modules/workcommunicaterecord/workCommunicateRecordList.jsp

@@ -0,0 +1,122 @@
+<%@ 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="workCommunicateRecord" action="${ctx}/workcommunicaterecord/workCommunicateRecord/" 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="workcommunicaterecord:workCommunicateRecord:add">
+				<table:addRow url="${ctx}/workcommunicaterecord/workCommunicateRecord/form" title="沟通记录表"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workcommunicaterecord:workCommunicateRecord:edit">
+			    <table:editRow url="${ctx}/workcommunicaterecord/workCommunicateRecord/form" title="沟通记录表" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workcommunicaterecord:workCommunicateRecord:del">
+				<table:delRow url="${ctx}/workcommunicaterecord/workCommunicateRecord/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workcommunicaterecord:workCommunicateRecord:import">
+				<table:importExcel url="${ctx}/workcommunicaterecord/workCommunicateRecord/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workcommunicaterecord:workCommunicateRecord:export">
+	       		<table:exportExcel url="${ctx}/workcommunicaterecord/workCommunicateRecord/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 ">沟通记录人员</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="workCommunicateRecord">
+			<tr>
+				<td> <input type="checkbox" id="${workCommunicateRecord.id}" class="i-checks"></td>
+				<td>
+					${workCommunicateRecord.comUser.name}
+				</td>
+				<td>
+					<shiro:hasPermission name="workcommunicaterecord:workCommunicateRecord:view">
+						<a href="#" onclick="openDialogView('查看沟通记录表', '${ctx}/workcommunicaterecord/workCommunicateRecord/form?id=${workCommunicateRecord.id}','800px', '500px')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="workcommunicaterecord:workCommunicateRecord:edit">
+    					<a href="#" onclick="openDialog('修改沟通记录表', '${ctx}/workcommunicaterecord/workCommunicateRecord/form?id=${workCommunicateRecord.id}','800px', '500px')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="workcommunicaterecord:workCommunicateRecord:del">
+						<a href="${ctx}/workcommunicaterecord/workCommunicateRecord/delete?id=${workCommunicateRecord.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>

+ 75 - 0
src/main/webapp/webpage/modules/workcompanyinfo/companyinfoForm.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="companyinfo" action="${ctx}/workcompanyinfo/companyinfo/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="master" 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="userId" 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="companyId" 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="status" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"></td>
+		   			<td class="width-35" ></td>
+		  		</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 138 - 0
src/main/webapp/webpage/modules/workcompanyinfo/companyinfoList.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="companyinfo" action="${ctx}/workcompanyinfo/companyinfo/" 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="workcompanyinfo:companyinfo:add">
+				<table:addRow url="${ctx}/workcompanyinfo/companyinfo/form" title="公司管理"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workcompanyinfo:companyinfo:edit">
+			    <table:editRow url="${ctx}/workcompanyinfo/companyinfo/form" title="公司管理" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workcompanyinfo:companyinfo:del">
+				<table:delRow url="${ctx}/workcompanyinfo/companyinfo/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workcompanyinfo:companyinfo:import">
+				<table:importExcel url="${ctx}/workcompanyinfo/companyinfo/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workcompanyinfo:companyinfo:export">
+	       		<table:exportExcel url="${ctx}/workcompanyinfo/companyinfo/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 master">公司管理员</th>
+				<th  class="sort-column userId">加入用户id</th>
+				<th  class="sort-column companyId">公司id</th>
+				<th  class="sort-column status">加入状态</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="companyinfo">
+			<tr>
+				<td> <input type="checkbox" id="${companyinfo.id}" class="i-checks"></td>
+				<td><a  href="javascript:void(0)" onclick="openDialogView('查看公司管理', '${ctx}/workcompanyinfo/companyinfo/form?id=${companyinfo.id}','80%','80%')">
+					${companyinfo.remarks}
+				</a></td>
+				<td>
+					${companyinfo.master}
+				</td>
+				<td>
+					${companyinfo.userId}
+				</td>
+				<td>
+					${companyinfo.companyId}
+				</td>
+				<td>
+					${companyinfo.status}
+				</td>
+				<td>
+					<shiro:hasPermission name="workcompanyinfo:companyinfo:view">
+						<a href="javascript:void(0)" onclick="openDialogView('查看公司管理', '${ctx}/workcompanyinfo/companyinfo/form?id=${companyinfo.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="workcompanyinfo:companyinfo:edit">
+    					<a href="javascript:void(0)" onclick="openDialog('修改公司管理', '${ctx}/workcompanyinfo/companyinfo/form?id=${companyinfo.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="workcompanyinfo:companyinfo:del">
+						<a href="${ctx}/workcompanyinfo/companyinfo/delete?id=${companyinfo.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>

+ 131 - 0
src/main/webapp/webpage/modules/workcontent/workContentAltermanage.jsp

@@ -0,0 +1,131 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+
+		<form:form id="subForm" modelAttribute="workContentAltermanage" action="#" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+            <div class="form-group layui-row lw12">
+            <div class="layui-item layui-col-sm6">
+                <label class="layui-form-label"><span class="require-item">*</span>合同名称:</label>
+                <div class="layui-input-block with-icon">
+                    <sys:gridselectProjcontent url="${ctx}/projectcontentinfo/projectContentData/selectcontent" id="contId" name="contract.id"  value="${workContentAltermanage.contract.id}"  title="选择合同" labelName="contract.name"
+                                               labelValue="${workContentAltermanage.contract.name}" cssClass="form-control layui-input required" projectId="${workContentAltermanage.projectId}" type="41" fieldLabels="" fieldKeys="" searchLabel="${fns:urlEncode('合同名称')}" searchKey="" ></sys:gridselectProjcontent>
+                </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:select path="alterType" class="form-control layui-input required">
+                        <form:option value="" label=""/>
+                        <form:options items="${fns:getMainDictList('content_alter_type')}" 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">
+                    <input class="laydate-icondate form-control layui-input layer-date laydate-icon required" id="alterDate" name="alterDate" value="<fmt:formatDate value="${workContentAltermanage.alterDate}" pattern="yyyy-MM-dd"/>">
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6">
+                <label class="layui-form-label"><span class="require-item">*</span>变更造价预计:</label>
+                <div class="layui-input-block">
+                    <form:input path="alterCost" htmlEscape="false"  class="form-control layui-input required"/>
+                </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="alterCtnt" htmlEscape="false" rows="3"    class="form-control layui-area"/>
+                </div>
+            </div>
+        </div>
+
+        <div class="form-group layui-row 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 name="reviewAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentAltermanage.reviewAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);" class="form-control layui-input required number"/>
+                </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 name="setAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentAltermanage.setAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);" class="form-control layui-input required number"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6">
+                <label class="layui-form-label"><span class="require-item">*</span>报送日期:</label>
+                <div class="layui-input-block">
+                    <input id="subDate" name="subDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                           value="<fmt:formatDate value="${workContentAltermanage.subDate}" pattern="yyyy-MM-dd"/>"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6">
+                <label class="layui-form-label"><span class="require-item">*</span>审定日期:</label>
+                <div class="layui-input-block">
+                    <input id="setDate" name="setDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                           value="<fmt:formatDate value="${workContentAltermanage.setDate}" pattern="yyyy-MM-dd"/>"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6">
+                <label class="layui-form-label"><span class="require-item">*</span>计入台账:</label>
+                <div class="layui-input-block">
+                    <form:select path="inAccount" class="form-control layui-input required">
+                        <form:option value="" label=""/>
+                        <form:options items="${fns:getDictList('yes_no')}" 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:select path="inPayment" class="form-control layui-input required">
+                        <form:option value="" label=""/>
+                        <form:options items="${fns:getDictList('yes_no')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                    </form:select>
+                </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="3"    class="form-control layui-area"/>
+                </div>
+            </div>
+        </div>
+	</form:form>
+<script type="text/javascript">
+    var validateForm;
+    $(document).ready(function() {
+        validateForm = $("#subForm").validate({
+            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: '#alterDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#subDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#setDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+
+    });
+
+    function genDetailStr(){
+        var stringify = JSON.stringify($("#subForm").serializeJson());
+        return stringify;
+    }
+</script>

+ 120 - 0
src/main/webapp/webpage/modules/workcontent/workContentAltermanageView.jsp

@@ -0,0 +1,120 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+
+		<form:form id="subForm" modelAttribute="workContentAltermanage" action="#" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+            <div class="form-group layui-row lw12">
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>合同名称:</label>
+                    <div class="layui-input-block with-icon">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workContentAltermanage.contract.name}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>变更类型:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getMainDictLabel(workContentAltermanage.alterType,'content_alter_type' ,'' )}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>变更日期:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${workContentAltermanage.alterDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>变更造价预计:</label>
+                    <div class="layui-input-block">
+                        <form:input path="alterCost" htmlEscape="false" readonly="true" 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="alterCtnt" htmlEscape="false" rows="3"  readonly="true"  class="form-control layui-area"/>
+                    </div>
+                </div>
+            </div>
+
+            <div class="form-group layui-row 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 name="reviewAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentAltermanage.reviewAmt}" pattern="#,##0.00#"/>"  class="form-control layui-input "/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>审定金额:</label>
+                    <div class="layui-input-block">
+                        <input name="setAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentAltermanage.setAmt}" pattern="#,##0.00#"/>" class="form-control layui-input "/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>报送日期:</label>
+                    <div class="layui-input-block">
+                        <input type="text" maxlength="20" class="form-control layui-input" readonly="true"
+                               value="<fmt:formatDate value="${workContentAltermanage.subDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>审定日期:</label>
+                    <div class="layui-input-block">
+                        <input type="text" maxlength="20" class="form-control layui-input" readonly="true"
+                               value="<fmt:formatDate value="${workContentAltermanage.setDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>计入台账:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getDictLabel(workContentAltermanage.inAccount,'yes_no' ,'' )}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>计入支付:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getDictLabel(workContentAltermanage.inPayment,'yes_no' ,'' )}"/>
+                    </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="3"  readonly="true"  class="form-control layui-area"/>
+                    </div>
+                </div>
+            </div>
+	</form:form>
+<script type="text/javascript">
+    var validateForm;
+    $(document).ready(function() {
+        validateForm = $("#subForm").validate({
+            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: '#alterDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#subDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#setDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+    });
+
+    function genDetailStr(){
+        var stringify = JSON.stringify($("#subForm").serializeJson());
+        return stringify;
+    }
+</script>

+ 65 - 0
src/main/webapp/webpage/modules/workcontent/workContentBiddingplan.jsp

@@ -0,0 +1,65 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<form:form id="subForm" modelAttribute="workContentBiddingplan" action="#" method="post" class="form-horizontal">
+    <form:hidden path="id"/>
+    <div class="form-group layui-row lw12">
+    <div class="layui-item layui-col-sm6">
+        <label class="layui-form-label"><span class="require-item">*</span>合约规划名称:</label>
+        <div class="layui-input-block with-icon">
+            <sys:gridselectProjcontent url="${ctx}/projectcontentinfo/projectContentData/selectcontent" id="contProgramId" name="contProgram.id"  value="${workContentBiddingplan.contProgram.id}"  title="选择合约" labelName="contProgram.name"
+                                       labelValue="${workContentBiddingplan.contProgram.name}" cssClass="form-control layui-input required" projectId="${workContentBiddingplan.projectId}" type="31" fieldLabels="" fieldKeys="" searchLabel="${fns:urlEncode('合约名称')}" searchKey="" ></sys:gridselectProjcontent>
+        </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:select path="biddingType" class="form-control layui-input required">
+                <form:option value="" label=""/>
+                <form:options items="${fns:getDictList('content_bidding_type')}" 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">
+            <input id="biddingDate" name="biddingDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                   value="<fmt:formatDate value="${workContentBiddingplan.biddingDate}" pattern="yyyy-MM-dd"/>"/>
+        </div>
+    </div>
+    <div class="layui-item layui-col-sm6">
+        <label class="layui-form-label"><span class="require-item">*</span>招标控制价:</label>
+        <div class="layui-input-block">
+            <input  htmlEscape="false"  name="ctrlPrice" class="form-control layui-input required number" id="ctrlPrice" value="<fmt:formatNumber value="${workContentBiddingplan.ctrlPrice}" pattern="#,##0.00#"/>" onchange="formatNum(this);"/>
+        </div>
+    </div>
+    </div>
+</form:form>
+<script type="text/javascript">
+    var validateForm;
+    $(document).ready(function () {
+        validateForm = $("#subForm").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: '#biddingDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+            type : 'date'
+        });
+    })
+
+    function genDetailStr(){
+        return JSON.stringify($("#subForm").serializeJson());
+    }
+</script>

+ 60 - 0
src/main/webapp/webpage/modules/workcontent/workContentBiddingplanView.jsp

@@ -0,0 +1,60 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<form:form id="subForm" modelAttribute="workContentBiddingplan" action="#" method="post" class="form-horizontal">
+    <form:hidden path="id"/>
+    <div class="form-group layui-row lw12">
+    <div class="layui-item layui-col-sm6">
+        <label class="layui-form-label"><span class="require-item">*</span>合约规划名称:</label>
+        <div class="layui-input-block with-icon">
+            <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workContentBiddingplan.contProgram.name}"/>
+        </div>
+    </div>
+    <div class="layui-item layui-col-sm6">
+        <label class="layui-form-label"><span class="require-item">*</span>招标方式:</label>
+        <div class="layui-input-block">
+            <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getDictLabel(workContentBiddingplan.biddingType, 'content_bidding_type', '')}"/>
+        </div>
+    </div>
+    <div class="layui-item layui-col-sm6">
+        <label class="layui-form-label"><span class="require-item">*</span>招标时间:</label>
+        <div class="layui-input-block">
+            <input htmlEscape="false" readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${workContentBiddingplan.biddingDate}" pattern="yyyy-MM-dd"/>"/>
+        </div>
+    </div>
+    <div class="layui-item layui-col-sm6">
+        <label class="layui-form-label"><span class="require-item">*</span>招标控制价:</label>
+        <div class="layui-input-block">
+            <input htmlEscape="false" readonly="true" class="form-control layui-input" value="<fmt:formatNumber value="${workContentBiddingplan.ctrlPrice}" pattern="#,##0.00#"/>"/>
+        </div>
+    </div>
+    </div>
+</form:form>
+<script type="text/javascript">
+    var validateForm;
+    $(document).ready(function () {
+        validateForm = $("#subForm").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: '#biddingDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+            type : 'date'
+        });
+    })
+
+    function genDetailStr(){
+        return JSON.stringify($("#subForm").serializeJson());
+    }
+</script>

+ 183 - 0
src/main/webapp/webpage/modules/workcontent/workContentBudgetList.jsp

@@ -0,0 +1,183 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<script type="text/javascript">
+    function formatNumMoney(obj,index) {
+        var val = $(obj).val();
+        var reviewAmt=$("#budgetList"+index+"_reviewAmt").val();
+        if(reviewAmt==undefined||!isNumber(reviewAmt)||reviewAmt==''){
+            reviewAmt=0;
+        }
+        var setAmt=$("#budgetList"+index+"_setAmt").val();
+        if(setAmt==undefined||!isNumber(setAmt)||setAmt==''){
+            setAmt=0;
+        }
+        $("#budgetList"+index+"_floatAmt").val((parseFloat(reviewAmt) + parseFloat(setAmt)).toFixed(2));
+        if(!isNumber(val))return;
+
+      /*  var money = parseFloat((val + "").replace(/[^\d\.-]/g, "")).toFixed(2) + "";
+        var l = money.split(".")[0].split("").reverse(),
+            r = money.split(".")[1];
+        t = "";
+        for(i = 0; i < l.length; i ++ )
+        {
+            t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
+        }
+        $(obj).val(t.split("").reverse().join("") + "." + r);*/
+    }
+</script>
+<form id="subForm"  action="#" onsubmit="return false;" method="post" class="form-horizontal">
+
+            <div class="layui-item nav-btns" style="padding-left:0px;">
+                <a class="nav-btn nav-btn-add" onclick="addRowBudget('#budgetTableList',budgetIdx,budgetTpl)" title="新增"><i class="fa fa-plus"></i> 新增</a>
+            </div>
+            <table id="contentTable" class="table table-bordered table-condensed can-edit">
+            <!-- 表格 -->
+                <thead>
+                    <tr>
+                        <th class="hide"></th>
+                        <th>编号</th>
+                        <th>工程费用名称</th>
+                        <th>送审金额</th>
+                        <th>审定金额</th>
+                        <th width="180px">审增减金额(+/-)</th>
+                        <th>审增减原因</th>
+                        <th>节点类型</th>
+                        <th>备注</th>
+                        <th width="120">操作</th>
+                    </tr>
+                </thead>
+                <tbody id="budgetTableList">
+                </tbody>
+            </table>
+
+
+            <script type="text/template" id="budgetTpl">//<!--
+        <tr id="budgetList{{idx}}">
+            <td class="hide">
+                <input id="budgetList{{idx}}_id" subName="id" type="hidden" value="{{row.id}}" class="contentDetail"/>
+                <input id="budgetList{{idx}}_delFlag" subName="delFlag" type="hidden" value="0" class="contentDetail"/>
+            </td>
+            <td>
+                <input id="budgetList{{idx}}_budgetNum" subName="budgetNum" value="{{row.budgetNum}}" type="text" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="budgetList{{idx}}_costsubName" subName="costName" value="{{row.costName}}" type="text" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="budgetList{{idx}}_reviewAmt" subName="reviewAmt" type="text" value="{{row.reviewAmt}}" onchange="formatNumMoney(this,{{idx}});" class="form-control number contentDetail money"/>
+            </td>
+            <td>
+                <input id="budgetList{{idx}}_setAmt" subName="setAmt" type="text" value="{{row.setAmt}}" onchange="formatNumMoney(this,{{idx}});" class="form-control number contentDetail  money"/>
+            </td>
+            <td>
+                <input id="budgetList{{idx}}_floatAmt" subName="floatAmt" type="text" value="{{row.floatAmt}}" readonly="true" class="form-control number contentDetail money"/>
+            </td>
+            <td>
+                <input id="budgetList{{idx}}_floatReason" subName="floatReason" type="text" value="{{row.floatReason}}" class="form-control contentDetail"/>
+            </td>
+            <td>
+             <select style="width:180px;" id="budgetList{{idx}}_nodeTypes" subName="nodeTypes" class="form-control contentDetail">
+			 <option value =""></option>
+             <c:if test="${ not empty list}">
+				<c:forEach items="${list}" var="nodeType" varStatus="index">
+				<option value="${nodeType.value}">${nodeType.label}</option>
+				</c:forEach>
+			</c:if>
+			</select>
+                <%--<input id="budgetList{{idx}}_nodeTypes" subName="nodeTypes" type="text"  value="{{row.nodeTypes}}" class="form-control contentDetail"/>--%>
+            </td>
+            <td>
+                <input id="budgetList{{idx}}_remarks" subName="remarks" type="text"  value="{{row.remarks}}" class="form-control contentDetail"/>
+            </td>
+            <td class="text-center op-td">
+                        <a href="#" onclick="delRow(this, '#budgetList{{idx}}')"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
+            </td>
+        </tr>//-->
+            </script>
+            <script type="text/javascript">
+                var budgetIdx = 0, budgetTpl = $("#budgetTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+                var validateForm2;
+                $(function(){
+                    validateForm2 = $("#subForm").validate({
+                        errorContainer: "#messageBox",
+                        errorPlacement: function(error, element) {
+                            $("#messageBox").text("输入有误,请先更正。");
+                            if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                                error.appendTo(element.parent().parent());
+                            } else {
+                                error.insertAfter(element);
+                            }
+                        }
+                    });
+                    var data = ${fns:toJson(budgetList)};
+                    for (var i=0; i<data.length; i++){
+                        addRowBudget('#budgetTableList', budgetIdx, budgetTpl,data[i]);
+                        $("#budgetTableList"+i+"_nodeTypes").val(data[i].nodeTypes);
+                    }
+                    $(":input.money").change();
+                });
+
+                function addRowBudget(list, idx, tpl, row){
+                    tpl = tpl.replace("budgetList[0].nodeTypes","budgetList["+idx+"].nodeTypes");
+                    bornTemplete(list, idx, tpl, row, idx);
+                    budgetIdx +=1;
+                }
+
+                function bornTemplete(list, idx, tpl, row, idx1){
+                    var idx1 = $("#budgetTableList tr").length +1;
+                    $(list).append(Mustache.render(tpl, {
+                        idx: idx, delBtn: true, row: row,
+                        order:idx1 + 1, idx1:idx1
+                    }));
+                    $(list+idx).find("select").each(function(){
+                        $(this).val($(this).attr("data-value"));
+                    });
+                    $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                        var ss = $(this).attr("data-value").split(',');
+                        for (var i=0; i<ss.length; i++){
+                            if($(this).val() == ss[i]){
+                                $(this).attr("checked","checked");
+                            }
+                        }
+                    });
+                }
+                function delRow(obj, prefix,idx){
+                    var id = $(prefix+"_id");
+                    var delFlag = $(prefix+"_delFlag");
+                    if(id.val()==null||id.val()==''){
+                        $(obj).parent().parent().remove();
+                    }else {
+                        delFlag.val("1");
+                        $(obj).parent().parent().hide();
+                    }
+                }
+
+                function genDetailStr(){
+                    var costList = $("#budgetTableList tr");
+                    var contentStr = "[";
+                    for(var j=0; j<costList.length;j++){
+                        contentStr+="{"
+                        var idstr = $(costList[j]).attr("id");
+                        var detail = $("tr[id="+idstr+"] .contentDetail");
+                        for(var i=0; i<detail.length;i++){
+                            contentStr+='"'
+                            contentStr+=$(detail[i]).attr("subName");
+                            contentStr+='"'
+                            contentStr+=":";
+                            contentStr+='"'
+                            contentStr+=$(detail[i]).val();
+                            contentStr+='"'
+                            if(i!=detail.length-1){
+                                contentStr+=","
+                            }
+                        }
+                        contentStr+="}"
+                        if(j!=costList.length-1){
+                            contentStr+=","
+                        }
+                    }
+                    contentStr += "]";
+                    return contentStr;
+                }
+            </script>
+</form>

+ 50 - 0
src/main/webapp/webpage/modules/workcontent/workContentBudgetListView.jsp

@@ -0,0 +1,50 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+
+<form id="subForm"  action="#" onsubmit="return false;" method="post" class="form-horizontal">
+            <!-- 表格 -->
+            <table id="contentTable" class="table table-bordered table-condensed">
+                <thead>
+                <tr>
+                    <th>编号</th>
+                    <th>工程费用名称</th>
+                    <th>送审金额</th>
+                    <th>审定金额</th>
+                    <th>审增减金额(+/-)</th>
+                    <th>审增减原因</th>
+                    <th>节点类型</th>
+                    <th>备注</th>
+                </tr>
+                </thead>
+                <tbody id="budgetTableList">
+                    <c:forEach items="${budgetList}" var="budget">
+                        <tr>
+                            <td style='text-align:center;'>
+                                ${budget.budgetNum}
+                            </td>
+                            <td style='text-align:center;'>
+                                    ${budget.costName}
+                            </td>
+                            <td style='text-align:center;'>
+                                <fmt:formatNumber value="${budget.reviewAmt}" pattern="#,##0.00#"/>
+                            </td>
+                            <td style='text-align:center;'>
+                                <fmt:formatNumber value="${budget.setAmt}" pattern="#,##0.00#"/>
+                            </td>
+                            <td style='text-align:center;'>
+                                <fmt:formatNumber value="${budget.floatAmt}" pattern="#,##0.00#"/>
+                            </td>
+                            <td style='text-align:center;'>
+                                    ${budget.floatReason}
+                            </td>
+                            <td style='text-align:center;'>
+                                    ${fns:getMainDictLabel(budget.nodeTypes, 'node_type', '')}
+                            </td>
+                            <td style='text-align:center;'>
+                                    ${budget.remarks}
+                            </td>
+                        </tr>
+                    </c:forEach>
+                </tbody>
+            </table>
+</form>

+ 137 - 0
src/main/webapp/webpage/modules/workcontent/workContentClaimForm.jsp

@@ -0,0 +1,137 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+		<form:form id="subForm" modelAttribute="workContentClaim" action="${ctx}/workcontent/workContentClaim/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+        <div class="form-group layui-row lw12">
+            <div class="layui-item layui-col-sm6">
+                <label class="layui-form-label"><span class="require-item">*</span>合同名称:</label>
+                <div class="layui-input-block with-icon">
+                    <sys:gridselectProjcontent url="${ctx}/projectcontentinfo/projectContentData/selectcontent" id="contractId" name="contract.id"  value="${workContentClaim.contract.id}"  title="选择合同" labelName="contract.name"
+                                               labelValue="${workContentClaim.contract.name}" cssClass="form-control layui-input required" projectId="${workContentClaim.projectId}" type="41" fieldLabels="" fieldKeys="" searchLabel="${fns:urlEncode('合约名称')}" searchKey="" ></sys:gridselectProjcontent>
+                </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:select path="claimType" class="form-control layui-input required">
+                        <form:option value="" label=""/>
+                        <form:options items="${fns:getMainDictList('content_claim_type')}" 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">
+                    <input id="claimDate" name="claimDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                           value="<fmt:formatDate value="${workContentClaim.claimDate}" pattern="yyyy-MM-dd"/>"/>
+                </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="content" htmlEscape="false" rows="3"  maxlength="255"  class="form-control "/>
+                </div>
+            </div>
+        </div>
+
+        <div class="form-group layui-row 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 name="reviewAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentClaim.reviewAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);"  class="form-control layui-input required number"/>
+                </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 name="setAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentClaim.setAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);"  class="form-control layui-input required number"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6">
+                <label class="layui-form-label"><span class="require-item">*</span>报送日期:</label>
+                <div class="layui-input-block">
+                    <input id="reviewDate" name="reviewDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                           value="<fmt:formatDate value="${workContentClaim.reviewDate}" pattern="yyyy-MM-dd"/>"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6">
+                <label class="layui-form-label"><span class="require-item">*</span>审定日期:</label>
+                <div class="layui-input-block">
+                    <input id="setDate" name="setDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                           value="<fmt:formatDate value="${workContentClaim.setDate}" pattern="yyyy-MM-dd"/>"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6">
+                <label class="layui-form-label"><span class="require-item">*</span>计入台账:</label>
+                <div class="layui-input-block">
+                    <form:select path="inAccount" class="form-control layui-input required">
+                        <form:option value="" label=""/>
+                        <form:options items="${fns:getDictList('yes_no')}" 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:select path="inPayment" class="form-control layui-input required">
+                        <form:option value="" label=""/>
+                        <form:options items="${fns:getDictList('yes_no')}" 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="createBy.name" htmlEscape="false"  readonly="true"  class="form-control layui-input required"/>
+                    <form:hidden path="createBy.id" htmlEscape="false"  readonly="true"  class="form-control layui-input required"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6">
+                <label class="layui-form-label"><span class="require-item">*</span>创建时间:</label>
+                <div class="layui-input-block">
+                    <input id="createDate" name="projectContentData.createDate" type="text" readonly="true" maxlength="20" class="form-control layui-input required"
+                           value="<fmt:formatDate value="${workContentClaim.createDate}" pattern="yyyy-MM-dd"/>"/>
+                </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="3"  maxlength="255"  class="form-control layui-area"/>
+                </div>
+            </div>
+        </div>
+	</form:form>
+<script type="text/javascript">
+    var validateForm;
+    $(document).ready(function() {
+        validateForm = $("#subForm").validate({
+            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: '#claimDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#reviewDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#setDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+    });
+
+    function genDetailStr(){
+        return JSON.stringify($("#subForm").serializeJson());
+    }
+</script>

+ 124 - 0
src/main/webapp/webpage/modules/workcontent/workContentClaimFormView.jsp

@@ -0,0 +1,124 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+		<form:form id="subForm" modelAttribute="workContentClaim" action="${ctx}/workcontent/workContentClaim/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+            <div class="form-group layui-row lw12">
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>合同名称:</label>
+                    <div class="layui-input-block with-icon">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workContentClaim.contract.name}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>索赔类型:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getMainDictLabel(workContentClaim.claimType,'content_claim_type','')}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>索赔日期:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${workContentClaim.claimDate}" pattern="yyyy-MM-dd"/>"/>
+                    </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="content" readonly="true" htmlEscape="false" rows="3"    class="form-control "/>
+                    </div>
+                </div>
+            </div>
+
+            <div class="form-group layui-row 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 name="reviewAmt" htmlEscape="false" readonly="true"  value="<fmt:formatNumber value="${workContentClaim.reviewAmt}" pattern="#,##0.00#"/>"  class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>审定金额:</label>
+                    <div class="layui-input-block">
+                        <input name="setAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentClaim.setAmt}" pattern="#,##0.00#"/>"  class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>报送日期:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${workContentClaim.reviewDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>审定日期:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${workContentClaim.setDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>计入台账:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getDictLabel(workContentClaim.inAccount,'yes_no' ,'' )}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>计入支付:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getDictLabel(workContentClaim.inPayment,'yes_no' ,'' )}"/>
+                    </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="createBy.name" htmlEscape="false"  readonly="true"  class="form-control layui-input required"/>
+                        <form:hidden path="createBy.id" htmlEscape="false"  readonly="true"  class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>创建时间:</label>
+                    <div class="layui-input-block">
+                        <input id="createDate" name="projectContentData.createDate" type="text" readonly="true" maxlength="20" class="form-control layui-input"
+                               value="<fmt:formatDate value="${workContentClaim.createDate}" pattern="yyyy-MM-dd"/>"/>
+                    </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="3"  readonly="true"  class="form-control layui-area"/>
+                    </div>
+                </div>
+            </div>
+	</form:form>
+<script type="text/javascript">
+    var validateForm;
+    $(document).ready(function() {
+        validateForm = $("#subForm").validate({
+            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: '#claimDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#reviewDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#setDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+    });
+
+    function genDetailStr(){
+        return JSON.stringify($("#subForm").serializeJson());
+    }
+</script>

+ 96 - 0
src/main/webapp/webpage/modules/workcontent/workContentContprogram.jsp

@@ -0,0 +1,96 @@
+<%@ page import="com.alibaba.fastjson.JSON" %>
+<%@ page import="com.jeeplus.modules.workcontent.entity.WorkContentContprogram" %>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+
+<form:form id="subForm" modelAttribute="workContentContprogram" action="#" method="post" class="form-horizontal">
+    <form:hidden path="id"/>
+    <div class="form-group layui-row lw12">
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>合同分类:</label>
+            <div class="layui-input-block">
+                <select id="contCate" name="contCate" class="form-control layui-input required">
+                    <option value="" label=""/>
+                    <c:forEach items="${fns:getDictList('content_contract_type')}" var="item">
+                        <optgroup value="${item.value}" label="${item.label}"/>
+                        <c:set var="typename" value="content_contract_type_${item.value}"></c:set>
+                        <c:forEach items="${fns:getDictList(typename)}" var="item2">
+                            <option value="${item2.value}" <c:if test="${workContentContprogram.contCate eq item2.value}">selected</c:if>>${item2.label}</option>
+                        </c:forEach>
+                    </c:forEach>
+                </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:select path="contAttr" class="form-control layui-input required">--%>
+                    <%--<option value="" label=""/>--%>
+                    <%--<form:options items="${fns:getMainDictList('content_contract_attr')}" 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:select path="priceType" class="form-control layui-input required">
+                    <form:option value="" label=""/>
+                    <form:options items="${fns:getMainDictList('content_contract_price_type')}" 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:select path="bidType" class="form-control layui-input required">
+                    <form:option value="" label=""/>
+                    <form:options items="${fns:getDictList('content_bidding_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                </form:select>
+            </div>
+        </div>
+    </div>
+
+    <div class="form-group layui-row lw12">
+        <div class="form-group-label"><h2>规划详情</h2></div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label">与其他合约关系:</label>
+            <div class="layui-input-block with-icon">
+                <sys:gridselectProjcontent url="${ctx}/projectcontentinfo/projectContentData/selectcontent" id="otherProgramId" name="otherProgram.id"  value="${workContentContprogram.otherProgram.id}"  title="选择合约" labelName="otherProgram.name"
+                                           extId="${workContentContprogram.contentId}"    labelValue="${workContentContprogram.otherProgram.name}" cssClass="form-control layui-input " projectId="${workContentContprogram.projectId}" type="31" fieldLabels="" fieldKeys="" searchLabel="${fns:urlEncode('合约名称')}" searchKey="" ></sys:gridselectProjcontent>
+            </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="scope" htmlEscape="false" rows="3"  class="form-control  "/>
+            </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="inteface" htmlEscape="false" rows="3"    class="form-control  "/>
+            </div>
+        </div>
+    </div>
+</form:form>
+    <script type="text/javascript">
+        var validateForm;
+        validateForm = $("#subForm").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 genDetailStr(){
+            return JSON.stringify($("#subForm").serializeJson());
+        }
+    </script>

+ 82 - 0
src/main/webapp/webpage/modules/workcontent/workContentContprogramView.jsp

@@ -0,0 +1,82 @@
+<%@ page import="com.alibaba.fastjson.JSON" %>
+<%@ page import="com.jeeplus.modules.workcontent.entity.WorkContentContprogram" %>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+
+<form:form id="subForm" modelAttribute="workContentContprogram" action="#" method="post" class="form-horizontal">
+    <form:hidden path="id"/>
+    <div class="form-group layui-row lw12">
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>合同分类:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" <c:forEach items="${fns:getDictList('content_contract_type')}" var="item">
+                    <c:set var="typename" value="content_contract_type_${item.value}"></c:set>
+                    <c:forEach items="${fns:getDictList(typename)}" var="item2">
+                        <c:if test="${workContentContprogram.contCate eq item2.value}">value="${item2.label}"</c:if>
+                    </c:forEach>
+                </c:forEach>/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>合同属性:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getMainDictLabel(workContentContprogram.contAttr, 'content_contract_attr', '')}"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>合同价格类型:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getMainDictLabel(workContentContprogram.priceType, 'content_contract_price_type', '')}"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>招标方式:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getDictLabel(workContentContprogram.bidType, 'content_bidding_type', '')}"/>
+            </div>
+        </div>
+    </div>
+
+    <div class="form-group layui-row lw12">
+        <div class="form-group-label"><h2>规划详情</h2></div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label">与其他合约关系:</label>
+            <div class="layui-input-block with-icon">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workContentContprogram.otherProgram.name}"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm12 with-textarea">
+            <label class="layui-form-label"><span class="require-item">*</span>合同范围:</label>
+            <div class="layui-input-block">
+                <form:textarea path="scope" htmlEscape="false" rows="3" readonly="true" class="form-control required "/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm12 with-textarea">
+            <label class="layui-form-label"><span class="require-item">*</span>界面的处理:</label>
+            <div class="layui-input-block">
+                <form:textarea path="inteface" htmlEscape="false" rows="3"  readonly="true"  class="form-control required "/>
+            </div>
+        </div>
+    </div>
+</form:form>
+    <script type="text/javascript">
+        var validateForm;
+        validateForm = $("#subForm").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 genDetailStr(){
+            return JSON.stringify($("#subForm").serializeJson());
+        }
+    </script>

+ 332 - 0
src/main/webapp/webpage/modules/workcontent/workContentContractSumFormView.jsp

@@ -0,0 +1,332 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<%--<form:form id="subForm" modelAttribute="workContentContractSum" action="#" method="post" class="form-horizontal">--%>
+    <%--<form:hidden path="id"/>--%>
+    <%--<div class="form-group layui-row lw12">--%>
+        <%--<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="cnumber" htmlEscape="false"  readonly="true"  class="form-control layui-input required"/>--%>
+            <%--</div>--%>
+        <%--</div>--%>
+        <%--<div class="layui-item layui-col-sm6">--%>
+            <%--<label class="layui-form-label"><span class="require-item">*</span>合同分类:</label>--%>
+            <%--<div class="layui-input-block">--%>
+                <%--<input htmlEscape="false" readonly="true" class="form-control layui-input"--%>
+                   <%--<c:forEach items="${fns:getDictList('content_contract_type')}" var="item">--%>
+                        <%--<c:set var="typename" value="content_contract_type_${item.value}"></c:set>--%>
+                        <%--<c:forEach items="${fns:getDictList(typename)}" var="item2">--%>
+                            <%--<c:if test="${workContentContractSum.contCate eq item2.value}">value="${item2.label}"</c:if>--%>
+                        <%--</c:forEach>--%>
+                    <%--</c:forEach>/>--%>
+            <%--</div>--%>
+        <%--</div>--%>
+        <%--<div class="layui-item layui-col-sm6">--%>
+            <%--<label class="layui-form-label"><span class="require-item">*</span>合同属性:</label>--%>
+            <%--<div class="layui-input-block">--%>
+                <%--<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getMainDictLabel(workContentContractSum.contAttr, 'content_contract_attr', '')}"/>--%>
+            <%--</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="lettingAgent" htmlEscape="false" readonly="true" class="form-control layui-input required"/>--%>
+            <%--</div>--%>
+        <%--</div>--%>
+        <%--<div class="layui-item layui-col-sm6">--%>
+            <%--<label class="layui-form-label"><span class="require-item">*</span>承包人:</label>--%>
+            <%--<div class="layui-input-block">--%>
+                <%--<form:input path="contractor" htmlEscape="false" readonly="true" class="form-control layui-input required"/>--%>
+            <%--</div>--%>
+        <%--</div>--%>
+    <%--</div>--%>
+
+    <%--<div class="form-group layui-row lw12">--%>
+        <%--<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="scope" htmlEscape="false" rows="3" readonly="true" class="form-control required"/>--%>
+            <%--</div>--%>
+        <%--</div>--%>
+        <%--<div class="layui-item layui-col-sm6">--%>
+            <%--<label class="layui-form-label">签约日期:</label>--%>
+            <%--<div class="layui-input-block">--%>
+                <%--<input type="text" maxlength="20" readonly="true" class="form-control layui-input"--%>
+                       <%--value="<fmt:formatDate value="${workContentContractSum.signDate}" 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 name="titularAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.targetCost}" pattern="#,##0.00#"/>" class="form-control layui-input number"/>--%>
+            <%--</div>--%>
+        <%--</div>--%>
+        <%--<div class="layui-item layui-col-sm6 double-line">--%>
+            <%--<label class="layui-form-label">合同金额(元):</label>--%>
+            <%--<div class="layui-input-block">--%>
+                <%--<input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.contractAmount}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>--%>
+            <%--</div>--%>
+        <%--</div>--%>
+        <%--<div class="layui-item layui-col-sm6 double-line">--%>
+            <%--<label class="layui-form-label">预算金额(元):</label>--%>
+            <%--<div class="layui-input-block">--%>
+                <%--<input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.budgetFee}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>--%>
+            <%--</div>--%>
+        <%--</div>--%>
+        <%--<div class="layui-item layui-col-sm6 double-line">--%>
+            <%--<label class="layui-form-label">结算金额(元):</label>--%>
+            <%--<div class="layui-input-block">--%>
+                <%--<input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.settlementFee}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>--%>
+            <%--</div>--%>
+        <%--</div>--%>
+        <%--<div class="layui-item layui-col-sm6 double-line">--%>
+            <%--<label class="layui-form-label">签证变更(元):</label>--%>
+            <%--<div class="layui-input-block">--%>
+                <%--<input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.visaChangeFee}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>--%>
+            <%--</div>--%>
+        <%--</div>--%>
+        <%--<div class="layui-item layui-col-sm6 double-line">--%>
+            <%--<label class="layui-form-label">补充协议(元):</label>--%>
+            <%--<div class="layui-input-block">--%>
+                <%--<input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.supplementFee}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>--%>
+            <%--</div>--%>
+        <%--</div>--%>
+        <%--<div class="layui-item layui-col-sm6 double-line">--%>
+            <%--<label class="layui-form-label">合同调差(元):</label>--%>
+            <%--<div class="layui-input-block">--%>
+                <%--<input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.contractDifference}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>--%>
+            <%--</div>--%>
+        <%--</div>--%>
+        <%--<div class="layui-item layui-col-sm6 double-line">--%>
+            <%--<label class="layui-form-label">索赔管理(元):</label>--%>
+            <%--<div class="layui-input-block">--%>
+                <%--<input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.claimFee}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>--%>
+            <%--</div>--%>
+        <%--</div>--%>
+        <%--<div class="layui-item layui-col-sm6 double-line">--%>
+            <%--<label class="layui-form-label">扣款台账(元):</label>--%>
+            <%--<div class="layui-input-block">--%>
+                <%--<input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.deductionsParameter}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>--%>
+            <%--</div>--%>
+        <%--</div>--%>
+        <%--<div class="layui-item layui-col-sm6 double-line">--%>
+            <%--<label class="layui-form-label double-line">动态成本金额(元):</label>--%>
+            <%--<div class="layui-input-block">--%>
+                <%--<input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.dynamicCost}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>--%>
+            <%--</div>--%>
+        <%--</div>--%>
+        <%--<div class="layui-item layui-col-sm6 double-line">--%>
+            <%--<label class="layui-form-label double-line">与合同金额相比增减(元):</label>--%>
+            <%--<div class="layui-input-block">--%>
+                <%--<input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.withContractAmount}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>--%>
+            <%--</div>--%>
+        <%--</div>--%>
+        <%--<div class="layui-item layui-col-sm6 double-line">--%>
+            <%--<label class="layui-form-label double-line">与目标成本相比增减(元):</label>--%>
+            <%--<div class="layui-input-block">--%>
+                <%--<input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.withTargetCost}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>--%>
+            <%--</div>--%>
+        <%--</div>--%>
+
+
+
+    <%--</div>--%>
+
+<%--</form:form>--%>
+<table class="oa-table layui-table" id="contentTable"></table>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+    layui.use('table', function(){
+        layui.table.render({
+            elem: '#contentTable'
+            ,page: false
+            ,cols: [[
+                {field:'index',align:'center', title: '序号',width:40}
+                ,{field:'proContentName',align:'center', title: '工作内容名称',width:200}
+                ,{field:'type',align:'center', title: '类型',minWidth:100}
+                ,{field:'createName',align:'center', title: '操作人',minWidth:100}
+                ,{field:'date',align:'center', title: '操作时间',width:150}
+                ,{field:'money',align:'center', title: '调整金额',width:150}
+                ,{field:'adjustMoney',align:'center', title: '调整后金额',width:150}
+            ]]
+            ,data: [
+                <c:if test="${ not empty workContentContractSum.workContentSummaries}">
+                <c:forEach items="${workContentContractSum.workContentSummaries}" var="w" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"proContentName":"${w.proContentName}"
+                    ,"type":"${w.type}"
+                    ,"createName":"${w.createName}"
+                    ,"date":"<fmt:formatDate value="${w.date}" pattern="yyyy-MM-dd"/>"
+                    ,"money":"${w.money}"
+                    ,"adjustMoney":"${w.adjustMoney}"
+                }
+                </c:forEach>
+                </c:if>
+            ]
+        });
+
+    })
+
+    resizeListTable();/*消除由于有竖向滚动条造成table出现横向滚动条*/
+    $("a").on("click",addLinkVisied);
+</script>
+
+<script type="text/template" id="termTpl">//<!--
+        <tr id="termList{{idx}}">
+            <td style='text-align:center;'>
+                {{row.title}}
+            </td>
+            <td style='text-align:center;'>
+                {{row.content}}
+            </td>
+            <td style='text-align:center;'>
+                {{row.tnumber}}
+            </td>
+        </tr>//-->
+</script>
+<script type="text/javascript">
+    var termIdx = 0, termTpl = $("#termTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+    var validateForm;
+    var validateForm2;
+    jQuery.validator.addMethod("percent", function(value, element) {
+        var length = value.length;
+        var phone = /^(100|[1-9]?\d(\.\d\d?)?)%$/;
+        return this.optional(element) || (phone.test(value));
+    }, "请填写正确的百分数");
+    $(document).ready(function() {
+        validateForm = $("#subForm").validate({
+            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);
+                }
+            }
+        });
+
+       validateForm2 = $("#termForm").validate({
+            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: '#signDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#effectDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#startWorkDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#endWorkDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        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
+        });
+
+        <%--var data = ${fns:toJson(workContentContractSum.termList)};--%>
+        <%--if(data!=null) {--%>
+            <%--for (var i = 0; i < data.length; i++) {--%>
+                <%--addRowTerm('#termTableList', termIdx, termTpl, data[i]);--%>
+            <%--}--%>
+        <%--}--%>
+    });
+
+    function addRowTerm(list, idx, tpl, row){
+        bornTemplete(list, idx, tpl, row, idx);
+        termIdx +=1;
+    }
+
+    function bornTemplete(list, idx, tpl, row, idx1){
+        var idx1 = $("#termTableList tr").length +1;
+        $(list).append(Mustache.render(tpl, {
+            idx: idx, delBtn: true, row: row,
+            order:idx1 + 1, idx1:idx1
+        }));
+        $(list+idx).find("select").each(function(){
+            $(this).val($(this).attr("data-value"));
+        });
+        $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+            var ss = $(this).attr("data-value").split(',');
+            for (var i=0; i<ss.length; i++){
+                if($(this).val() == ss[i]){
+                    $(this).attr("checked","checked");
+                }
+            }
+        });
+    }
+    function delRow(obj, prefix,idx){
+        var id = $(prefix+"_id");
+        var delFlag = $(prefix+"_delFlag");
+        if(id.val()==null||id.val()==''){
+            $(obj).parent().parent().remove();
+        }else {
+            delFlag.val("1");
+            $(obj).parent().parent().hide();
+        }
+    }
+
+    function genDetailStr(){
+        var contractJson = $("#subForm").serializeJson();
+        var termJson = genTermJson();
+        if(termJson!=null){
+            console.log(termJson);
+            contractJson["termList"]=JSON.parse(termJson);
+        }
+        console.log(contractJson);
+        return JSON.stringify(contractJson);
+    }
+
+    function genTermJson(){
+        var costList = $("#termTableList tr");
+        if(costList.length==0){
+            return null;
+        }
+        var contentStr = "[";
+        for(var j=0; j<costList.length;j++){
+            contentStr+="{"
+            var idstr = $(costList[j]).attr("id");
+            var detail = $("tr[id="+idstr+"] .contentDetail");
+            for(var i=0; i<detail.length;i++){
+                contentStr+='"'
+                contentStr+=$(detail[i]).attr("subName");
+                contentStr+='"'
+                contentStr+=":";
+                contentStr+='"'
+                contentStr+=$(detail[i]).val();
+                contentStr+='"'
+                if(i!=detail.length-1){
+                    contentStr+=","
+                }
+            }
+            contentStr+="}"
+            if(j!=costList.length-1){
+                contentStr+=","
+            }
+        }
+        contentStr += "]";
+        return contentStr;
+    }
+</script>

+ 346 - 0
src/main/webapp/webpage/modules/workcontent/workContentContractinfoForm.jsp

@@ -0,0 +1,346 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<form:form id="subForm" modelAttribute="workContentContractinfo" action="#" method="post" class="form-horizontal">
+    <form:hidden path="id"/>
+    <div class="form-group layui-row lw12">
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>合约规划名称:</label>
+            <div class="layui-input-block with-icon">
+                <sys:gridselectProjcontent url="${ctx}/projectcontentinfo/projectContentData/selectcontent" id="programId" name="program.id"  value="${workContentContractinfo.program.id}"  title="选择合约规划名称" labelName="program.name"
+                                           labelValue="${workContentContractinfo.program.name}" cssClass="form-control layui-input required" projectId="${workContentContractinfo.projectId}" type="31" fieldLabels="" fieldKeys="" searchLabel="${fns:urlEncode('合约名称')}" searchKey="" ></sys:gridselectProjcontent>
+            </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="cnumber" htmlEscape="false"    class="form-control layui-input required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>合同分类:</label>
+            <div class="layui-input-block">
+                <form:select path="contCate" class="form-control layui-input required">
+                    <option value="" label=""/>
+                    <c:forEach items="${fns:getDictList('content_contract_type')}" var="item">
+                        <optgroup value="${item.value}" label="${item.label}"/>
+                        <c:set var="typename" value="content_contract_type_${item.value}"></c:set>
+                        <form:options items="${fns:getDictList(typename)}" itemValue="value" itemLabel="label"/>
+                    </c:forEach>
+                </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:select path="contAttr" class="form-control layui-input required">
+                    <form:option value="" label=""/>
+                    <form:options items="${fns:getMainDictList('content_contract_attr')}" 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="lettingAgent" htmlEscape="false"    class="form-control layui-input required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>承包人:</label>
+            <div class="layui-input-block">
+                <form:input path="contractor" htmlEscape="false"    class="form-control layui-input required"/>
+            </div>
+        </div>
+    </div>
+
+    <div class="form-group layui-row lw12">
+        <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="scope" htmlEscape="false" rows="3"  maxlength="255"  class="form-control "/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>签约日期:</label>
+            <div class="layui-input-block">
+                <input id="signDate" name="signDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                       value="<fmt:formatDate value="${workContentContractinfo.signDate}" pattern="yyyy-MM-dd"/>"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label">生效日期:</label>
+            <div class="layui-input-block">
+                <input id="effectDate" name="effectDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon "
+                       value="<fmt:formatDate value="${workContentContractinfo.effectDate}" 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 name="titularAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentContractinfo.titularAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);"  class="form-control layui-input number"/>
+            </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 name="trueAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentContractinfo.trueAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);"  class="form-control layui-input number required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label">保修金比例(%):</label>
+            <div class="layui-input-block">
+                <form:input path="pledgePercent" htmlEscape="false"    class="form-control layui-input  number"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>合同开工日期:</label>
+            <div class="layui-input-block">
+                <input id="startWorkDate" name="startWorkDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                       value="<fmt:formatDate value="${workContentContractinfo.startWorkDate}" pattern="yyyy-MM-dd"/>"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label">合同竣工日期:</label>
+            <div class="layui-input-block">
+                <input id="endWorkDate" name="endWorkDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon "
+                       value="<fmt:formatDate value="${workContentContractinfo.endWorkDate}" 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:input path="stopPercent" htmlEscape="false"    class="form-control layui-input  number"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label">止付金额:</label>
+            <div class="layui-input-block">
+                <input name="stopAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentContractinfo.stopAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);"  class="form-control layui-input  number"/>
+            </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:select path="status" class="form-control layui-input required">
+                    <form:option value="" label=""/>
+                    <form:options items="${fns:getDictList('content_contract_status')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                </form:select>
+            </div>
+        </div>
+    </div>
+    <div class="form-group layui-row lw12">
+        <div class="form-group-label"><h2>履约保证金</h2></div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label">支付方式:</label>
+            <div class="layui-input-block">
+                <form:input path="payType" htmlEscape="false"    class="form-control layui-input "/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>支付金额:</label>
+            <div class="layui-input-block">
+                <input name="payAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentContractinfo.payAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);"  class="form-control layui-input required number"/>
+            </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" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon "
+                       value="<fmt:formatDate value="${workContentContractinfo.startDate}" pattern="yyyy-MM-dd"/>"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label">结束日期:</label>
+            <div class="layui-input-block">
+                <input id="endDate" name="endDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon "
+                       value="<fmt:formatDate value="${workContentContractinfo.endDate}" pattern="yyyy-MM-dd"/>"/>
+            </div>
+        </div>
+    </div>
+</form:form>
+
+<form id="termForm" action="#" onsubmit="return false;" method="post" class="form-horizontal">
+    <div class="form-group layui-row lw12">
+        <div class="form-group-label"><h2>合同条款</h2></div>
+        <div class="layui-item nav-btns">
+            <a href="javascript:void(0)" onclick="addRowTerm('#termTableList',termIdx,termTpl)" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
+        </div>
+        <table id="termsTable" class="table table-bordered table-condensed can-edit">
+            <thead>
+            <tr>
+                <th class="hide"></th>
+                <th>摘要项</th>
+                <th>摘要内容</th>
+                <th>对应条款序号</th>
+                <th>操作</th>
+            </tr>
+            </thead>
+            <tbody id="termTableList">
+            </tbody>
+        </table>
+    </div>
+</form>
+<script type="text/template" id="termTpl">//<!--
+        <tr id="termList{{idx}}">
+            <td class="hide">
+                <input id="termList{{idx}}_id" subName="id" class="contentDetail" type="hidden" value="{{row.id}}"/>
+                <input id="termList{{idx}}_delFlag" subName="delFlag" class="contentDetail" type="hidden" value="0"/>
+                <input id="termList{{idx}}_contractId" subName="contractId" class="contentDetail" type="hidden" value="{{row.contractId}}"/>
+            </td>
+            <td>
+                <input id="termList{{idx}}_title" subName="title"  value="{{row.title}}" type="text" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="termList{{idx}}_content" subName="content" value="{{row.content}}" type="text" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="termList{{idx}}_tnumber" subName="tnumber" value="{{row.tnumber}}" type="text" class="form-control contentDetail"/>
+            </td>
+            <td class="text-center op-td">
+                        <a href=javascript:void(0); onclick="delRow(this, '#termList{{idx}}')"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
+            </td>
+        </tr>//-->
+</script>
+<script type="text/javascript">
+    var termIdx = 0, termTpl = $("#termTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+    var validateForm;
+    var validateForm2;
+    jQuery.validator.addMethod("percent", function(value, element) {
+        var length = value.length;
+        var phone = /^(100|[1-9]?\d(\.\d\d?)?)%$/;
+        return this.optional(element) || (phone.test(value));
+    }, "请填写正确的百分数");
+    $(document).ready(function() {
+        validateForm = $("#subForm").validate({
+            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);
+                }
+            }
+        });
+
+       validateForm2 = $("#termForm").validate({
+            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: '#signDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#effectDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#startWorkDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#endWorkDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        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
+        });
+
+        var data = ${fns:toJson(workContentContractinfo.termList)};
+        if(data!=null) {
+            for (var i = 0; i < data.length; i++) {
+                addRowTerm('#termTableList', termIdx, termTpl, data[i]);
+            }
+        }
+    });
+
+    function addRowTerm(list, idx, tpl, row){
+        bornTemplete(list, idx, tpl, row, idx);
+        termIdx +=1;
+    }
+
+    function bornTemplete(list, idx, tpl, row, idx1){
+        var idx1 = $("#termTableList tr").length +1;
+        $(list).append(Mustache.render(tpl, {
+            idx: idx, delBtn: true, row: row,
+            order:idx1 + 1, idx1:idx1
+        }));
+        $(list+idx).find("select").each(function(){
+            $(this).val($(this).attr("data-value"));
+        });
+        $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+            var ss = $(this).attr("data-value").split(',');
+            for (var i=0; i<ss.length; i++){
+                if($(this).val() == ss[i]){
+                    $(this).attr("checked","checked");
+                }
+            }
+        });
+    }
+    function delRow(obj, prefix,idx){
+        var id = $(prefix+"_id");
+        var delFlag = $(prefix+"_delFlag");
+        if(id.val()==null||id.val()==''){
+            $(obj).parent().parent().remove();
+        }else {
+            delFlag.val("1");
+            $(obj).parent().parent().hide();
+        }
+    }
+
+    function genDetailStr(){
+        var contractJson = $("#subForm").serializeJson();
+        var termJson = genTermJson();
+        if(termJson!=null){
+            console.log(termJson);
+            contractJson["termList"]=JSON.parse(termJson);
+        }
+        console.log(contractJson);
+        return JSON.stringify(contractJson);
+    }
+
+    function genTermJson(){
+        var costList = $("#termTableList tr");
+        if(costList.length==0){
+            return null;
+        }
+        var contentStr = "[";
+        for(var j=0; j<costList.length;j++){
+            contentStr+="{"
+            var idstr = $(costList[j]).attr("id");
+            var detail = $("tr[id="+idstr+"] .contentDetail");
+            for(var i=0; i<detail.length;i++){
+                contentStr+='"'
+                contentStr+=$(detail[i]).attr("subName");
+                contentStr+='"'
+                contentStr+=":";
+                contentStr+='"'
+                contentStr+=$(detail[i]).val();
+                contentStr+='"'
+                if(i!=detail.length-1){
+                    contentStr+=","
+                }
+            }
+            contentStr+="}"
+            if(j!=costList.length-1){
+                contentStr+=","
+            }
+        }
+        contentStr += "]";
+        return contentStr;
+    }
+</script>

+ 325 - 0
src/main/webapp/webpage/modules/workcontent/workContentContractinfoFormView.jsp

@@ -0,0 +1,325 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<form:form id="subForm" modelAttribute="workContentContractinfo" action="#" method="post" class="form-horizontal">
+    <form:hidden path="id"/>
+    <div class="form-group layui-row lw12">
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label">合约规划名称:</label>
+            <div class="layui-input-block with-icon">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workContentContractinfo.program.name}"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>合同编号:</label>
+            <div class="layui-input-block">
+                <form:input path="cnumber" htmlEscape="false"  readonly="true"  class="form-control layui-input required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>合同分类:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input"
+                   <c:forEach items="${fns:getDictList('content_contract_type')}" var="item">
+                        <c:set var="typename" value="content_contract_type_${item.value}"></c:set>
+                        <c:forEach items="${fns:getDictList(typename)}" var="item2">
+                            <c:if test="${workContentContractinfo.contCate eq item2.value}">value="${item2.label}"</c:if>
+                        </c:forEach>
+                    </c:forEach>/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>合同属性:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getMainDictLabel(workContentContractinfo.contAttr, 'content_contract_attr', '')}"/>
+            </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="lettingAgent" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>承包人:</label>
+            <div class="layui-input-block">
+                <form:input path="contractor" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
+            </div>
+        </div>
+    </div>
+
+    <div class="form-group layui-row lw12">
+        <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="scope" htmlEscape="false" rows="3" readonly="true" class="form-control "/>
+            </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 type="text" maxlength="20" readonly="true" class="form-control layui-input"
+                       value="<fmt:formatDate value="${workContentContractinfo.signDate}" pattern="yyyy-MM-dd"/>"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>生效日期:</label>
+            <div class="layui-input-block">
+                <input type="text" maxlength="20" readonly="true" class="form-control layui-input"
+                       value="<fmt:formatDate value="${workContentContractinfo.effectDate}" 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 name="titularAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractinfo.titularAmt}" pattern="#,##0.00#"/>" class="form-control layui-input number"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6 double-line">
+            <label class="layui-form-label"><span class="require-item">*</span>有效合同金额(元):</label>
+            <div class="layui-input-block">
+                <input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractinfo.trueAmt}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>保修金比例(%):</label>
+            <div class="layui-input-block">
+                <form:input path="pledgePercent" htmlEscape="false" readonly="true" class="form-control layui-input required number"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label">合同开工日期:</label>
+            <div class="layui-input-block">
+                <input readonly="true" type="text" maxlength="20" class="form-control layui-input"
+                       value="<fmt:formatDate value="${workContentContractinfo.startWorkDate}" 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 readonly="true" type="text" maxlength="20" class="form-control layui-input"
+                       value="<fmt:formatDate value="${workContentContractinfo.endWorkDate}" pattern="yyyy-MM-dd"/>"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>止付比例(%):</label>
+            <div class="layui-input-block">
+                <form:input path="stopPercent" htmlEscape="false" readonly="true" class="form-control layui-input required number"/>
+            </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 name="stopAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentContractinfo.stopAmt}" pattern="#,##0.00#"/>" readonly="true" class="form-control layui-input required number"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>合同执行状态:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getDictLabel(workContentContractinfo.status, 'content_contract_status', '')}"/>
+            </div>
+        </div>
+    </div>
+    <div class="form-group layui-row lw12">
+        <div class="form-group-label"><h2>履约保证金</h2></div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label">支付方式:</label>
+            <div class="layui-input-block">
+                <form:input path="payType" htmlEscape="false"  readonly="true"  class="form-control layui-input "/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>支付金额:</label>
+            <div class="layui-input-block">
+                <input name="payAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentContractinfo.payAmt}" pattern="#,##0.00#"/>" readonly="true" class="form-control layui-input required number"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label">开始日期:</label>
+            <div class="layui-input-block">
+                <input readonly="true" type="text" maxlength="20" class="form-control layui-input "
+                       value="<fmt:formatDate value="${workContentContractinfo.startDate}" 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 readonly="true" type="text" maxlength="20" class=" form-control layui-input "
+                       value="<fmt:formatDate value="${workContentContractinfo.endDate}" pattern="yyyy-MM-dd"/>"/>
+            </div>
+        </div>
+    </div>
+</form:form>
+
+<form id="termForm" action="#" onsubmit="return false;" method="post" class="form-horizontal">
+    <div class="form-group layui-row lw12">
+        <div class="form-group-label"><h2>合同条款</h2></div>
+        <table id="termsTable" class="table table-bordered table-condensed">
+            <thead>
+            <tr>
+                <th>摘要项</th>
+                <th>摘要内容</th>
+                <th>对应条款序号</th>
+            </tr>
+            </thead>
+            <tbody id="termTableList">
+            </tbody>
+        </table>
+    </div>
+</form>
+<script type="text/template" id="termTpl">//<!--
+        <tr id="termList{{idx}}">
+            <td style='text-align:center;'>
+                {{row.title}}
+            </td>
+            <td style='text-align:center;'>
+                {{row.content}}
+            </td>
+            <td style='text-align:center;'>
+                {{row.tnumber}}
+            </td>
+        </tr>//-->
+</script>
+<script type="text/javascript">
+    var termIdx = 0, termTpl = $("#termTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+    var validateForm;
+    var validateForm2;
+    jQuery.validator.addMethod("percent", function(value, element) {
+        var length = value.length;
+        var phone = /^(100|[1-9]?\d(\.\d\d?)?)%$/;
+        return this.optional(element) || (phone.test(value));
+    }, "请填写正确的百分数");
+    $(document).ready(function() {
+        validateForm = $("#subForm").validate({
+            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);
+                }
+            }
+        });
+
+       validateForm2 = $("#termForm").validate({
+            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: '#signDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#effectDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#startWorkDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#endWorkDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        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
+        });
+
+        var data = ${fns:toJson(workContentContractinfo.termList)};
+        if(data!=null) {
+            for (var i = 0; i < data.length; i++) {
+                addRowTerm('#termTableList', termIdx, termTpl, data[i]);
+            }
+        }
+    });
+
+    function addRowTerm(list, idx, tpl, row){
+        bornTemplete(list, idx, tpl, row, idx);
+        termIdx +=1;
+    }
+
+    function bornTemplete(list, idx, tpl, row, idx1){
+        var idx1 = $("#termTableList tr").length +1;
+        $(list).append(Mustache.render(tpl, {
+            idx: idx, delBtn: true, row: row,
+            order:idx1 + 1, idx1:idx1
+        }));
+        $(list+idx).find("select").each(function(){
+            $(this).val($(this).attr("data-value"));
+        });
+        $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+            var ss = $(this).attr("data-value").split(',');
+            for (var i=0; i<ss.length; i++){
+                if($(this).val() == ss[i]){
+                    $(this).attr("checked","checked");
+                }
+            }
+        });
+    }
+    function delRow(obj, prefix,idx){
+        var id = $(prefix+"_id");
+        var delFlag = $(prefix+"_delFlag");
+        if(id.val()==null||id.val()==''){
+            $(obj).parent().parent().remove();
+        }else {
+            delFlag.val("1");
+            $(obj).parent().parent().hide();
+        }
+    }
+
+    function genDetailStr(){
+        var contractJson = $("#subForm").serializeJson();
+        var termJson = genTermJson();
+        if(termJson!=null){
+            console.log(termJson);
+            contractJson["termList"]=JSON.parse(termJson);
+        }
+        console.log(contractJson);
+        return JSON.stringify(contractJson);
+    }
+
+    function genTermJson(){
+        var costList = $("#termTableList tr");
+        if(costList.length==0){
+            return null;
+        }
+        var contentStr = "[";
+        for(var j=0; j<costList.length;j++){
+            contentStr+="{"
+            var idstr = $(costList[j]).attr("id");
+            var detail = $("tr[id="+idstr+"] .contentDetail");
+            for(var i=0; i<detail.length;i++){
+                contentStr+='"'
+                contentStr+=$(detail[i]).attr("subName");
+                contentStr+='"'
+                contentStr+=":";
+                contentStr+='"'
+                contentStr+=$(detail[i]).val();
+                contentStr+='"'
+                if(i!=detail.length-1){
+                    contentStr+=","
+                }
+            }
+            contentStr+="}"
+            if(j!=costList.length-1){
+                contentStr+=","
+            }
+        }
+        contentStr += "]";
+        return contentStr;
+    }
+</script>

+ 169 - 0
src/main/webapp/webpage/modules/workcontent/workContentCtrlpriceList.jsp

@@ -0,0 +1,169 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+
+<div class="form-group layui-row lw12">
+    <div class="layui-item layui-col-sm12">
+        <label class="layui-form-label"><span class="require-item">*</span>清单类型:</label>
+        <div class="layui-input-block">
+            <select id="inventoryType" subName="inventoryType" class="form-control layui-input required">
+                <option value=""></option>
+                <option value="01" <c:if test="${ctrlpricelist[0].inventoryType == '01'}">selected</c:if>>工程量清单</option>
+                <option value="02" <c:if test="${ctrlpricelist[0].inventoryType == '02'}">selected</c:if>>工程量清单计价</option>
+            </select>
+        </div>
+    </div>
+</div>
+<form id="subForm"  action="#" onsubmit="return false;" method="post" class="form-horizontal">
+    <div class="layui-item nav-btns" style="padding-left:0px;">
+        <a class="nav-btn nav-btn-add" onclick="addRow('#ctrlpriceList',ctrlpriceIdx,ctrlpriceTpl)" title="新增"><i class="fa fa-plus"></i> 新增</a>
+
+        <table:importExcelCost url="${ctx}/workcontent/workContentCtrlprice/import"></table:importExcelCost><!-- 导入按钮 -->
+    </div>
+
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-bordered table-condensed can-edit">
+		<thead>
+			<tr>
+				<th class="hide"></th>
+				<th>编号</th>
+				<th>工程费用名称</th>
+				<th>金额</th>
+				<th>安全文明施工费</th>
+				<th>规费</th>
+				<th>暂估价</th>
+				<th>节点类型</th>
+                <th>备注</th>
+				<th width="120">操作</th>
+			</tr>
+		</thead>
+		<tbody id="ctrlpriceList">
+		</tbody>
+	</table>
+
+        <script type="text/template" id="ctrlpriceTpl">//<!--
+        <tr id="ctrlpriceList{{idx}}">
+            <td class="hide">
+                <input id="ctrlpriceList{{idx}}_id" subName="id" type="hidden" value="{{row.id}}" class="contentDetail"/>
+                <input id="ctrlpriceList{{idx}}_delFlag" subName="delFlag" type="hidden" value="0" class="contentDetail"/>
+            </td>
+            <td>
+                <input id="ctrlpriceList{{idx}}_ctrlNum" subName="ctrlNum" value="{{row.ctrlNum}}" type="text" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="ctrlpriceList{{idx}}_costsubName" subName="costName" value="{{row.costName}}" type="text" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="ctrlpriceList{{idx}}_sum" subName="sum" type="text" value="{{row.sum}}" onchange="formatNum(this);" class="form-control number contentDetail money"/>
+            </td>
+            <td>
+                <input id="ctrlpriceList{{idx}}_constructionCost" subName="constructionCost" type="text" value="{{row.constructionCost}}" onchange="formatNum(this);" class="form-control number contentDetail money"/>
+            </td>
+            <td>
+                <input id="ctrlpriceList{{idx}}_fees" subName="fees" type="text" value="{{row.fees}}" onchange="formatNum(this);" class="form-control number contentDetail money"/>
+            </td>
+            <td>
+                <input id="ctrlpriceList{{idx}}_estimate" subName="estimate" type="text" value="{{row.estimate}}" onchange="formatNum(this);" class="form-control number contentDetail money"/>
+            </td>
+            <td>
+             <select style="width:80px;" id="ctrlpriceList{{idx}}_nodeTypes" subName="nodeTypes" class="form-control contentDetail">
+			 <option value =""></option>
+             <c:if test="${ not empty nodeList}">
+				<c:forEach items="${nodeList}" var="nodeType" varStatus="index">
+				<option value="${nodeType.value}">${nodeType.label}</option>
+				</c:forEach>
+			</c:if>
+			</select>
+            </td>
+            <td>
+                <input id="ctrlpriceList{{idx}}_remarks" subName="remarks" type="text"  value="{{row.remarks}}" class="form-control contentDetail"/>
+            </td>
+            <td class="text-center op-td">
+                        <a href="#" onclick="delRow(this, '#ctrlpriceList{{idx}}')"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
+            </td>
+        </tr>//-->
+        </script>
+        <script type="text/javascript">
+            var ctrlpriceIdx = 0, ctrlpriceTpl = $("#ctrlpriceTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+            $(function(){
+                    var data = ${fns:toJson(ctrlpricelist)};
+                    if(data!=null) {
+                        for (var i = 0; i < data.length; i++) {
+                            addRow('#ctrlpriceList', ctrlpriceIdx, ctrlpriceTpl, data[i]);
+                        }
+                    }
+                $(":input.money").change();
+            });
+
+            function addRow(list, idx, tpl, row){
+                bornTemplete(list, idx, tpl, row, idx);
+                ctrlpriceIdx +=1;
+            }
+
+            function bornTemplete(list, idx, tpl, row, idx1){
+                var idx1 = $("#ctrlpriceList tr").length +1;
+                $(list).append(Mustache.render(tpl, {
+                    idx: idx, delBtn: true, row: row,
+                    order:idx1 + 1, idx1:idx1
+                }));
+                $(list+idx).find("select").each(function(){
+                    $(this).val($(this).attr("data-value"));
+                });
+                $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                    var ss = $(this).attr("data-value").split(',');
+                    for (var i=0; i<ss.length; i++){
+                        if($(this).val() == ss[i]){
+                            $(this).attr("checked","checked");
+                        }
+                    }
+                });
+            }
+            function delRow(obj, prefix,idx){
+                var id = $(prefix+"_id");
+                var delFlag = $(prefix+"_delFlag");
+                if(id.val()==null||id.val()==''){
+                    $(obj).parent().parent().remove();
+                }else {
+                    delFlag.val("1");
+                    $(obj).parent().parent().hide();
+                }
+            }
+
+            function genRow(data) {
+                for (var i = 0; i < data.length; i++) {
+                    addRow('#ctrlpriceList',ctrlpriceIdx,ctrlpriceTpl,data[i]);
+                    $("#ctrlpriceList"+i+"_nodeTypes").val(data[i].nodeTypes);
+                }
+                $(":input.money").change();
+            }
+
+            function genDetailStr(){
+                var inventoryType = $("#inventoryType").val();
+                var costList = $("#ctrlpriceList tr");
+                var contentStr = "[";
+                for(var j=0; j<costList.length;j++){
+                    contentStr+="{"
+                    var idstr = $(costList[j]).attr("id");
+                    var detail = $("tr[id="+idstr+"] .contentDetail");
+                    for(var i=0; i<detail.length;i++){
+                        contentStr+="'"
+                        contentStr+=$(detail[i]).attr("subName");
+                        contentStr+="'"
+                        contentStr+=":";
+                        contentStr+="'"
+                        contentStr+=$(detail[i]).val();
+                        contentStr+="'"
+                        contentStr+=","
+                    }
+                    contentStr+="'inventoryType':'";
+                    contentStr+=inventoryType;
+                    contentStr+="'"
+                    contentStr+="}"
+                    if(j!=costList.length-1){
+                        contentStr+=","
+                    }
+                }
+                contentStr += "]";
+                return contentStr;
+            }
+        </script>
+</form>

+ 62 - 0
src/main/webapp/webpage/modules/workcontent/workContentCtrlpriceListView.jsp

@@ -0,0 +1,62 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+
+<div class="form-group layui-row lw12">
+    <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 layui-input"
+                   <c:if test="${ctrlpricelist[0].inventoryType == '01'}">value="工程量清单"</c:if>
+                   <c:if test="${ctrlpricelist[0].inventoryType == '02'}">value="工程量清单计价"</c:if>
+                   />
+        </div>
+    </div>
+</div>
+<form id="subForm"  action="#" onsubmit="return false;" method="post" class="form-horizontal">
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-bordered table-condensed">
+		<thead>
+			<tr>
+				<th>编号</th>
+				<th>工程费用名称</th>
+				<th>金额</th>
+				<th>安全文明施工费</th>
+				<th>规费</th>
+				<th>暂估价</th>
+				<th>节点类型</th>
+                <th>备注</th>
+			</tr>
+		</thead>
+		<tbody id="ctrlpriceList">
+            <c:forEach items="${ctrlpricelist}" var="row">
+                <tr>
+                    <td  style='text-align:center;'>
+                        ${row.ctrlNum}
+                    </td>
+                    <td style='text-align:center;'>
+                        ${row.costName}
+                    </td>
+                    <td style='text-align:center;'>
+                        <fmt:formatNumber value="${row.sum}" pattern="#,##0.00#"/>
+                    </td>
+                    <td style='text-align:center;'>
+                        <fmt:formatNumber value="${row.constructionCost}" pattern="#,##0.00#"/>
+                    </td>
+                    <td style='text-align:center;'>
+                        <fmt:formatNumber value="${row.fees}" pattern="#,##0.00#"/>
+                    </td>
+                    <td style='text-align:center;'>
+                        <fmt:formatNumber value="${row.estimate}" pattern="#,##0.00#"/>
+                    </td>
+                    <td style='text-align:center;'>
+                            ${fns:getMainDictLabel(row.nodeTypes, 'node_type', '')}
+                           <%-- ${row.nodeTypes}--%>
+                    </td>
+                    <td style='text-align:center;'>
+                            ${row.remarks}
+                    </td>
+                </tr>
+            </c:forEach>
+		</tbody>
+	</table>
+</form>

+ 75 - 0
src/main/webapp/webpage/modules/workcontent/workContentDocument.jsp

@@ -0,0 +1,75 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<form:form id="subForm" modelAttribute="workContentDocument" action="${ctx}/workcontent/workContentDocument/save" method="post" class="form-horizontal">
+    <form:hidden path="id"/>
+    <div class="form-group layui-row lw12">
+        <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" htmlEscape="false"  class="form-control layui-input required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>资料状态:</label>
+            <div class="layui-input-block">
+                <form:select path="status" class="form-control layui-input required">
+                    <form:option value="" label=""/>
+                    <form:options items="${fns:getDictList('content_document_status')}" 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="manager" htmlEscape="false" class="form-control layui-input"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>资料格式:</label>
+            <div class="layui-input-block">
+                <form:select path="style" class="form-control layui-input required">
+                    <form:option value="" label=""/>
+                    <form:options items="${fns:getDictList('content_document_style')}" 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:select path="isElec" class="form-control layui-input">
+                    <form:option value="" label=""/>
+                    <form:options items="${fns:getDictList('yes_no')}" 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:select path="docType" class="form-control layui-input required">
+                    <form:option value="" label=""/>
+                    <form:options items="${fns:getDictList('project_document_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                </form:select>
+            </div>
+        </div>
+    </div>
+</form:form>
+<script type="text/javascript">
+    var validateForm;
+    $(document).ready(function() {
+        validateForm = $("#subForm").validate({
+            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 genDetailStr(){
+        return JSON.stringify($("#subForm").serializeJson());
+    }
+</script>

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

@@ -0,0 +1,63 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<form:form id="subForm" modelAttribute="workContentDocument" action="${ctx}/workcontent/workContentDocument/save" method="post" class="form-horizontal">
+    <form:hidden path="id"/>
+    <div class="form-group layui-row lw12">
+        <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" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>资料状态:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getDictLabel(workContentDocument.status,'content_document_status','')}"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label">资料保管人:</label>
+            <div class="layui-input-block">
+                <form:input path="manager" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>资料格式:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getDictLabel(workContentDocument.style,'content_document_style','')}"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label">是否电子化:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getDictLabel(workContentDocument.isElec,'yes_no','')}"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>资料类别:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getDictLabel(workContentDocument.docType, 'project_document_type', '')}"/>
+            </div>
+        </div>
+    </div>
+</form:form>
+<script type="text/javascript">
+    var validateForm;
+    $(document).ready(function() {
+        validateForm = $("#subForm").validate({
+            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 genDetailStr(){
+        return JSON.stringify($("#subForm").serializeJson());
+    }
+</script>

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

@@ -0,0 +1,49 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<form:form id="subForm" modelAttribute="workContentFundplan" action="#" method="post" class="form-horizontal">
+    <form:hidden path="id"/>
+    <div class="form-group layui-row lw12">
+        <div class="layui-item layui-col-sm12">
+            <label class="layui-form-label"><span class="require-item">*</span>月度:</label>
+            <div class="layui-input-block">
+                <input id="month" name="month" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                       value="${workContentFundplan.month}"/>
+            </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="3"    class="form-control layui-area"/>
+            </div>
+        </div>
+    </div>
+</form:form>
+<script type="text/javascript">
+    var validateForm;
+    $(document).ready(function() {
+        validateForm = $("#subForm").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: '#month', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+            format:'yyyy-MM'
+        });
+    });
+    function genDetailStr(){
+        return JSON.stringify($("#subForm").serializeJson());
+    }
+</script>

+ 48 - 0
src/main/webapp/webpage/modules/workcontent/workContentFundplanView.jsp

@@ -0,0 +1,48 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<form:form id="subForm" modelAttribute="workContentFundplan" action="#" method="post" class="form-horizontal">
+    <form:hidden path="id"/>
+    <div class="form-group layui-row lw12">
+        <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 layui-input" value="${workContentFundplan.month}"/>
+            </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="3" readonly="true"  class="form-control layui-area"/>
+            </div>
+        </div>
+    </div>
+</form:form>
+<script type="text/javascript">
+    var validateForm;
+    $(document).ready(function() {
+        validateForm = $("#subForm").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: '#month', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+            format:'yyyy-MM'
+        });
+    });
+    function genDetailStr(){
+        return JSON.stringify($("#subForm").serializeJson());
+    }
+</script>

+ 245 - 0
src/main/webapp/webpage/modules/workcontent/workContentInvestmentCostList.jsp

@@ -0,0 +1,245 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<script type="text/javascript">
+    function formatNumMoney(obj,index) {
+        var val = $(obj).val();
+        var buildindCost=$("#investmentCostList"+index+"_buildindCost").val();
+        var equipmentCost=$("#investmentCostList"+index+"_equipmentCost").val();
+        var installationCost=$("#investmentCostList"+index+"_installationCost").val();
+        var otherExpenses=$("#investmentCostList"+index+"_otherExpenses").val();
+        var count=$("#investmentCostList"+index+"_count").val();
+        if(buildindCost==undefined||!isNumber(buildindCost)||buildindCost==''){
+            buildindCost=0;
+        }
+        if(equipmentCost==undefined||!isNumber(equipmentCost)||equipmentCost==''){
+            equipmentCost=0;
+        }
+        if(installationCost==undefined||!isNumber(installationCost)||installationCost==''){
+            installationCost=0;
+        }
+        if(otherExpenses==undefined||!isNumber(otherExpenses)||otherExpenses==''){
+            otherExpenses=0;
+        }
+        var total=(parseFloat(buildindCost) + parseFloat(equipmentCost)+parseFloat(installationCost) + parseFloat(otherExpenses)).toFixed(2);
+        if(count!=undefined&&isNumber(count)&&count!=''&&count!=0){
+            $("#investmentCostList"+index+"_target").val((total/count).toFixed(2));
+        }
+        if(count==0){
+            $("#investmentCostList"+index+"_target").val(0);
+		}
+        $("#investmentCostList"+index+"_totalCost").val(total);
+
+        if(!isNumber(val))return;
+
+        /*  var money = parseFloat((val + "").replace(/[^\d\.-]/g, "")).toFixed(2) + "";
+          var l = money.split(".")[0].split("").reverse(),
+              r = money.split(".")[1];
+          t = "";
+          for(i = 0; i < l.length; i ++ )
+          {
+              t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
+          }
+          $(obj).val(t.split("").reverse().join("") + "." + r);*/
+    }
+</script>
+<form id="subForm"  action="#" onsubmit="return false;" method="post" class="form-horizontal">
+    <div class="layui-item nav-btns" style="padding-left:0px;">
+        <a class="nav-btn nav-btn-add" onclick="addRowCost('#investmentCostList',investmentCostIdx,investmentCostTpl)" title="新增"><i class="fa fa-plus"></i> 新增</a>
+        <table:importExcelCost url="${ctx}/workcontentinvestmentcost/workContentInvestmentCost/import"></table:importExcelCost><!-- 导入按钮 -->
+    </div>
+
+	<table id="contentTable" class="table table-bordered table-condensed can-edit">
+		<thead>
+			<tr>
+                <th class="hide"></th>
+				<th>编号</th>
+				<th>工程费用名称</th>
+				<th>建筑工程费</th>
+				<th>设备购置费</th>
+				<th>安装工程费</th>
+				<th>其他费用</th>
+				<th>合计(万元)</th>
+				<th>数量</th>
+				<th>单位</th>
+				<th>指标</th>
+				<th>费用类型</th>
+				<th>节点类型</th>
+                <th>备注</th>
+				<th width="60">操作</th>
+			</tr>
+		</thead>
+		<tbody id="investmentCostList">
+		</tbody>
+	</table>
+
+	<script type="text/template" id="investmentCostTpl">//<!--
+        <tr id="investmentCostList{{idx}}">
+            <td class="hide">
+                <input id="investmentCostList{{idx}}_id" subName="id" class="contentDetail" type="hidden" value="{{row.id}}"/>
+                <input id="investmentCostList{{idx}}_delFlag" subName="delFlag" class="contentDetail" type="hidden" value="0"/>
+                <input id="investmentCostList{{idx}}_costType" subName="costType" class="contentDetail"  type="hidden" value="{{row.costType}}"/>
+            </td>
+            <td>
+                <input id="investmentCostList{{idx}}_costNum" subName="costNum"  value="{{row.costNum}}" type="text" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="investmentCostList{{idx}}_costName" subName="costName" value="{{row.costName}}" type="text" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="investmentCostList{{idx}}_buildindCost" subName="buildindCost" type="text" value="{{row.buildindCost}}" onchange="formatNumMoney(this,{{idx}});" class="form-control number contentDetail money"/>
+            </td>
+            <td>
+                <input id="investmentCostList{{idx}}_equipmentCost" subName="equipmentCost" type="text" value="{{row.equipmentCost}}" onchange="formatNumMoney(this,{{idx}});" class="form-control number contentDetail money"/>
+            </td>
+            <td>
+                <input id="investmentCostList{{idx}}_installationCost" subName="installationCost" type="text" value="{{row.installationCost}}" onchange="formatNumMoney(this,{{idx}});" class="form-control number contentDetail money"/>
+            </td>
+            <td>
+                <input id="investmentCostList{{idx}}_otherExpenses" subName="otherExpenses" type="text" value="{{row.otherExpenses}}" onchange="formatNumMoney(this,{{idx}});" class="form-control number contentDetail money"/>
+            </td>
+            <td>
+                <input id="investmentCostList{{idx}}_totalCost" subName="totalCost" type="text"  value="{{row.totalCost}}" readonly="true" class="form-control number  contentDetail money"/>
+            </td>
+            <td>
+                <input id="investmentCostList{{idx}}_count" subName="count" type="text" onchange="formatNumMoney(this,{{idx}});"  value="{{row.count}}" class="form-control number contentDetail"/>
+            </td>
+            <td>
+            <select style="width:80px;" id="investmentCostList{{idx}}_unit" subName="unit" class="form-control contentDetail">
+			 <option value =""></option>
+             <c:if test="${ not empty unitList}">
+				<c:forEach items="${unitList}" var="nodeType" varStatus="index">
+				<option value="${nodeType.value}">${nodeType.label}</option>
+				</c:forEach>
+			</c:if>
+			</select>
+               <%-- <input id="investmentCostList{{idx}}_unit" subName="unit" type="text"  value="{{row.unit}}" class="form-control  contentDetail"/>--%>
+            </td>
+            <td>
+                <input id="investmentCostList{{idx}}_target" subName="target" type="text"  value="{{row.target}}" readonly="true" class="form-control  contentDetail"/>
+            </td>
+            <td>
+            <select style="width:80px;" id="investmentCostList{{idx}}_expenseType" subName="expenseType" class="form-control contentDetail">
+			 <option value =""></option>
+             <c:if test="${ not empty costList}">
+				<c:forEach items="${costList}" var="nodeType" varStatus="index">
+				<option value="${nodeType.value}">${nodeType.label}</option>
+				</c:forEach>
+			</c:if>
+			</select>
+                <%--<input id="investmentCostList{{idx}}_expenseType" subName="expenseType" type="text"  value="{{row.expenseType}}" class="form-control  contentDetail"/>--%>
+            </td>
+            <td>
+            <select style="width:80px;" id="investmentCostList{{idx}}_nodeTypes" subName="nodeTypes"  class="form-control contentDetail">
+			 <option value =""></option>
+             <c:if test="${ not empty nodeList}">
+				<c:forEach items="${nodeList}" var="nodeType" varStatus="index">
+				<option value="${nodeType.value}" >${nodeType.label}</option>
+				</c:forEach>
+			</c:if>
+			</select>
+                <%--<input id="investmentCostList{{idx}}_nodeTypes" subName="nodeTypes" type="text"  value="{{row.nodeTypes}}" class="form-control  contentDetail"/>--%>
+            </td>
+            <td>
+                <input id="investmentCostList{{idx}}_remarks" subName="remarks" type="text"  value="{{row.remarks}}" class="form-control  contentDetail"/>
+            </td>
+            <td class="text-center op-td">
+                        <a href="#" onclick="delRow(this, '#investmentCostList{{idx}}')"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
+            </td>
+        </tr>//-->
+    </script>
+        <script type="text/javascript">
+            var investmentCostIdx = 0, investmentCostTpl = $("#investmentCostTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+            var validateForm2;
+            $(function(){
+                validateForm2 = $("#subForm").validate({
+                    errorContainer: "#messageBox",
+                    errorPlacement: function(error, element) {
+                        $("#messageBox").text("输入有误,请先更正。");
+                        if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                            error.appendTo(element.parent().parent());
+                        } else {
+                            error.insertAfter(element);
+                        }
+                    }
+                });
+
+                var data = ${fns:toJson(investmentCostList)};
+                for (var i=0; i<data.length; i++){
+                    addRowCost('#investmentCostList', investmentCostIdx, investmentCostTpl,data[i]);
+                    $("#investmentCostList"+i+"_nodeTypes").val(data[i].nodeTypes);
+                    $("#investmentCostList"+i+"_expenseType").val(data[i].expenseType);
+                    $("#investmentCostList"+i+"_unit").val(data[i].unit);
+                }
+                $(":input.money").change();
+            })
+
+            function addRowCost(list, idx, tpl, row){
+                bornTemplete(list, idx, tpl, row, idx);
+                investmentCostIdx +=1;
+            }
+
+            function bornTemplete(list, idx, tpl, row, idx1){
+                var idx1 = $("#investmentCostList tr").length +1;
+                $(list).append(Mustache.render(tpl, {
+                    idx: idx, delBtn: true, row: row,
+                    order:idx1 + 1, idx1:idx1
+                }));
+                $(list+idx).find("select").each(function(){
+                    $(this).val($(this).attr("data-value"));
+                });
+                $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                    var ss = $(this).attr("data-value").split(',');
+                    for (var i=0; i<ss.length; i++){
+                        if($(this).val() == ss[i]){
+                            $(this).attr("checked","checked");
+                        }
+                    }
+                });
+            }
+            function delRow(obj, prefix,idx){
+                var id = $(prefix+"_id");
+                var delFlag = $(prefix+"_delFlag");
+                if(id.val()==null||id.val()==''){
+                    $(obj).parent().parent().remove();
+                }else {
+                    delFlag.val("1");
+                    $(obj).parent().parent().hide();
+                }
+            }
+
+            function genRow(data) {
+                for (var i = 0; i < data.length; i++) {
+                    addRowCost('#investmentCostList',investmentCostIdx,investmentCostTpl,data[i]);
+                }
+                $(":input.money").change();
+            }
+
+            function genDetailStr(){
+                var costList = $("#investmentCostList tr");
+                var contentStr = "[";
+                for(var j=0; j<costList.length;j++){
+                    contentStr+="{"
+                    var idstr = $(costList[j]).attr("id");
+                    var detail = $("tr[id="+idstr+"] .contentDetail");
+                    for(var i=0; i<detail.length;i++){
+                        contentStr+="'"
+                        contentStr+=$(detail[i]).attr("subName");
+                        contentStr+="'"
+                        contentStr+=":";
+                        contentStr+="'"
+                        contentStr+=$(detail[i]).val();
+                        contentStr+="'"
+                        if(i!=detail.length-1){
+                            contentStr+=","
+                        }
+                    }
+                    contentStr+="}"
+                    if(j!=costList.length-1){
+                        contentStr+=","
+                    }
+                }
+                contentStr += "]";
+                return contentStr;
+            }
+        </script>
+</form>

+ 71 - 0
src/main/webapp/webpage/modules/workcontent/workContentInvestmentCostListView.jsp

@@ -0,0 +1,71 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<form id="subForm"  action="#" onsubmit="return false;" method="post" class="form-horizontal">
+	<table id="contentTable" class="table table-bordered table-condensed">
+		<thead>
+			<tr>
+				<th>编号</th>
+				<th>工程费用名称</th>
+				<th>建筑工程费</th>
+				<th>设备购置费</th>
+				<th>安装工程费</th>
+				<th>其他费用</th>
+				<th>合计(万元)</th>
+				<th>数量</th>
+				<th>单位</th>
+				<th>指标</th>
+				<th>费用类型</th>
+				<th>节点类型</th>
+                <th>备注</th>
+			</tr>
+		</thead>
+		<tbody id="investmentCostList">
+        <c:forEach items="${investmentCostList}" var="row">
+            <tr>
+                <td style='text-align:center;'>
+                    ${row.costNum}
+                </td>
+                <td style='text-align:center;'>
+                    ${row.costName}
+                </td>
+                <td style='text-align:center;'>
+                    <fmt:formatNumber value="${row.buildindCost}" pattern="#,##0.00#"/>
+                </td>
+                <td style='text-align:center;'>
+                    <fmt:formatNumber value="${row.equipmentCost}" pattern="#,##0.00#"/>
+                </td>
+                <td style='text-align:center;'>
+                    <fmt:formatNumber value="${row.installationCost}" pattern="#,##0.00#"/>
+                </td>
+                <td style='text-align:center;'>
+                    <fmt:formatNumber value="${row.otherExpenses}" pattern="#,##0.00#"/>
+                </td>
+                <td style='text-align:center;'>
+                    <fmt:formatNumber value="${row.totalCost}" pattern="#,##0.00#"/>
+                </td>
+                <td style='text-align:center;'>
+                        ${row.count}
+                </td>
+                <td style='text-align:center;'>
+                        ${fns:getMainDictLabel(row.unit, 'unit_type', '')}
+                       <%-- ${row.unit}--%>
+                </td>
+                <td style='text-align:center;'>
+                        ${row.target}
+                </td>
+                <td style='text-align:center;'>
+                        ${fns:getMainDictLabel(row.expenseType, 'cost_type', '')}
+                       <%-- ${row.expenseType}--%>
+                </td>
+                <td style='text-align:center;'>
+                        ${fns:getMainDictLabel(row.nodeTypes, 'node_type', '')}
+                                <%-- ${row.nodeTypes}--%>
+                </td>
+                <td style='text-align:center;'>
+                        ${row.remarks}
+                </td>
+            </tr>
+        </c:forEach>
+		</tbody>
+	</table>
+</form>

+ 108 - 0
src/main/webapp/webpage/modules/workcontent/workContentPriceadjustForm.jsp

@@ -0,0 +1,108 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<form:form id="subForm" modelAttribute="workContentPriceadjust" action="#" method="post" class="form-horizontal">
+    <form:hidden path="id"/>
+    <div class="form-group layui-row lw12">
+        <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" htmlEscape="false" class="form-control layui-input required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>价差调整类型:</label>
+            <div class="layui-input-block">
+                <form:select path="type" class="form-control layui-input required">
+                    <form:option value="" label=""/>
+                    <form:options items="${fns:getMainDictList('content_price_adjust_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                </form:select>
+            </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="content" htmlEscape="false" rows="3"  maxlength="255"  class="form-control "/>
+            </div>
+        </div>
+    </div>
+    <div class="form-group layui-row 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 name="reviewAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentPriceadjust.reviewAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);"  class="form-control layui-input required number"/>
+            </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 name="setAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentPriceadjust.setAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);"  class="form-control layui-input required number"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>送审调整日期:</label>
+            <div class="layui-input-block">
+                <input id="reviewDate" name="reviewDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                       value="<fmt:formatDate value="${workContentPriceadjust.reviewDate}" pattern="yyyy-MM-dd"/>"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>审定调整日期:</label>
+            <div class="layui-input-block">
+                <input id="setDate" name="setDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                       value="<fmt:formatDate value="${workContentPriceadjust.setDate}" pattern="yyyy-MM-dd"/>"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>计入台账:</label>
+            <div class="layui-input-block">
+                <form:select path="inAccount" class="form-control layui-input required">
+                    <form:option value="" label=""/>
+                    <form:options items="${fns:getDictList('yes_no')}" 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:select path="inPayment" class="form-control layui-input required">
+                    <form:option value="" label=""/>
+                    <form:options items="${fns:getDictList('yes_no')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                </form:select>
+            </div>
+        </div>
+    </div>
+</form:form>
+<script type="text/javascript">
+    var validateForm;
+    $(document).ready(function() {
+        validateForm = $("#subForm").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: '#reviewDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#setDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+    });
+    function genDetailStr(){
+        var stringify = JSON.stringify($("#subForm").serializeJson());
+        return stringify;
+    }
+</script>

+ 97 - 0
src/main/webapp/webpage/modules/workcontent/workContentPriceadjustFormView.jsp

@@ -0,0 +1,97 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<form:form id="subForm" modelAttribute="workContentPriceadjust" action="#" method="post" class="form-horizontal">
+    <form:hidden path="id"/>
+    <div class="form-group layui-row lw12">
+        <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" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>价差调整类型:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getMainDictLabel(workContentPriceadjust.type, 'content_price_adjust_type','' )}"/>
+            </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="content" htmlEscape="false" rows="3" readonly="true" class="form-control "/>
+            </div>
+        </div>
+    </div>
+    <div class="form-group layui-row 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 name="reviewAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentPriceadjust.reviewAmt}" pattern="#,##0.00#"/>" readonly="true"  class="form-control layui-input required number"/>
+            </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 name="setAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentPriceadjust.setAmt}" pattern="#,##0.00#"/>" readonly="true"  class="form-control layui-input required number"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>送审调整日期:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${workContentPriceadjust.reviewDate}" pattern="yyyy-MM-dd"/>"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>审定调整日期:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${workContentPriceadjust.setDate}" pattern="yyyy-MM-dd"/>"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>计入台账:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getDictLabel(workContentPriceadjust.inAccount,'yes_no' ,'' )}"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>计入支付:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getDictLabel(workContentPriceadjust.inPayment,'yes_no' ,'' )}"/>
+            </div>
+        </div>
+    </div>
+</form:form>
+<script type="text/javascript">
+    var validateForm;
+    $(document).ready(function() {
+        validateForm = $("#subForm").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: '#reviewDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#setDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+    });
+    function genDetailStr(){
+        var stringify = JSON.stringify($("#subForm").serializeJson());
+        return stringify;
+    }
+</script>

+ 128 - 0
src/main/webapp/webpage/modules/workcontent/workContentPricemanageForm.jsp

@@ -0,0 +1,128 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+
+<form:form id="subForm" modelAttribute="workContentPricemanage" action="#" method="post" class="form-horizontal">
+    <form:hidden path="id"/>
+    <div class="form-group layui-row lw12">
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>合同名称:</label>
+            <div class="layui-input-block with-icon">
+                <sys:gridselectProjcontent url="${ctx}/projectcontentinfo/projectContentData/selectcontent" id="contId" name="contract.id"  value="${workContentPricemanage.contract.id}"  title="选择合同" labelName="contract.name"
+                                           labelValue="${workContentPricemanage.contract.name}" cssClass="form-control layui-input required" projectId="${workContentPricemanage.projectId}" type="41" fieldLabels="" fieldKeys="" searchLabel="${fns:urlEncode('合约名称')}" searchKey="" ></sys:gridselectProjcontent>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label">认价类型:</label>
+            <div class="layui-input-block">
+                <form:select path="priceType" class="form-control layui-input">
+                    <form:option value="" label=""/>
+                    <form:options items="${fns:getMainDictList('content_recognize_type')}" 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">
+                <input id="priceDate" name="priceDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                       value="<fmt:formatDate value="${workContentPricemanage.priceDate}" pattern="yyyy-MM-dd"/>"/>
+            </div>
+        </div>
+    </div>
+    <div class="form-group layui-row lw12">
+        <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="scope" htmlEscape="false" rows="3"  maxlength="255"  class="form-control "/>--%>
+            <%--</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="explain" htmlEscape="false" rows="3"  maxlength="255"  class="form-control "/>--%>
+            <%--</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="3"  maxlength="255"  class="form-control "/>--%>
+            <%--</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 name="reviewAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentPricemanage.reviewAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);" class="form-control layui-input required number"/>
+            </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 name="setAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentPricemanage.setAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);" class="form-control layui-input required number"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>报送日期:</label>
+            <div class="layui-input-block">
+                <input id="subDate" name="subDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                       value="<fmt:formatDate value="${workContentPricemanage.subDate}" pattern="yyyy-MM-dd"/>"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>审定日期:</label>
+            <div class="layui-input-block">
+                <input id="setDate" name="setDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                       value="<fmt:formatDate value="${workContentPricemanage.setDate}" pattern="yyyy-MM-dd"/>"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>计入台账:</label>
+            <div class="layui-input-block">
+                <form:select path="inAccount" class="form-control layui-input required">
+                    <form:option value="" label=""/>
+                    <form:options items="${fns:getDictList('yes_no')}" 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:select path="inPayment" class="form-control layui-input required">
+                    <form:option value="" label=""/>
+                    <form:options items="${fns:getDictList('yes_no')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                </form:select>
+            </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="3"    class="form-control layui-area"/>
+            </div>
+        </div>
+    </div>
+</form:form>
+<script type="text/javascript">
+    var validateForm;
+    $(document).ready(function() {
+        validateForm = $("#subForm").validate({
+            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: '#priceDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+    });
+
+    function genDetailStr(){
+        var stringify = JSON.stringify($("#subForm").serializeJson());
+        return stringify;
+    }
+</script>

+ 73 - 0
src/main/webapp/webpage/modules/workcontent/workContentPricemanageFormView.jsp

@@ -0,0 +1,73 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+
+<form:form id="subForm" modelAttribute="workContentPricemanage" action="#" method="post" class="form-horizontal">
+    <form:hidden path="id"/>
+    <div class="form-group layui-row lw12">
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>合同名称:</label>
+            <div class="layui-input-block with-icon">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workContentPricemanage.contract.name}"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label">认价类型:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getMainDictLabel(workContentPricemanage.priceType,'content_recognize_type','')}"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>认价时间:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${workContentPricemanage.priceDate}" pattern="yyyy-MM-dd"/>"/>
+            </div>
+        </div>
+    </div>
+    <div class="form-group layui-row lw12">
+        <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="scope" htmlEscape="false" rows="3" readonly="true" class="form-control "/>
+            </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="explain" htmlEscape="false" rows="3" readonly="true" class="form-control "/>
+            </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="3" readonly="true" class="form-control "/>
+            </div>
+        </div>
+    </div>
+</form:form>
+<script type="text/javascript">
+    var validateForm;
+    $(document).ready(function() {
+        validateForm = $("#subForm").validate({
+            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: '#priceDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+    });
+
+    function genDetailStr(){
+        var stringify = JSON.stringify($("#subForm").serializeJson());
+        return stringify;
+    }
+</script>

+ 150 - 0
src/main/webapp/webpage/modules/workcontent/workContentProjectpriceForm.jsp

@@ -0,0 +1,150 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+
+<form:form id="subForm" modelAttribute="workContentProjectprice" action="#" method="post" class="form-horizontal">
+    <form:hidden path="id"/>
+    <div class="form-group layui-row lw12">
+        <div class="layui-item layui-col-sm12">
+            <label class="layui-form-label"><span class="require-item">*</span>支付类型:</label>
+            <div class="layui-input-block">
+                <form:select path="ptype" class="form-control layui-input required">
+                    <form:option value="" label=""/>
+                    <form:options items="${fns:getMainDictList('content_pay_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                </form:select>
+            </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="abstracts" htmlEscape="false" rows="3" maxlength="255" class="form-control "/>
+            </div>
+        </div>
+    </div>
+    <div class="form-group layui-row 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 name="currentAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentProjectprice.currentAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);"  class="form-control layui-input required number"/>
+            </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 name="beforeAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentProjectprice.beforeAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);"  class="form-control layui-input required number"/>
+            </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 name="afterAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentProjectprice.afterAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);"  class="form-control layui-input required number"/>
+            </div>
+        </div>
+    </div>
+    <div class="form-group layui-row 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 name="reviewAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentProjectprice.reviewAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);"  class="form-control layui-input required number"/>
+            </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 name="beforeReviewAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentProjectprice.beforeReviewAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);"  class="form-control layui-input required number"/>
+            </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 name="afterReviewAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentProjectprice.afterReviewAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);"  class="form-control layui-input required number"/>
+            </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 name="stopAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentProjectprice.stopAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);"  class="form-control layui-input required number"/>
+            </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 name="unpayAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentProjectprice.unpayAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);"  class="form-control layui-input required number"/>
+            </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:select path="inAccount" class="form-control layui-input required">
+                    <form:option value="" label=""/>
+                    <form:options items="${fns:getDictList('yes_no')}" 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">
+                <input id="applyDate" name="applyDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                       value="<fmt:formatDate value="${workContentProjectprice.applyDate}" pattern="yyyy-MM-dd"/>"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>审定支付时间:</label>
+            <div class="layui-input-block">
+                <input id="setDate" name="setDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                       value="<fmt:formatDate value="${workContentProjectprice.setDate}" pattern="yyyy-MM-dd"/>"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>创建人:</label>
+            <div class="layui-input-block">
+                <form:input path="createBy.name" htmlEscape="false"  readonly="true"  class="form-control layui-input required"/>
+                <form:hidden path="createBy.id" htmlEscape="false"  readonly="true"  class="form-control  required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>创建时间:</label>
+            <div class="layui-input-block">
+                <input id="createDate" name="projectContentData.createDate" type="text" readonly="true" maxlength="20" class="form-control required"
+                       value="<fmt:formatDate value="${workContentProjectprice.createDate}" pattern="yyyy-MM-dd"/>"/>
+            </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="3" maxlength="255" class="form-control "/>
+            </div>
+        </div>
+    </div>
+</form:form>
+<script type="text/javascript">
+    var validateForm;
+    $(document).ready(function() {
+        validateForm = $("#subForm").validate({
+            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: '#applyDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#setDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+    });
+
+    function genDetailStr(){
+        var stringify = JSON.stringify($("#subForm").serializeJson());
+        return stringify;
+    }
+</script>

+ 144 - 0
src/main/webapp/webpage/modules/workcontent/workContentProjectpriceFormView.jsp

@@ -0,0 +1,144 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+
+<form:form id="subForm" modelAttribute="workContentProjectprice" action="#" method="post" class="form-horizontal">
+    <form:hidden path="id"/>
+    <div class="form-group layui-row lw12">
+        <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 layui-input" value="${fns:getMainDictLabel(workContentProjectprice.ptype,'content_pay_type','')}"/>
+            </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="abstracts" htmlEscape="false" readonly="true" rows="3" class="form-control "/>
+            </div>
+        </div>
+    </div>
+    <div class="form-group layui-row 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 name="currentAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentProjectprice.currentAmt}" pattern="#,##0.00#"/>" readonly="true"  class="form-control layui-input required number"/>
+            </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 name="beforeAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentProjectprice.beforeAmt}" pattern="#,##0.00#"/>" readonly="true"  class="form-control layui-input required number"/>
+            </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 name="afterAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentProjectprice.afterAmt}" pattern="#,##0.00#"/>" readonly="true"  class="form-control layui-input required number"/>
+            </div>
+        </div>
+    </div>
+    <div class="form-group layui-row 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 name="reviewAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentProjectprice.reviewAmt}" pattern="#,##0.00#"/>" readonly="true"  class="form-control layui-input required number"/>
+            </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 name="beforeReviewAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentProjectprice.beforeReviewAmt}" pattern="#,##0.00#"/>" readonly="true"  class="form-control layui-input required number"/>
+            </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 name="afterReviewAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentProjectprice.afterReviewAmt}" pattern="#,##0.00#"/>" readonly="true"  class="form-control layui-input required number"/>
+            </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 name="stopAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentProjectprice.stopAmt}" pattern="#,##0.00#"/>" readonly="true"  class="form-control layui-input required number"/>
+            </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 name="unpayAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentProjectprice.unpayAmt}" pattern="#,##0.00#"/>" readonly="true"  class="form-control layui-input required number"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>计入台账:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getDictLabel(workContentProjectprice.inAccount,'yes_no' ,'' )}"/>
+            </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" type="text" maxlength="20" class="form-control layui-input" readonly="true"
+                       value="<fmt:formatDate value="${workContentProjectprice.applyDate}" pattern="yyyy-MM-dd"/>"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>审定支付时间:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" type="text" maxlength="20" class="form-control layui-input" readonly="true"
+                       value="<fmt:formatDate value="${workContentProjectprice.setDate}" pattern="yyyy-MM-dd"/>"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>创建人:</label>
+            <div class="layui-input-block">
+                <form:input path="createBy.name" htmlEscape="false"  readonly="true"  class="form-control layui-input required"/>
+                <form:hidden path="createBy.id" htmlEscape="false"  readonly="true"  class="form-control  required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>创建时间:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" type="text" readonly="true" maxlength="20" class="form-control layui-input required"
+                       value="<fmt:formatDate value="${workContentProjectprice.createDate}" pattern="yyyy-MM-dd"/>"/>
+            </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="3" readonly="true" class="form-control "/>
+            </div>
+        </div>
+    </div>
+</form:form>
+<script type="text/javascript">
+    var validateForm;
+    $(document).ready(function() {
+        validateForm = $("#subForm").validate({
+            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: '#applyDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#setDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+    });
+
+    function genDetailStr(){
+        var stringify = JSON.stringify($("#subForm").serializeJson());
+        return stringify;
+    }
+</script>

+ 132 - 0
src/main/webapp/webpage/modules/workcontent/workContentTypeForm.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">
+		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);
+					}
+				}
+			});
+            changeContentDetail("${workContentType.typeId}");
+		});
+
+        function changeContentDetail(val) {
+            detailFlag=1;
+            switch (val){
+                case '13':
+                case '22':
+                case '25':
+                    $("#contentDetail").load("${ctx}/workcontentinvestmentcost/workContentInvestmentCost/list");
+                    break;
+                case '31':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentContprogram/form");
+                    break;
+                case '32':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentBiddingplan/form");
+                    break;
+                case '34':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentCtrlprice/form");
+                    break;
+                case '41':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentContractinfo/form");
+                    break;
+                case '42':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentPricemanage/form");
+                    break;
+                case '43':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentAltermanage/form");
+                    break;
+                case '46':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentClaim/form");
+                    break;
+                case '47':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentFundplan/form");
+                    break;
+                case '48':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentProjectprice/form");
+                    break;
+                case '49':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentPriceadjust/form");
+                    break;
+                case '52':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentBudget/form");
+                    break;
+                case '53':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentDocument/form");
+                    break;
+                default:
+                    detailFlag=0;
+                    $("#contentDetail").html("");
+                    break;
+            }
+
+        }
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container view-form">
+		<form:form id="inputForm" modelAttribute="workContentType" action="${ctx}/workcontent/workContentType/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+			<div class="form-group layui-row first lw9">
+				<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">
+						<form:input path="typeId" htmlEscape="false"  readonly="true"  class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label">内容类型名称:</label>
+					<div class="layui-input-block">
+						<form:input path="typeName" htmlEscape="false"   readonly="true"  class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label">父级ID:</label>
+					<div class="layui-input-block">
+						<form:input path="parentId" htmlEscape="false"    readonly="true" 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="remarks" htmlEscape="false" rows="4" maxlength="255" readonly="true" style="resize:none;"   class="form-control "/>
+					</div>
+				</div>
+			</div>
+		</form:form>
+			<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>内容样式</h2></div>
+				<div style="margin: 0 16px;">
+        			<div id="contentDetail"></div>
+				</div>
+			</div>
+	</div>
+</div>
+</body>
+</html>

+ 131 - 0
src/main/webapp/webpage/modules/workcontent/workContentTypeList.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"/>
+    <%@include file="/webpage/include/treetable.jsp" %>
+	<script type="text/javascript">
+		$(document).ready(function() {
+            $("#treeTable").treeTable({expandLevel : 5},{ expandable: true });
+		});
+	</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="workContentType" action="${ctx}/workcontent/workContentType/" 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 lw9">
+					<div class="layui-item query athird">
+						<label class="layui-form-label">内容类型编号:</label>
+						<div class="layui-input-block">
+							<form:input path="typeId" htmlEscape="false" class=" form-control layui-input"></form:input>
+						</div>
+					</div>
+					<div class="layui-item query athird">
+						<label class="layui-form-label">内容类型名称:</label>
+						<div class="layui-input-block">
+							<form:input path="typeName" htmlEscape="false" class=" form-control layui-input"></form:input>
+						</div>
+					</div>
+					<div class="layui-item athird">
+						<div class="input-group">
+							<button id="searchReset" style="margin-right: 0px;" 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="workcontent:workContentType:add">
+						<table:addRow url="${ctx}/workcontent/workContentType/form" title="工作内容类型"></table:addRow><!-- 增加按钮 -->
+					</shiro:hasPermission>
+					<shiro:hasPermission name="workcontent:workContentType:del">
+						<table:delRow url="${ctx}/workcontent/workContentType/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+					</shiro:hasPermission>
+					<shiro:hasPermission name="workcontent:workContentType:import">
+						<table:importExcel url="${ctx}/workcontent/workContentType/import"></table:importExcel><!-- 导入按钮 -->
+					</shiro:hasPermission>
+					<shiro:hasPermission name="workcontent:workContentType:export">
+						<table:exportExcel url="${ctx}/workcontent/workContentType/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="treeTable" class="table table-bordered table-hover list-table">
+					<thead>
+						<tr>
+							<th width="50%">内容类型名称</th>
+							<th width="17%">内容类型编号</th>
+							<th width="17%">状态</th>
+							<th width="16^">操作</th>
+						</tr>
+					</thead>
+					<tbody>
+					<c:forEach items="${list}" var="workContentType">
+						<tr  id="${workContentType.typeId}" pId="${workContentType.parentId}">
+							<td><a  href="#" onclick="openDialogView('查看工作内容类型', '${ctx}/workcontent/workContentType/form?id=${workContentType.id}','95%', '95%')">
+								${workContentType.typeName}</a>
+							</td>
+							<td style="text-align: center">
+								${workContentType.typeId}
+							</td>
+							<td style="text-align: center">
+								<c:if test="${workContentType.delFlag eq '0'}">启用</c:if>
+								<c:if test="${workContentType.delFlag eq '1'}">禁用</c:if>
+							</td>
+							<td class="op-td text-center">
+								<div class="op-btn-box">
+									<shiro:hasPermission name="workcontent:workContentType:view">
+										<a href="#" onclick="openDialogView('查看工作内容类型', '${ctx}/workcontent/workContentType/form?id=${workContentType.id}','95%', '95%')" class="op-btn op-btn-view" ><i class="fa fa-search-plus"></i> 查看</a>
+									</shiro:hasPermission>
+									<shiro:hasPermission name="workcontent:workContentType:edit">
+										<c:if test="${workContentType.parentId != '0'}">
+											<c:if test="${workContentType.delFlag eq '0'}">
+												<a href="${ctx}/workcontent/workContentType/change?typeId=${workContentType.typeId}&delFlag=${workContentType.delFlag}" onclick="return confirmx('确认要删除该工作内容类型吗?', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 移除</a>
+											</c:if>
+											<c:if test="${workContentType.delFlag eq '1'}">
+												<a href="${ctx}/workcontent/workContentType/change?typeId=${workContentType.typeId}&delFlag=${workContentType.delFlag}" onclick="return confirmx('确认要恢复该工作内容类型吗?', this.href)"   class="op-btn op-btn-submit"><i class="fa fa-undo"></i> 恢复</a>
+											</c:if>
+
+										</c:if>
+									</shiro:hasPermission>
+								</div>
+							</td>
+						</tr>
+					</c:forEach>
+					</tbody>
+				</table>
+	
+		<!-- 分页代码 -->
+			</div>
+		</div>
+	</div>
+</div>
+
+</body>
+</html>

+ 125 - 0
src/main/webapp/webpage/modules/workcontent/workContentVisamanage.jsp

@@ -0,0 +1,125 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+
+		<form:form id="subForm" modelAttribute="workContentVisamanage" action="#" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+            <div class="form-group layui-row lw12">
+            <div class="layui-item layui-col-sm6">
+                <label class="layui-form-label"><span class="require-item">*</span>合同名称:</label>
+                <div class="layui-input-block with-icon">
+                    <sys:gridselectProjcontent url="${ctx}/projectcontentinfo/projectContentData/selectcontent" id="contId" name="contract.id"  value="${workContentVisamanage.contract.id}"  title="选择合同" labelName="contract.name"
+                                               labelValue="${workContentVisamanage.contract.name}" cssClass="form-control layui-input required" projectId="${workContentVisamanage.projectId}" type="41" fieldLabels="" fieldKeys="" searchLabel="${fns:urlEncode('合同名称')}" searchKey="" ></sys:gridselectProjcontent>
+                </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:select path="visaType" class="form-control layui-input required">
+                        <form:option value="" label=""/>
+                        <form:options items="${fns:getMainDictList('content_visa_type')}" 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">
+                    <input class="laydate-icondate form-control layui-input layer-date laydate-icon required" id="visaDate" name="visaDate" value="<fmt:formatDate value="${workContentVisamanage.visaDate}" pattern="yyyy-MM-dd"/>">
+                </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="visaCtnt" htmlEscape="false" rows="3"    class="form-control layui-area"/>
+                </div>
+            </div>
+        </div>
+
+        <div class="form-group layui-row 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 name="reviewAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentVisamanage.reviewAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);" class="form-control layui-input required number"/>
+                </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 name="setAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentVisamanage.setAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);" class="form-control layui-input required number"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6">
+                <label class="layui-form-label"><span class="require-item">*</span>报送日期:</label>
+                <div class="layui-input-block">
+                    <input id="subDate" name="subDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                           value="<fmt:formatDate value="${workContentVisamanage.subDate}" pattern="yyyy-MM-dd"/>"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6">
+                <label class="layui-form-label"><span class="require-item">*</span>审定日期:</label>
+                <div class="layui-input-block">
+                    <input id="setDate" name="setDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                           value="<fmt:formatDate value="${workContentVisamanage.setDate}" pattern="yyyy-MM-dd"/>"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6">
+                <label class="layui-form-label"><span class="require-item">*</span>计入台账:</label>
+                <div class="layui-input-block">
+                    <form:select path="inAccount" class="form-control layui-input required">
+                        <form:option value="" label=""/>
+                        <form:options items="${fns:getDictList('yes_no')}" 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:select path="inPayment" class="form-control layui-input required">
+                        <form:option value="" label=""/>
+                        <form:options items="${fns:getDictList('yes_no')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                    </form:select>
+                </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="3"    class="form-control layui-area"/>
+                </div>
+            </div>
+        </div>
+	</form:form>
+<script type="text/javascript">
+    var validateForm;
+    $(document).ready(function() {
+        validateForm = $("#subForm").validate({
+            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: '#visaDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#subDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#setDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+
+    });
+
+    function genDetailStr(){
+        var stringify = JSON.stringify($("#subForm").serializeJson());
+        return stringify;
+    }
+</script>

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


部分文件因文件數量過多而無法顯示