Enford 5 anos atrás
pai
commit
a940df1902
100 arquivos alterados com 26884 adições e 0 exclusões
  1. 202 0
      src/main/webapp/webpage/modules/workdailyroutine/workDailyRoutineDetailForm.jsp
  2. 149 0
      src/main/webapp/webpage/modules/workdailyroutine/workDailyRoutineDetailView.jsp
  3. 278 0
      src/main/webapp/webpage/modules/workdailyroutine/workDailyRoutineForm.jsp
  4. 222 0
      src/main/webapp/webpage/modules/workdailyroutine/workDailyRoutineList.jsp
  5. 149 0
      src/main/webapp/webpage/modules/workdailyroutine/workDailyRoutineView.jsp
  6. 218 0
      src/main/webapp/webpage/modules/workdevicerecord/workDeviceXjRecordForm.jsp
  7. 88 0
      src/main/webapp/webpage/modules/workdevicerecord/workDeviceXjRecordFormView.jsp
  8. 130 0
      src/main/webapp/webpage/modules/workdevicerecord/workDeviceXjRecordList.jsp
  9. 140 0
      src/main/webapp/webpage/modules/workeffect/workEffectExcel.jsp
  10. 225 0
      src/main/webapp/webpage/modules/workeffect/workEffectForm.jsp
  11. 288 0
      src/main/webapp/webpage/modules/workeffect/workEffectList.jsp
  12. 225 0
      src/main/webapp/webpage/modules/workeffect/workEffectView.jsp
  13. 85 0
      src/main/webapp/webpage/modules/workeffectdetail/workEffectDetailForm.jsp
  14. 146 0
      src/main/webapp/webpage/modules/workeffectdetail/workEffectDetailList.jsp
  15. 97 0
      src/main/webapp/webpage/modules/workengineeringprice/workEngineeringPriceForm.jsp
  16. 160 0
      src/main/webapp/webpage/modules/workengineeringprice/workEngineeringPriceList.jsp
  17. 145 0
      src/main/webapp/webpage/modules/workengineeringproject/recordHistoricList.jsp
  18. 203 0
      src/main/webapp/webpage/modules/workengineeringproject/recordTodoList.jsp
  19. 774 0
      src/main/webapp/webpage/modules/workengineeringproject/workClientContractionView.jsp
  20. 385 0
      src/main/webapp/webpage/modules/workengineeringproject/workEngineeringProjectAllocation.jsp
  21. 157 0
      src/main/webapp/webpage/modules/workengineeringproject/workEngineeringProjectAudit.jsp
  22. 463 0
      src/main/webapp/webpage/modules/workengineeringproject/workEngineeringProjectForm.jsp
  23. 141 0
      src/main/webapp/webpage/modules/workengineeringproject/workEngineeringProjectHistoricList.jsp
  24. 383 0
      src/main/webapp/webpage/modules/workengineeringproject/workEngineeringProjectList.jsp
  25. 22 0
      src/main/webapp/webpage/modules/workengineeringproject/workEngineeringProjectTask.jsp
  26. 220 0
      src/main/webapp/webpage/modules/workengineeringproject/workEngineeringProjectTodoList.jsp
  27. 325 0
      src/main/webapp/webpage/modules/workengineeringproject/workEngineeringProjectView.jsp
  28. 365 0
      src/main/webapp/webpage/modules/workengineeringproject/workEngineeringRecordAudit.jsp
  29. 600 0
      src/main/webapp/webpage/modules/workengineeringproject/workEngineeringRecordForm.jsp
  30. 230 0
      src/main/webapp/webpage/modules/workengineeringproject/workEngineeringRecordList.jsp
  31. 578 0
      src/main/webapp/webpage/modules/workengineeringproject/workEngineeringRecordView.jsp
  32. 457 0
      src/main/webapp/webpage/modules/workengineeringproject/workProjectPlanAdd.jsp
  33. 58 0
      src/main/webapp/webpage/modules/workengineeringproject/workProjectPlanAddRow.jsp
  34. 518 0
      src/main/webapp/webpage/modules/workengineeringproject/workProjectPlanEdit.jsp
  35. 286 0
      src/main/webapp/webpage/modules/workengineeringproject/workProjectPlanList.jsp
  36. 379 0
      src/main/webapp/webpage/modules/workengineeringproject/workProjectPlanMaintain.jsp
  37. 15 0
      src/main/webapp/webpage/modules/workengineeringproject/workRecordTrack.jsp
  38. 69 0
      src/main/webapp/webpage/modules/workevaluationroom/workEvaluationRoomForm.jsp
  39. 157 0
      src/main/webapp/webpage/modules/workevaluationroom/workEvaluationRoomList.jsp
  40. 69 0
      src/main/webapp/webpage/modules/workevaluationroom/workEvaluationRoomView.jsp
  41. 111 0
      src/main/webapp/webpage/modules/workexample/workCaseIndex.jsp
  42. 110 0
      src/main/webapp/webpage/modules/workexample/workCaseViewIndex.jsp
  43. 1346 0
      src/main/webapp/webpage/modules/workexample/workExampleAudit.jsp
  44. 148 0
      src/main/webapp/webpage/modules/workexample/workExampleConsumption.jsp
  45. 148 0
      src/main/webapp/webpage/modules/workexample/workExampleEconomics.jsp
  46. 178 0
      src/main/webapp/webpage/modules/workexample/workExampleExcel.jsp
  47. 1506 0
      src/main/webapp/webpage/modules/workexample/workExampleForm.jsp
  48. 191 0
      src/main/webapp/webpage/modules/workexample/workExampleIndex.jsp
  49. 150 0
      src/main/webapp/webpage/modules/workexample/workExampleIndicesAdd.jsp
  50. 47 0
      src/main/webapp/webpage/modules/workexample/workExampleIndicesForm.jsp
  51. 135 0
      src/main/webapp/webpage/modules/workexample/workExampleIndicesList.jsp
  52. 117 0
      src/main/webapp/webpage/modules/workexample/workExampleIndicesSave.jsp
  53. 440 0
      src/main/webapp/webpage/modules/workexample/workExampleList.jsp
  54. 330 0
      src/main/webapp/webpage/modules/workexample/workExampleListView.jsp
  55. 412 0
      src/main/webapp/webpage/modules/workexample/workExampleLists.jsp
  56. 1498 0
      src/main/webapp/webpage/modules/workexample/workExampleModify.jsp
  57. 148 0
      src/main/webapp/webpage/modules/workexample/workExampleSingle.jsp
  58. 126 0
      src/main/webapp/webpage/modules/workexample/workExampleSituation.jsp
  59. 1275 0
      src/main/webapp/webpage/modules/workexample/workExampleView.jsp
  60. 148 0
      src/main/webapp/webpage/modules/workexample/workExampleWork.jsp
  61. 15 0
      src/main/webapp/webpage/modules/workexample/workTrack.jsp
  62. 87 0
      src/main/webapp/webpage/modules/workexampleimplog/workExampleImplogForm.jsp
  63. 250 0
      src/main/webapp/webpage/modules/workexampleimplog/workExampleImplogList.jsp
  64. 61 0
      src/main/webapp/webpage/modules/workexplore/workExploreForm.jsp
  65. 25 0
      src/main/webapp/webpage/modules/workexplore/workExploreFormView.jsp
  66. 122 0
      src/main/webapp/webpage/modules/workexplore/workExploreList.jsp
  67. 257 0
      src/main/webapp/webpage/modules/workfield/workFieldAudit.jsp
  68. 373 0
      src/main/webapp/webpage/modules/workfield/workFieldForm.jsp
  69. 326 0
      src/main/webapp/webpage/modules/workfield/workFieldList.jsp
  70. 369 0
      src/main/webapp/webpage/modules/workfield/workFieldModify.jsp
  71. 232 0
      src/main/webapp/webpage/modules/workfield/workFieldView.jsp
  72. 15 0
      src/main/webapp/webpage/modules/workfield/workTrack.jsp
  73. 180 0
      src/main/webapp/webpage/modules/workfullconstructsheet/workFullConstructsheetAudit.jsp
  74. 118 0
      src/main/webapp/webpage/modules/workfullconstructsheet/workFullConstructsheetAuditHistory.jsp
  75. 233 0
      src/main/webapp/webpage/modules/workfullconstructsheet/workFullConstructsheetAuditTodo.jsp
  76. 294 0
      src/main/webapp/webpage/modules/workfullconstructsheet/workFullConstructsheetForm.jsp
  77. 361 0
      src/main/webapp/webpage/modules/workfullconstructsheet/workFullConstructsheetList.jsp
  78. 15 0
      src/main/webapp/webpage/modules/workfullconstructsheet/workFullConstructsheetTask.jsp
  79. 196 0
      src/main/webapp/webpage/modules/workfullconstructsheet/workFullConstructsheetView.jsp
  80. 235 0
      src/main/webapp/webpage/modules/workfullconstructsheet/workfullmanageList.jsp
  81. 124 0
      src/main/webapp/webpage/modules/workfulldesignchange/workFullDesignchangeAudit.jsp
  82. 118 0
      src/main/webapp/webpage/modules/workfulldesignchange/workFullDesignchangeAuditHistory.jsp
  83. 233 0
      src/main/webapp/webpage/modules/workfulldesignchange/workFullDesignchangeAuditTodo.jsp
  84. 346 0
      src/main/webapp/webpage/modules/workfulldesignchange/workFullDesignchangeForm.jsp
  85. 351 0
      src/main/webapp/webpage/modules/workfulldesignchange/workFullDesignchangeList.jsp
  86. 15 0
      src/main/webapp/webpage/modules/workfulldesignchange/workFullDesignchangeTask.jsp
  87. 243 0
      src/main/webapp/webpage/modules/workfulldesignchange/workFullDesignchangeView.jsp
  88. 235 0
      src/main/webapp/webpage/modules/workfulldesignchange/workfullmanageList.jsp
  89. 158 0
      src/main/webapp/webpage/modules/workfullexecute/list4monitor.jsp
  90. 225 0
      src/main/webapp/webpage/modules/workfullexecute/workFullExecuteAudit.jsp
  91. 130 0
      src/main/webapp/webpage/modules/workfullexecute/workFullExecuteAuditHistory.jsp
  92. 231 0
      src/main/webapp/webpage/modules/workfullexecute/workFullExecuteAuditTodo.jsp
  93. 430 0
      src/main/webapp/webpage/modules/workfullexecute/workFullExecuteForm.jsp
  94. 383 0
      src/main/webapp/webpage/modules/workfullexecute/workFullExecuteList.jsp
  95. 15 0
      src/main/webapp/webpage/modules/workfullexecute/workFullExecuteTask.jsp
  96. 258 0
      src/main/webapp/webpage/modules/workfullexecute/workFullExecuteView.jsp
  97. 218 0
      src/main/webapp/webpage/modules/workfullexecute/workfullmanageList.jsp
  98. 805 0
      src/main/webapp/webpage/modules/workfullmanage/projectPre.jsp
  99. 237 0
      src/main/webapp/webpage/modules/workfullmanage/projectPreDetail.jsp
  100. 0 0
      src/main/webapp/webpage/modules/workfullmanage/projectPreList.jsp

+ 202 - 0
src/main/webapp/webpage/modules/workdailyroutine/workDailyRoutineDetailForm.jsp

@@ -0,0 +1,202 @@
+<%@ 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: '#updateDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+            });
+
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+        });
+
+        function insertTitle(tValue){
+            var list = "${workAdministrativeAtamp.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 = "102";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workIncomingMessage/"+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);}
+        }
+	</script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+		<form:form id="inputForm" modelAttribute="workDailyRoutineDetail" action="${ctx}/workdailyroutine/workDailyRoutine/saveDetail" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<form:hidden path="home"/>
+		<form:hidden path="workDailyRoutine.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">
+                        <input type="text" htmlEscape="false" readonly="true" value="${workDailyRoutineDetail.workDailyRoutine.name}" 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 type="text" htmlEscape="false" readonly="true" value="${workDailyRoutineDetail.workDailyRoutine.source}" class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">创建人:</label>
+                    <div class="layui-input-block">
+                        <input type="text" htmlEscape="false" readonly="true" value="${workDailyRoutineDetail.workDailyRoutine.createBy.name}" class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">所属部门:</label>
+                    <div class="layui-input-block">
+                        <input type="text" name="office.name" readonly="readonly" class="form-control layui-input"  value="${workDailyRoutineDetail.workDailyRoutine.office.topCompany}"/>
+                        <input type="hidden" name="office.id" readonly="readonly" class="form-control layui-input"  value="${workDailyRoutineDetail.workDailyRoutine.office.id}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">创建时间:</label>
+                    <div class="layui-input-block">
+                        <input type="text" htmlEscape="false" value="<fmt:formatDate value="${workDailyRoutineDetail.workDailyRoutine.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>" readonly="true" class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">事务状态:</label>
+                    <div class="layui-input-block">
+                        <input type="text" htmlEscape="false" readonly="true" value="${workDailyRoutineDetail.workDailyRoutine.status}" 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">
+                        <textarea htmlEscape="false" readonly="true" rows="3" class="form-control">${workDailyRoutineDetail.workDailyRoutine.remarks}</textarea>
+                    </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">
+                        <form:input path="operator.name" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                        <form:hidden path="operator.id" htmlEscape="false"    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">
+                        <form:input path="office.name" 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 id="updateDate" name="updateDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                               value="<fmt:formatDate value="${workDailyRoutineDetail.updateDate}" 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="status" 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"><span class="require-item">*</span>完成情况说明:</label>
+                    <div class="layui-input-block">
+                        <form:textarea path="remarks" htmlEscape="false" maxlength="255" rows="3" class="form-control required"/>
+                    </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="listAttachment" class="table table-bordered table-condensed no-bottom-margin details">
+                        <thead>
+                        <tr>
+                                <%-- <th>序号</th>--%>
+                            <th>文件预览</th>
+                            <th>上传人</th>
+                            <th>上传时间</th>
+                            <th width="150px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="file_attachment">
+                        <c:forEach items="${workDailyRoutineDetail.workDailyRoutine.workAttachments}" var = "workClientAttachment" varStatus="status">
+                            <tr>
+                                    <%-- <td>${status.index + 1}</td>--%>
+                                <c:choose>
+                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                        <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+                                    </c:when>
+                                    <c:otherwise>
+                                        <c:choose>
+                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+                                            </c:when>
+                                            <c:otherwise>
+                                                <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+                                            </c:otherwise>
+                                        </c:choose>
+                                    </c:otherwise>
+                                </c:choose>
+                                <td>${workClientAttachment.createBy.name}</td>
+                                <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                                <td class="op-td">
+                                    <div class="op-btn-box" >
+                                        <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>
+                                    </div>
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+	</form:form>
+    </div>
+</div>
+</body>
+</html>

+ 149 - 0
src/main/webapp/webpage/modules/workdailyroutine/workDailyRoutineDetailView.jsp

@@ -0,0 +1,149 @@
+<%@ 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">
+		<form:form id="inputForm" modelAttribute="workDailyRoutineDetail" action="${ctx}/workdailyroutine/workDailyRoutine/saveDetail" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<form:hidden path="home"/>
+		<form:hidden path="workDailyRoutine.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">
+                        <input type="text" htmlEscape="false" readonly="true" value="${workDailyRoutineDetail.workDailyRoutine.name}" 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 type="text" htmlEscape="false" readonly="true" value="${workDailyRoutineDetail.workDailyRoutine.source}" class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">创建人:</label>
+                    <div class="layui-input-block">
+                        <input type="text" htmlEscape="false" readonly="true" value="${workDailyRoutineDetail.workDailyRoutine.createBy.name}" class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">所属部门:</label>
+                    <div class="layui-input-block">
+                        <input type="text" name="office.name" readonly="readonly" class="form-control layui-input"  value="${workDailyRoutineDetail.workDailyRoutine.office.topCompany}"/>
+                        <input type="hidden" name="office.id" readonly="readonly" class="form-control layui-input"  value="${workDailyRoutineDetail.workDailyRoutine.office.id}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">创建时间:</label>
+                    <div class="layui-input-block">
+                        <input type="text" htmlEscape="false" value="<fmt:formatDate value="${workDailyRoutineDetail.workDailyRoutine.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>" readonly="true" class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">事务状态:</label>
+                    <div class="layui-input-block">
+                        <input type="text" htmlEscape="false" readonly="true" value="${workDailyRoutineDetail.workDailyRoutine.status}" 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">
+                        <textarea htmlEscape="false" readonly="true"  rows="3" class="form-control">${workDailyRoutineDetail.workDailyRoutine.remarks}</textarea>
+                    </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">
+                        <form:input path="operator.name" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                        <form:hidden path="operator.id" htmlEscape="false"    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">
+                        <form:input path="office.name" 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 id="updateDate" name="updateDate" type="text" maxlength="20" class="form-control layui-input" readonly="true"
+                               value="<fmt:formatDate value="${workDailyRoutineDetail.updateDate}" 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="status" 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"><span class="require-item">*</span>完成情况说明:</label>
+                    <div class="layui-input-block">
+                        <form:textarea path="remarks" htmlEscape="false" rows="3" readonly="true" 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" style="padding:0 16px;">
+                    <table id="listAttachment" class="table table-bordered table-condensed no-bottom-margin details">
+                        <thead>
+                        <tr>
+                                <%-- <th>序号</th>--%>
+                            <th>文件预览</th>
+                            <th>上传人</th>
+                            <th>上传时间</th>
+                            <th width="150px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="file_attachment">
+                        <c:forEach items="${workDailyRoutineDetail.workDailyRoutine.workAttachments}" var = "workClientAttachment" varStatus="status">
+                            <tr>
+                                    <%-- <td>${status.index + 1}</td>--%>
+                                <c:choose>
+                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                        <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+                                    </c:when>
+                                    <c:otherwise>
+                                        <c:choose>
+                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+                                            </c:when>
+                                            <c:otherwise>
+                                                <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+                                            </c:otherwise>
+                                        </c:choose>
+                                    </c:otherwise>
+                                </c:choose>
+                                <td>${workClientAttachment.createBy.name}</td>
+                                <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                                <td class="op-td">
+                                    <div class="op-btn-box" >
+                                        <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>
+                                    </div>
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+	</form:form>
+    </div>
+</div>
+</body>
+</html>

+ 278 - 0
src/main/webapp/webpage/modules/workdailyroutine/workDailyRoutineForm.jsp

@@ -0,0 +1,278 @@
+<%@ 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);
+					}
+				}
+			});
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+        });
+
+        function insertTitle(tValue){
+            var list = "${workDailyRoutine.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 = "102";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workIncomingMessage/"+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 changeUser(ids,names,parents) {
+            var split = ids.split(',');
+            var split2 = names.split(',');
+            var idArr = $("#termTableList tr .userId");
+            for(var i=0;i<split.length;i++){
+                var id = split[i];
+                if(hasInArr(id,idArr)){
+                    continue;
+                }
+                var obj = {'id':id,'name':split2[i],'oName':parents[i]};
+                addRowTerm('#termTableList',termIdx,termTpl,obj);
+            }
+        }
+        function hasInArr(id,idArr) {
+            for(var i=0;i<idArr.length;i++){
+                if(id==$(idArr[i]).val()){
+                    return true;
+                }
+            }
+            return false;
+        }
+        function getSelectUserIds() {
+            return "";
+        }
+	</script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+		<form:form id="inputForm" modelAttribute="workDailyRoutine" action="${ctx}/workdailyroutine/workDailyRoutine/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="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:input path="source" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">创建人:</label>
+                    <div class="layui-input-block">
+                        <form:input 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 class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">所属部门:</label>
+                    <div class="layui-input-block">
+                        <input type="text" name="office.name" readonly="readonly" class="form-control layui-input"  value="${workDailyRoutine.office.topCompany}"/>
+                        <input type="hidden" name="office.id" readonly="readonly" class="form-control layui-input"  value="${workDailyRoutine.office.id}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">创建时间:</label>
+                    <div class="layui-input-block">
+                        <input type="text" id="createDate" htmlEscape="false" value="<fmt:formatDate value="${workDailyRoutine.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>" readonly="true" 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="status" 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="3" 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">
+                    <sys:treeselectusers id="members" 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="termsTable" class="table table-bordered table-condensed details">
+                    <thead>
+                    <tr>
+                        <th class="hide"></th>
+                        <th>姓名</th>
+                        <th>部门</th>
+                        <th>完成状态</th>
+                        <th>完成日期</th>
+                        <th>完成情况说明</th>
+                        <th>操作</th>
+                    </tr>
+                    </thead>
+                    <tbody id="termTableList">
+                    </tbody>
+                </table>
+                <script type="text/template" id="termTpl">//<!--
+                    <tr id="detailList{{idx}}">
+                        <td class="hide">
+                            <input id="detailList{{idx}}_id" name="detailList[{{idx}}].operator.id" readonly="true" value="{{row.id}}" type="hidden" class="form-control userId"/>
+                        </td>
+                        <td>
+                            {{row.name}}
+                        </td>
+                        <td>
+                            {{row.oName}}
+                        </td>
+                        <td>
+                            未完成
+                        </td>
+                        <td>
+                        </td>
+                        <td>
+                        </td>
+                        <td class="text-center op-td">
+                                    <a href=javascript:void(0); onclick="delRow(this, '#detailList{{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,"");
+
+                    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){
+                        $(obj).parent().parent().remove();
+                    }
+                </script>
+            </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="${workDailyRoutine.workAttachments}" var = "workClientAttachment" varStatus="status">
+                            <tr>
+                                    <%-- <td>${status.index + 1}</td>--%>
+                                <c:choose>
+                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                        <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+                                    </c:when>
+                                    <c:otherwise>
+                                        <c:choose>
+                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+                                            </c:when>
+                                            <c:otherwise>
+                                                <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+                                            </c:otherwise>
+                                        </c:choose>
+                                    </c:otherwise>
+                                </c:choose>
+                                <td>${workClientAttachment.createBy.name}</td>
+                                <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                                <td class="op-td">
+                                    <div class="op-btn-box" >
+                                        <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>
+	</form:form>
+    </div>
+</div>
+</body>
+</html>

+ 222 - 0
src/main/webapp/webpage/modules/workdailyroutine/workDailyRoutineList.jsp

@@ -0,0 +1,222 @@
+<%@ 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>
+    <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: '#beginCreateDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            laydate.render({
+                elem: '#endCreateDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+        });
+	</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="workDailyRoutine" action="${ctx}/workdailyroutine/workDailyRoutine/" 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="createBy.name" 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 with-icon">
+                                <input id="beginCreateDate" name="beginCreateDate" type="text" readonly="readonly" maxlength="20" placeholder="开始时间" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+                                       value="<fmt:formatDate value="${workDailyRoutine.beginCreateDate}" pattern="yyyy-MM-dd"/>"/>
+                                </input>
+                                <span class="group-sep">-</span>
+                                <input id="endCreateDate" name="endCreateDate" type="text" readonly="readonly" maxlength="20" placeholder="结束时间" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+                                       value="<fmt:formatDate value="${workDailyRoutine.endCreateDate}" 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:input path="source" htmlEscape="false" maxlength="10"  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="status" class=" form-control simple-select">
+                                    <form:option value="" label=""/>
+                                    <form:option value="未完成" label="未完成"/>
+                                    <form:option value="已完成" label="已完成"/>
+                                    <form:option value="已关闭" 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="sOr" class=" form-control simple-select">
+                                    <form:option value="" label=""/>
+                                    <form:option value="发出" label="发出"/>
+                                    <form:option value="收到" label="收到"/>
+                                </form:select>
+                            </div>
+                        </div>
+                    </div>
+            </form:form>
+        </div>
+	    </div>
+	
+	<!-- 工具栏 -->
+        <div class="full-width fl">
+            <div class="contentShadow layui-form contentDetails">
+                <div class="nav-btns">
+                    <shiro:hasPermission name="workdailyroutine:workDailyRoutine:add">
+                        <table:addRow url="${ctx}/workdailyroutine/workDailyRoutine/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>
+    <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: '事务名称',minWidth:200,templet:function(d){
+                            var xml = '';
+                            if(d.sOr != undefined && d.sOr == "收到"){
+                            xml = "<a class=\"attention-info\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看事务', '${ctx}/workdailyroutine/workDailyRoutine/detailView?id="+d.id+"','95%','95%')\">" +
+                                "<span title=" + d.name + ">" + d.name + "</span></a>";
+                            }else {
+                                xml = "<a class=\"attention-info\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看事务', '${ctx}/workdailyroutine/workDailyRoutine/view?id="+d.id+"','95%','95%')\">" +
+                                    "<span title=" + d.name + ">" + d.name + "</span></a>";
+                            }
+                            return xml;
+                        }}
+                    ,{field:'source',align:'center', title: '事务来源',minWidth:120}
+                    ,{field:'createBy',align:'center', title: '创建人',width:120}
+                    ,{field:'createDate', align:'center',sort:true,title: '创建时间',minWidth:150}
+                    ,{field:'status',align:'center', title: '事务状态', width:100}
+                    ,{field:'sOr',align:'center', title: '收到/发出', width:100}
+                    ,{field:'op',align:'center',title:"操作",width:130,templet:function(d){
+                            ////对操作进行初始化
+                            var xml = "";
+                            if(d.canedit != undefined && d.canedit == "1" && d.sOr != '收到'){
+                                xml +="<a href=\"${ctx}/workdailyroutine/workDailyRoutine/close?id=" + d.id+"\" onclick=\"return confirmx('确认要关闭该日常事务吗?', this.href)\"   class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 关闭</a>";
+                            }
+                            if(d.sOr != undefined && d.sOr == "收到" && d.status =='未完成' && d.subStatus =='未完成'){
+                                xml+="<a href=\"#\" onclick=\"openDialog('日常事务', '${ctx}/workdailyroutine/workDailyRoutine/detailForm?id=" + d.id + "','95%', '95%','','提交,关闭')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 办理</a>";
+                            }
+                            return xml;
+                        }}
+                ]]
+                ,data: [
+                    <c:if test="${ not empty page.list}">
+                    <c:forEach items="${page.list}" var="workDailyRoutine" varStatus="index">
+                    <c:if test="${index.index != 0}">,</c:if>
+                    {
+                        "index":"${index.index+1}"
+                        ,"id":"${workDailyRoutine.id}"
+                        ,"name":"<c:out value="${workDailyRoutine.name}" escapeXml="true"/>"
+                        ,'source':"${workDailyRoutine.source}"
+                        ,'createBy':"${workDailyRoutine.createBy.name}"
+                        ,"createDate":"<fmt:formatDate value="${workDailyRoutine.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"
+                        ,"sOr":"${workDailyRoutine.sOr}"
+                        ,"status":"${workDailyRoutine.status}"
+                        ,"subStatus":"${workDailyRoutine.subStatus}"
+                        <c:if test="${flag == '1' or fns:getUser().id == workDailyRoutine.createBy.id}">
+                        <shiro:hasPermission name="workdailyroutine:workDailyRoutine:edit">
+                        ,"canedit":<c:choose><c:when test="${workDailyRoutine.status eq '未完成'}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                        </shiro:hasPermission>
+                        </c:if>
+                    }
+                    </c:forEach>
+                    </c:if>
+                ]
+            });
+
+        })
+        resizeListTable(130);/*消除由于有竖向滚动条造成table出现横向滚动条*/
+        $("a").on("click",addLinkVisied);
+    </script>
+    <script>
+        resizeListWindow1();
+        $(window).resize(function(){
+            resizeListWindow1();
+        });
+    </script>
+</div>
+</body>
+</html>

+ 149 - 0
src/main/webapp/webpage/modules/workdailyroutine/workDailyRoutineView.jsp

@@ -0,0 +1,149 @@
+<%@ 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="workDailyRoutine" action="${ctx}/workdailyroutine/workDailyRoutine/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="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">
+                        <form:input path="source" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">创建人:</label>
+                    <div class="layui-input-block">
+                        <form:input path="createBy.name" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">所属部门:</label>
+                    <div class="layui-input-block">
+                        <input type="text" name="office.name" readonly="readonly" class="form-control layui-input"  value="${workDailyRoutine.office.topCompany}"/>
+                        <input type="hidden" name="office.id" readonly="readonly" class="form-control layui-input"  value="${workDailyRoutine.office.id}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">创建时间:</label>
+                    <div class="layui-input-block">
+                        <input type="text" id="createDate" htmlEscape="false" value="<fmt:formatDate value="${workDailyRoutine.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>" readonly="true" class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">事务状态:</label>
+                    <div class="layui-input-block">
+                        <form:input path="status" 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="remarks" 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>
+                <table id="termsTable" class="table table-bordered table-condensed details">
+                    <thead>
+                    <tr>
+                        <th>姓名</th>
+                        <th>部门</th>
+                        <th>完成状态</th>
+                        <th>完成日期</th>
+                        <th>完成情况说明</th>
+                    </tr>
+                    </thead>
+                    <tbody id="termTableList">
+                        <c:forEach items="${workDailyRoutine.detailList}" var="routineDetail" varStatus="idx">
+                        <tr>
+                            <td style="text-align:center;">
+                                    ${routineDetail.operator.name}
+                            </td>
+                            <td style="text-align:center;">
+                                    ${routineDetail.office.name}
+                            </td>
+                            <td style="text-align:center;">
+                                    ${routineDetail.status}
+                            </td>
+                            <td style="text-align:center;">
+                                <fmt:formatDate value="${routineDetail.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+                            </td>
+                            <td style="text-align:center;" title="${routineDetail.remarks}">
+                                    ${routineDetail.remarks}
+                            </td>
+                        </tr>
+                    </c:forEach>
+                    </tbody>
+                </table>
+            </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="listAttachment" class="table table-bordered table-condensed no-bottom-margin details">
+                        <thead>
+                        <tr>
+                                <%-- <th>序号</th>--%>
+                            <th>文件预览</th>
+                            <th>上传人</th>
+                            <th>上传时间</th>
+                            <th width="150px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="file_attachment">
+                        <c:forEach items="${workDailyRoutine.workAttachments}" var = "workClientAttachment" varStatus="status">
+                            <tr>
+                                    <%-- <td>${status.index + 1}</td>--%>
+                                <c:choose>
+                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                        <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+                                    </c:when>
+                                    <c:otherwise>
+                                        <c:choose>
+                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+                                            </c:when>
+                                            <c:otherwise>
+                                                <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+                                            </c:otherwise>
+                                        </c:choose>
+                                    </c:otherwise>
+                                </c:choose>
+                                <td>${workClientAttachment.createBy.name}</td>
+                                <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                                <td class="op-td">
+                                    <div class="op-btn-box" >
+                                        <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>
+                                    </div>
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+	</form:form>
+    </div>
+</div>
+</body>
+</html>

+ 218 - 0
src/main/webapp/webpage/modules/workdevicerecord/workDeviceXjRecordForm.jsp

@@ -0,0 +1,218 @@
+<%@ 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;
+        var count = 0;
+		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 = $("#workDeviceRecords tr").length;
+            if(list == '#workDeviceRecords'){
+                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 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;
+            }
+
+        }
+        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="workDeviceXjRecord" action="${ctx}/workdevicerecord/workDeviceXjRecord/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('#workDeviceRecords', workDeviceRecordsRowIdx, workDeviceRecordsTpl);workDeviceRecordsRowIdx = workDeviceRecordsRowIdx + 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><font color="red">*</font>单价(元)</th>
+				<th>备注</th>
+				<th width="150px">操作</th>
+			</tr>
+			</thead>
+			<tbody id="workDeviceRecords">
+			<c:if test="${not empty workDeviceXjRecord.workDeviceRecordList}">
+				<c:forEach items="${workDeviceXjRecord.workDeviceRecordList}" var="workDeviceRecord" varStatus="index">
+					<tr id="workDeviceRecordList${index.index}">
+						<td class="hide">
+							<input id="workDeviceRecordList${index.index}_id" name="workDeviceRecordList[${index.index}].id" type="hidden" value="${workDeviceRecord.id}"/>
+							<input id="workDeviceRecordList${index.index}_delFlag" name="workDeviceRecordList[${index.index}].delFlag" type="hidden" value="0"/>
+						</td>
+						<td>
+							<input id="workDeviceRecordList${index.index}_deviceName"  name="workDeviceRecordList[${index.index}].deviceName" type="text" value="${workDeviceRecord.deviceName}"    class="form-control required"/>
+						</td>
+
+						<td>
+							<input id="workDeviceRecordList${index.index}_deviceKind" name="workDeviceRecordList[${index.index}].deviceKind" type="text" value="${workDeviceRecord.deviceKind}"    class="form-control required"/>
+						</td>
+						<td>
+							<input id="workDeviceRecordList${index.index}_deviceUnit" name="workDeviceRecordList[${index.index}].deviceUnit" type="text" value="${workDeviceRecord.deviceUnit}"    class="form-control required"/>
+						</td>
+						<td>
+							<input id="workDeviceRecordList${index.index}_deviceCreator" name="workDeviceRecordList[${index.index}].deviceCreator" type="text" value="${workDeviceRecord.deviceCreator}"    class="form-control required"/>
+						</td>
+						<td>
+							<input id="workDeviceRecordList${index.index}_devicePhone" name="workDeviceRecordList[${index.index}].devicePhone" type="text" value="${workDeviceRecord.devicePhone}"    class="form-control isTel required"/>
+						</td>
+						<td>
+							<input id="workDeviceRecordList${index.index}_devicePrice" name="workDeviceRecordList[${index.index}].devicePrice" type="text" value="${workDeviceRecord.devicePrice}"    class="form-control number required"/>
+						</td>
+						<td>
+							<input id="workDeviceRecordList${index.index}_remarks" name="workDeviceRecordList[${index.index}].remarks" type="text" value="${workDeviceRecord.remarks}"    class="form-control required"/>
+						</td>
+						<td class="text-center" style="width:80px;">
+							<button class="btn btn-danger btn-xs" onclick="delRow(this, '#workDeviceRecordList${index.index}','#workDeviceRecords')" title="删除"><i class="fa fa-trash"></i> 删除</button>
+						</td>
+					</tr>
+				</c:forEach>
+			</c:if>
+			</tbody>
+		</table>
+		<script type="text/template" id="workDeviceRecordsTpl">//<!--
+			<tr id="workDeviceRecordList{{idx}}">
+				<td class="hide">
+					<input id="workDeviceRecordList{{idx}}_id" name="workDeviceRecordList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+					<input id="workDeviceRecordList{{idx}}_delFlag" name="workDeviceRecordList[{{idx}}].delFlag" type="hidden" value="0"/>
+				</td>
+				<td>
+					<input id="workDeviceRecordList{{idx}}_deviceName"  name="workDeviceRecordList[{{idx}}].deviceName" type="text" value="{{row.deviceName}}"    class="form-control required"/>
+				</td>
+				<td>
+					<input id="workDeviceRecordList{{idx}}_deviceKind"  name="workDeviceRecordList[{{idx}}].deviceKind" type="text" value="{{row.deviceKind}}"    class="form-control required"/>
+				</td>
+				<td>
+					<input id="workDeviceRecordList{{idx}}_deviceUnit" name="workDeviceRecordList[{{idx}}].deviceUnit" type="text" value="{{row.deviceUnit}}"    class="form-control required"/>
+				</td>
+				<td>
+					<input id="workDeviceRecordList{{idx}}_deviceCreator" name="workDeviceRecordList[{{idx}}].deviceCreator" type="text" value="{{row.deviceCreator}}"    class="form-control required"/>
+				</td>
+				<td>
+					<input id="workDeviceRecordList{{idx}}_devicePhone" name="workDeviceRecordList[{{idx}}].devicePhone" type="text" value="{{row.devicePhone}}"    class="form-control isTel required"/>
+				</td>
+				<td>
+					<input id="workDeviceRecordList{{idx}}_devicePrice" name="workDeviceRecordList[{{idx}}].devicePrice" type="text" value="{{row.devicePrice}}"    class="form-control number required"/>
+				</td>
+				<td>
+					<input id="workDeviceRecordList{{idx}}_remarks" name="workDeviceRecordList[{{idx}}].remarks" type="text" value="{{row.remarks}}"    class="form-control required"/>
+				</td>
+
+				<td class="text-center" style="width:80px;">
+					{{#delBtn}}<button class="btn btn-danger btn-xs" onclick="delRow(this, '#workDeviceRecordList{{idx}}','#workDeviceRecords')" title="删除"><i class="fa fa-trash"></i> 删除</button>{{/delBtn}}
+				</td>
+			</tr>//-->
+		</script>
+		<script type="text/javascript">
+			var workDeviceRecordsRowIdx = 0, workDeviceRecordsTpl = $("#workDeviceRecordsTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+			if($("#id").val()){
+                workDeviceRecordsRowIdx = ${fn:length(workDeviceXjRecord.workDeviceRecordList)};
+			}
+		</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 style="color: red">*</font>询价时间:</label></td>
+					<td class="width-35">
+						<input id="askTime" name="askTime"  class="form-control layer-date laydate-icon required" style="min-width:100%;" onclick="laydate({istime: false,format: 'YYYY-MM-DD'})"
+							value="<fmt:formatDate value="${workDeviceXjRecord.askTime}" pattern="yyyy-MM-dd" />"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font style="color: red">*</font>询价人员:</label></td>
+					<td class="width-35">
+						<sys:treeselect id="askUser" name="askUser.id" value="${workDeviceXjRecord.askUser.id}" labelName="askUser.name" labelValue="${workDeviceXjRecord.askUser.name}"
+										title="用户" url="/sys/office/treeData?type=3" cssClass="form-control required" allowClear="true" notAllowSelectParent="true"/>
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 88 - 0
src/main/webapp/webpage/modules/workdevicerecord/workDeviceXjRecordFormView.jsp

@@ -0,0 +1,88 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>设备询价记录管理</title>
+    <meta name="decorator" content="default"/>
+</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 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><font color="red">*</font>单价(元)</th>
+                        <th>备注</th>
+                    </tr>
+                    </thead>
+                    <tbody>
+                    <c:if test="${not empty workDeviceXjRecord.workDeviceRecordList}">
+                        <c:forEach items="${workDeviceXjRecord.workDeviceRecordList}" var="workDeviceRecord"
+                                   varStatus="index">
+                            <tr id="workDeviceRecordList${index.index}">
+                                <td class="hide">
+                                        ${workDeviceRecord.id}
+                                </td>
+                                <td>
+                                        ${workDeviceRecord.deviceName}
+                                </td>
+
+                                <td>
+                                        ${workDeviceRecord.deviceKind}
+                                </td>
+                                <td>
+                                        ${workDeviceRecord.deviceUnit}
+                                </td>
+                                <td>
+                                        ${workDeviceRecord.deviceCreator}
+                                </td>
+                                <td>
+                                        ${workDeviceRecord.devicePhone}
+                                </td>
+                                <td>
+                                        ${workDeviceRecord.devicePrice}
+                                </td>
+                                <td>
+                                        ${workDeviceRecord.remarks}
+                                </td>
+                            </tr>
+                        </c:forEach>
+                    </c:if>
+                    </tbody>
+                </table>
+                <div class="form-group layui-row first">
+                    <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="askTime" name="workDeviceXjRecord.askTime" readonly="true" maxlength="20"
+                                   class="laydate-icondate form-control layer-date required layui-input laydate-icon"
+                                   value="<fmt:formatDate value="${workDeviceXjRecord.askTime}" 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 with-icon">
+                            <sys:treeselect id="askUser" name="workDeviceXjRecord.askUser.id" disabled="disabled"
+                                            value="${projectControlTable.workDeviceXjRecord.askUser.id}"
+                                            labelName="workDeviceXjRecord.askUser.name"
+                                            labelValue="${workDeviceXjRecord.askUser.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>

+ 130 - 0
src/main/webapp/webpage/modules/workdevicerecord/workDeviceXjRecordList.jsp

@@ -0,0 +1,130 @@
+<%@ 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="workDeviceXjRecord" action="${ctx}/workdevicerecord/workDeviceXjRecord/" 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="workdevicerecord:workDeviceXjRecord:add">
+				<table:addRow url="${ctx}/workdevicerecord/workDeviceXjRecord/form" title="设备询价记录"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workdevicerecord:workDeviceXjRecord:edit">
+			    <table:editRow url="${ctx}/workdevicerecord/workDeviceXjRecord/form" title="设备询价记录" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workdevicerecord:workDeviceXjRecord:del">
+				<table:delRow url="${ctx}/workdevicerecord/workDeviceXjRecord/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workdevicerecord:workDeviceXjRecord:import">
+				<table:importExcel url="${ctx}/workdevicerecord/workDeviceXjRecord/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workdevicerecord:workDeviceXjRecord:export">
+	       		<table:exportExcel url="${ctx}/workdevicerecord/workDeviceXjRecord/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 askTime">询价时间</th>
+				<th  class="sort-column askUser.name">询价人员</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="workDeviceXjRecord">
+			<tr>
+				<td> <input type="checkbox" id="${workDeviceXjRecord.id}" class="i-checks"></td>
+				<td><a  href="#" onclick="openDialogView('查看设备询价记录', '${ctx}/workdevicerecord/workDeviceXjRecord/form?id=${workDeviceXjRecord.id}','800px', '500px')">
+					${workDeviceXjRecord.remarks}
+				</a></td>
+				<td>
+					<fmt:formatDate value="${workDeviceXjRecord.askTime}" pattern="yyyy-MM-dd"/>
+				</td>
+				<td>
+					${workDeviceXjRecord.askUser.name}
+				</td>
+				<td>
+					<shiro:hasPermission name="workdevicerecord:workDeviceXjRecord:view">
+						<a href="#" onclick="openDialogView('查看设备询价记录', '${ctx}/workdevicerecord/workDeviceXjRecord/form?id=${workDeviceXjRecord.id}','800px', '500px')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="workdevicerecord:workDeviceXjRecord:edit">
+    					<a href="#" onclick="openDialog('修改设备询价记录', '${ctx}/workdevicerecord/workDeviceXjRecord/form?id=${workDeviceXjRecord.id}','800px', '500px')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="workdevicerecord:workDeviceXjRecord:del">
+						<a href="${ctx}/workdevicerecord/workDeviceXjRecord/delete?id=${workDeviceXjRecord.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>

+ 140 - 0
src/main/webapp/webpage/modules/workeffect/workEffectExcel.jsp

@@ -0,0 +1,140 @@
+<%@ 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()){
+                if(  $("#month").val() == null || $("#month").val() == ''  ||$("#month").val() == undefined ){
+                    top.layer.alert('请添加月份!', {icon: 0});
+                    return;
+                }
+                if(  $("#officeId").val() == null || $("#officeId").val() == ''  ||$("#officeId").val() == undefined ){
+                    top.layer.alert('请选择部门!', {icon: 0});
+                    return;
+                }
+                if(  $("#uploadFile")[0].files[0] == null || $("#uploadFile")[0].files[0] == ''  ||$("#uploadFile")[0].files[0] == undefined ){
+                    top.layer.alert('请上传文件!', {icon: 0});
+                    return;
+                }
+                $("#inputFormExcle").submit();
+                return true;
+            }
+            return false;
+        }
+		$(document).ready(function() {
+			validateForm = $("#inputFormExcle").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
+                ,type: 'month',
+                done: function(value){//日期时间被切换后的回调
+                    console.log($("#uploadFile")[0].files[0]);
+                }
+            });
+        });
+        
+
+
+        function getChange(){
+           /* var layerIndex= layer.load(0,{shade: [0.3, '#fff']});
+            var formData = new FormData();
+            formData.append("file",$("#uploadFile")[0].files[0]);
+            console.log(formData);*/
+            console.log($("#uploadFile")[0].files[0]);
+           /* $.ajax({
+                type: 'post',
+                url:'${ctx}/workexample/workExample/excel',
+                data: formData,
+                dataType: "json",
+                cache: false,
+                processData: false,
+                contentType: false,
+            }).success(function (result) {
+                layer.close(layerIndex);
+                //setExcelInfo(result.data);
+            }).error(function () {
+                top.layer.msg("文件载入失败!");
+            });*/
+        }
+        function importTemplate() {
+            layer.confirm('确定要下载导入模版吗?', {btn: ['确定','取消']}, function() {
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workeffectdetail/workEffectDetail/import/template',
+                data:null,
+                /*async: false,*/
+                success:function(result){
+                    console.log("231--");
+                },error:function (result){
+                    console.log("131--");
+                }
+            })
+                layer.closeAll('dialog');
+            });
+        }
+    </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="inputFormExcle" modelAttribute="workEffectExcel"  action="${ctx}/workeffect/workEffect/import"  enctype="multipart/form-data" method="post" class="form-horizontal">
+            <div class="form-group layui-row first">
+                <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="month" name="month" style="background-color: #ffffff;" readonly="true"  htmlEscape="false" maxlength="20" readonly="true"  class="laydate-icondate form-control layer-date layui-input laydate-icon"
+                               value="<fmt:formatDate value="${workEffectExcel.month}" pattern="yyyy-MM"/>"/>
+                        </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 with-icon">
+                        <sys:treeselect id="office" name="office.id" value="${workEffectExcel.office.id}" labelName="office.name" labelValue="${workEffectExcel.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">
+                    <div class="layui-input-block">
+                        <div class="input-group">
+                            <%--<a class="nav-btn nav-btn-import" onclick="importTemplate()" ><i class="glyphicon glyphicon-import"></i>&nbsp;下载模版</a>--%>
+                            <input id="uploadFile" onchange="getChange()" name="file" type="file" />导入文件不能超过5M,仅允许导入“xls”或“xlsx”文件!<br/> 
+                        </div>
+                    </div>
+                </div>
+            </div>
+    <div class="form-group layui-row page-end"></div>
+	</form:form>
+    </div>
+</div>
+</body>
+</html>

+ 225 - 0
src/main/webapp/webpage/modules/workeffect/workEffectForm.jsp

@@ -0,0 +1,225 @@
+<%@ 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: '#month', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+                        ,type: 'month'
+			        });
+		});
+        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 setMoney(){
+            //总金额
+            //effectMoney
+            var money = "0.00";
+            //自动计算出结果并填充在相应的输入框中
+            var size = $("#effectDetailList tr").length;
+            for (var i = 0;i<size;i++){
+                var _money = $("#effectDetailList"+i+"_money").val();
+
+                var delFlag = $("#effectDetailList"+i+"_delFlag").val();
+                if (_money!=undefined && isNumber(_money) && delFlag==0){
+                    if(money==""){
+                        money = parseFloat(_money).toFixed(2);
+                    }else {
+                        money = (parseFloat(money) + parseFloat(_money)).toFixed(2);
+                    }
+                }
+            }
+            $("#effectMoney").val(money);
+		}
+        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>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="workEffect" action="${ctx}/workeffect/workEffect/save" method="post" class="form-horizontal">
+			<form:hidden path="id"/>
+
+			<div class="form-group layui-row first lw8">
+				<div class="form-group-label"><h2>基础信息</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">月份:</label>
+					<div class="layui-input-block">
+						<input style="background-color: #ffffff;" readonly="true"  htmlEscape="false" maxlength="20" readonly="true"  class="laydate-icondate form-control layer-date layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workEffect.month}" pattern="yyyy-MM"/>"/>
+						</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 with-icon">
+						<input value="${workEffect.office.name}" readonly="true" class="form-control layui-input">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">部门人数:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<form:input id="officeNum" path="officeNum" htmlEscape="false" readonly="true" class="form-control number layui-input"/>
+						</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">
+						<div class="input-group">
+							<form:input id="effectNum" path="effectNum" htmlEscape="false" readonly="true" class="form-control number layui-input"/>
+						</div>
+					</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 id="effectMoney" path="effectMoney" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+						</div>
+					</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="<fmt:formatDate value="${workEffect.createDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">导 入 人:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<input htmlEscape="false" readonly="true"
+								   class="form-control  layui-input"
+								   value="${workEffect.createBy.name}" />
+						</div>
+					</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(workEffect.status, 'effect_status', '')}"/>
+					</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="contentTable3" class="table table-bordered table-condensed can-edit no-bottom-margin">
+						<thead>
+						<tr>
+							<th width="25%">工号</th>
+							<th width="25%">姓名</th>
+							<th width="25%">职级</th>
+							<th width="25%">金额</th>
+						</tr>
+						</thead>
+						<tbody id="effectDetailList">
+						</tbody>
+					</table>
+
+					<script type="text/template" id="effectDetailTpl">//<!--
+					<tr id="effectDetailList{{idx}}">
+						<td class="hide">
+							<input id="effectDetailList{{idx}}_id" name="effectDetailList[{{idx}}].id" type="hidden" value="{{row.id}}" />
+							<input id="effectDetailList{{idx}}_effectId" name="effectDetailList[{{idx}}].effectId" type="hidden" value="{{row.effectId}}" />
+							<input id="effectDetailList{{idx}}_workStaffBasicInfo" name="effectDetailList[{{idx}}].workStaffBasicInfo.id" type="hidden" value="{{row.workStaffBasicInfo.id}}" />
+							<input id="effectDetailList{{idx}}_delFlag" name="effectDetailList[{{idx}}].delFlag" type="hidden" value="0" />
+
+						</td>
+						<td>
+							<input id="effectDetailList{{idx}}_no" name="effectDetailList[{{idx}}].no" type="text" value="{{row.no}}"  readonly="true"  class="form-control"/>
+						</td>
+						<td>
+							<input id="effectDetailList{{idx}}_name" name="effectDetailList[{{idx}}].name" type="text" value="{{row.name}}"  readonly="true"  class="form-control"/>
+						</td>
+						<td>
+							<input id="effectDetailList{{idx}}_jobGrade" name="effectDetailList[{{idx}}].jobGrade" type="text" value="{{row.jobGrade}}"  readonly="true"  class="form-control"/>
+						</td>
+						<td>
+							<input id="effectDetailList{{idx}}_money" onchange="setMoney(this)" name="effectDetailList[{{idx}}].money" type="text" value="{{row.money}}"    class="form-control number" />
+						</td>
+					</tr>//-->
+					</script>
+					<script type="text/javascript">
+
+                        var effectDetailRowIdx = 0, effectDetailTpl = $("#effectDetailTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+
+                        $(document).ready(function() {
+                            var data = ${fns:toJson(workEffect.effectDetailList)};
+                            for (var i=0; i<data.length; i++){
+                                addRow('#effectDetailList', effectDetailRowIdx, effectDetailTpl, data[i]);
+                                effectDetailRowIdx = effectDetailRowIdx + 1;
+                            }
+                        });
+					</script>
+				</div>
+			</div>
+
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 288 - 0
src/main/webapp/webpage/modules/workeffect/workEffectList.jsp

@@ -0,0 +1,288 @@
+<%@ 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(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: '#beginContractDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+
+
+            laydate.render({
+                elem: '#endContractDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#month', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+                ,type: 'month'
+            });
+
+        });
+
+        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: 2,
+                area: [width, height],
+                title: title,
+                maxmin: false, //开启最大化最小化按钮
+                skin: 'tow-btns',
+                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('#inputFormExcle');
+                    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){
+                }
+            });
+        }
+        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: false, //开启最大化最小化按钮
+                skin: 'three-btns',
+                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
+                    }
+                },
+                btn3: function(index){
+                }
+            });
+        }
+
+        function importTemplate() {
+            window.location.href='${ctx}/workeffectdetail/workEffectDetail/import/template';
+        }
+	</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="workEffect" action="${ctx}/workeffect/workEffect/" 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 lw8">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">月份:</label>
+							<div class="layui-input-block">
+								<input id="month" name="month" style="background-color: #ffffff;" readonly="true"  htmlEscape="false" maxlength="20" readonly="true"  class="laydate-icondate form-control layer-date layui-input laydate-icon"
+									   value="<fmt:formatDate value="${workEffect.month}" pattern="yyyy-MM"/>"/>
+								</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="office" name="office.id" value="${workEffect.office.id}" labelName="office.name" labelValue="${workEffect.office.name}"
+												title="部门" url="/sys/office/treeDataAll?type=2" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+							</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" class="lw8" 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="${workContractRecord.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="${workContractRecord.endContractDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+							</div>
+						</div>--%>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="contentShadow layui-form contentDetails">
+				<div class="nav-btns">
+					<%--<shiro:hasPermission name="workeffect:workEffect:add">
+						<table:addRow url="${ctx}/workeffect/workEffect/form" title="绩效"></table:addRow><!-- 增加按钮 -->
+					</shiro:hasPermission>--%>
+					<shiro:hasPermission name="workeffect:workEffect:import">
+						<%--<table:importExcel url="${ctx}/workeffect/workEffect/import"></table:importExcel>--%>
+						<a class="nav-btn nav-btn-import" onclick="importTemplate()" ><i class="glyphicon glyphicon-import"></i>&nbsp;下载模版</a>
+						<button class="nav-btn nav-btn-import" title="导入数据" onclick="openDialogreExcel('导入数据', '${ctx}/workeffect/workEffect/importDialogre','90%','90%')" ><i class="fa fa-folder-open-o"></i>&nbsp;导入</button>
+					</shiro:hasPermission>
+					<%--<shiro:hasPermission name="workeffect:workEffect:export">
+						<table:exportExcel url="${ctx}/workeffect/workEffect/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: [[
+                // {checkbox: true, fixed: true},
+                {field:'index',align:'center', title: '序号',width:40}
+                ,{field:'month',align:'center',title: '月份',minWidth:160,templet:function(d){
+                    var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看绩效', '${ctx}/workeffect/workEffect/form?id=" + d.id + "&tabId=1','95%','95%')\">" +
+                        "<span title=" + d.month + ">" + d.month + "</span></a>";
+                    return xml;
+                }}
+                ,{field:'officeName',align:'center', title: '部门',minWidth:160,templet:function(d){
+                    return "<span title='"+ d.officeName +"'>" + d.officeName + "</span>";
+                }}
+                ,{field:'officeNum',align:'center', title: '部门人数',minWidth:160,templet:function(d){
+                    return "<span title='"+ d.officeNum +"'>" + d.officeNum + "</span>";
+                }}
+                ,{field:'effectNum',align:'center', title: '绩效人数',minWidth:160,templet:function(d){
+                    return "<span title='"+ d.effectNum +"'>" + d.effectNum + "</span>";
+                }}
+                ,{field:'effectMoney', align:'center',title: '绩效总金额',minWidth:160,templet:function(d){
+                    return "<span title='"+ d.effectMoney +"'>" + d.effectMoney + "</span>";
+                }}
+                ,{field:'createDate',align:'center', title: '导入时间', minWidth:160}
+                ,{field:'createBy',align:'center', title: '导入人', minWidth:160}
+                ,{field:'status', align:'center',title: '状态',minWidth:160,templet:function(d){
+                    return "<span title='"+ d.status +"'>" + d.status + "</span>";
+                }}
+                ,{field:'op',align:'center',title:"操作",width:130,templet:function(d){
+                    ////对操作进行初始化
+                    var xml = "";
+                    if(d.canedit1 != undefined && d.canedit1 == "1")
+                        xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogre('修改绩效', '${ctx}/workeffect/workEffect/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}/workeffect/workEffect/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="workEffect" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${workEffect.id}"
+                    ,"month":"<fmt:formatDate value="${workEffect.month}" pattern="yyyy-MM"/>"
+                    ,"officeName":"${workEffect.office.name}"
+                    ,"officeNum":"${workEffect.officeNum}"
+                    ,"effectNum":"${workEffect.effectNum}"
+                    ,"effectMoney":"<fmt:formatNumber value="${workEffect.effectMoney}" pattern="#,#0.00"/>"
+                    ,"status":"${fns:getDictLabel(workEffect.status, 'effect_status', '')}"
+                    ,"createDate":"<fmt:formatDate value="${workEffect.createDate}" pattern="yyyy-MM-dd"/>"
+                    ,"createBy":"${workEffect.createBy.name}"
+                    <shiro:hasPermission name="workeffect:workEffect:edit"><c:choose>
+                    <c:when test="${'1' == '1' }">,"canedit1":"1"</c:when>
+                    </c:choose></shiro:hasPermission>
+                    <shiro:hasPermission name="workeffect:workEffect:del"><c:choose>
+                    <c:when test="${'1' == '1'}">,"candelete":"1"</c:when>
+                    </c:choose></shiro:hasPermission>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+            // ,even: true
+            // ,height: 315
+        });
+
+    })
+
+    resizeListTable();
+</script>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 225 - 0
src/main/webapp/webpage/modules/workeffect/workEffectView.jsp

@@ -0,0 +1,225 @@
+<%@ 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: '#month', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+                        ,type: 'month'
+			        });
+		});
+        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 setMoney(){
+            //总金额
+            //effectMoney
+            var money = "0.00";
+            //自动计算出结果并填充在相应的输入框中
+            var size = $("#effectDetailList tr").length;
+            for (var i = 0;i<size;i++){
+                var _money = $("#effectDetailList"+i+"_money").val();
+
+                var delFlag = $("#effectDetailList"+i+"_delFlag").val();
+                if (_money!=undefined && isNumber(_money) && delFlag==0){
+                    if(money==""){
+                        money = parseFloat(_money).toFixed(2);
+                    }else {
+                        money = (parseFloat(money) + parseFloat(_money)).toFixed(2);
+                    }
+                }
+            }
+            $("#effectMoney").val(money);
+		}
+        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>
+</head>
+<body>
+<div class="single-form">
+	<div class="container view-form">
+		<form:form id="inputForm" modelAttribute="workEffect" action="${ctx}/workeffect/workEffect/save" method="post" class="form-horizontal">
+			<form:hidden path="id"/>
+
+			<div class="form-group layui-row first lw8">
+				<div class="form-group-label"><h2>基础信息</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">月份:</label>
+					<div class="layui-input-block">
+						<input style="background-color: #ffffff;" readonly="true"  htmlEscape="false" maxlength="20" readonly="true"  class="laydate-icondate form-control layer-date layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workEffect.month}" pattern="yyyy-MM"/>"/>
+						</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 with-icon">
+						<input value="${workEffect.office.name}" readonly="true" class="form-control layui-input">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">部门人数:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<form:input id="officeNum" path="officeNum" htmlEscape="false" readonly="true" class="form-control number layui-input"/>
+						</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">
+						<div class="input-group">
+							<form:input id="effectNum" path="effectNum" htmlEscape="false" readonly="true" class="form-control number layui-input"/>
+						</div>
+					</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 htmlEscape="false" readonly="true"   class="form-control layui-input" value="<fmt:formatNumber value="${workEffect.effectMoney}" pattern="#,#0.00"/>"/>
+						</div>
+					</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="<fmt:formatDate value="${workEffect.createDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">导 入 人:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<input htmlEscape="false" readonly="true"
+								   class="form-control  layui-input"
+								   value="${workEffect.createBy.name}" />
+						</div>
+					</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(workEffect.status, 'effect_status', '')}"/>
+					</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="contentTable3" class="table table-bordered table-condensed can-edit no-bottom-margin">
+						<thead>
+						<tr>
+							<th width="25%">工号</th>
+							<th width="25%">姓名</th>
+							<th width="25%">职级</th>
+							<th width="25%">金额</th>
+						</tr>
+						</thead>
+						<tbody id="effectDetailList">
+						</tbody>
+					</table>
+
+					<script type="text/template" id="effectDetailTpl">//<!--
+					<tr id="effectDetailList{{idx}}">
+						<td class="hide">
+							<input id="effectDetailList{{idx}}_id" name="effectDetailList[{{idx}}].id" type="hidden" value="{{row.id}}" />
+							<input id="effectDetailList{{idx}}_effectId" name="effectDetailList[{{idx}}].effectId" type="hidden" value="{{row.effectId}}" />
+							<input id="effectDetailList{{idx}}_workStaffBasicInfo" name="effectDetailList[{{idx}}].workStaffBasicInfo.id" type="hidden" value="{{row.workStaffBasicInfo.id}}" />
+							<input id="effectDetailList{{idx}}_delFlag" name="effectDetailList[{{idx}}].delFlag" type="hidden" value="0" />
+
+						</td>
+						<td>
+							<input id="effectDetailList{{idx}}_no" name="effectDetailList[{{idx}}].no" type="text" value="{{row.no}}"  readonly="true"  class="form-control"/>
+						</td>
+						<td>
+							<input id="effectDetailList{{idx}}_name" name="effectDetailList[{{idx}}].name" type="text" value="{{row.name}}"  readonly="true"  class="form-control"/>
+						</td>
+						<td>
+							<input id="effectDetailList{{idx}}_jobGrade" name="effectDetailList[{{idx}}].jobGrade" type="text" value="{{row.jobGrade}}"  readonly="true"  class="form-control"/>
+						</td>
+						<td>
+							<input id="effectDetailList{{idx}}_money" name="effectDetailList[{{idx}}].money" type="text" value="{{row.money}}" readonly="true"    class="form-control number" />
+						</td>
+					</tr>//-->
+					</script>
+					<script type="text/javascript">
+
+                        var effectDetailRowIdx = 0, effectDetailTpl = $("#effectDetailTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+
+                        $(document).ready(function() {
+                            var data = ${fns:toJson(workEffect.effectDetailList)};
+                            for (var i=0; i<data.length; i++){
+                                addRow('#effectDetailList', effectDetailRowIdx, effectDetailTpl, data[i]);
+                                effectDetailRowIdx = effectDetailRowIdx + 1;
+                            }
+                        });
+					</script>
+				</div>
+			</div>
+
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 85 - 0
src/main/webapp/webpage/modules/workeffectdetail/workEffectDetailForm.jsp

@@ -0,0 +1,85 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>绩效明细管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workEffectDetail" action="${ctx}/workeffectdetail/workEffectDetail/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="effectId" 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="no" htmlEscape="false"    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="workStaffBasicInfo" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">职级:</label></td>
+					<td class="width-35">
+						<form:input path="jobGrade" 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="money" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"></td>
+		   			<td class="width-35" ></td>
+		  		</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 146 - 0
src/main/webapp/webpage/modules/workeffectdetail/workEffectDetailList.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="workEffectDetail" action="${ctx}/workeffectdetail/workEffectDetail/" 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="workeffectdetail:workEffectDetail:add">
+				<table:addRow url="${ctx}/workeffectdetail/workEffectDetail/form" title="绩效明细"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workeffectdetail:workEffectDetail:edit">
+			    <table:editRow url="${ctx}/workeffectdetail/workEffectDetail/form" title="绩效明细" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workeffectdetail:workEffectDetail:del">
+				<table:delRow url="${ctx}/workeffectdetail/workEffectDetail/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workeffectdetail:workEffectDetail:import">
+				<table:importExcel url="${ctx}/workeffectdetail/workEffectDetail/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workeffectdetail:workEffectDetail:export">
+	       		<table:exportExcel url="${ctx}/workeffectdetail/workEffectDetail/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 effectId">绩效</th>
+				<th  class="sort-column no">工号</th>
+				<th  class="sort-column name">姓名</th>
+				<th  class="sort-column workStaffBasicInfo">档案</th>
+				<th  class="sort-column jobGrade">职级</th>
+				<th  class="sort-column money">金额</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="workEffectDetail">
+			<tr>
+				<td> <input type="checkbox" id="${workEffectDetail.id}" class="i-checks"></td>
+				<td><a  href="#" onclick="openDialogView('查看绩效明细', '${ctx}/workeffectdetail/workEffectDetail/form?id=${workEffectDetail.id}','800px', '500px')">
+					${workEffectDetail.remarks}
+				</a></td>
+				<td>
+					${workEffectDetail.effectId}
+				</td>
+				<td>
+					${workEffectDetail.no}
+				</td>
+				<td>
+					${workEffectDetail.name}
+				</td>
+				<td>
+					${workEffectDetail.workStaffBasicInfo}
+				</td>
+				<td>
+					${workEffectDetail.jobGrade}
+				</td>
+				<td>
+					${workEffectDetail.money}
+				</td>
+				<td>
+					<shiro:hasPermission name="workeffectdetail:workEffectDetail:view">
+						<a href="#" onclick="openDialogView('查看绩效明细', '${ctx}/workeffectdetail/workEffectDetail/form?id=${workEffectDetail.id}','800px', '500px')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="workeffectdetail:workEffectDetail:edit">
+    					<a href="#" onclick="openDialog('修改绩效明细', '${ctx}/workeffectdetail/workEffectDetail/form?id=${workEffectDetail.id}','800px', '500px')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="workeffectdetail:workEffectDetail:del">
+						<a href="${ctx}/workeffectdetail/workEffectDetail/delete?id=${workEffectDetail.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>

+ 97 - 0
src/main/webapp/webpage/modules/workengineeringprice/workEngineeringPriceForm.jsp

@@ -0,0 +1,97 @@
+<%@ 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="workEngineeringPrice" action="${ctx}/workengineeringprice/workEngineeringPrice/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="sendPrice" 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="approvedPrice" 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="contractPrice" 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="addEditAmount" 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="addEditRate" 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="consultAmount " 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="civilEngineeringCost" 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="installationCost" htmlEscape="false"    class="form-control  number"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">工程咨询项目id:</label></td>
+					<td class="width-35">
+						<form:input path="engineeringId" htmlEscape="false"    class="form-control  number"/>
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 160 - 0
src/main/webapp/webpage/modules/workengineeringprice/workEngineeringPriceList.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">
+		$(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="workEngineeringPrice" action="${ctx}/workengineeringprice/workEngineeringPrice/" method="post" class="form-inline">
+		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+		<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+		<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+		<div class="form-group">
+			<span>工程咨询项目id:</span>
+				<form:input path="engineeringId" 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="workengineeringprice:workEngineeringPrice:add">
+				<table:addRow url="${ctx}/workengineeringprice/workEngineeringPrice/form" title="工程咨询项目三级校审项目信息"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workengineeringprice:workEngineeringPrice:edit">
+			    <table:editRow url="${ctx}/workengineeringprice/workEngineeringPrice/form" title="工程咨询项目三级校审项目信息" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workengineeringprice:workEngineeringPrice:del">
+				<table:delRow url="${ctx}/workengineeringprice/workEngineeringPrice/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workengineeringprice:workEngineeringPrice:import">
+				<table:importExcel url="${ctx}/workengineeringprice/workEngineeringPrice/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workengineeringprice:workEngineeringPrice:export">
+	       		<table:exportExcel url="${ctx}/workengineeringprice/workEngineeringPrice/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 sendPrice">送审价</th>
+				<th  class="sort-column approvedPrice">审定价</th>
+				<th  class="sort-column contractPrice">合同价</th>
+				<th  class="sort-column addEditAmount">核增核减额</th>
+				<th  class="sort-column addEditRate">核增核减率</th>
+				<th  class="sort-column consultAmount ">咨询标的额</th>
+				<th  class="sort-column civilEngineeringCost">其中土建造价</th>
+				<th  class="sort-column installationCost">其中安装造价</th>
+				<th  class="sort-column engineeringId">工程咨询项目id</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="workEngineeringPrice">
+			<tr>
+				<td> <input type="checkbox" id="${workEngineeringPrice.id}" class="i-checks"></td>
+				<td><a  href="javascript:void(0)" onclick="openDialogView('查看工程咨询项目三级校审项目信息', '${ctx}/workengineeringprice/workEngineeringPrice/form?id=${workEngineeringPrice.id}','80%','80%')">
+					${workEngineeringPrice.remarks}
+				</a></td>
+				<td>
+					${workEngineeringPrice.sendPrice}
+				</td>
+				<td>
+					${workEngineeringPrice.approvedPrice}
+				</td>
+				<td>
+					${workEngineeringPrice.contractPrice}
+				</td>
+				<td>
+					${workEngineeringPrice.addEditAmount}
+				</td>
+				<td>
+					${workEngineeringPrice.addEditRate}
+				</td>
+				<td>
+					${workEngineeringPrice.consultAmount }
+				</td>
+				<td>
+					${workEngineeringPrice.civilEngineeringCost}
+				</td>
+				<td>
+					${workEngineeringPrice.installationCost}
+				</td>
+				<td>
+					${workEngineeringPrice.engineeringId}
+				</td>
+				<td>
+					<shiro:hasPermission name="workengineeringprice:workEngineeringPrice:view">
+						<a href="javascript:void(0)" onclick="openDialogView('查看工程咨询项目三级校审项目信息', '${ctx}/workengineeringprice/workEngineeringPrice/form?id=${workEngineeringPrice.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="workengineeringprice:workEngineeringPrice:edit">
+    					<a href="javascript:void(0)" onclick="openDialog('修改工程咨询项目三级校审项目信息', '${ctx}/workengineeringprice/workEngineeringPrice/form?id=${workEngineeringPrice.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="workengineeringprice:workEngineeringPrice:del">
+						<a href="${ctx}/workengineeringprice/workEngineeringPrice/delete?id=${workEngineeringPrice.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>

+ 145 - 0
src/main/webapp/webpage/modules/workengineeringproject/recordHistoricList.jsp

@@ -0,0 +1,145 @@
+<%@ 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}/engineeringrecord/engineeringrecord/queryToList">待办任务</a></li>
+                    <li class="active"><a href="${ctx}/engineeringrecord/engineeringrecord/queryCompleteList">已办任务</a></li>
+                    <li><a href="${ctx}/engineeringrecord/engineeringrecord/list">工程项目归档信息</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}/engineeringrecord/engineeringrecord/queryCompleteList" 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>流程发起人</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>
+                </tr>
+                </thead>
+                <tbody>
+				<c:choose>
+				<c:when test="${not empty list}">
+				<c:forEach items="${list}" var="workfullrecord">
+					<c:set var="task" value="${workfullrecord.act.histTask}" />
+					<c:set var="vars" value="${workfullrecord.act.vars}" />
+					<c:set var="procDef" value="${workfullrecord.act.procDef}" /><%--
+				<c:set var="procExecUrl" value="${act.procExecUrl}" /> --%>
+					<c:set var="status" value="${workfullrecord.act.status}" />
+					<tr>
+						<td>${workfullrecord.createBy.name}</td>
+						<td>
+							${task.name}
+						</td>
+							<%--<td>${task.description}</td>--%>
+						<td>${procDef.name}</td>
+						<td><b title='流程版本号'>V: ${procDef.revision}</b></td>
+						<td>${workfullrecord.recordName}</td>
+						<td>${workfullrecord.recordNumber}</td>
+						<%--<td>${workfullrecord.backRecordNumber}</td>
+						<td>${workfullrecord.recordLibNumber}</td>
+						<td>${fns:getDictLabel(workfullrecord.recordSecretLevel, 'record_secret_level', '')}</td>--%>
+						<td><fmt:formatDate value="${workfullrecord.startTime}" pattern="yyyy-MM-dd HH:mm:ss" /></td>
+						<td><fmt:formatDate value="${workfullrecord.endTime}" pattern="yyyy-MM-dd HH:mm:ss" /></td>
+						<%--<td>${workfullrecord.retentionPeriod}</td>
+						<td>${workfullrecord.strongboxNumber}</td>--%>
+						<td>${workfullrecord.manageId}</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>

+ 203 - 0
src/main/webapp/webpage/modules/workengineeringproject/recordTodoList.jsp

@@ -0,0 +1,203 @@
+<%@ 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 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
+                    }
+                },
+                btn3: function(index){
+                }
+            });
+        }
+        function page(n,s){
+            location = '${ctx}/oa/leave/list/?pageNo='+n+'&pageSize='+s;
+        }
+	</script>
+</head>
+<body class="gray-bg">
+<div class="wrapper wrapper-content">
+	<div class="ibox">
+		<div class="ibox-title" style="height: 70px;">
+			<h5>
+				<ul class="nav nav-tabs">
+					<li class="active"><a href="${ctx}/engineeringrecord/engineeringrecord/queryToList">待办任务</a></li>
+					<li><a href="${ctx}/engineeringrecord/engineeringrecord/queryCompleteList">已办任务</a></li>
+					<li><a href="${ctx}/engineeringrecord/engineeringrecord/list">工程项目归档信息</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}/engineeringrecord/engineeringrecord/queryToList" 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" maxlength="20" readonly="readonly" 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>流程发起人</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>操作</th>
+				</tr>
+				</thead>
+				<tbody>
+				<c:choose>
+					<c:when test="${not empty list}">
+				<c:forEach items="${list}" var="workfullrecord">
+					<c:set var="task" value="${workfullrecord.act.task}" />
+					<c:set var="vars" value="${workfullrecord.act.vars}" />
+					<c:set var="procDef" value="${workfullrecord.act.procDef}" /><%--
+				<c:set var="procExecUrl" value="${act.procExecUrl}" /> --%>
+					<c:set var="status" value="${workfullrecord.act.status}" />
+					<tr>
+						<td>${workfullrecord.createBy.name}</td>
+						<td>
+							${task.name}
+						</td>
+					<%--<td>${task.description}</td>--%>
+						<td>${procDef.name}</td>
+						<td><b title='流程版本号'>V: ${procDef.revision}</b></td>
+						<td>${workfullrecord.recordName}</td>
+						<td>${workfullrecord.recordNumber}</td>
+						<%--<td>${workfullrecord.backRecordNumber}</td>
+						<td>${workfullrecord.recordLibNumber}</td>
+						<td>${fns:getDictLabel(workfullrecord.recordSecretLevel, 'record_secret_level', '')}</td>--%>
+						<td><fmt:formatDate value="${workfullrecord.startTime}" pattern="yyyy-MM-dd HH:mm:ss" /></td>
+						<td><fmt:formatDate value="${workfullrecord.endTime}" pattern="yyyy-MM-dd HH:mm:ss" /></td>
+						<%--<td>${workfullrecord.retentionPeriod}</td>
+						<td>${workfullrecord.strongboxNumber}</td>--%>
+						<td>${workfullrecord.manageId}</td>
+						<td>
+                            <a href="javascript:void(0)" onclick="openDialogre('审核', '${ctx}/engineeringrecord/engineeringrecord/applyOnRecord?engineeringId=${workfullrecord.workFullManage.id}&taskId=${task.id}&taskName=${fns:urlEncode(task.name)}&taskDefKey=${task.taskDefinitionKey}&procInsId=${task.processInstanceId}&procDefId=${task.processDefinitionId}&status=${status}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 任务办理</a>
+						</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>

+ 774 - 0
src/main/webapp/webpage/modules/workengineeringproject/workClientContractionView.jsp

@@ -0,0 +1,774 @@
+<%@ 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)
+                    .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);
+					}
+				}
+			});
+		});
+
+
+	</script>
+</head>
+<body class="hideScroll">
+<div class="wrapper wrapper-content">
+    <div class="ibox">
+        <div class="ibox-content">
+            <div class="nav nav-tabs">
+                    <ul class="nav nav-tabs">
+                        <li><a href="${ctx}/workengineeringproject/workEngineeringProject/form?id=${workEngineeringProject.id}&name=view">项目基本信息</a></li>
+                        <li class="active"><a href="javascript:void(0)">客户合同信息</a></li>
+                    </ul>
+            </div>
+            <div id="tab-2" class="tab-pane">
+                <table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+                    <tbody>
+                    <tr>
+                        <td class="width-15 active" rowspan="14"><label class="pull-right">基本信息:</label></td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active"><label class="pull-right"><font color="red">*</font>客户名称:</label></td>
+                        <td class="width-85" colspan="3">
+                                <span title="${workClientInfo.name}">${fns:abbr(workClientInfo.name,30)}</span>
+                        </td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active"><label class="pull-right">组织机构代码:</label></td>
+                        <td class="width-35">
+                            ${workClientInfo.orUnicode}
+                        </td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active"><label class="pull-right">客户性质:</label></td>
+                        <td class="width-35">
+                            ${fns:getMainDictLabel(workClientInfo.companyType, 'company_type', '')}
+                        </td>
+                        <td class="width-15 active"><label class="pull-right">所在行业:</label></td>
+                        <td class="width-35">
+                            ${fns:getMainDictLabel(workClientInfo.companyIndustry, 'company_industry', '')}
+                        </td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active"><label class="pull-right">客户类型:</label></td>
+                        <td class="width-35">
+                            ${fns:getMainDictLabel(workClientInfo.clientType, 'client_type', '')}
+                        </td>
+                        <td class="width-15 active"><label class="pull-right">信用等级:</label></td>
+                        <td class="width-35">
+                            ${fns:getDictLabel(workClientInfo.creditRank, 'credit_rank', '')}
+                        </td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active"><label class="pull-right">所在地区:</label></td>
+                        <td class="width-35">
+                            ${workClientInfo.area.name}
+                        </td>
+                        <td class="width-15 active"><label class="pull-right">法人代表:</label></td>
+                        <td class="width-35">
+                            ${workClientInfo.lawerPresint}
+                        </td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active"><label class="pull-right">邮政编码:</label></td>
+                        <td class="width-35">
+                            ${workClientInfo.zipCode}
+                        </td>
+                        <td class="width-15 active"><label class="pull-right">传真:</label></td>
+                        <td class="width-35">
+                            ${workClientInfo.fax}
+                        </td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active"><label class="pull-right">电子邮箱:</label></td>
+                        <td class="width-35">
+                            ${workClientInfo.email}
+                        </td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active"><label class="pull-right">开户银行及开户账号:</label></td>
+                        <td colspan="3">
+                            <%--table table-striped table-bordered table-hover table-condensed dataTables-example dataTable--%>
+                            <table id="bankinfo" class="table table-striped table-bordered table-condensed">
+                                <thead>
+                                <tr>
+                                    <%--<th> <input type="checkbox" class="i-checks"></th>--%>
+                                    <th  class="sort-column name">序号</th>
+                                    <th  class="sort-column companyType">开户银行</th>
+                                    <th  class="sort-column clientType">开户账户</th>
+                                </tr>
+                                </thead>
+                                <tbody id="workClientBankList">
+                                <c:choose>
+                                    <c:when test="${not empty workClientInfo.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:when>
+                                    <c:otherwise>
+                                        <tr>
+                                            <td colspan="3" align="center">暂无数据</td>
+                                        </tr>
+                                    </c:otherwise>
+                                </c:choose>
+                                </tbody>
+                            </table>
+                        </td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active"><label class="pull-right">税务号:</label></td>
+                        <td class="width-35" colspan="3">
+                            ${workClientInfo.taxId}
+                        </td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active"><label class="pull-right">注册地址:</label></td>
+                        <td class="width-35" colspan="3">
+                            ${workClientInfo.registerAddress}
+                        </td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active"><label class="pull-right">详细地址:</label></td>
+                        <td class="width-35" colspan="3">
+                            ${workClientInfo.address}
+                        </td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active"><label class="pull-right">公司网址:</label></td>
+                        <td class="width-35" colspan="3">
+                            ${workClientInfo.companyUrl}
+                        </td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active"><label class="pull-right">单位简介:</label></td>
+                        <td class="width-35" colspan="3">
+                            ${workClientInfo.remarks}
+                        </td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active"><label class="pull-right">联系人:</label></td>
+                        <td colspan="4">
+                            <table id="contentTable" class="table table-striped table-bordered table-condensed">
+                                <thead>
+                                <tr>
+                                    <th class="hide"></th>
+                                    <th>序号</th>
+                                    <th>联系人姓名</th>
+                                    <th>职务</th>
+                                    <th>QQ</th>
+                                    <th>联系方式1</th>
+                                    <th>联系方式2</th>
+                                    <th>E-mail</th>
+                                </tr>
+                                </thead>
+                                <tbody id="workClientLinkmanList">
+                                <c:choose>
+                                    <c:when test="${not empty workClientInfo.workClientLinkmanList}">
+                                        <c:forEach items="${workClientInfo.workClientLinkmanList}" var="workClientLinkman" varStatus="status">
+                                            <tr>
+                                                <td>${status.index + 1}</td>
+                                                <td>${workClientLinkman.name}</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:when>
+                                    <c:otherwise>
+                                        <tr>
+                                            <td colspan="8" align="center">暂无数据</td>
+                                        </tr>
+                                    </c:otherwise>
+                                </c:choose>
+                                </tbody>
+                            </table>
+                        </td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active"><label class="pull-right">客户资料:</label></td>
+                        <td colspan="4">
+                            <table id="contentTable1" class="table table-striped table-bordered table-condensed">
+                                <thead>
+                                <tr>
+                                    <th class="hide"></th>
+                                   <%-- <th>序号</th>--%>
+                                    <th>文件名</th>
+                                    <th>上传人</th>
+                                    <th>上传时间</th>
+                                    <th width="100">操作</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,'jpeg')}">
+                                                        <td><img src="${workClientAttachment.url}" width="50" height="50" 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}','80%','80%','1')">${workClientAttachment.attachmentName}</a></td>
+                                                            </c:when>
+                                                            <c:otherwise>
+                                                                <td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','80%','80%')">${workClientAttachment.attachmentName}</a></td>
+                                                            </c:otherwise>
+                                                        </c:choose>
+                                                    </c:otherwise>
+                                                    <%--<c:otherwise>
+                                                        <c:choose>
+                                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                                <td><a href="${workClientAttachment.url}">${workClientAttachment.attachmentName}</a></td>
+                                                            </c:when>
+                                                            <c:otherwise>
+                                                                <td><a href="javascript:void(0)" onclick="openDialogViewPre('预览','${ctx}/previewController/previewUrl?fileUrl=${workClientAttachment.url}','80%','80%')">${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>
+                                                    <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="btn btn-success btn-xs">下载</a>
+                                                   <%-- <a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${workClientAttachment.url}" class="btn btn-success btn-xs">下载</a>--%>
+                                                </td>
+                                            </tr>
+                                        </c:forEach>
+                                    </c:when>
+                                    <c:otherwise>
+                                        <tr>
+                                            <td colspan="5" align="center">暂无数据</td>
+                                        </tr>
+                                    </c:otherwise>
+                                </c:choose>
+                                </tbody>
+                            </table>
+                            <script type="text/javascript">
+                                $(function () {
+                                    $("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++;
+                                            }
+                                        })
+                                    });
+                                })
+                            </script>
+                        </td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active" rowspan="11"><label class="pull-right">合同信息:</label></td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active"><label class="pull-right">合同名称:</label></td>
+                        <td class="width-35">
+                            ${workContractInfo.name}
+                        </td>
+                        <td class="width-15 active"><label class="pull-right">签订日期:</label></td>
+                        <td class="width-35">
+                            <fmt:formatDate value="${workContractInfo.contractDate}" pattern="yyyy-MM-dd"/>
+                        </td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active"><label class="pull-right">合同生效日期:</label></td>
+                        <td class="width-35">
+                            <fmt:formatDate value="${workContractInfo.effectiveDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+                        </td>
+                        <td class="width-15 active"><label class="pull-right">合同终止日期:</label></td>
+                        <td class="width-35">
+                            <fmt:formatDate value="${workContractInfo.closingDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+                        </td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active"><label class="pull-right">客户名称:</label></td>
+                        <td class="width-35">
+                            ${workContractInfo.client.name}
+                        </td>
+                        <td class="width-15 active"><label class="pull-right">合同类型:</label></td>
+                        <td class="width-35">
+                            ${fns:getDictLabel(workContractInfo.contractType, 'contractType', '')}
+                        </td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active"><label class="pull-right">合同编号:</label></td>
+                        <td class="width-35">
+                            ${workContractInfo.contractNum}
+                        </td>
+                        <td class="width-15 active"><label class="pull-right">合同金额(元):</label></td>
+                        <td class="width-35">
+                            ${workContractInfo.contractPrice}
+                        </td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active"><label class="pull-right"> 创建人:</label></td>
+                        <td class="width-35">
+                            ${workContractInfo.createName}
+                        </td>
+                        <td class="width-15 active"><label class="pull-right">合同特别条款:</label></td>
+                        <td class="width-35">
+                            ${workContractInfo.contractSpecial}
+                        </td>
+                    </tr>
+                    <tr>
+                        <td class="width-15 active"><label class="pull-right">合同资料:</label></td>
+                        <td colspan="3">
+                            <table id="attachments"  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="${attachmentContractList}" var="workClientAttachment" varStatus="status">
+                                    <tr>
+                                       <%-- <td>${status.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}" 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="${attachment.url}">${attachment.attachmentName}</a></td>
+                                                    </c:when>
+                                                    <c:otherwise>
+                                                        <td><a href="javascript:void(0)" onclick="openDialogView('预览','${ctx}/previewController/previewUrl?fileUrl=${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+                                                    </c:otherwise>
+                                                </c:choose>
+                                            </c:otherwise>--%>
+                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+													   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+													   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+										 			   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+													   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                                <td><img src="${workClientAttachment.url}" width="50" height="50" 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}','80%','80%','1')">${workClientAttachment.attachmentName}</a></td>
+                                                    </c:when>
+                                                    <c:otherwise>
+                                                        <td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','80%','80%')">${workClientAttachment.attachmentName}</a></td>
+                                                    </c:otherwise>
+                                                </c:choose>
+                                            </c:otherwise>
+                                        </c:choose>
+                                        <td>${workClientAttachment.attachmentUser}</td>
+                                        <td><fmt:formatDate value="${workClientAttachment.createDate}" pattern="yyyy-MM-dd"/></td>
+                                        <td>
+                                            <a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>
+                                        </td>
+                                    </tr>
+                                </c:forEach>
+                            </table>
+                        </td>
+                    </tr>
+                    </tbody>
+                </table>
+            </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-striped table-bordered table-hover table-condensed dataTables-example">
+                       <tbody>
+                       <tr>
+                           <td class="width-15 active">客户名称:</td>
+                           <td class="width-35" colspan="3">
+                               <span title="${workClientInfo.name}">${fns:abbr(workClientInfo.name,30)}</span>
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active">组织机构代码:</td>
+                           <td class="width-35" colspan="3">
+                               ${workClientInfo.orUnicode}
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active">客户性质:</td>
+                           <td class="width-35">
+                               ${fns:getMainDictLabel(workClientInfo.companyType, 'company_type', '')}
+                           </td>
+                           <td class="width-15 active">所在行业:</td>
+                           <td class="width-35">
+                               ${fns:getMainDictLabel(workClientInfo.companyIndustry, 'company_industry', '')}
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active">客户类型:</td>
+                           <td class="width-35">
+                               ${fns:getMainDictLabel(workClientInfo.clientType, 'client_type', '')}
+                           </td>
+                           <td class="width-15 active">信用等级:</td>
+                           <td class="width-35">
+                               ${fns:getDictLabel(workClientInfo.creditRank, 'credit_rank', '')}
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active">所在地区:</td>
+                           <td class="width-35">
+                               ${workClientInfo.area.name}
+                           </td>
+                           <td class="width-15 active">法人代表:</td>
+                           <td class="width-35">
+                               ${workClientInfo.lawerPresint}
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active">邮政编码:</td>
+                           <td class="width-35">
+                               ${workClientInfo.zipCode}
+                           </td>
+                           <td class="width-15 active">传真:</td>
+                           <td class="width-35">
+                               ${workClientInfo.fax}
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active">电子邮箱:</td>
+                           <td class="width-35" colspan="3">
+                               ${workClientInfo.email}
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active">开户银行及开户账号:</td>
+                           <td class="width-35" colspan="3">
+                               &lt;%&ndash;table table-striped table-bordered table-hover table-condensed dataTables-example dataTable&ndash;%&gt;
+                               <table id="bankinfo" class="table table-striped table-bordered table-condensed">
+                                   <thead>
+                                   <tr>
+                                       &lt;%&ndash;<th> <input type="checkbox" class="i-checks"></th>&ndash;%&gt;
+                                       <th  class="sort-column name">序号</th>
+                                       <th  class="sort-column companyType">开户银行</th>
+                                       <th  class="sort-column clientType">开户账户</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>
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active">税务号:</td>
+                           <td class="width-35" colspan="3">
+                               ${workClientInfo.taxId}
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active">注册地址:</td>
+                           <td class="width-35" colspan="3">
+                               ${workClientInfo.registerAddress}
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active">详细地址:</td>
+                           <td class="width-35" colspan="3">
+                               ${workClientInfo.address}
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active">公司网址:</td>
+                           <td class="width-35" colspan="3">
+                               <span title="${workClientInfo.companyUrl}">${fns:abbr(workClientInfo.companyUrl,30)}</span>
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active">单位简介:</td>
+                           <td class="width-35" colspan="3">
+                              ${workClientInfo.remarks}
+                           </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-striped table-bordered table-hover table-condensed dataTables-example">
+                            <thead>
+                                <tr>
+                                       <th>序号</th>
+                                       <th>联系人姓名</th>
+                                       <th>职务</th>
+                                       <th>QQ</th>
+                                       <th>联系人电话</th>
+                                       <th>联系人手机</th>
+                                       <th>E-mail</th>
+                                       <th>是否默认联系人</th>
+                                   </tr>
+                                   </thead>
+                                   <tbody id="workClientLinkmanList">
+                                   <c:forEach items="${workClientInfo.workClientLinkmanList}" var="workClientLinkman" varStatus="status">
+                                       <tr>
+                                           <td>${status.index + 1}</td>
+                                           <td>${workClientLinkman.name}</td>
+                                           <td>${workClientLinkman.position}</td>
+                                           <td>${workClientLinkman.qq}</td>
+                                           <td>${workClientLinkman.linkPhone}</td>
+                                           <td>${workClientLinkman.linkMobile}</td>
+                                           <td>${workClientLinkman.email}</td>
+                                           <td>${workClientLinkman.isDefault}</td>
+                                       </tr>
+                                   </c:forEach>
+                                   </tbody>
+                                   <c:if test="${linkManSize == 0}">
+                            <tr>
+                                <td colspan="8">暂无数据</td>
+                            </tr>
+                            </c:if>
+
+                         </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 " >
+                       <tr>
+                           <td class="width-15 active">客户资料:</td>
+                           <td class="width-35" colspan="3">
+                               <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="${attachmentClientList}" var="attachment" varStatus="status">
+                                       <tr>
+                                           <td>${status.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}" 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="${attachment.url}">${attachment.attachmentName}</a></td>
+                                                       </c:when>
+                                                       <c:otherwise>
+                                                           <td><a href="javascript:void(0)" onclick="openDialogViewPre('预览','${ctx}/previewController/previewUrl?fileUrl=${attachment.url}','80%','80%')">${attachment.attachmentName}</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="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>
+                                           </td>
+                                       </tr>
+                                   </c:forEach>
+                               </table>
+                           </td>
+                       </tr>
+                    </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-striped table-bordered table-hover table-condensed dataTables-example">
+                            <tbody>
+                               <tr>
+                                   <td class="width-15 active"> 合同名称</td>
+                                   <td class="width-35" colspan="3">
+                                       ${workContractInfo.name}
+                                   </td>
+                               </tr>
+                               <tr>
+                                   <td class="width-15 active"> 合同编号</td>
+                                   <td class="width-35">
+                                       ${workContractInfo.contractNum}
+                                   </td>
+                                   <td class="width-15 active"> 合同类别</td>
+                                   <td class="width-35">
+                                       ${fns:getDictLabel(workContractInfo.contractType, 'contractType', '')}
+                                   </td>
+                               </tr>
+                               <tr>
+                                   <td class="width-15 active"> 合同类型说明</td>
+                                   <td class="width-35" colspan="3">
+                                   </td>
+                               </tr>
+                               <tr>
+                                   <td class="width-15 active"> 客户名称</td>
+                                   <td class="width-35">
+                                       ${workContractInfo.client.name}
+                                   </td>
+                                   <td class="width-15 active"> 合同签订日期</td>
+                                   <td class="width-35">
+                                       <fmt:formatDate value="${workContractInfo.contractDate}" pattern="yyyy-MM-dd"/>
+                                   </td>
+                               </tr>
+                               <tr>
+                                   <td class="width-15 active"> 合同金额</td>
+                                   <td class="width-35" colspan="3">
+                                       ${workContractInfo.contractPrice}
+                                   </td>
+                               </tr>
+                               <tr>
+                                   <td class="width-15 active"> 收费标准</td>
+                                   <td class="width-35" colspan="3">
+                                       ${workContractInfo.contractFee}
+                                   </td>
+                               </tr>
+                               <tr>
+                                   <td class="width-15 active"> 收费标准说明</td>
+                                   <td class="width-35" colspan="3">
+                                   </td>
+                               </tr>
+                               <tr>
+                                   <td class="width-15 active"> 合同特别条款</td>
+                                   <td class="width-35" colspan="3">
+                                       ${workContractInfo.contractSpecial}
+                                   </td>
+                               </tr>
+                               <tr>
+                                   <td class="width-15 active">负责公司/部门 </td>
+                                   <td class="width-35" colspan="3">
+                                       ${workContractInfo.chargeCompanyName}
+                                   </td>
+                               </tr>
+                               <tr>
+                                   <td class="width-15 active"> 创建人</td>
+                                   <td class="width-35" colspan="3">
+                                       ${workContractInfo.createName}
+                                   </td>
+                               </tr>
+                               <tr>
+                                   <td class="width-35 active" colspan="4"> 合同资料</td>
+                               </tr>
+                               <tr>
+                                   <td class="width-35" colspan="4">
+                                       <table id="attachments"  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="${attachmentContractList}" var="attachment" varStatus="status">
+                                           <tr>
+                                               <td>${status.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}" 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="${attachment.url}">${attachment.attachmentName}</a></td>
+                                                           </c:when>
+                                                           <c:otherwise>
+                                                               <td><a href="javascript:void(0)" onclick="openDialogView('预览','${ctx}/previewController/previewUrl?fileUrl=${attachment.url}','80%','80%')">${attachment.attachmentName}</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="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>
+                                               </td>
+                                        </tr>
+                                           </c:forEach>
+                                       </table>
+                                   </td>
+                               </tr>
+                       </tbody>
+                </table>
+                </div>
+            </div>--%>
+        </div>
+        </div>
+</div>
+</body>
+</html>

+ 385 - 0
src/main/webapp/webpage/modules/workengineeringproject/workEngineeringProjectAllocation.jsp

@@ -0,0 +1,385 @@
+<%@ 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()){
+              $("#name").val("allocation");
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+        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: '#workStartDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#workEndDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+		});
+
+        function setValue(obj){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workreimbursement/workReimbursement/getProjectInfoo',
+                data:{
+                    "obj":obj
+                },
+                success:function(data){
+                    var d = JSON.parse(data);
+                    $("#projectNumber").val(d.projectNumber);
+                }
+            })
+        }
+
+        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);
+                    $("#contractName").val(d.clientName);
+                    $("#linkmanName").val(d.linkmanName);
+                    $("#linkmanPhone").val(d.linkmanPhone);
+                    $("#linkmanEmail").val(d.linkmanEmail);
+                    $("#linkmanPosition").val(d.linkmanPosition);
+
+                }
+            })
+        }
+
+        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>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workEngineeringProject" action="${ctx}/workengineeringproject/workEngineeringProject/saveAudit" method="post" class="form-horizontal">
+            <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"/>
+            <form:hidden path="id"/>
+            <form:hidden path="name" />
+
+		<sys:message content="${message}"/>
+
+			<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+               <tbody>
+                       <tr>
+                           <td class="width-20 active" rowspan="2"><label class="pull-right">部门安排:</label></td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active"><label class="pull-right">主办</br>公司/部门:<font color="red">*</font></label></td>
+                           <td class="width-25">
+                               <sys:treeselect id="hostOffice" name="hostOffice" value="${workEngineeringProject.hostOffice}" labelName="hostOfficeName" labelValue="${workEngineeringProject.hostOfficeName}"
+                                               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">协办</br>公司/部门:</label></td>
+                           <td class="width-25">
+                               <sys:treeselect id="jointlyOffice" name="jointlyOffice" value="${workEngineeringProject.jointlyOffice}" labelName="jointlyOfficeName" labelValue="${workEngineeringProject.jointlyOfficeName}"
+                                               title="部门" url="/sys/office/treeDataAll?type=2" cssClass="form-control" allowClear="true" notAllowSelectParent="true"/>
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-20 active" rowspan="3"><label class="pull-right">人员安排:</label></td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active"><label class="pull-right">主办公司/部门</br>项目负责人:<font color="red">*</font></label></td>
+                           <td class="width-25">
+                               <sys:treeselect id="hostOfficeMaster" name="hostOfficeMaster" value="${workEngineeringProject.hostOfficeMaster}" labelName="hostOfficeMasterName" labelValue="${workEngineeringProject.hostOfficeMasterName}"
+                                               title="负责人" url="/sys/office/treeDataAll?type=3&isAll=false" cssClass="form-control required"  checked="true" notAllowSelectParent="true"/>
+                                </td>
+                           <td class="width-15 active"><label class="pull-right">协办公司/部门</br>项目负责人:</label></td>
+                           <td class="width-25">
+                               <sys:treeselect id="jointlyOfficeMaster" name="jointlyOfficeMaster" value="${workEngineeringProject.jointlyOfficeMaster}" labelName="jointlyOfficeMasterName" labelValue="${workEngineeringProject.jointlyOfficeMasterName}"
+                                               title="负责人" url="/sys/office/treeDataAll?type=3&isAll=false" cssClass="form-control"  checked="true" notAllowSelectParent="true"/>
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active"><label class="pull-right">主办公司/部门</br>项目组成员:</label></td>
+                           <td class="width-25">
+                               <sys:treeselect id="hostOfficeMember" name="hostOfficeMember" value="${workEngineeringProject.hostOfficeMember}" labelName="hostOfficeMemberNames" labelValue="${workEngineeringProject.hostOfficeMemberNames}"
+                                               title="选择成员" url="/sys/office/treeDataAll?type=3&isAll=false" cssClass="form-control" notAllowSelectParent="true" checked="true"/>
+                           </td>
+                           <td class="width-15 active"><label class="pull-right">协办公司/部门</br>项目组成员:</label></td>
+                           <td class="width-25">
+                               <sys:treeselect id="jointlyOfficeMember" name="jointlyOfficeMember" value="${workEngineeringProject.jointlyOfficeMember}" labelName="jointlyOfficeMemberNames" labelValue="${workEngineeringProject.jointlyOfficeMemberNames}"
+                                               title="选择成员" url="/sys/office/treeDataAll?type=3&isAll=false" cssClass="form-control" checked="true" notAllowSelectParent="true"/>
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-20 active" rowspan="2"><label class="pull-right">审批:</label></td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active"><label class="pull-right">审批意见:</label></td>
+                           <td class="width-25" colspan="3">
+                               <form:textarea path="act.comment" class="form-control" rows="3" maxlength="20"/>
+                           </td>
+                       </tr>
+                      <%--<tr>
+                          <td class="width-20 active" rowspan="3"><label class="pull-right">合同信息:</label></td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"><label class="pull-right">合同名称:<font color="red">*</font></label></td>
+                          <td class="width-25" colspan="3">
+                              <sys:gridselectContract url="${ctx}/workengineeringproject/workEngineeringProject/selectcontractId" id="contractId" type="1,2" name="contractId.id"  value="${workEngineeringProject.contractId.id}"  title="选择合同信息" labelName="contractId.name"
+                                                      labelValue="${workEngineeringProject.contractId.name}" cssClass="form-control required" fieldLabels="合同信息id" fieldKeys="name" searchLabel="合同名称" searchKey="name" ></sys:gridselectContract>
+                          </td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"><label class="pull-right">合同编号:<font color="red">*</font></label></td>
+                          <td class="width-25">
+                              <form:input path="contractId.contractNum" id="contractNum" htmlEscape="false"  readonly="true"   class="form-control " cssStyle="width: 200px;"/>
+                          </td>
+                      </tr>
+                      <tr>
+                          <td class="width-20 active" rowspan="7"><label class="pull-right">项目信息:</label></td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"><label class="pull-right">项目名称:<font color="red">*</font></label></td>
+                          <td class="width-25" colspan="3">
+                              &lt;%&ndash;<sys:gridselectcallproject url="${ctx}/workengineeringproject/workEngineeringProject/selectprojectId" id="projectId" name="projectId.id"  value="${workEngineeringProject.projectId.id}"  title="选择报销项目" labelName="workEngineeringProject.projectId.projectName"
+                                                         labelValue="${workEngineeringProject.projectId.projectName}" cssClass="form-control required" fieldLabels="工程" fieldKeys="projectName" searchLabel="工程名称" searchKey="projectName" ></sys:gridselectcallproject>&ndash;%&gt;
+                                  <form:input path="projectId.name" id="" htmlEscape="false" readonly="true"  class="form-control required"  cssStyle="width: 200px;"/>
+                          </td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"><label class="pull-right">项目编号:<font color="red">*</font></label></td>
+                          <td class="width-25">
+                              <form:input path="projectId.number" id="projectNumber" htmlEscape="false"  readonly="true"   class="form-control "  cssStyle="width: 200px;"/>
+                          </td>
+                          <td class="width-15 active"><label class="pull-right">业务类型:</label></td>
+                          <td class="width-25">
+                              <form:select path="businessType" class="form-control ">
+                                  <form:option value="" label=""/>
+                                  <form:options items="${fns:getMainDictList('business_type')}" itemLabel="label" itemValue="value" htmlEscape="false" cssStyle="width: 200px;"/>
+                              </form:select>
+                          </td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"><label class="pull-right">预送审金额:</label></td>
+                          <td class="width-25">
+                              <form:input path="preTrialAmount" htmlEscape="false"  readonly="true"  class="form-control  number"/>
+
+                          </td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"><label class="pull-right">工作开始时间:<font color="red">*</font></label></td>
+                          <td class="width-25">
+                              <input id="workStartDate" name="workStartDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date "
+                                     value="<fmt:formatDate value="${workEngineeringProject.workStartDate}" pattern="yyyy-MM-dd"/>"/>
+                          </td>
+                          <td class="width-25"> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;至
+                          </td>
+                          <td class="width-25" colspan="2">
+                              <input id="workEndDate" name="workEndDate" type="text" readonly="readonly" disabled="true"  maxlength="20" class="laydate-icondate form-control layer-date "
+                                     value="<fmt:formatDate value="${workEngineeringProject.workEndDate}" pattern="yyyy-MM-dd"/>"/>
+                          </td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"><label class="pull-right">业主要求:</label></td>
+                          <td class="width-25" colspan="3">
+                              <form:textarea path="emploperRequire" htmlEscape="false" rows="3"  readonly="true"  class="form-control "/>
+                          </td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"><label class="pull-right">所属公司/部门:</label></td>
+                          <td class="width-25">
+                              <sys:treeselect id="office" name="office.id" value="${workEngineeringProject.office.id}" disabled="d" labelName="office.name" labelValue="${workEngineeringProject.office.name}"
+                                              title="部门" url="/sys/office/treeData?type=2" cssClass="form-control required" allowClear="true" notAllowSelectParent="true"/>
+
+                          </td>
+                          <td class="width-15 active"><label class="pull-right">工程所在地:</label></td>
+                          <td class="width-25">
+                              <sys:treeselect id="area" name="area.id" value="${workEngineeringProject.area.id}" labelName="area.name" labelValue="${workEngineeringProject.area.name}"
+                                              title="区域" url="/sys/area/treeData" cssClass="form-control required" allowClear="true" notAllowSelectParent="true"/>
+                          </td>
+                      </tr>
+                      <tr>
+                          <td class="width-20 active" rowspan="4"><label class="pull-right">客户信息:</label></td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"><label class="pull-right"> 客户单位:<font color="red">*</font></label></td>
+                          <td class="width-25" colspan="3">
+                              <form:input path="workClientInfo.name" id="contractName" htmlEscape="false"  readonly="true"  class="form-control "/>
+                          </td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"><label class="pull-right">联系人姓名:</label></td>
+                          <td class="width-25">
+                              <form:input path="workClientLinkman.name" id="linkmanName" htmlEscape="false"  readonly="true"  class="form-control " cssStyle="width: 200px;"/>
+                          </td>
+                          <td class="width-15 active"><label class="pull-right">职务:</label></td>
+                          <td class="width-25">
+                              <form:input path="workClientLinkman.position" id="linkmanPosition" htmlEscape="false"  readonly="true"  class="form-control " cssStyle="width: 200px;"/>
+                          </td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"><label class="pull-right"> 联系方式:</label></td>
+                          <td class="width-25">
+                              <form:input path="workClientLinkman.linkPhone" id="linkmanPhone" htmlEscape="false"  readonly="true"  class="form-control " cssStyle="width: 200px;"/>
+                          </td>
+                          <td class="width-15 active"><label class="pull-right">E-mail:</label></td>
+                          <td class="width-25">
+                              <form:input path="workClientLinkman.email" id="linkmanEmail" htmlEscape="false"  readonly="true"  class="form-control " cssStyle="width: 200px;"/>
+                          </td>
+                      </tr>--%>
+                       <tr>
+                           <td class="width-20 active" rowspan="2"><label class="pull-right">合同信息:</label></td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active"><label class="pull-right">合同名称:<font color="red">*</font></label></td>
+                           <c:choose>
+                               <c:when test="${workEngineeringProject.isExt eq 1}">
+                                   <td class="width-25" colspan="3">
+                                           ${workEngineeringProject.contractInfoName}
+                                   </td>
+                               </c:when>
+                               <c:otherwise>
+                                   <td class="width-25">
+                                           ${workEngineeringProject.contractId.name}
+                                   </td>
+                                   <td class="width-15 active"><label class="pull-right">合同编号:<font color="red">*</font></label></td>
+                                   <td class="width-25">
+                                           ${workEngineeringProject.contractId.contractNum}
+                                   </td>
+                               </c:otherwise>
+                           </c:choose>
+                       </tr>
+                       <tr>
+                           <td class="width-20 active" rowspan="7"><label class="pull-right">项目信息:</label></td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active"><label class="pull-right">项目名称:<font color="red">*</font></label></td>
+                           <td class="width-25" colspan="3">
+                                   ${workEngineeringProject.projectId.name}
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active"><label class="pull-right">项目编号:<font color="red">*</font></label></td>
+                           <td class="width-25">
+                                   ${workEngineeringProject.projectId.number}
+                           </td>
+                           <td class="width-15 active"><label class="pull-right">业务类型:</label></td>
+                           <td class="width-25">
+                                   ${fns:getMainDictLabel(workEngineeringProject.businessType, 'business_type', '')}
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active"><label class="pull-right">预送审金额(元):</label></td>
+                           <td class="width-25">
+                                   ${workEngineeringProject.preTrialAmount}
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active"><label class="pull-right">工作开始时间:<font color="red">*</font></label></td>
+                           <td class="width-25" colspan="3">
+                               <fmt:formatDate value="${workEngineeringProject.workStartDate}" pattern="yyyy-MM-dd"/>
+                               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;至&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+                               <fmt:formatDate value="${workEngineeringProject.workEndDate}" pattern="yyyy-MM-dd"/>
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active"><label class="pull-right">业主要求:</label></td>
+                           <td class="width-25" colspan="3">
+                                   ${workEngineeringProject.emploperRequire}
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active"><label class="pull-right">所属公司/部门:</label></td>
+                           <td class="width-25">
+                                   ${workEngineeringProject.office.name}
+                           </td>
+                           <td class="width-15 active"><label class="pull-right">工程所在地:</label></td>
+                           <td class="width-25">
+                                   ${workEngineeringProject.area.name}
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-20 active" rowspan="4"><label class="pull-right">客户信息:</label></td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active"><label class="pull-right"> 客户单位:<font color="red">*</font></label></td>
+                           <td class="width-25" colspan="3">
+                                   ${workEngineeringProject.workClientInfo.name}
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active"><label class="pull-right">联系人姓名:</label></td>
+                           <td class="width-25">
+                                   ${workEngineeringProject.workClientLinkman.name}
+                           </td>
+                           <td class="width-15 active"><label class="pull-right">职务:</label></td>
+                           <td class="width-25">
+                                   ${workEngineeringProject.workClientLinkman.position}
+                           </td>
+                       </tr>
+                       <tr>
+                           <td class="width-15 active"><label class="pull-right"> 联系方式:</label></td>
+                           <td class="width-25">
+                                   ${workEngineeringProject.workClientLinkman.linkPhone}
+                           </td>
+                           <td class="width-15 active"><label class="pull-right">E-mail:</label></td>
+                           <td class="width-25">
+                                   ${workEngineeringProject.workClientLinkman.email}
+                           </td>
+                       </tr>
+                 </tbody>
+            </table>
+	</form:form>
+</body>
+</html>

+ 157 - 0
src/main/webapp/webpage/modules/workengineeringproject/workEngineeringProjectAudit.jsp

@@ -0,0 +1,157 @@
+<%@ 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;
+		}
+		
+		$('#btnPresent').click(function () { 
+
+			$.ajax({
+	             url:"${ctx}/workprequalification/workPrequalification/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);
+					}
+				}
+			});
+            //只做查看时,禁用掉以下标签
+            /*$('input,textarea,select').attr('disabled',<%=request.getAttribute("disabled")%>);
+            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>当前步骤--[${workEngineeringProject.act.taskName}] </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="workEngineeringProject" action="${ctx}/workengineeringproject/workEngineeringProject/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"/>
+		<%--	<taskId=${task.id}&taskName=${fns:urlEncode(task.name)}&taskDefKey=${task.taskDefinitionKey}&procInsId=${task.processInstanceId}&procDefId=${task.processDefinitionId}&status=${status}></taskId>
+		--%><sys:message content="${message}"/>
+		<c:set var="status" value="${workEngineeringProject.status}" />
+
+			<c:choose>
+				<c:when test="${workEngineeringProject.isExt eq 1}">
+					<div class="control-group">
+						<label class="control-label">合同名称:</label>
+						<div class="controls">
+								${workEngineeringProject.contractInfoName}
+						</div>
+					</div>
+				</c:when>
+				<c:otherwise>
+					<div class="control-group">
+						<label class="control-label">合同名称:</label>
+						<div class="controls">
+								${workEngineeringProject.contractId.name}
+						</div>
+					</div>
+					<div class="control-group">
+						<label class="control-label">合同编号:</label>
+						<div class="controls">
+								${workEngineeringProject.contractId.contractNum}
+						</div>
+					</div>
+				</c:otherwise>
+			</c:choose>
+			<div class="control-group">
+				<label class="control-label">项目名称:</label>
+				<div class="controls">
+						${workEngineeringProject.projectId.name}
+				</div>
+			</div>
+			<div class="control-group">
+				<label class="control-label">项目编号:</label>
+				<div class="controls">
+						${workEngineeringProject.projectId.number}
+				</div>
+			</div>
+			<div class="control-group">
+				<label class="control-label">备注信息:</label>
+				<div class="controls">
+						${workEngineeringProject.remarks}
+				</div>
+			</div>
+
+			<div class="control-group">
+				<label class="control-label">审批意见:</label>
+				<div class="controls">
+					<form:textarea path="act.comment" class="form-control" rows="3" maxlength="20"/>
+				</div>
+			</div>
+			<div class="form-actions">
+				<c:if test="${workEngineeringProject.act.taskDefKey eq 'audit'}">
+					<input id="btnSubmit" class="btn btn-primary" type="submit" value="同 意" onclick="$('#flag').val('yes')"/>&nbsp;
+					<input id="btnSubmit" class="btn btn-inverse" type="submit" value="驳 回" onclick="$('#flag').val('no')"/>&nbsp;
+				</c:if>
+				<input id="btnCancel" class="btn" type="button" value="返 回" onclick="history.go(-1)"/>
+			</div>
+			<act:flowChart procInsId="${workEngineeringProject.processInstanceId}"/>
+			<act:histoicFlow procInsId="${workEngineeringProject.processInstanceId}"/>
+	</form:form>
+	</div>
+	</div>
+	</div>
+</body>
+</html>

+ 463 - 0
src/main/webapp/webpage/modules/workengineeringproject/workEngineeringProjectForm.jsp

@@ -0,0 +1,463 @@
+<%@ 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(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+              // 回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+              if(obj == 3) {
+                  $("#remarks").val("yes");
+              }else if(obj == 4){
+                  $("#remarks").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);
+					}
+				}
+			});
+            $("input[name='isExt']").on('ifChecked', function(event){
+                var radioVal = $(this).val();
+                if(radioVal == 0){
+                    $("#td1").removeClass("hide");
+                    $("#td3").removeClass("hide");
+                    $("#td4").removeClass("hide");
+                    $("#td2").addClass("hide");
+                    $("#tr1").show()
+                }else{
+                    $("#td1").addClass("hide");
+                    $("#td3").addClass("hide");
+                    $("#td4").addClass("hide");
+                    $("#td2").removeClass("hide");
+                    $("#tr1").hide()
+                }
+            });
+            if("${workEngineeringProject.isExt}" == "1"){
+                $("#ext1").iCheck('check')
+            }else{
+                $("#ext").iCheck('check')
+            }
+		});
+        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";
+            }
+        }
+        function setValue(obj){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workreimbursement/workReimbursement/getProjectInfoo',
+                data:{
+                    "obj":obj
+                },
+                success:function(data){
+                    var d = JSON.parse(data);
+                    $("#projectNumber").val(d.projectNumber);
+                }
+            })
+        }
+
+        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}/workengineeringproject/workEngineeringProject/getClientInfo',
+                data:{
+                    "obj":obj
+                },
+                success:function(data){
+                    var d = JSON.parse(data);
+                    linkManList = d;
+                    console.log("d==="+d);
+                    var defaultLinkMan = d[0];
+                    $("#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) {
+            console.log("linkManList==="+linkManList);
+            if(target=='linkman'){
+                var manList = null ;
+                //以自选为主
+                if(linkManList != null){
+                    manList = linkManList; //自选的
+                    console.log(1);
+                }else{
+                    manList = linkManList_contract; //合同关联的
+                    console.log(2);
+                }
+                if(manList ==null){
+                    console.log(3);
+                    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==0){
+                $("#contractIdtd").show();
+                $("#numtd").show();
+                $("#contractNumtd").show();
+                $("#contractInfoNametd").hide();
+            }else{
+                $("#contractIdtd").hide();
+                $("#numtd").hide();
+                $("#contractNumtd").hide();
+                $("#contractInfoNametd").show();
+            }
+        }
+
+        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>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workEngineeringProject" action="${ctx}/workengineeringproject/workEngineeringProject/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<form:hidden path="remarks"/>
+		<sys:message content="${message}"/>
+
+			<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+               <tbody>
+                      <%--<tr>
+                          <td class="width-20 active" rowspan="3"><label class="pull-right">合同信息:</label></td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"><label class="pull-right"> 是否签署合同  :</label></td>
+                          <td class="width-35" colspan="3">
+                              <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>
+                          </td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"><label class="pull-right">合同名称:<font color="red">*</font></label></td>
+                          <td class="width-25" id="td1">
+                              <sys:gridselectContract url="${ctx}/workengineeringproject/workEngineeringProject/selectcontractId" id="contractId" isTotal="" name="contractId.id" type="1,2"  value="${workEngineeringProject.contractId.id}"  title="选择合同名称" labelName="contractId.name"
+                                                      labelValue="${workEngineeringProject.contractId.name}" cssClass="form-control required" fieldLabels="合同信息" fieldKeys="name" searchLabel="合同名称" searchKey="name" ></sys:gridselectContract>
+                          </td>
+                          <td class="width-15 active" id="td3"><label class="pull-right">合同编号:<font color="red">*</font></label></td>
+                          <td class="width-25" id="td4">
+                              <form:input path="contractId.contractNum" id="contractNum" htmlEscape="false"  readonly="true"   class="form-control required" cssStyle="width: 200px;"/>
+                          </td>
+                          <td class="width-35 hide" colspan="3" id="td2">
+                              <form:input path="contractInfoName" id="contractInfoName" htmlEscape="false"    class="form-control required"/>
+                          </td>
+                      </tr>--%>
+                      <tr>
+                          <td class="width-20 active" rowspan="3" ><label class="pull-right">是否签署合同:</label></td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"><label class="pull-right">合同标识:</label></td>
+                          <td class="width-25" colspan="3">
+                              <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>
+                          </td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"><label class="pull-right">合同名称:</label></td>
+                          <td class="width-25" id="td1">
+                            <%--  <sys:gridselectContract url="${ctx}/workengineeringproject/workEngineeringProject/selectcontractId" id="contractId" isTotal="" name="contractId.id" type="1,2"  value="${workEngineeringProject.contractId.id}"  title="选择合同名称" labelName="contractId.name"
+                                                      labelValue="${workEngineeringProject.contractId.name}" cssClass="form-control required" fieldLabels="合同信息" fieldKeys="contractName" searchLabel="合同名称" searchKey="name" ></sys:gridselectContract>--%>
+                                <sys:gridselectContract url="${ctx}/workengineeringproject/workEngineeringProject/selectcontractId" type="1,2" isTotal="" id="contractId" name="contractId.id"  value="${workEngineeringProject.contractId.id}"  title="选择合同" labelName="contractId.name"
+                                                        labelValue="${workEngineeringProject.contractId.name}" cssClass="form-control required" fieldLabels="合同信息" fieldKeys="name" searchLabel="合同名称" searchKey="name" ></sys:gridselectContract>
+                          </td>
+                          <td  class="width-25 hide" colspan="3" id="td2">
+                              <form:input path="contractInfoName" id="contractInfoName" htmlEscape="false"    class="form-control required"/>
+                          </td>
+                          <td class="width-15 active" id="td3"><label class="pull-right">合同编号:</label></td>
+                          <td class="width-25" id="td4">
+                              <form:input path="contractId.contractNum" id="contractNum" htmlEscape="false"  readonly="true"   class="form-control required"/>
+                          </td>
+                      </tr>
+                      <%--<tr >
+                          <td class="width-15 active" id="td3"><label class="pull-right">合同编号:</label></td>
+                          <td class="width-25" id="td4">
+                              <form:input path="contractId.contractNum" id="contractNum" htmlEscape="false"  readonly="true"   class="form-control required" cssStyle="width: 200px;"/>
+                          </td>
+                      </tr>--%>
+                      <tr>
+                          <td class="width-20 active" rowspan="8"><label class="pull-right">项目信息:</label></td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"><label class="pull-right">总项目名称:</label></td>
+                          <td class="width-25" colspan="3">
+                              <c:choose>
+                                  <c:when test="${not empty workEngineeringProject.totalProjectName}">
+                                      <form:input path="totalProjectName" readonly="true" class="form-control" />
+                                  </c:when>
+                                  <c:otherwise>
+                                      <sys:gridselectcalltotalproject url="${ctx}/workengineeringproject/workEngineeringProject/selectprojectTotal" id="totalProjectId" name="totalProjectId" isTotal="1"  value="${workEngineeringProject.totalProjectId}"  title="选择总项目" labelName="workEngineeringProject.totalProjectName"
+                                                                      labelValue="${workEngineeringProject.totalProjectName}" cssClass="form-control" fieldLabels="工程" fieldKeys="totalProjectName" searchLabel="工程名称" searchKey="name" ></sys:gridselectcalltotalproject>
+                                  </c:otherwise>
+                              </c:choose>
+                          </td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"><label class="pull-right"><font color="red">*</font>项目名称:</label></td>
+                          <td class="width-25">
+                                  <form:input path="projectId.name" id="" htmlEscape="false"  class="form-control required" />
+                          </td>
+                          <td class="width-15 active"><label class="pull-right"><font color="red">*</font>项目编号:</label></td>
+                          <td class="width-25">
+                              <form:input path="projectId.number" id="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 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"><font color="red">*</font>工作开始时间:</label></td>
+                          <td class="width-25">
+                              <input class="form-control required layer-date laydate-icon" id="workStartDate" name="workStartDate" value="<fmt:formatDate value="${workEngineeringProject.workStartDate}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+                          </td>
+                          <td class="width-15 active"><label class="pull-right"><font color="red">*</font>业务类型:</label></td>
+                          <td class="width-25">
+                              <form:select path="businessType" class="form-control required">
+                                  <form:option value="" label=""/>
+                                  <form:options items="${fns:getMainDictList('business_type')}" itemLabel="label" itemValue="value" htmlEscape="false" />
+                              </form:select>
+                          </td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"> <label class="pull-right"><font color="red">*</font>工作结束时间:</label></td>
+                          <td class="width-25">
+                              <input class="form-control required layer-date laydate-icon" id="workEndDate" name="workEndDate" value="<fmt:formatDate value="${workEngineeringProject.workEndDate}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+                          </td>
+                          <td class="width-15 active"><label class="pull-right">预送审金额(元):</label></td>
+                          <td class="width-25">
+                              <form:input path="preTrialAmount" htmlEscape="false"    class="form-control  number"/>
+
+                          </td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"><label class="pull-right">业主要求:</label></td>
+                          <td class="width-25" colspan="3">
+                              <form:textarea path="emploperRequire" htmlEscape="false" rows="3"    class="form-control "/>
+                          </td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"><label class="pull-right"><font color="red">*</font>所属公司/部门:</label></td>
+                          <td class="width-25">
+                              <sys:treeselect id="office" name="office.id" value="${workEngineeringProject.office.id}" labelName="office.name" labelValue="${workEngineeringProject.office.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-25">
+                              <sys:treeselect id="area" name="area.id" value="${workEngineeringProject.area.id}" labelName="area.name" labelValue="${workEngineeringProject.area.name}"
+                                              title="区域" url="/sys/area/treeData" cssClass="form-control required" allowClear="true" notAllowSelectParent="true"/>
+
+                          </td>
+                      </tr>
+                      <tr>
+                          <td class="width-20 active" rowspan="4"><label class="pull-right">客户信息:</label></td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"><label class="pull-right"> <font color="red">*</font>客户单位:</label></td>
+                          <td class="width-25" colspan="3">
+                              <sys:gridselect url="${ctx}/workbidproject/workBidProject/selectbidCompany" id="client" name="workClientInfo.id"  value="${workEngineeringProject.workClientInfo.id}"  title="选择客户单位" labelName="workClientInfo.name"
+                                              labelValue="${workEngineeringProject.workClientInfo.name}" cssClass="form-control required" fieldLabels="客户" fieldKeys="name" searchLabel="客户名称" searchKey="name"  ></sys:gridselect>
+
+                          </td>
+                      </tr>
+                      <tr>
+                          <td class="width-15 active"><label class="pull-right">查看联系人:</label></td>
+                          <td class="width-25">
+                              <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-25">
+                              <form:input path="workClientInfo.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-25">
+                                  <form:input path="workClientInfo.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-25">
+                                  <form:input path="workClientInfo.workClientLinkmanList[0].email" id="linkmanEmail" readonly="true" class="form-control linkman_attr"/>
+                          </td>
+                      </tr>
+                 </tbody>
+            </table>
+	</form:form>
+</body>
+</html>

+ 141 - 0
src/main/webapp/webpage/modules/workengineeringproject/workEngineeringProjectHistoricList.jsp

@@ -0,0 +1,141 @@
+<%@ 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}/workengineeringproject/workEngineeringProject/list">项目登记列表</a></li>
+					<li><a href="${ctx}/workengineeringproject/workEngineeringProject/workEngineeringProjectTodoList">待办任务</a></li>
+					<li  class="active"><a href="${ctx}/workengineeringproject/workEngineeringProject/workEngineeringProjectHistoricList">已办任务</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}/workengineeringproject/workEngineeringProject/workEngineeringProjectHistoricList" method="get" class="form-inline">
+						<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+						<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+						<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+						<div class="form-group">
+							<label>创建时间:</label>
+							<input id="beginDate"  name="beginDate"  type="text" readonly="readonly" maxlength="20" style="width:200px;" class="laydate-icondate form-control layer-date input-sm"
+								   value="<fmt:formatDate value="${act.beginDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+							 -- 
+							<input id="endDate" name="endDate" type="text" readonly="readonly" maxlength="20" style="width:200px;" class="laydate-icondate form-control layer-date input-sm"
+								   value="<fmt:formatDate value="${act.endDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+						</div>
+					</form:form>
+					<br/>
+				</div>
+			</div>
+			<!-- 工具栏 -->
+			<div class="row">
+				<div class="col-sm-12">
+					<div class="pull-left">
+						<button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+					</div>
+					<div class="pull-right">
+						<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+						<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+					</div>
+				</div>
+			</div>
+			<!-- 表格 -->
+			<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+				<thead>
+				<tr>
+                    <th style="text-align: center;width: 8%">流程发起人</th>
+					<th style="text-align: center;width: 8%">流程名称</th>
+					<th style="text-align: center;width: 8%">流程版本</th>
+					<th style="text-align: center;width: 20%">项目名称</th>
+					<th style="text-align: center;width: 10%">项目编号</th>
+					<th style="text-align: center;width: 8%">项目类型</th>
+					<th style="text-align: center;width: 20%">备注信息</th>
+					<th style="text-align: center;width: 13%">创建时间</th>
+					<%--<th>操作</th>--%>
+				</tr>
+				</thead>
+				<tbody>
+				<c:choose>
+				<c:when test="${not empty list}">
+				<c:forEach items="${list}" var="workengineeringproject">
+					<c:set var="task" value="${workengineeringproject.act.task}" />
+					<c:set var="vars" value="${workengineeringproject.act.vars}" />
+					<c:set var="procDef" value="${workengineeringproject.act.procDef}" />
+					<c:set var="status" value="${workengineeringproject.act.status}" />
+					<tr>
+						<td>${workengineeringproject.act.vars.map.applyUserId}</td>
+						<td>${procDef.name}</td>
+						<td><b title='流程版本号'>V: ${procDef.version}</b></td>
+						<td>
+							<a  href="javascript:void(0)" onclick="openDialogView('查看工程项目信息', '${ctx}/workengineeringproject/workEngineeringProject/form?id=${workengineeringproject.id}&name=view','80%','80%')">
+								<span title="${workengineeringproject.projectId.name}">${fns:abbr(workengineeringproject.projectId.name,30)}</span>
+							</a>
+						</td>
+						<td>
+							<a  href="javascript:void(0)" onclick="openDialogView('查看工程项目信息', '${ctx}/workengineeringproject/workEngineeringProject/form?id=${workengineeringproject.id}&name=view','80%','80%')">
+								<span title="${workengineeringproject.projectId.name}">${fns:abbr(workengineeringproject.projectId.number,30)}</span>
+							</a>
+						</td>
+						<td>${fns:getMainDictLabel(workengineeringproject.businessType, 'business_type', '')}</td>
+						<td>${workengineeringproject.remarks}</td>
+						<td><fmt:formatDate value="${workengineeringproject.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
+						<%--<td>
+							</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>
+		<td>${act.vars.map.applyUserId}</td>
+	</div>
+</div>
+</body>
+</html>

+ 383 - 0
src/main/webapp/webpage/modules/workengineeringproject/workEngineeringProjectList.jsp

@@ -0,0 +1,383 @@
+<%@ 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">
+        $(function(){
+            $("#treeTable").treeTable({expandLevel : 1,column:1}).show();
+            //搜索框收放
+            $('#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";
+                }
+            });
+        });
+        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){
+                }
+            });
+        }
+
+        function openDialogreToo(title,url,width,height,target){
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                btn: ['重新申请','撤回','关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(3) ){
+                        //top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(4) ){
+                        //top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                    return false;
+                },
+                btn3: function(index){
+                }
+            });
+
+        }
+	</script>
+</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}/workengineeringproject/workEngineeringProject/list">项目登记列表</a></li>
+				<li><a href="${ctx}/workengineeringproject/workEngineeringProject/workEngineeringProjectTodoList">待办任务</a></li>
+				<li><a href="${ctx}/workengineeringproject/workEngineeringProject/workEngineeringProjectHistoricList">已办任务</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="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="workEngineeringProject" action="${ctx}/workengineeringproject/workEngineeringProject/" 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="reportNumber" htmlEscape="false" maxlength="255"  class=" form-control input-sm"/>
+			<span>项目名称:</span>
+				<form:input path="projectId.name" htmlEscape="false" maxlength="255"  class=" form-control input-sm"/>
+				<%--<sys:gridselect url="${ctx}/workengineeringproject/workEngineeringProject/selectprojectId" id="projectId" name="projectId"  value="${workEngineeringProject.projectId.id}"  title="选择项目外键id" labelName="projectId.projectName"
+					labelValue="${workEngineeringProject.projectId.projectName}" cssClass="form-control required" fieldLabels="项目id" fieldKeys="id" searchLabel="项目名称" searchKey="projectName" ></sys:gridselect>
+			--%>
+			<span>业务类型:</span>
+				<form:select path="businessType"  class="form-control m-b">
+					<form:option value="" label=""/>
+					<form:options items="${fns:getMainDictList('business_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+				</form:select>
+		 </div>
+		<div style="display:none;margin-top: 15px" id="moresees">
+			<span>项目状态:</span>
+			<form:select path="status"  class="form-control m-b">
+				<form:option value="" label=""/>
+				<form:options items="${fns:getDictList('engineering_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+			</form:select>
+			<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>地区:</span>
+			<sys:treeselect id="area" name="area.id" value="${workEngineeringProject.area.id}" labelName="area.name" labelValue="${workEngineeringProject.area.name}"
+							title="区域" url="/sys/area/treeData" cssClass="form-control input-sm" allowClear="true" notAllowSelectParent="false"/>
+		</div>
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="workengineeringproject:workEngineeringProject:add">
+				<table:addRow url="${ctx}/workengineeringproject/workEngineeringProject/form" title="工程项目信息"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<%--<shiro:hasPermission name="workengineeringproject:workEngineeringProject:edit">
+			    <table:editRow url="${ctx}/workengineeringproject/workEngineeringProject/form" title="工程项目信息" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workengineeringproject:workEngineeringProject:del">
+				<table:delRow url="${ctx}/workengineeringproject/workEngineeringProject/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>--%>
+			<shiro:hasPermission name="workengineeringproject:workEngineeringProject:import">
+				<table:importExcel url="${ctx}/workengineeringproject/workEngineeringProject/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workengineeringproject:workEngineeringProject:export">
+	       		<table:exportExcel url="${ctx}/workengineeringproject/workEngineeringProject/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="treeTable" 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 totalProjectName">总项目名称</th>--%>
+				<th style="text-align: center;"  class="sort-column remarks">项目编号</th>
+				<th style="text-align: center;"  class="sort-column projectId.id">项目名称</th>
+				<th style="text-align: center;"  class="sort-column reportNumber">报告号</th>
+				<th style="text-align: center;"  class="sort-column businessType">业务类型</th>
+				<th style="text-align: center;"  class="sort-column client.id">客户单位</th>
+				<th style="text-align: center;" >项目负责人</th>
+				<th style="text-align: center;"  class="sort-column createDate">创建时间</th>
+				<th style="text-align: center;"  class="sort-column status">项目状态</th>
+				<th style="text-align: center;"  >流程追踪</th>
+				<th style="text-align: center;">操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:choose>
+			<c:when test="${not empty page.list}">
+				<c:forEach items="${page.list}" var="workEngineeringProject">
+					<tr id="${workEngineeringProject.id}" pId="${workEngineeringProject.totalProjectId ne '1'?workEngineeringProject.totalProjectId:'0'}">
+						<%--<td> <input type="checkbox" id="${workEngineeringProject.id}" class="i-checks"></td>--%>
+
+						<td width="15%">
+							<span title="${workEngineeringProject.projectId.number}">${fns:abbr(workEngineeringProject.projectId.number,50)}</span>
+						</td>
+						<%--<td>--%>
+							<%--<a  href="javascript:void(0)" onclick="openDialogView('查看工程项目信息', '${ctx}/workengineeringproject/workEngineeringProject/form?id=${workEngineeringProject.id}&name=view','80%','80%')">--%>
+								<%--<span title="${workEngineeringProject.totalProjectName}">${fns:abbr(workEngineeringProject.totalProjectName,30)}</span>--%>
+							<%--</a>--%>
+						<%--</td>--%>
+							<td>
+								<a  href="javascript:void(0)" onclick="openDialogView('查看工程项目信息', '${ctx}/workengineeringproject/workEngineeringProject/form?id=${workEngineeringProject.id}&name=view','80%','80%')">
+									<span title="${workEngineeringProject.projectId.name}">${fns:abbr(workEngineeringProject.projectId.name,30)}</span>
+								</a>
+							</td>
+						<td>
+							<span title="${workEngineeringProject.reportNumber}">${fns:abbr(workEngineeringProject.reportNumber,30)}</span>
+						</td>
+
+						<td>
+							${fns:getMainDictLabel(workEngineeringProject.businessType, 'business_type', '')}
+						</td>
+						<td>
+								<a  href="javascript:void(0)" onclick="openDialogView('查看客户管理', '${ctx}/workclientinfo/workClientInfo/detail?id=${workEngineeringProject.workClientInfo.id}','80%','80%')">
+									<span title="${workEngineeringProject.workClientInfo.name}">${fns:abbr(workEngineeringProject.workClientInfo.name,30)}</span>
+								</a>
+						</td>
+						<td>
+								${fns:abbr(workEngineeringProject.hostOfficeMasterName,30)}
+						</td>
+						<td>
+							<fmt:formatDate value="${workEngineeringProject.createDate}" pattern="yyyy-MM-dd"/>
+						</td>
+						<td>
+							${fns:getDictLabel(workEngineeringProject.status, 'engineering_type', '')}
+						</td>
+						<%--<td>
+							<c:choose>
+								<c:when test="${workEngineeringProject.status eq '1' && fns:getUser().id eq workEngineeringProject.createBy.id}">
+									<a href="${ctx}/workengineeringproject/workEngineeringProject/startposs?id=${workEngineeringProject.id}" onclick="return confirmx('确认要发起项目分配吗?', this.href)"   class="btn btn-info btn-xs"> 发起项目分配</a>
+								</c:when>
+								<c:when test="${workEngineeringProject.status eq '2' && name}">
+									<a href="javascript:void(0)" onclick="openDialogre('项目分配', '${ctx}/workengineeringproject/workEngineeringProject/form?id=${workEngineeringProject.id}&name=edit','80%','80%')" class="btn btn-success btn-xs" > 项目分配</a>
+								</c:when>
+								<c:otherwise>
+									<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('当前无操作权限!',{icon:2})" class="btn btn-default btn-xs">项目分配</a>
+								</c:otherwise>
+							</c:choose>
+						</td>--%>
+						<td>
+							<div style="text-align: center">
+							<c:choose>
+								<c:when test="${workEngineeringProject.status ne '1' || not empty workEngineeringProject.remarks}">
+										<a href="javascript:void(0)" onclick="openDialogView('流程追踪', '${ctx}/workengineeringproject/workEngineeringProject/getProcess?id=${workEngineeringProject.id}&name=1','80%','80%')" class="btn btn-info btn-xs" > 流程追踪</a>
+								</c:when>
+								<c:otherwise>
+									<a href="${ctx}/workengineeringproject/workEngineeringProject/startposs?id=${workEngineeringProject.id}" onclick="return confirmx('确认要发起项目分配吗?', this.href)"   class="btn btn-info btn-xs"> 发起项目分配</a>
+								</c:otherwise>
+							</c:choose>
+							</div>
+						</td>
+						<td>
+							<div style="text-align: center">
+							<c:choose>
+								<c:when test="${zg || fns:getUser().id eq workEngineeringProject.createBy.id ||
+								fn:containsIgnoreCase(workEngineeringProject.hostOfficeMaster,fns:getUser().id) ||fn:containsIgnoreCase(workEngineeringProject.jointlyOfficeMaster,fns:getUser().id) ||
+								 fn:containsIgnoreCase(workEngineeringProject.hostOfficeMember,fns:getUser().id) ||fn:containsIgnoreCase(workEngineeringProject.jointlyOfficeMember,fns:getUser().id)}">
+									<c:choose>
+										<c:when test="${not empty workEngineeringProject.remarks && workEngineeringProject.remarks eq '重新申请' && workEngineeringProject.queryCon eq 'true' && fns:getUser().id eq workEngineeringProject.createBy.id}">
+											<a href="javascript:void(0)" onclick="openDialogreToo('重新申请项目信息', '${ctx}/workengineeringproject/workEngineeringProject/form?id=${workEngineeringProject.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+											<a href="${ctx}/workengineeringproject/workEngineeringProject/delete?id=${workEngineeringProject.id}" onclick="return confirmx('确认要删除该登记项目吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+										</c:when>
+										<c:when test="${empty workEngineeringProject.proofreadStatus && workEngineeringProject.status > 2 && workEngineeringProject.status < 6}">
+											<a href="javascript:void(0)" onclick="openDialog('修改工程项目信息', '${ctx}/workengineeringproject/workEngineeringProject/form?id=${workEngineeringProject.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+											<a href="${ctx}/workengineeringproject/workEngineeringProject/delete?id=${workEngineeringProject.id}" onclick="return confirmx('确认要删除该登记项目吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+										</c:when>
+										<c:when test="${(zg && workEngineeringProject.proofreadStatus == 3) || workEngineeringProject.proofreadStatus == 4}">
+											<a href="javascript:void(0)" onclick="openDialog('修改工程项目信息', '${ctx}/workengineeringproject/workEngineeringProject/form?id=${workEngineeringProject.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+											<a href="${ctx}/workengineeringproject/workEngineeringProject/delete?id=${workEngineeringProject.id}" onclick="return confirmx('确认要删除该登记项目吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+										</c:when>
+										<c:when test="${empty workEngineeringProject.queryCon && fns:getUser().id eq workEngineeringProject.createBy.id && workEngineeringProject.status == 6}">
+											<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>
+											<a href="${ctx}/workengineeringproject/workEngineeringProject/delete?id=${workEngineeringProject.id}" onclick="return confirmx('确认要删除该登记项目吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+										</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>
+											<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('您没有权限删除此项目!',{icon:2})" class="btn btn-default btn-xs"><i class="fa fa-trash"></i>删除</a>
+										</c:otherwise>
+									</c:choose>
+									<%--<c:choose>
+										<c:when test="${workEngineeringProject.proofreadStatus == 3 && !zg}">
+											</c:when>
+										<c:otherwise>
+											</c:otherwise>
+									</c:choose>--%>
+								</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>
+								<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('您没有权限删除此项目!',{icon:2})" class="btn btn-default btn-xs"><i class="fa fa-trash"></i>删除</a>
+							</c:otherwise>
+						</c:choose>
+							</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>

+ 22 - 0
src/main/webapp/webpage/modules/workengineeringproject/workEngineeringProjectTask.jsp

@@ -0,0 +1,22 @@
+<%@ 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">
+		<c:if test="${type eq '1'}">
+			<act:flowChart procInsId="${processInstanceId}"/>
+			<act:histoicFlow procInsId="${processInstanceId}"/>
+		</c:if>
+		<c:if test="${type eq '2'}">
+			<act:flowChart procInsId="${processInstanceProofreadId}"/>
+			<act:histoicFlow procInsId="${processInstanceProofreadId}"/>
+		</c:if>
+
+	</div>
+</body>
+</html>
+

+ 220 - 0
src/main/webapp/webpage/modules/workengineeringproject/workEngineeringProjectTodoList.jsp

@@ -0,0 +1,220 @@
+<%@ 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}/workengineeringproject/workengineeringproject/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}/workengineeringproject/workengineeringproject/workengineeringprojectTodoList/';
+                }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}/workengineeringproject/workEngineeringProject/list">项目登记列表</a></li>
+					<li class="active"><a href="${ctx}/workengineeringproject/workEngineeringProject/workEngineeringProjectTodoList">待办任务</a></li>
+					<li><a href="${ctx}/workengineeringproject/workEngineeringProject/workEngineeringProjectHistoricList">已办任务</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}/workengineeringproject/workEngineeringProject/workEngineeringProjectTodoList" method="get" class="form-inline">
+						<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+						<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+						<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+						<div class="form-group">
+							<label>创建时间:</label>
+							<input id="beginDate"  name="beginDate"  type="text" readonly="readonly" maxlength="20" style="width:200px;" class="laydate-icondate form-control layer-date input-sm"
+								   value="<fmt:formatDate value="${act.beginDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+							 -- 
+							<input id="endDate" name="endDate" type="text" readonly="readonly" maxlength="20" style="width:200px;" class="laydate-icondate form-control layer-date input-sm"
+								   value="<fmt:formatDate value="${act.endDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+						</div>
+					</form:form>
+					<br/>
+				</div>
+			</div>
+
+			<!-- 工具栏 -->
+			<div class="row">
+				<div class="col-sm-12">
+					<div class="pull-left">
+						<button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+					</div>
+					<div class="pull-right">
+						<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+						<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+					</div>
+				</div>
+			</div>
+			<!-- 表格 -->
+			<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+				<thead>
+				<tr>
+					<th style="text-align: center;width: 8%">流程发起人</th>
+					<th style="text-align: center;width: 8%">当前环节</th>
+					<th style="text-align: center;width: 8%">流程名称</th>
+					<th style="text-align: center;width: 8%">流程版本</th>
+					<th style="text-align: center;width: 15%">项目名称</th>
+					<th style="text-align: center;width: 10%">项目编号</th>
+					<th style="text-align: center;width: 10%">项目类型</th>
+					<th style="text-align: center;width: 10%">备注信息</th>
+					<th style="text-align: center;width: 13%">创建时间</th>
+					<th style="text-align: center;width: 8%">操作</th>
+				</tr>
+				</thead>
+				<tbody>
+				<c:choose>
+				<c:when test="${not empty list}">
+				<c:forEach items="${list}" var="workengineeringproject">
+					<c:set var="task" value="${workengineeringproject.act.task}" />
+					<c:set var="vars" value="${workengineeringproject.act.vars}" />
+					<c:set var="procDef" value="${workengineeringproject.act.procDef}" />
+					<c:set var="status" value="${workengineeringproject.act.status}" />
+					<tr>
+						<td>${workengineeringproject.act.vars.map.applyUserId}</td>
+						<td>
+							${task.name}
+						</td>
+						<td>${procDef.name}</td>
+						<td><b title='流程版本号'>V: ${procDef.version}</b></td>
+						<td>
+							<a  href="javascript:void(0)" onclick="openDialogView('查看工程项目信息', '${ctx}/workengineeringproject/workEngineeringProject/form?id=${workengineeringproject.id}&name=view','80%','80%')">
+								<span title="${workengineeringproject.projectId.name}">${fns:abbr(workengineeringproject.projectId.name,30)}</span>
+							</a>
+						</td>
+						<td>
+							<a  href="javascript:void(0)" onclick="openDialogView('查看工程项目信息', '${ctx}/workengineeringproject/workEngineeringProject/form?id=${workengineeringproject.id}&name=view','80%','80%')">
+								<span title="${workengineeringproject.projectId.name}">${fns:abbr(workengineeringproject.projectId.number,30)}</span>
+							</a>
+						</td>
+						<td>${fns:getMainDictLabel(workengineeringproject.businessType, 'business_type', '')}</td>
+						<td>${workengineeringproject.remarks}</td>
+						<td><fmt:formatDate value="${task.createTime}" type="both"/></td>
+						<td>
+							<a href="javascript:void(0)" onclick="openDialogre('查看资格预审项目', '${ctx}/workengineeringproject/workEngineeringProject/applyOnWorkEngineeringProject?taskId=${task.id}&taskName=${fns:urlEncode(task.name)}&taskDefKey=${task.taskDefinitionKey}&procInsId=${task.processInstanceId}&procDefId=${task.processDefinitionId}&status=${status}','80%','80%','','同意','驳回')" class="btn btn-info btn-xs" > 任务办理</a>
+						<%--<c:if test="${empty task.assignee}">
+								<a href="javascript:claim('${task.id}');" class="btn btn-white btn-xs" >签收任务</a>
+							</c:if>
+							<c:if test="${not empty task.assignee}">
+								</c:if>--%>
+						</td>
+					</tr>
+				</c:forEach>
+				</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>

+ 325 - 0
src/main/webapp/webpage/modules/workengineeringproject/workEngineeringProjectView.jsp

@@ -0,0 +1,325 @@
+<%@ 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: '#workStartDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#workEndDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+		});
+
+        function setValue(obj){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workreimbursement/workReimbursement/getProjectInfo',
+                data:{
+                    "obj":obj
+                },
+                success:function(data){
+                    var d = JSON.parse(data);
+                    $("#projectNumber").val(d.projectNumber);
+                }
+            })
+        }
+
+        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);
+                    $("#contractName").val(d.clientName);
+                    $("#linkmanName").val(d.linkmanName);
+                    $("#linkmanPhone").val(d.linkmanPhone);
+                    $("#linkmanEmail").val(d.linkmanEmail);
+                    $("#linkmanPosition").val(d.linkmanPosition);
+
+                }
+            })
+        }
+
+        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/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];
+                $("#linkmanPosition").val(linkman.linkmanPosition);
+                $("#linkmanPhone").val(linkman.linkmanPhone);
+                $("#linkmanEmail").val(linkman.linkmanEmail);
+            }
+        }
+
+    </script>
+</head>
+<body class="hideScroll">
+<div class="tabs-container">
+    <div class="nav nav-tabs">
+            <ul class="nav nav-tabs">
+                <li class="active"><a href="javascript:void(0)">项目基本信息</a></li>
+                <li>
+                    <c:if test="${workEngineeringProject.isExt ne 1}">
+                        <a href="${ctx}/workengineeringproject/workEngineeringProject/getClientContractionInfo?id=${workEngineeringProject.id}">客户合同信息</a>
+                    </c:if>
+                </li>
+            </ul>
+    </div>
+    <div class="tab-content">
+        <div id="tab-1" class="tab-pane active">
+                <table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+                       <tbody>
+                           <tr>
+                               <td class="width-20 active" rowspan="2"><label class="pull-right">合同信息:</label></td>
+                           </tr>
+                           <tr>
+                               <td class="width-15 active"><label class="pull-right">合同名称:</label></td>
+                               <c:choose>
+                                   <c:when test="${workEngineeringProject.isExt eq 1}">
+                                       <td class="width-25" colspan="3">
+                                        ${workEngineeringProject.contractInfoName}
+                                       </td>
+                                   </c:when>
+                                   <c:otherwise>
+                                       <td class="width-25">
+                                               ${workEngineeringProject.contractId.name}
+                                       </td>
+                                       <td class="width-15 active"><label class="pull-right">合同编号:</label></td>
+                                       <td class="width-25">
+                                               ${workEngineeringProject.contractId.contractNum}
+                                       </td>
+                                   </c:otherwise>
+                               </c:choose>
+
+                           </tr>
+                           <tr>
+                               <td class="width-20 active" rowspan="8"><label class="pull-right">项目信息:</label></td>
+                           </tr>
+                           <tr>
+                               <td class="width-15 active"><label class="pull-right">总项目名称:</label></td>
+                               <td class="width-25">
+                                   ${workEngineeringProject.totalProjectName}
+                               </td>
+                               <td class="width-15 active"><label class="pull-right">总项目编号:</label></td>
+                               <td class="width-25">
+                                   ${workEngineeringProject.totalProjectId}
+                               </td>
+                           </tr>
+                           <tr>
+                               <td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+                               <td class="width-25">
+                                       ${workEngineeringProject.projectId.name}
+                               </td>
+                               <td class="width-15 active"><label class="pull-right">项目编号:</label></td>
+                               <td class="width-25">
+                                   ${workEngineeringProject.projectId.number}
+                               </td>
+                           </tr>
+                           <tr>
+                               <td class="width-15 active"><label class="pull-right">行业分类:</label></td>
+                               <td class="width-35">
+                                   ${fns:getDictLabel(workEngineeringProject.psort, 'psort', '')}
+                               </td>
+                               <td class="width-15 active"><label class="pull-right">详细分类:</label></td>
+                               <td class="width-35">
+                                   <c:choose>
+                                       <c:when test="${workEngineeringProject.psort eq 1}">
+                                           ${fns:getDictLabel(workEngineeringProject.ssort, 'ssort1', '')}
+                                       </c:when>
+                                       <c:when test="${workEngineeringProject.psort eq 2}">
+                                           ${fns:getDictLabel(workEngineeringProject.ssort, 'ssort2', '')}
+                                       </c:when>
+                                       <c:when test="${workEngineeringProject.psort eq 3}">
+                                           ${fns:getDictLabel(workEngineeringProject.ssort, 'ssort3', '')}
+                                       </c:when>
+                                       <c:when test="${workEngineeringProject.psort eq 4}">
+                                           ${fns:getDictLabel(workEngineeringProject.ssort, 'ssort4', '')}
+                                       </c:when>
+                                       <c:when test="${workEngineeringProject.psort eq 5}">
+                                           ${fns:getDictLabel(workEngineeringProject.ssort, 'ssort5', '')}
+                                       </c:when>
+                                       <c:when test="${workEngineeringProject.psort eq 10}">
+                                           ${fns:getDictLabel(workEngineeringProject.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-25">
+                                   ${fns:getMainDictLabel(workEngineeringProject.businessType, 'business_type', '')}
+                               </td>
+                               <td class="width-15 active"><label class="pull-right">预送审金额(元):</label></td>
+                               <td class="width-25">
+                                       ${workEngineeringProject.preTrialAmount}
+                               </td>
+                           </tr>
+                           <tr>
+                               <td class="width-15 active"><label class="pull-right">工作开始时间:</label></td>
+                               <td class="width-25" colspan="3">
+                                   <fmt:formatDate value="${workEngineeringProject.workStartDate}" pattern="yyyy-MM-dd"/>
+                                   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;至&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+                                   <fmt:formatDate value="${workEngineeringProject.workEndDate}" pattern="yyyy-MM-dd"/>
+                               </td>
+                           </tr>
+                           <tr>
+                               <td class="width-15 active"><label class="pull-right">业主要求:</label></td>
+                               <td class="width-25" colspan="3">
+                                       ${workEngineeringProject.emploperRequire}
+                               </td>
+                           </tr>
+                           <tr>
+                               <td class="width-15 active"><label class="pull-right">所属公司/部门:</label></td>
+                               <td class="width-25">
+                                       ${workEngineeringProject.office.name}
+                               </td>
+                               <td class="width-15 active"><label class="pull-right">工程所在地:</label></td>
+                               <td class="width-25">
+                                       ${workEngineeringProject.area.name}
+                               </td>
+                           </tr>
+                           <tr>
+                               <td class="width-20 active" rowspan="4"><label class="pull-right">客户信息:</label></td>
+                           </tr>
+                           <tr>
+                               <td class="width-15 active"><label class="pull-right"> 客户单位:</label></td>
+                               <td class="width-25" colspan="3">
+                                       ${workEngineeringProject.workClientInfo.name}
+                               </td>
+                           </tr>
+                           <tr>
+                               <td class="width-15 active"><label class="pull-right">查看联系人:</label></td>
+                               <td class="width-25">
+                                   <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-25">
+                                   <input value="${workEngineeringProject.workClientInfo.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-25">
+                                   <input value="${workEngineeringProject.workClientInfo.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-25">
+                                   <input value="${workEngineeringProject.workClientInfo.workClientLinkmanList[0].email}" id="linkmanEmail" readonly="true" class="form-control linkman_attr"/>
+                               </td>
+                           </tr>
+                           <tr>
+                               <td class="width-20 active" rowspan="2"><label class="pull-right">部门安排:</label></td>
+                           </tr>
+                           <tr>
+                               <td class="width-15 active"><label class="pull-right">主办</br>公司/部门:</label></td>
+                               <td class="width-25">
+                                       ${workEngineeringProject.hostOfficeName}
+                               </td>
+                               <td class="width-15 active"><label class="pull-right">协办</br>公司/部门:</label></td>
+                               <td class="width-25">
+                                       ${workEngineeringProject.jointlyOfficeName}
+                               </td>
+                           </tr>
+                           <tr>
+                               <td class="width-20 active" rowspan="5"><label class="pull-right">人员安排:</label></td>
+                           </tr>
+                           <tr>
+                               <td class="width-15 active"><label class="pull-right">主办公司/部门</br>项目负责人:</label></td>
+                               <td class="width-25">
+                                       ${workEngineeringProject.hostOfficeMasterName}
+                               </td>
+                               <td class="width-15 active"><label class="pull-right">协办公司/部门</br>项目负责人:</label></td>
+                               <td class="width-25">
+                                       ${workEngineeringProject.jointlyOfficeMasterName}
+                               </td>
+                           </tr>
+                           <tr>
+                               <td class="width-15 active"><label class="pull-right">主办公司/部门</br>项目组成员:</label></td>
+                               <td class="width-25" colspan="3">
+                                       ${workEngineeringProject.hostOfficeMemberNames}
+                               </td>
+                           </tr>
+                           <tr>
+                               <td class="width-15 active"><label class="pull-right">协办公司/部门</br>项目组成员:</label></td>
+                               <td class="width-25" colspan="3">
+                                       ${workEngineeringProject.jointlyOfficeMemberNames}
+                               </td>
+                           </tr>
+                       </tbody>
+                </table>
+        </div>
+    </div>
+</div>
+</body>
+</html>

+ 365 - 0
src/main/webapp/webpage/modules/workengineeringproject/workEngineeringRecordAudit.jsp

@@ -0,0 +1,365 @@
+<%@ 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() {
+			$("#name").focus();
+			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="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="workFullRecord" action="${ctx}/engineeringrecord/engineeringrecord/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}"/>
+						<table class="table table-striped table-bordered table-hover table-condensed dataTables-example">
+							<tbody>
+							<c:if test="${glygd}">
+								<tr>
+									<td class="width-15 active"><label class="pull-right"><font color="red">*</font>案卷名称:</label></td>
+									<td class="width-25" colspan="3">
+										<form:input path="recordName" htmlEscape="false"    class="form-control " readonly="true" value="${workFullRecord.recordName}"/>
+										<input type="hidden" name="workEngineeringProject.id" value="${workEngineeringProject.id}"   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">
+										<form:input path="recordNumber" htmlEscape="false" readonly="true" value="${workFullRecord.recordNumber}"   class="form-control "/>
+									</td>
+									<td class="width-15 active"><label class="pull-right">归档号:</label></td>
+									<td class="width-35">
+										<form:input path="backRecordNumber" htmlEscape="false"    class="form-control "/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="pull-right">所属卷库:</label></td>
+									<td class="width-25">
+										<form:select path="recordLibNumber" class="form-control ">
+											<form:option value="" label=""/>
+											<form:options items="${fns:getDictList('record_lib_number')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+										</form:select>
+									</td>
+									<td class="width-15 active"><label class="pull-right">归档年代:</label></td>
+									<td class="width-25">
+										<form:input path="backRecordYear" htmlEscape="false"    class="form-control "/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="pull-right">所属部门:</label></td>
+									<td class="width-25">
+										<sys:treeselect id="backRecordDept" name="backRecordDept.id" value="${workFullRecord.backRecordDept.id}" labelName="backRecordDept.name" labelValue="${workFullRecord.backRecordDept.name}"
+														title="部门" url="/sys/office/treeDataAll?type=2" cssClass="form-control " allowClear="true" notAllowSelectParent="true"/>
+									</td>
+									<td class="width-15 active"><label class="pull-right">编制机构:</label></td>
+									<td class="width-25">
+										<form:input path="compleOrganization" htmlEscape="false"    class="form-control "/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="pull-right">保管期限:</label></td>
+									<td class="width-25">
+										<form:select path="retentionPeriod" class="form-control ">
+											<form:option value="" label=""/>
+											<form:options items="${fns:getDictList('retention_period')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+										</form:select>
+									</td>
+									<td class="width-15 active"><label class="pull-right">起止日期:</label></td>
+									<td class="width-25" style="display: inline-block;">
+											<%--<input id="startTime" name="startTime" type="text" maxlength="20" class="laydate-icon form-control layer-date "--%>
+											<%--value="<fmt:formatDate value="${startTime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>--%>
+											<%--<input id="endTime" name="endTime" type="text" maxlength="20" class="laydate-icon form-control layer-date "--%>
+											<%--value="/>--%>
+										<div class="col-sm-5" style="padding: 0;">
+											<input class="form-control" id="startTime" name="startTime" value="<fmt:formatDate value="${workFullRecord.startTime}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+										</div>
+										<div class="col-sm-2 text-center" style="padding: 0;vertical-align: middle;line-height: 30px;">
+											至
+										</div>
+										<div class="col-sm-5" style="padding: 0;">
+											<input class="form-control" id="endTime" name="endTime" value="<fmt:formatDate value="${workFullRecord.endTime}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+										</div>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="pull-right">案卷密级:</label></td>
+									<td class="width-25">
+										<form:select path="recordSecretLevel" class="form-control ">
+											<form:option value="" label=""/>
+											<form:options items="${fns:getDictList('record_secret_level')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+										</form:select>
+									</td>
+									<td class="width-15 active"><label class="pull-right">全宗号:</label></td>
+									<td class="width-25">
+										<form:input path="fondsNumber" htmlEscape="false"    class="form-control "/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="pull-right">目录号:</label></td>
+									<td class="width-25">
+										<form:input path="listsNumber" htmlEscape="false"    class="form-control "/>
+									</td>
+									<td class="width-15 active"><label class="pull-right">归档馆号:</label></td>
+									<td class="width-25">
+										<form:input path="recordProNumber" htmlEscape="false"    class="form-control "/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="pull-right">保险箱号:</label></td>
+									<td class="width-25">
+										<form:input path="strongboxNumber" htmlEscape="false"    class="form-control "/>
+									</td>
+									<td class="width-15 active"><label class="pull-right">缩微号:</label></td>
+									<td class="width-25">
+										<form:input path="microNumber" htmlEscape="false"    class="form-control "/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="pull-right">凭证类别:</label></td>
+									<td class="width-25">
+										<form:select path="ekkoType" class="form-control ">
+											<form:option value="" label=""/>
+											<form:options items="${fns:getDictList('ekko_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+										</form:select>
+									</td>
+									<td class="width-15 active"><label class="pull-right">凭证编号:</label></td>
+									<td class="width-25">
+										<div class="col-sm-5" style="padding: 0;">
+											<form:input path="ekkoBstypOne" htmlEscape="false" class="form-control "/>
+										</div>
+										<div class="col-sm-2 text-center" style="padding: 0;vertical-align: middle;line-height: 30px;">
+											至
+										</div>
+										<div class="col-sm-5" style="padding: 0;">
+											<form:input path="ekkoBstypTwo" htmlEscape="false"  class="form-control "/>
+										</div>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="pull-right">报告号:</label></td>
+									<td class="width-25">
+										<form:input path="reportNumber" htmlEscape="false"    class="form-control "/>
+									</td>
+									<td class="width-15 active"><label class="pull-right">页数:</label></td>
+									<td class="width-25">
+										<form:input path="pageNumber" htmlEscape="false"    class="form-control "/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="pull-right">案卷管理员:</label></td>
+									<td class="width-25">
+										<form:input path="manageId" htmlEscape="false" readonly="true"  class="form-control "/>
+										<form:hidden path="manageUser"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="pull-right">备注:</label></td>
+									<td class="width-25" colspan="3">
+										<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+									</td>
+								</tr>
+							</c:if>
+							<c:if test="${!glygd}">
+								<tr>
+									<td class="width-15 active"><label class="pull-right"><font color="red">*</font>案卷名称:</label></td>
+									<td class="width-25" colspan="3">
+											${workFullRecord.recordName}
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="pull-right"><font color="red">*</font>案卷号:</label></td>
+									<td class="width-35">
+										<input type="hidden" name="workEngineeringProject.id" value="${workFullRecord.workEngineeringProject.id}"   class="form-control "/>
+											${workFullRecord.recordNumber}
+									</td>
+									<%--<td class="width-15 active"><label class="pull-right"><font color="red">*</font>归档号:</label></td>
+									<td class="width-35">
+											${workFullRecord.backRecordNumber}
+									</td>--%>
+								</tr>
+								<%--<tr>
+									<td class="width-15 active"><label class="pull-right"><font color="red">*</font>所属卷库:</label></td>
+									<td class="width-25">
+											${fns:getDictLabel(workFullRecord.recordLibNumber, 'record_lib_number', '')}
+									</td>
+									<td class="width-15 active"><label class="pull-right"><font color="red">*</font>归档年代:</label></td>
+									<td class="width-25">
+											${workFullRecord.backRecordYear}
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="pull-right"><font color="red">*</font>所属部门:</label></td>
+									<td class="width-25">
+											${workFullRecord.backRecordDept.name}
+									</td>
+									<td class="width-15 active"><label class="pull-right"><font color="red">*</font>编制结构:</label></td>
+									<td class="width-25">
+											${workFullRecord.compleOrganization}
+									</td>
+								</tr>--%>
+								<tr>
+									<td class="width-15 active"><label class="pull-right"><font color="red">*</font>起止日期:</label></td>
+									<td class="width-25" colspan="3">
+										<div class="col-sm-5" style="padding: 5px 0 0 0 ;">
+											<fmt:formatDate value="${workFullRecord.startTime}" pattern="yyyy-MM-dd" />
+										</div>
+										<div class="col-sm-2 text-center" style="padding: 0;vertical-align: middle;line-height: 30px;">
+											至
+										</div>
+										<div class="col-sm-5" style="padding: 5px 0 0 0 ;">
+											<fmt:formatDate value="${workFullRecord.endTime}" pattern="yyyy-MM-dd" />
+										</div>
+									</td>
+									<%--<td class="width-15 active"><label class="pull-right"><font color="red">*</font>保管期限:</label></td>
+									<td class="width-25">
+											${fns:getDictLabel(workFullRecord.retentionPeriod, 'retention_period', '')}
+									</td>--%>
+								</tr>
+								<%--<tr>
+									<td class="width-15 active"><label class="pull-right"><font color="red">*</font>案卷密级:</label></td>
+									<td class="width-25">
+											${fns:getDictLabel(workFullRecord.recordSecretLevel, 'record_secret_level', '')}
+									</td>
+									<td class="width-15 active"><label class="pull-right"><font color="red">*</font>全宗号:</label></td>
+									<td class="width-25">
+											${workFullRecord.fondsNumber}
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="pull-right"><font color="red">*</font>目录号:</label></td>
+									<td class="width-25">
+											${workFullRecord.listsNumber}
+									</td>
+									<td class="width-15 active"><label class="pull-right"><font color="red">*</font>归档馆号:</label></td>
+									<td class="width-25">
+											${workFullRecord.recordProNumber}
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="pull-right"><font color="red">*</font>保险箱号:</label></td>
+									<td class="width-25">
+											${workFullRecord.strongboxNumber}
+									</td>
+									<td class="width-15 active"><label class="pull-right"><font color="red">*</font>缩微号:</label></td>
+									<td class="width-25">
+											${workFullRecord.microNumber}
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="pull-right"><font color="red">*</font>凭证类别:</label></td>
+									<td class="width-25">
+											${fns:getDictLabel(workFullRecord.ekkoType, 'ekko_type', '')}
+									</td>
+									<td class="width-15 active"><label class="pull-right"><font color="red">*</font>凭证编号:</label></td>
+									<td class="width-25">
+										<div class="col-sm-5" style="padding: 5px 0 0 0 ;">
+												${workFullRecord.ekkoBstypOne}
+										</div>
+										<div class="col-sm-2 text-center" style="padding: 0;vertical-align: middle;line-height: 30px;">
+											至
+										</div>
+										<div class="col-sm-5" style="padding: 5px 0 0 0 ;">
+												${workFullRecord.ekkoBstypTwo}
+										</div>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="pull-right"><font color="red">*</font>报告号:</label></td>
+									<td class="width-25">
+											${workFullRecord.reportNumber}
+									</td>
+									<td class="width-15 active"><label class="pull-right"><font color="red">*</font>页数:</label></td>
+									<td class="width-25">
+											${workFullRecord.pageNumber}
+									</td>
+								</tr>--%>
+								<tr>
+									<td class="width-15 active"><label class="pull-right"><font color="red">*</font>案卷管理员:</label></td>
+									<td class="width-25">
+											${workFullRecord.manageId}
+									</td>
+								</tr>
+								<%--<tr>
+									<td class="width-15 active"><label class="pull-right"><font color="red">*</font>备注:</label></td>
+									<td class="width-25" colspan="3">
+											${workFullRecord.remarks}
+									</td>
+								</tr>--%>
+							</c:if>
+								<tr>
+								<td class="width-15 active"><label class="pull-right">审批意见:</label></td>
+								<td class="width-25" colspan="3">
+									<form:textarea path="act.comment" htmlEscape="form-control" rows="4"    class="form-control required"/>
+								</td>
+							</tr>
+							</tbody>
+						</table>
+						<act:flowChart procInsId="${workFullRecord.act.procInsId}"/>
+						<act:histoicFlow procInsId="${workFullRecord.act.procInsId}"/>
+					</form:form>
+			</div>
+		</div>
+	</div>
+</body>
+</html>
+

+ 600 - 0
src/main/webapp/webpage/modules/workengineeringproject/workEngineeringRecordForm.jsp

@@ -0,0 +1,600 @@
+<%@ 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>
+	<style type="text/css">
+		.table{
+			margin-bottom: 0px;
+		}
+		.workfull>.form-horizontal{
+			margin: 0;
+			padding: 0;
+		}
+	</style>
+	<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)
+                    .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);
+                    }
+                }
+            });
+        });
+
+	</script>
+</head>
+<body class="hideScroll">
+<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-content">
+		<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-striped table-bordered table-hover table-condensed dataTables-example">
+					<tbody>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">项目编号:<font color="red">*</font></label></td>
+						<td class="width-25">
+							${workEngineeringProject.projectId.number}
+						</td>
+						<td class="width-15 active"><label class="pull-right">业务类型:</label></td>
+						<td class="width-25">
+							${fns:getMainDictLabel(workEngineeringProject.businessType, 'business_type', '')}
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">创建日期:<font color="red">*</font></label></td>
+						<td class="width-25" colspan="3">
+							<fmt:formatDate value="${workEngineeringProject.createDate}" pattern="yyyy-MM-dd"/>
+						</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-striped table-bordered table-hover table-condensed dataTables-example">
+					<tbody>
+					<tr>
+						<td class="width-15 active" ><label class="pull-right">报告文件:</label></td>
+						<td class="width-35" colspan="3">
+							<table id="workReportList"  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="${workReportList}" var="attachment" varStatus="status">
+                                    <tr>
+                                        <td>${status.index + 1}</td>
+                                        <td>${attachment.attachmentName}</td>
+                                        <td>${attachment.attachmentUser}</td>
+                                        <td><fmt:formatDate value="${attachment.createDate}" pattern="yyyy-MM-dd"/></td>
+                                        <td>
+                                            <a href="${attachment.url}" class="btn btn-white btn-xs">下载</a>
+                                        </td>
+                                    </tr>
+                                </c:forEach>--%>
+								<c:forEach items="${workReportList}" var="attachment" varStatus="status">
+								<tr>
+										<%--<td>${status.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}" 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="${attachment.url}">${attachment.attachmentName}</a></td>
+													</c:when>
+													<c:otherwise>
+														<td><a href="javascript:void(0)" onclick="openDialogViewPre('预览','${ctx}/previewController/previewUrl?fileUrl=${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+													</c:otherwise>
+												</c:choose>
+											</c:otherwise>
+										</c:choose>--%>
+									<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,'bmp')
+                                                               or fn:containsIgnoreCase(attachment.attachmentName,'jpeg')}">
+											<td><img src="${attachment.url}" 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')">${attachment.attachmentName}</a></td>
+												</c:when>
+												<c:otherwise>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('${ctx}/previewController/previewUrl?fileUrl=${workClientAttachment.url}','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openword','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<td><a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openexcel','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openppt','80%','80%')">${workClientAttachment.attachmentName}</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="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/workengineeringproject/workEngineeringProject/deleteFileFromAliyun?attachmentId=${attachment.id}&id=${workEngineeringProject.id}&type=2')" class="btn btn-danger btn-xs" >删除</a>
+										</td>
+								</tr>
+								</c:forEach>
+							</table>
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">依据性资料:</label></td>
+						<td class="width-35" colspan="3">
+							<table id="workBasisInformationList"  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="${workBasisInformationList}" var="attachment" varStatus="status">
+								<tr>
+										<%--<td>${status.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}" 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="${attachment.url}">${attachment.attachmentName}</a></td>
+													</c:when>
+													<c:otherwise>
+														<td><a href="javascript:void(0)" onclick="openDialogViewPre('预览','${ctx}/previewController/previewUrl?fileUrl=${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+													</c:otherwise>
+												</c:choose>
+											</c:otherwise>
+										</c:choose>--%>
+									<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,'bmp')
+                                                               or fn:containsIgnoreCase(attachment.attachmentName,'jpeg')}">
+											<td><img src="${attachment.url}" 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')">${attachment.attachmentName}</a></td>
+												</c:when>
+												<c:otherwise>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('${ctx}/previewController/previewUrl?fileUrl=${workClientAttachment.url}','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openword','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<td><a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openexcel','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openppt','80%','80%')">${workClientAttachment.attachmentName}</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="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/workengineeringproject/workEngineeringProject/deleteFileFromAliyun?attachmentId=${attachment.id}&id=${workEngineeringProject.id}&type=2')" class="btn btn-danger btn-xs" >删除</a>
+										</td>
+								</tr>
+								</c:forEach>
+							</table>
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">过程控制资料:</label></td>
+						<td class="width-35" colspan="3">
+							<table id="workRemoteControlList"  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="${workRemoteControlList}" var="attachment" varStatus="status">
+								<tr>
+										<%--<td>${status.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}" 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="${attachment.url}">${attachment.attachmentName}</a></td>
+													</c:when>
+													<c:otherwise>
+														<td><a href="javascript:void(0)" onclick="openDialogViewPre('预览','${ctx}/previewController/previewUrl?fileUrl=${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+													</c:otherwise>
+												</c:choose>
+											</c:otherwise>
+										</c:choose>--%>
+									<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,'bmp')
+                                                               or fn:containsIgnoreCase(attachment.attachmentName,'jpeg')}">
+											<td><img src="${attachment.url}" 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')">${attachment.attachmentName}</a></td>
+												</c:when>
+												<c:otherwise>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('${ctx}/previewController/previewUrl?fileUrl=${workClientAttachment.url}','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openword','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<td><a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openexcel','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openppt','80%','80%')">${workClientAttachment.attachmentName}</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="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/workengineeringproject/workEngineeringProject/deleteFileFromAliyun?attachmentId=${attachment.id}&id=${workEngineeringProject.id}&type=2')" class="btn btn-danger btn-xs" >删除</a>
+										</td>
+								</tr>
+								</c:forEach>
+							</table>
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">汇总表:</label></td>
+						<td class="width-35" colspan="3">
+							<table id="workSummaryList"  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="${workSummaryList}" var="attachment" varStatus="status">
+								<tr>
+										<%--<td>${status.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}" 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="${attachment.url}">${attachment.attachmentName}</a></td>
+													</c:when>
+													<c:otherwise>
+														<td><a href="javascript:void(0)" onclick="openDialogViewPre('预览','${ctx}/previewController/previewUrl?fileUrl=${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+													</c:otherwise>
+												</c:choose>
+											</c:otherwise>
+										</c:choose>--%>
+									<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,'bmp')
+                                                               or fn:containsIgnoreCase(attachment.attachmentName,'jpeg')}">
+											<td><img src="${attachment.url}" 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')">${attachment.attachmentName}</a></td>
+												</c:when>
+												<c:otherwise>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('${ctx}/previewController/previewUrl?fileUrl=${workClientAttachment.url}','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openword','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<td><a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openexcel','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openppt','80%','80%')">${workClientAttachment.attachmentName}</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="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/workengineeringproject/workEngineeringProject/deleteFileFromAliyun?attachmentId=${attachment.id}&id=${workEngineeringProject.id}&type=2')" class="btn btn-danger btn-xs" >删除</a>
+										</td>
+								</tr>
+								</c:forEach>
+							</table>
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">其他资料:</label></td>
+						<td class="width-35" colspan="3">
+							<table id="workOtherList"  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="${workOtherList}" var="attachment" varStatus="status">
+								<tr>
+										<%--<td>${status.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}" 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="${attachment.url}">${attachment.attachmentName}</a></td>
+													</c:when>
+													<c:otherwise>
+														<td><a href="javascript:void(0)" onclick="openDialogViewPre('预览','${ctx}/previewController/previewUrl?fileUrl=${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+													</c:otherwise>
+												</c:choose>
+											</c:otherwise>
+										</c:choose>--%>
+									<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,'bmp')
+                                                               or fn:containsIgnoreCase(attachment.attachmentName,'jpeg')}">
+											<td><img src="${attachment.url}" 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')">${attachment.attachmentName}</a></td>
+												</c:when>
+												<c:otherwise>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('${ctx}/previewController/previewUrl?fileUrl=${workClientAttachment.url}','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openword','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<td><a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openexcel','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openppt','80%','80%')">${workClientAttachment.attachmentName}</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="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/workengineeringproject/workEngineeringProject/deleteFileFromAliyun?attachmentId=${attachment.id}&id=${workEngineeringProject.id}&type=2')" class="btn btn-danger btn-xs" >删除</a>
+										</td>
+								</tr>
+								</c:forEach>
+							</table>
+						</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 workfull" >
+				<form:form id="inputForm" modelAttribute="workFullRecord" action="${ctx}/engineeringrecord/engineeringrecord/save" method="post" class="form-horizontal">
+					<form:hidden path="id"/>
+					<sys:message content="${message}"/>
+					<table class="table table-striped table-bordered table-hover table-condensed dataTables-example">
+						<tbody>
+						<tr>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>案卷名称:</label></td>
+							<td class="width-25" colspan="3">
+								<form:input path="recordName" htmlEscape="false"    class="form-control " readonly="true" value="${workFullRecord.recordName}"/>
+								<input type="hidden" name="workEngineeringProject.id" value="${workEngineeringProject.id}"   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">
+								<form:input path="recordNumber" htmlEscape="false" readonly="true" value="${workFullRecord.recordNumber}"   class="form-control "/>
+							</td>
+							<td class="width-15 active"><label class="pull-right">归档号:</label></td>
+							<td class="width-35">
+								<form:input path="backRecordNumber" htmlEscape="false"    class="form-control "/>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">所属卷库:</label></td>
+							<td class="width-25">
+								<form:select path="recordLibNumber" class="form-control ">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('record_lib_number')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</td>
+							<td class="width-15 active"><label class="pull-right">归档年代:</label></td>
+							<td class="width-25">
+								<form:input path="backRecordYear" htmlEscape="false"    class="form-control "/>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">所属部门:</label></td>
+							<td class="width-25">
+								<sys:treeselect id="backRecordDept" name="backRecordDept.id" value="${workFullRecord.backRecordDept.id}" labelName="backRecordDept.name" labelValue="${workFullRecord.backRecordDept.name}"
+												title="部门" url="/sys/office/treeDataAll?type=2" cssClass="form-control " allowClear="true" notAllowSelectParent="true"/>
+							</td>
+							<td class="width-15 active"><label class="pull-right">编制机构:</label></td>
+							<td class="width-25">
+								<form:input path="compleOrganization" htmlEscape="false"    class="form-control "/>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">保管期限:</label></td>
+							<td class="width-25">
+								<form:select path="retentionPeriod" class="form-control ">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('retention_period')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</td>
+							<td class="width-15 active"><label class="pull-right">起止日期:</label></td>
+							<td class="width-25" style="display: inline-block;">
+									<%--<input id="startTime" name="startTime" type="text" maxlength="20" class="laydate-icon form-control layer-date "--%>
+									<%--value="<fmt:formatDate value="${startTime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>--%>
+									<%--<input id="endTime" name="endTime" type="text" maxlength="20" class="laydate-icon form-control layer-date "--%>
+									<%--value="/>--%>
+								<div class="col-sm-5" style="padding: 0;">
+									<input class="form-control" id="startTime" name="startTime" value="<fmt:formatDate value="${workFullRecord.startTime}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+								</div>
+								<div class="col-sm-2 text-center" style="padding: 0;vertical-align: middle;line-height: 30px;">
+									至
+								</div>
+								<div class="col-sm-5" style="padding: 0;">
+									<input class="form-control" id="endTime" name="endTime" value="<fmt:formatDate value="${workFullRecord.endTime}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">案卷密级:</label></td>
+							<td class="width-25">
+								<form:select path="recordSecretLevel" class="form-control ">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('record_secret_level')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</td>
+							<td class="width-15 active"><label class="pull-right">全宗号:</label></td>
+							<td class="width-25">
+								<form:input path="fondsNumber" htmlEscape="false"    class="form-control "/>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">目录号:</label></td>
+							<td class="width-25">
+								<form:input path="listsNumber" htmlEscape="false"    class="form-control "/>
+							</td>
+							<td class="width-15 active"><label class="pull-right">归档馆号:</label></td>
+							<td class="width-25">
+								<form:input path="recordProNumber" htmlEscape="false"    class="form-control "/>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">保险箱号:</label></td>
+							<td class="width-25">
+								<form:input path="strongboxNumber" htmlEscape="false"    class="form-control "/>
+							</td>
+							<td class="width-15 active"><label class="pull-right">缩微号:</label></td>
+							<td class="width-25">
+								<form:input path="microNumber" htmlEscape="false"    class="form-control "/>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">凭证类别:</label></td>
+							<td class="width-25">
+								<form:select path="ekkoType" class="form-control ">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('ekko_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</td>
+							<td class="width-15 active"><label class="pull-right">凭证编号:</label></td>
+							<td class="width-25">
+								<div class="col-sm-5" style="padding: 0;">
+									<form:input path="ekkoBstypOne" htmlEscape="false" class="form-control "/>
+								</div>
+								<div class="col-sm-2 text-center" style="padding: 0;vertical-align: middle;line-height: 30px;">
+									至
+								</div>
+								<div class="col-sm-5" style="padding: 0;">
+									<form:input path="ekkoBstypTwo" htmlEscape="false"  class="form-control "/>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">报告号:</label></td>
+							<td class="width-25">
+								<form:input path="reportNumber" htmlEscape="false"    class="form-control "/>
+							</td>
+							<td class="width-15 active"><label class="pull-right">页数:</label></td>
+							<td class="width-25">
+								<form:input path="pageNumber" htmlEscape="false"    class="form-control "/>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">案卷管理员:</label></td>
+							<td class="width-25">
+								<form:input path="manageUser" htmlEscape="false"    class="form-control "/>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">备注:</label></td>
+							<td class="width-25" colspan="3">
+								<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+							</td>
+						</tr>
+						</tbody>
+					</table>
+				</form:form>
+			</div>
+		</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 230 - 0
src/main/webapp/webpage/modules/workengineeringproject/workEngineeringRecordList.jsp

@@ -0,0 +1,230 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工程项目信息管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+        function openDialogre(title,url,width,height,target){
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                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);
+                    }
+                },
+                cancel: function(index){
+                }
+            });
+        }
+	</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><a href="${ctx}/engineeringrecord/engineeringrecord/queryToList">待办任务</a></li>
+				<li><a href="${ctx}/engineeringrecord/engineeringrecord/queryCompleteList">已办任务</a></li>
+				<li class="active"><a href="${ctx}/engineeringrecord/engineeringrecord/list">工程项目归档信息</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="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="workEngineeringProject" action="${ctx}/engineeringrecord/engineeringrecord/" 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="reportNumber" htmlEscape="false" maxlength="255"  class=" form-control input-sm"/>
+			<span>项目名称:</span>
+				<form:input path="contractId.name" htmlEscape="false" maxlength="255"  class=" form-control input-sm"/>
+				<%--<sys:gridselect url="${ctx}/workengineeringproject/workEngineeringProject/selectprojectId" id="projectId" name="projectId"  value="${workEngineeringProject.projectId.id}"  title="选择项目外键id" labelName="projectId.projectName"
+					labelValue="${workEngineeringProject.projectId.projectName}" cssClass="form-control required" fieldLabels="项目id" fieldKeys="id" searchLabel="项目名称" searchKey="projectName" ></sys:gridselect>
+			--%>
+			<span>业务类型:</span>
+				<form:select path="businessType"  class="form-control m-b">
+					<form:option value="" label=""/>
+					<form:options items="${fns:getMainDictList('business_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+				</form:select>
+		 </div>
+		<span>项目状态:</span>
+		<form:select path="status"  class="form-control m-b">
+			<form:option value="" label=""/>
+			<form:options items="${fns:getDictList('engineering_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+		</form:select>
+	</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> <input type="checkbox" class="i-checks"></th>
+				<th  class="sort-column reportNumber">报告号</th>
+				<%--<th  class="sort-column remarks">项目编号</th>--%>
+				<th  class="sort-column totalProjectName">总项目名称</th>
+				<th  class="sort-column projectId">项目名称</th>
+				<th  class="sort-column businessType">业务类型</th>
+				<th  class="sort-column contractId.client.name">客户单位</th>
+				<th >项目负责人</th>
+				<th  class="sort-column createDate">创建时间</th>
+				<th  class="sort-column status">项目状态</th>
+				<th  class="sort-column status">项目归档</th>
+				<th  class="sort-column status">流程追踪</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:choose>
+		<c:when test="${not empty page.list}">
+		<c:forEach items="${page.list}" var="workEngineeringProject">
+			<tr>
+				<td> <input type="checkbox" id="${workEngineeringProject.id}" class="i-checks"></td>
+				<td>
+					<span title="${workEngineeringProject.reportNumber}">${fns:abbr(workEngineeringProject.reportNumber,30)}</span>
+				</td>
+				<%--<td>--%>
+					<%--<span title="${workEngineeringProject.projectId.number}">${fns:abbr(workEngineeringProject.projectId.number,30)}</span>--%>
+				<%--</td>--%>
+				<td>
+					<a  href="javascript:void(0)" onclick="openDialogView('查看工程项目信息', '${ctx}/workengineeringproject/workEngineeringProject/form?id=${workEngineeringProject.id}&name=view','80%','80%')">
+						<span title="${workEngineeringProject.totalProjectName}">${fns:abbr(workEngineeringProject.totalProjectName,30)}</span>
+					</a>
+				</td>
+				<td>
+					<a  href="javascript:void(0)" onclick="openDialogView('查看工程项目信息', '${ctx}/workengineeringproject/workEngineeringProject/form?id=${workEngineeringProject.id}&name=view','80%','80%')">
+						<span title="${workEngineeringProject.projectId.name}">${fns:abbr(workEngineeringProject.projectId.name,30)}</span>
+					</a>
+				</td>
+				<td>
+					${fns:getMainDictLabel(workEngineeringProject.businessType, 'business_type', '')}
+				</td>
+				<td>
+						<a  href="javascript:void(0)" onclick="openDialogView('查看客户管理', '${ctx}/workclientinfo/workClientInfo/detail?id=${workEngineeringProject.workClientInfo.id}','80%','80%')">
+							<span title="${workEngineeringProject.workClientInfo.name}">${fns:abbr(workEngineeringProject.workClientInfo.name,30)}</span>
+						</a>
+				</td>
+				<td>
+						${fns:abbr(workEngineeringProject.hostOfficeMasterName,30)}
+				</td>
+				<td>
+					<fmt:formatDate value="${workEngineeringProject.createDate}" pattern="yyyy-MM-dd"/>
+				</td>
+				<td>
+					${fns:getDictLabel(workEngineeringProject.status, 'engineering_type', '')}
+				</td>
+				<td>
+					<c:choose>
+						<c:when test="${workEngineeringProject.status eq 5 && !fn:containsIgnoreCase(workEngineeringProject.remarks,'归档') && fns:getUser().id eq workEngineeringProject.createBy.id}">
+							<%--<a href="javascript:void(0)" onclick="openDialogre('项目归档','${ctx}/engineeringrecord/engineeringrecord/form?engineeringrecord=${workEngineeringProject.id}','80%','80%')" class="btn btn-info btn-xs">项目归档</a>--%>
+							<a href="${ctx}/engineeringrecord/engineeringrecord/startposs?engineeringId=${workEngineeringProject.id}" onclick="return confirmx('确认要发起项目归档吗?', this.href)"   class="btn btn-info btn-xs"> 项目归档</a>
+						</c:when>
+						<%--<c:when test="${workEngineeringProject.status eq 5 && fn:containsIgnoreCase(workEngineeringProject.remarks,'归档') && glygd}">
+							<a href="javascript:void(0)" onclick="openDialogre('项目归档','${ctx}/engineeringrecord/engineeringrecord/form?engineeringId=${workEngineeringProject.id}','80%','80%')" class="btn btn-info btn-xs">项目归档</a>
+						</c:when>--%>
+						<c:otherwise>
+							<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('当前状态不能进行项目归档!',{icon:2})" class="btn btn-default btn-xs">项目归档</a>
+						</c:otherwise>
+					</c:choose>
+				</td>
+				<td>
+					<c:choose>
+						<c:when test="${workEngineeringProject.status eq 5 && fn:containsIgnoreCase(workEngineeringProject.remarks,'归档')}">
+							<a href="javascript:void(0)" onclick="openDialogView('流程追踪', '${ctx}/engineeringrecord/engineeringrecord/getProcessOne?engineeringId=${workEngineeringProject.id}','80%','80%')" class="btn btn-info btn-xs" > 流程追踪</a>
+						</c:when>
+						<c:otherwise>
+							<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('当前流程未启动!',{icon:2})" class="btn btn-default btn-xs">流程追踪</a>
+						</c:otherwise>
+					</c:choose>
+				</td>
+				<td>
+					<a href="javascript:void(0)" onclick="openDialogView('查看工程项目归档信息', '${ctx}/engineeringrecord/engineeringrecord/form?engineeringId=${workEngineeringProject.id}&tabId=10','1080px', '500px')" class="btn btn-info btn-xs" ><i class="fa fa-search"></i> 查看</a>
+				</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>

+ 578 - 0
src/main/webapp/webpage/modules/workengineeringproject/workEngineeringRecordView.jsp

@@ -0,0 +1,578 @@
+<%@ 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>
+	<style type="text/css">
+		.table{
+			margin-bottom: 0px;
+		}
+		.workfull>.form-horizontal{
+			margin: 0;
+			padding: 0;
+		}
+	</style>
+	<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)
+                    .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);
+                    }
+                }
+            });
+        });
+
+	</script>
+</head>
+<body class="hideScroll">
+<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-content">
+		<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-striped table-bordered table-hover table-condensed dataTables-example">
+					<tbody>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">项目编号:<font color="red">*</font></label></td>
+						<td class="width-25">
+							${workEngineeringProject.projectId.number}
+						</td>
+						<td class="width-15 active"><label class="pull-right">业务类型:</label></td>
+						<td class="width-25">
+							${fns:getMainDictLabel(workEngineeringProject.businessType, 'business_type', '')}
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">创建日期:<font color="red">*</font></label></td>
+						<td class="width-25" colspan="3">
+							<fmt:formatDate value="${workEngineeringProject.createDate}" pattern="yyyy-MM-dd"/>
+						</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-striped table-bordered table-hover table-condensed dataTables-example">
+					<tbody>
+					<tr>
+						<td class="width-15 active" ><label class="pull-right">报告文件:</label></td>
+						<td class="width-35" colspan="3">
+							<table id="workReportList"  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="${workReportList}" var="attachment" varStatus="status">
+                                    <tr>
+                                        <td>${status.index + 1}</td>
+                                        <td>${attachment.attachmentName}</td>
+                                        <td>${attachment.attachmentUser}</td>
+                                        <td><fmt:formatDate value="${attachment.createDate}" pattern="yyyy-MM-dd"/></td>
+                                        <td>
+                                            <a href="${attachment.url}" class="btn btn-white btn-xs">下载</a>
+                                        </td>
+                                    </tr>
+                                </c:forEach>--%>
+								<c:forEach items="${workReportList}" var="attachment" varStatus="status">
+								<tr>
+										<%--<td>${status.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}" 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="${attachment.url}">${attachment.attachmentName}</a></td>
+													</c:when>
+													<c:otherwise>
+														<td><a href="javascript:void(0)" onclick="openDialogViewPre('预览','${ctx}/previewController/previewUrl?fileUrl=${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+													</c:otherwise>
+												</c:choose>
+											</c:otherwise>
+										</c:choose>--%>
+									<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,'bmp')
+                                                               or fn:containsIgnoreCase(attachment.attachmentName,'jpeg')}">
+											<td><img src="${attachment.url}" 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')">${attachment.attachmentName}</a></td>
+												</c:when>
+												<c:otherwise>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('${ctx}/previewController/previewUrl?fileUrl=${workClientAttachment.url}','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openword','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<td><a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openexcel','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openppt','80%','80%')">${workClientAttachment.attachmentName}</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="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/workengineeringproject/workEngineeringProject/deleteFileFromAliyun?attachmentId=${attachment.id}&id=${workEngineeringProject.id}&type=2')" class="btn btn-danger btn-xs" >删除</a>
+										</td>
+								</tr>
+								</c:forEach>
+							</table>
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">依据性资料:</label></td>
+						<td class="width-35" colspan="3">
+							<table id="workBasisInformationList"  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="${workBasisInformationList}" var="attachment" varStatus="status">
+								<tr>
+										<%--<td>${status.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}" 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="${attachment.url}">${attachment.attachmentName}</a></td>
+													</c:when>
+													<c:otherwise>
+														<td><a href="javascript:void(0)" onclick="openDialogViewPre('预览','${ctx}/previewController/previewUrl?fileUrl=${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+													</c:otherwise>
+												</c:choose>
+											</c:otherwise>
+										</c:choose>--%>
+									<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,'bmp')
+                                                               or fn:containsIgnoreCase(attachment.attachmentName,'jpeg')}">
+											<td><img src="${attachment.url}" 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')">${attachment.attachmentName}</a></td>
+												</c:when>
+												<c:otherwise>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('${ctx}/previewController/previewUrl?fileUrl=${workClientAttachment.url}','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openword','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<td><a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openexcel','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openppt','80%','80%')">${workClientAttachment.attachmentName}</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="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/workengineeringproject/workEngineeringProject/deleteFileFromAliyun?attachmentId=${attachment.id}&id=${workEngineeringProject.id}&type=2')" class="btn btn-danger btn-xs" >删除</a>
+										</td>
+								</tr>
+								</c:forEach>
+							</table>
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">过程控制资料:</label></td>
+						<td class="width-35" colspan="3">
+							<table id="workRemoteControlList"  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="${workRemoteControlList}" var="attachment" varStatus="status">
+								<tr>
+										<%--<td>${status.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}" 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="${attachment.url}">${attachment.attachmentName}</a></td>
+													</c:when>
+													<c:otherwise>
+														<td><a href="javascript:void(0)" onclick="openDialogViewPre('预览','${ctx}/previewController/previewUrl?fileUrl=${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+													</c:otherwise>
+												</c:choose>
+											</c:otherwise>
+										</c:choose>--%>
+									<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,'bmp')
+                                                               or fn:containsIgnoreCase(attachment.attachmentName,'jpeg')}">
+											<td><img src="${attachment.url}" 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')">${attachment.attachmentName}</a></td>
+												</c:when>
+												<c:otherwise>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('${ctx}/previewController/previewUrl?fileUrl=${workClientAttachment.url}','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openword','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<td><a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openexcel','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openppt','80%','80%')">${workClientAttachment.attachmentName}</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="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/workengineeringproject/workEngineeringProject/deleteFileFromAliyun?attachmentId=${attachment.id}&id=${workEngineeringProject.id}&type=2')" class="btn btn-danger btn-xs" >删除</a>
+										</td>
+								</tr>
+								</c:forEach>
+							</table>
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">汇总表:</label></td>
+						<td class="width-35" colspan="3">
+							<table id="workSummaryList"  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="${workSummaryList}" var="attachment" varStatus="status">
+								<tr>
+										<%--<td>${status.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}" 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="${attachment.url}">${attachment.attachmentName}</a></td>
+													</c:when>
+													<c:otherwise>
+														<td><a href="javascript:void(0)" onclick="openDialogViewPre('预览','${ctx}/previewController/previewUrl?fileUrl=${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+													</c:otherwise>
+												</c:choose>
+											</c:otherwise>
+										</c:choose>--%>
+									<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,'bmp')
+                                                               or fn:containsIgnoreCase(attachment.attachmentName,'jpeg')}">
+											<td><img src="${attachment.url}" 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')">${attachment.attachmentName}</a></td>
+												</c:when>
+												<c:otherwise>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('${ctx}/previewController/previewUrl?fileUrl=${workClientAttachment.url}','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openword','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<td><a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openexcel','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openppt','80%','80%')">${workClientAttachment.attachmentName}</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="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/workengineeringproject/workEngineeringProject/deleteFileFromAliyun?attachmentId=${attachment.id}&id=${workEngineeringProject.id}&type=2')" class="btn btn-danger btn-xs" >删除</a>
+										</td>
+								</tr>
+								</c:forEach>
+							</table>
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">其他资料:</label></td>
+						<td class="width-35" colspan="3">
+							<table id="workOtherList"  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="${workOtherList}" var="attachment" varStatus="status">
+								<tr>
+										<%--<td>${status.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}" 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="${attachment.url}">${attachment.attachmentName}</a></td>
+													</c:when>
+													<c:otherwise>
+														<td><a href="javascript:void(0)" onclick="openDialogViewPre('预览','${ctx}/previewController/previewUrl?fileUrl=${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+													</c:otherwise>
+												</c:choose>
+											</c:otherwise>
+										</c:choose>--%>
+									<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,'bmp')
+                                                               or fn:containsIgnoreCase(attachment.attachmentName,'jpeg')}">
+											<td><img src="${attachment.url}" 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')">${attachment.attachmentName}</a></td>
+												</c:when>
+												<c:otherwise>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('${ctx}/previewController/previewUrl?fileUrl=${workClientAttachment.url}','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openword','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<td><a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openexcel','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openppt','80%','80%')">${workClientAttachment.attachmentName}</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="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/workengineeringproject/workEngineeringProject/deleteFileFromAliyun?attachmentId=${attachment.id}&id=${workEngineeringProject.id}&type=2')" class="btn btn-danger btn-xs" >删除</a>
+										</td>
+								</tr>
+								</c:forEach>
+							</table>
+						</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 workfull" >
+					<table class="table table-striped table-bordered table-hover table-condensed dataTables-example">
+						<tbody>
+						<tr>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>案卷名称:</label></td>
+							<td class="width-25" colspan="3">
+									${workFullRecord.recordName}
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>案卷号:</label></td>
+							<td class="width-35">
+								<input type="hidden" name="workFullManage.id" value="${workFullRecord.workFullManage.id}"   class="form-control "/>
+									${workFullRecord.recordNumber}
+							</td>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>归档号:</label></td>
+							<td class="width-35">
+									${workFullRecord.backRecordNumber}
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>所属卷库:</label></td>
+							<td class="width-25">
+									${fns:getDictLabel(workFullRecord.recordLibNumber, 'record_lib_number', '')}
+							</td>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>归档年代:</label></td>
+							<td class="width-25">
+									${workFullRecord.backRecordYear}
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>所属部门:</label></td>
+							<td class="width-25">
+									${workFullRecord.backRecordDept.name}
+							</td>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>编制结构:</label></td>
+							<td class="width-25">
+									${workFullRecord.compleOrganization}
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>保管期限:</label></td>
+							<td class="width-25">
+									${fns:getDictLabel(workFullRecord.retentionPeriod, 'retention_period', '')}
+							</td>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>起止日期:</label></td>
+							<td class="width-25">
+								<div class="col-sm-5" style="padding: 5px 0 0 0 ;">
+									<fmt:formatDate value="${workFullRecord.startTime}" pattern="yyyy-MM-dd" />
+								</div>
+								<div class="col-sm-2 text-center" style="padding: 0;vertical-align: middle;line-height: 30px;">
+									至
+								</div>
+								<div class="col-sm-5" style="padding: 5px 0 0 0 ;">
+									<fmt:formatDate value="${workFullRecord.endTime}" pattern="yyyy-MM-dd" />
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>案卷密级:</label></td>
+							<td class="width-25">
+									${fns:getDictLabel(workFullRecord.recordSecretLevel, 'record_secret_level', '')}
+							</td>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>全宗号:</label></td>
+							<td class="width-25">
+									${workFullRecord.fondsNumber}
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>目录号:</label></td>
+							<td class="width-25">
+									${workFullRecord.listsNumber}
+							</td>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>归档馆号:</label></td>
+							<td class="width-25">
+									${workFullRecord.recordProNumber}
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>保险箱号:</label></td>
+							<td class="width-25">
+									${workFullRecord.strongboxNumber}
+							</td>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>缩微号:</label></td>
+							<td class="width-25">
+									${workFullRecord.microNumber}
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>凭证类别:</label></td>
+							<td class="width-25">
+									${fns:getDictLabel(workFullRecord.ekkoType, 'ekko_type', '')}
+							</td>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>凭证编号:</label></td>
+							<td class="width-25">
+								<div class="col-sm-5" style="padding: 5px 0 0 0 ;">
+										${workFullRecord.ekkoBstypOne}
+								</div>
+								<div class="col-sm-2 text-center" style="padding: 0;vertical-align: middle;line-height: 30px;">
+									至
+								</div>
+								<div class="col-sm-5" style="padding: 5px 0 0 0 ;">
+										${workFullRecord.ekkoBstypTwo}
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>报告号:</label></td>
+							<td class="width-25">
+									${workFullRecord.reportNumber}
+							</td>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>页数:</label></td>
+							<td class="width-25">
+									${workFullRecord.pageNumber}
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>案卷管理员:</label></td>
+							<td class="width-25">
+									${workFullRecord.manageId}
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>备注:</label></td>
+							<td class="width-25" colspan="3">
+									${workFullRecord.remarks}
+							</td>
+						</tr>
+						</tbody>
+					</table>
+			</div>
+		</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 457 - 0
src/main/webapp/webpage/modules/workengineeringproject/workProjectPlanAdd.jsp

@@ -0,0 +1,457 @@
+<%@ 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">
+        $(function(){
+            $("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(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+			if(validateForm.form()){
+                if(obj == 2){
+                    $("#inputForm").attr("action","${ctx}/workengineeringproject/workEngineeringProject/storePlan");
+                }else{
+                    $("#inputForm").attr("action","${ctx}/workengineeringproject/workEngineeringProject/savePlan");
+                }
+                $("#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);
+                    }
+                }
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+        });
+
+        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;
+                        }
+                    }
+                });
+        }
+
+        function openBill(title,url,width,height,target,formId,eleId){
+            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 $document = iframeWin.contentWindow.document;
+                    formSubmit($document,formId,eleId,index);
+                },
+                cancel: function(index){
+                }
+            });
+        }
+        function formSubmit($document,inputForm,workProjectPlans,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);
+                    }
+                }
+            });
+            var data  = 'error'
+            if(validateForm.form()){
+                $($document.getElementById(inputForm)).ajaxSubmit({
+                    success:function(data) {
+                        var d = data;
+                        /*var formUrl = '${ctx}/workengineeringproject/workEngineeringProject/addPlanRow?&id='+d.id;
+                        var formId  = 'inputFormDesign';
+                        var tableId = '#planId';
+                        var deleteUrl = '${ctx}/workengineeringproject/workEngineeringProject/deleteRow?id='+d.id;
+                       	var lenght = $("#workProjectPlans tr").length;
+                        var taskcount = lenght+1;
+                       var str = '<tr id="trId">'+
+								'<td>'+
+								'</td>'+
+								'</td>'+
+								'<td>'+
+                         		  taskcount+
+								'</td>'+
+						   		'<td>'+
+								'<input name="workProjectPlans['+lenght+'].taskName" type="text" class="form-control required" value="'+d.taskName+'"/>'+
+						   		'</td>'+
+						   		'<td>'+
+								'<input id="startTime1" name="workProjectPlans['+lenght+'].startTime" type="text" readonly="readonly" maxlength="20" style="width:140px;" class="laydate-icondate form-control layer-date" value="'+d.startTime+'"/>'+
+								'</td>'+
+						   		'<td>'+
+								  '<input id="endTime1" name="workProjectPlans['+lenght+'].endTime" type="text" readonly="readonly" maxlength="20" style="width:140px;" class="laydate-icondate form-control layer-date" value="'+d.endTime+'"/>'+
+								  '</td>'+
+								  '<td>'+
+								   '<select id="'+lenght+'" name="workProjectPlans['+lenght+'].remindUser.id" class="form-control m-b">'+
+									'<c:forEach items="${users}" var="u">'+
+									'<option value="${u.id }"'+
+									'<c:if test="${plan.remindUser.id==u.id}">'+
+									'<c:out value="selected"/>'+
+									'</c:if>>'+
+									'${u.name}'+
+									'</option>'+
+									'</c:forEach>'+
+									'</select>'+
+								  '</td>'+
+								  '<td>'+
+								  '<input id="remindDate1" name="workProjectPlans['+lenght+'].remindDate" type="text" readonly="readonly" maxlength="20" style="width:140px;" class="laydate-icondate form-control layer-date" value="'+d.remindDate+'"/>'+
+								   '<input name="workProjectPlans['+lenght+'].id" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="laydate-icondate form-control layer-date" value="'+d.ids+'"/>'+
+								   '</td>'+
+								'</tr>';
+                        $(workProjectPlans).append(str);*/
+
+                        parent.layer.msg(d.str,{icon:1});
+                        top.layer.close(index);
+                        location.reload();
+                    }
+                });
+            }
+        }
+
+        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 = "4";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workProjectPlan/"+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);}
+            /*var formData = new FormData();
+            formData.append("attachment_file",$("#attachment_file")[0].files[0]);
+            formData.append("srcName","workEngineeringProject");
+            formData.append("attachmentFlag","4");
+            formData.append("id",$("#id").val());
+            $.ajax({
+                url:'${ctx}/sys/workattachment/uploadFiletoAly',
+                type:"POST",
+                data:formData,
+                processData:false,
+                contentType:false,
+                cache:false,
+                success:function(data){
+                    if(data.status=="Success"){
+                        parent.layer.msg("上传成功!",{icon:1});
+                        var lenght = $("#workAttachments tr").length;
+                        var str = '<tr id="trIdAdds">'+
+                            '<td>'+(lenght+1)+'</td>'+
+                            '<td>' ;
+                        if (isContains("jpg,png,gif,bmp,jpeg",data.type)){
+                            str = str +'<img src="'+data.url+'" width="50" height="50" alt="'+data.attachmentName+'"/>';
+                        }else if(isContains("pdf",data.type)){
+                            str = str + '<a href="javascript:void(0)" onclick="preview(\'预览\',\''+data.url+'\',\'800px\',\'500px\',\'1\')">'+data.attachmentName+'</a>';
+                        }else {
+                            str = str + '<a href="javascript:void(0)" onclick="preview(\'预览\',\''+data.url+'\',\'800px\',\'500px\')">'+data.attachmentName+'</a>';
+                        }
+                        str = str +'</td>'+
+                            '<td>'+data.createByName+'</td>'+
+                            '<td>'+data.createDate+
+                            '<input name="workAttachments['+lenght+'].id" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.id+'"/>'+
+                            '<input name="workAttachments['+lenght+'].attachmentId" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.attachmentId+'"/>'+
+                            '<input name="workAttachments['+lenght+'].url" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.url+'"/>'+
+                            '<input name="workAttachments['+lenght+'].attachmentName" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.attachmentName+'"/>'+
+                            '<input name="workAttachments['+lenght+'].createBy.id" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.createBy+'"/>'+
+                            '<input name="workAttachments['+lenght+'].type" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.type+'"/>'+
+                            '<input name="workAttachments['+lenght+'].attachmentFlag" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.attachmentFlag+'"/>'+
+                            '</td>'+
+                            '<td>'+
+                            '<a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+data.url+'" class="btn btn-success btn-xs">下载</a>'+
+                            '    <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,\'${ctx}/workengineeringproject/workEngineeringProject/deleteFileFromAliyun?attachmentId='+data.id+'&url='+data.url+'&id=${workEngineeringProject.id}&type=2\')" class="btn btn-danger btn-xs" >删除</a>'+
+                            '    </td>'+
+                            '</tr>';
+                        $(workAttachments).append(str);
+                        $("img").not(".upload_ico").each(function () {
+                            var num = 1 ;
+                            $(this).live("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++;
+                                }
+                            })
+                        });
+                    }else {
+                        parent.layer.msg("上传失败!",{icon:2});
+                    }
+
+                }
+            });
+            $("#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 deleteRowAll(obj){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workengineeringproject/workEngineeringProject/deleteRow',
+                data:{
+                    "ids":obj
+                },
+                success:function(data){
+                    var d = JSON.parse(data);
+                    if (d.str == "success"){
+                        parent.layer.msg(d.str,{icon:1});
+                    }else {
+                        parent.layer.msg(d.str,{icon:2});
+                    }
+                    location.reload();
+                }
+            })
+        }
+
+        function isContains(str, substr) {
+            return str.indexOf(substr) >= 0;
+        }
+
+	</script>
+</head>
+<body class="gray-bg">
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+		<!-- 工具栏 -->
+		<div class="row">
+			<div class="col-sm-12">
+				<div class="pull-left">
+					<%--<button class="btn btn-white btn-sm" title="资格预审项目" onclick="rowAdd()"><i class="fa fa-plus"></i>&nbsp;新增</button>
+					<table:removeRow id="contentTable"></table:removeRow><!-- 删除按钮 -->--%>
+					<p>
+						<table:removeRow url="${ctx}/workengineeringproject/workEngineeringProject/deleteRow" id="contentTable"></table:removeRow><!-- 删除按钮 -->
+						&nbsp;
+						<span onclick="openBill('添加','${ctx}/workengineeringproject/workEngineeringProject/addPlanRow?id=${workEngineeringProject.id}&businessType=${workEngineeringProject.businessType}','80%','80%',false,'inputForm','#workProjectPlans')" class="btn btn-primary btn-sm" ><i class="fa fa-plus"></i>添加</span>
+					</p>
+				</div>
+			</div>
+		</div>
+
+	<div class="row">
+	<div class="col-sm-12">
+		<form:form id="inputForm" modelAttribute="workEngineeringProject" 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>
+				<table id="contentTable" class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+				<thead>
+					<tr>
+						<th> <input type="checkbox" id="checkboxId" class="i-checks"></th>
+						<th>任务序号</th>
+						<th>任务名称</th>
+						<th>开始时间</th>
+						<th>结束时间</th>
+						<th>提醒人</th>
+						<th>提醒时间</th>
+					</tr>
+				</thead>
+				<tbody id="workProjectPlans">
+						<c:forEach items="${workEngineeringProject.workProjectPlans}" var="plan" varStatus="status">
+						<tr id="trId">
+							<td >
+								<input type="checkbox" id="${plan.id}" class="i-checks"></td>
+							</td>
+							<td>
+								${status.index+1}
+							</td>
+							<td>
+								<input name="workProjectPlans[${status.index }].taskName" type="text" class="form-control required" value="${plan.taskName}"/>
+								<input name="workProjectPlans[${status.index }].id" type="hidden" class="form-control required" value="${plan.id}"/>
+							</td>
+							<td>
+								<input class="form-control layer-date laydate-icon " readonly="readonly" name="workProjectPlans[${status.index}].startTime" value="<fmt:formatDate value="${plan.startTime}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+
+							</td>
+							<td>
+								<input class="form-control layer-date laydate-icon " readonly="readonly" name="workProjectPlans[${status.index}].endTime" value="<fmt:formatDate value="${plan.endTime}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+
+							</td>
+							<td>
+								<select id="${status.index +233}" name="workProjectPlans[${status.index}].remindUser.id" class="form-control m-b">
+									<option value="" label=""> </option>
+									<c:forEach items="${users}" var="list" >
+										<option value="${list.id}" ${list.id==plan.remindUser.id?'selected':''}>${list.name}</option>
+									</c:forEach>
+								</select>
+								<%--<select id="${status.index +233}" name="workProjectPlans[${status.index}].remindUser.id" class="form-control m-b">
+									<c:forEach items="${users}" var="u">
+										<option value="${u.id }"
+												<c:if test="${not empty plan.remindUser.id && plan.remindUser.id==u.id}">
+													<c:out value="selected"/>
+												</c:if>>
+												${u.name}
+										</option>
+									</c:forEach>
+								</select>--%>
+							</td>
+							<td>
+								<input class="form-control layer-date laydate-icon " readonly="readonly" name="workProjectPlans[${status.index}].remindDate" value="<fmt:formatDate value="${plan.remindDate}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+							</td>
+						</tr>
+						</c:forEach>
+						</tbody>
+						<c:if test="${projectPlanList == 0}">
+							<tr>
+								<td colspan="6">暂无数据</td>
+							</tr>
+						</c:if>
+					</tbody>
+				</table>
+				<br/><br/>
+				<tr>
+					<td class="width-15 active"><label class="pull-left">上传附件表:</label></td>
+					<td class="width-35" colspan="3">
+						<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>
+					</td>
+					<td class="width-35" colspan="3">
+						<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="status">
+									<tr>
+										<%--<td>${status.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,'bmp')
+																		   or fn:containsIgnoreCase(attachment.attachmentName,'jpeg')}">
+													<td><img src="${attachment.url}" 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')">${attachment.attachmentName}</a></td>
+														</c:when>
+														<c:otherwise>
+															<td><a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%')">${attachment.attachmentName}</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="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>
+												<c:if test="${attachment.createBy.id eq fns:getUser().id}">
+													<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/workengineeringproject/workEngineeringProject/deleteFileFromAliyun?attachmentId=${attachment.id}&id=${workEngineeringProject.id}&type=2','')" class="btn btn-danger btn-xs" >删除</a>
+												</c:if>
+												<input name="workAttachments[${status.index}].id" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="${attachment.id}"/>
+												<input name="workAttachments[${status.index}].url" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="${attachment.url}"/>
+											</td>
+									</tr>
+								</c:forEach>
+							</tbody>
+						</table>
+					</td>
+				</tr>
+		</table>
+		</form:form>
+</body>
+</html>

+ 58 - 0
src/main/webapp/webpage/modules/workengineeringproject/workProjectPlanAddRow.jsp

@@ -0,0 +1,58 @@
+<%@ 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: '#startTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#endTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#remindDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+        });
+
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workProjectPlan" action="${ctx}/workengineeringproject/workEngineeringProject/addPlanRowData" method="post" class="form-horizontal">
+		<form:hidden path="projectId"/>
+		<form:hidden path="type"/>
+			<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:input path="taskCount" htmlEscape="false"    class="form-control required"/>
+					</td>--%>
+					<td class="width-15 active"><label class="pull-right">任务名称:</label></td>
+					<td class="width-35" colspan="3">
+						<form:input path="taskName" htmlEscape="false"    class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">开始时间:</label></td>
+					<td class="width-35" >
+						<input id="startTime" name="startTime" type="text" maxlength="20" class="laydate-icondate form-control layer-date "
+							   value="<fmt:formatDate value="${workProjectPlan.startTime}" pattern="yyyy-MM-dd"/>"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">结束时间:</label></td>
+					<td class="width-35">
+						<input id="endTime" name="endTime" type="text" maxlength="20" class="laydate-icondate form-control layer-date "
+							   value="<fmt:formatDate value="${workProjectPlan.endTime}" pattern="yyyy-MM-dd"/>"/>
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 518 - 0
src/main/webapp/webpage/modules/workengineeringproject/workProjectPlanEdit.jsp

@@ -0,0 +1,518 @@
+<%@ 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">
+        $(function(){
+            $("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);
+                    }
+                }
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+        });
+
+
+        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;
+                        }
+                    }
+                });
+        }
+
+        function openBill(title,url,width,height,target,formId,eleId){
+            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 $document = iframeWin.contentWindow.document;
+                    formSubmit($document,formId,eleId,index);
+                },
+                cancel: function(index){
+                }
+            });
+        }
+        function formSubmit($document,inputForm,workProjectPlans,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);
+                    }
+                }
+            });
+            var data  = 'error'
+            if(validateForm.form()){
+                $($document.getElementById(inputForm)).ajaxSubmit({
+                    success:function(data) {
+                        var d = data;
+                        parent.layer.msg(d.str,{icon:1});
+                        top.layer.close(index)
+                        location.reload();
+                    }
+                });
+            }
+        }
+
+        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 = "4";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workProjectPlan/"+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);}
+            /*var formData = new FormData();
+            formData.append("attachment_file",$("#attachment_file")[0].files[0]);
+            formData.append("srcName","workEngineeringProject");
+            formData.append("attachmentFlag","4");
+            formData.append("id",$("#id").val());
+            $.ajax({
+                url:'${ctx}/sys/workattachment/uploadFiletoAly',
+                type:"POST",
+                data:formData,
+                processData:false,
+                contentType:false,
+                cache:false,
+                success:function(data){
+                   if(data.status=="Success"){
+                       parent.layer.msg("上传成功!",{icon:1});
+                       var lenght = $("#workAttachments tr").length;
+                       var str = '<tr id="trIdAdds">'+
+                       '<td>'+(lenght+1)+'</td>'+
+                       '<td>' ;
+                       if (isContains("jpg,png,gif,bmp,jpeg",data.type)){
+                           str = str +'<img src="'+data.url+'" width="50" height="50" alt="'+data.attachmentName+'"/>';
+                       }else if(isContains("pdf",data.type)){
+                           str = str + '<a href="javascript:void(0)" onclick="preview(\'预览\',\''+data.url+'\',\'800px\',\'500px\',\'1\')">'+data.attachmentName+'</a>';
+                       }else {
+                           str = str + '<a href="javascript:void(0)" onclick="preview(\'预览\',\''+data.url+'\',\'800px\',\'500px\')">'+data.attachmentName+'</a>';
+                       }
+                       str = str +'</td>'+
+                       '<td>'+data.createByName+'</td>'+
+                       '<td>'+data.createDate+
+							   '<input name="workAttachments['+lenght+'].id" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.id+'"/>'+
+							   '<input name="workAttachments['+lenght+'].attachmentId" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.attachmentId+'"/>'+
+							   '<input name="workAttachments['+lenght+'].url" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.url+'"/>'+
+							   '<input name="workAttachments['+lenght+'].attachmentName" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.attachmentName+'"/>'+
+							   '<input name="workAttachments['+lenght+'].createBy.id" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.createBy+'"/>'+
+							   '<input name="workAttachments['+lenght+'].type" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.type+'"/>'+
+							   '<input name="workAttachments['+lenght+'].attachmentFlag" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.attachmentFlag+'"/>'+
+						 '</td>'+
+						'<td>'+
+                       '<a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+data.url+'" class="btn btn-success btn-xs">下载</a>'+
+                       '    <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,\'${ctx}/workengineeringproject/workEngineeringProject/deleteFileFromAliyun?attachmentId='+data.id+'&url='+data.url+'&id=${workEngineeringProject.id}&type=2\')" class="btn btn-danger btn-xs" >删除</a>'+
+                       '    </td>'+
+                       '</tr>';
+                       $(workAttachments).append(str);
+                       $("img").not(".upload_ico").each(function () {
+                           var num = 1 ;
+                           $(this).live("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++;
+                               }
+                           })
+                       });
+                   }else {
+                       parent.layer.msg("上传失败!",{icon:2});
+                   }
+
+                }
+            });
+            $("#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 deleteRowAll(obj){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workengineeringproject/workEngineeringProject/deleteRow',
+                data:{
+                    "ids":obj
+                },
+                success:function(data){
+                    var d = JSON.parse(data);
+                    if (d.str == "success"){
+                        parent.layer.msg(d.str,{icon:1});
+                    }else {
+                        parent.layer.msg(d.str,{icon:2});
+                    }
+                    location.reload();
+                }
+            })
+        }
+        function isContains(str, substr) {
+            return str.indexOf(substr) >= 0;
+        }
+
+        function preview(title,url,width,height,type){
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            var u = 'http://ow365.cn/?i=14411&furl='+url;
+            if(type == 1){
+                u = url;
+            }
+            parent.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content:  u,
+                btn: ['关闭'],
+                cancel: function(index){
+                }
+            });
+        }
+	</script>
+</head>
+<body class="gray-bg">
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+		<!-- 工具栏 -->
+		<div class="row">
+			<div class="col-sm-12">
+				<div class="pull-left">
+					<%--<button class="btn btn-white btn-sm" title="资格预审项目" onclick="rowAdd()"><i class="fa fa-plus"></i>&nbsp;新增</button>
+					<table:removeRow id="contentTable"></table:removeRow><!-- 删除按钮 -->--%>
+					<p>
+						<table:removeRow url="${ctx}/workengineeringproject/workEngineeringProject/deleteRow" id="contentTable"></table:removeRow><!-- 删除按钮 -->
+
+						&nbsp;
+						<span onclick="openBill('添加','${ctx}/workengineeringproject/workEngineeringProject/addPlanRow?id=${workEngineeringProject.id}&businessType=${workEngineeringProject.businessType}','80%','80%',false,'inputForm','#workProjectPlans')" class="btn btn-primary btn-sm" ><i class="fa fa-plus"></i>添加</span>
+					</p>
+				</div>
+			</div>
+		</div>
+
+	<div class="row">
+	<div class="col-sm-12">
+		<form:form id="inputForm" modelAttribute="workEngineeringProject" action="${ctx}/workengineeringproject/workEngineeringProject/storePlan" 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>
+				<table id="contentTable" class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+					<thead>
+					<tr>
+						<th> <input type="checkbox" id="checkboxId" class="i-checks"></th>
+						<th>任务序号</th>
+						<th>任务名称</th>
+						<th>开始时间</th>
+						<th>结束时间</th>
+						<th>提醒人</th>
+						<th>提醒时间</th>
+					</tr>
+					</thead>
+					<tbody id="workProjectPlans">
+						<c:forEach items="${workEngineeringProject.workProjectPlans}" var="plan" varStatus="status">
+							<c:if test="${plan.status eq 1}">
+								<tr id="trId">
+									<td>
+										<i class="fa fa-check-circle"></i>
+									</td>
+									<td>
+											${status.index+1}
+									</td>
+									<td>
+											${plan.taskName}
+									</td>
+									<td>
+										<fmt:formatDate value="${plan.startTime}" pattern="yyyy-MM-dd"/>
+									</td>
+									<td>
+										<fmt:formatDate value="${plan.endTime}" pattern="yyyy-MM-dd"/>
+									</td>
+									<td>
+											${plan.remindUser.name}
+									</td>
+									<td>
+										<fmt:formatDate value="${plan.remindDate}" pattern="yyyy-MM-dd"/>
+										<input name="workProjectPlans[${status.index}].id" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="${plan.id}"/>
+										<input name="workProjectPlans[${status.index}].completeUser" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="${plan.completeUser}"/>
+										<%--<input name="workProjectPlans[${status.index}].completeDate" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="laydate-icondate form-control layer-date" value="<fmt:formatDate value="${plan.completeDate}" pattern="yyyy-MM-dd"/>"/>
+										--%>
+										<input name="workProjectPlans[${status.index}].type" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="${plan.type}"/>
+										<input name="workProjectPlans[${status.index}].status" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="${plan.status}"/>
+										<input class="form-control layer-date laydate-icon required" type="hidden" name="workProjectPlans[${status.index}].completeDate" value="<fmt:formatDate value="${plan.completeDate}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+									</td>
+								</tr>
+							</c:if>
+							<c:if test="${plan.status eq 0}">
+								<tr id="trId">
+									<td>
+										<input type="checkbox" id="${plan.id}" class="i-checks"></td>
+									</td>
+									<td>
+											${status.index+1}
+									</td>
+									<td>
+										<input name="workProjectPlans[${status.index }].taskName" type="text" class="form-control required" value="${plan.taskName}"/>
+									</td>
+									<td>
+										<input class="form-control layer-date laydate-icon " readonly="readonly" name="workProjectPlans[${status.index}].startTime" value="<fmt:formatDate value="${plan.startTime}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+										<%--<input id="startTime" name="workProjectPlans[${status.index }].startTime" type="text" readonly="readonly" maxlength="20" style="width:140px;" class="laydate-icondate form-control layer-date" value="<fmt:formatDate value="${plan.startTime}" pattern="yyyy-MM-dd"/>"/>
+									--%></td>
+									<td>
+										<input class="form-control layer-date laydate-icon " readonly="readonly" name="workProjectPlans[${status.index}].endTime" value="<fmt:formatDate value="${plan.endTime}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+
+										</td>
+									<td>
+										<select id="${status.index +233}" name="workProjectPlans[${status.index}].remindUser.id" class="form-control m-b">
+											<option value="" label=""> </option>
+											<c:forEach items="${users}" var="list" >
+												<option value="${list.id}" ${list.id==plan.remindUser.id?'selected':''}>${list.name}</option>
+											</c:forEach>
+										</select>
+									</td>
+									<td>
+										<input class="form-control layer-date laydate-icon " readonly="readonly" name="workProjectPlans[${status.index}].remindDate" value="<fmt:formatDate value="${plan.remindDate}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+										<input name="workProjectPlans[${status.index}].id" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="${plan.id}"/>
+										<input name="workProjectPlans[${status.index}].completeUser" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="${plan.completeUser}"/>
+										<input class="form-control layer-date laydate-icon required" type="hidden" name="workProjectPlans[${status.index}].completeDate" value="<fmt:formatDate value="${plan.completeDate}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+
+										<input name="workProjectPlans[${status.index}].type" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="${plan.type}"/>
+										<input name="workProjectPlans[${status.index}].status" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="${plan.status}"/>
+									</td>
+								</tr>
+							</c:if>
+						</c:forEach>
+						<c:if test="${projectPlanList == 0}">
+						<tr>
+							<td colspan="6">暂无数据</td>
+						</tr>
+						</c:if>
+					</tbody>
+				</table>
+				<br/><br/>
+				<tr>
+					<td class="width-15 active"><label class="pull-left">上传附件表:</label></td>
+					<td class="width-35" colspan="3">
+						<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>
+					</td>
+					<td class="width-35" colspan="3">
+						<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="status">
+								<tr>
+									<%--<td>${status.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}" 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="${attachment.url}">${attachment.attachmentName}</a></td>
+												</c:when>
+												<c:otherwise>
+													<td><a href="javascript:void(0)" onclick="openDialogViewPre('预览','${ctx}/previewController/previewUrl?fileUrl=${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+												</c:otherwise>
+											</c:choose>
+										</c:otherwise>
+									</c:choose>--%>
+									<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,'bmp')
+                                                               or fn:containsIgnoreCase(attachment.attachmentName,'jpeg')}">
+											<td><img src="${attachment.url}" 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')">${attachment.attachmentName}</a></td>
+												</c:when>
+												<c:otherwise>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('${ctx}/previewController/previewUrl?fileUrl=${workClientAttachment.url}','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openword','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<td><a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openexcel','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+													<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openppt','80%','80%')">${workClientAttachment.attachmentName}</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="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>
+										<c:if test="${attachment.createBy.id eq fns:getUser().id}">
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/workengineeringproject/workEngineeringProject/deleteFileFromAliyun?attachmentId=${attachment.id}&id=${workEngineeringProject.id}&type=2')" class="btn btn-danger btn-xs" >删除</a>
+										</c:if>
+										<input name="workAttachments[${status.index}].id" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="${attachment.id}"/>
+										<input name="workAttachments[${status.index}].url" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="${attachment.url}"/>
+									</td>
+								</tr>
+								</c:forEach>
+							</tbody>
+						</table>
+					</td>
+				</tr>
+				<br/><br/>
+				<tr>
+					<td class="width-15 active"><label class="pull-left"><font color="red">*</font>变更原因:</label></td>
+					<td class="width-35" colspan="3">
+						<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control required"/>
+					</td>
+				</tr>
+				<br/><br/>
+				<table id="planTable" class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+					<thead>
+						<tr>
+							<th>序号</th>
+							<th>变更人</th>
+							<th>变更原因</th>
+							<th>变更时间</th>
+						</tr>
+					</thead>
+					<tbody id="planInfo">
+						<c:forEach items="${workProjectPlanEdits}" var="planEdit" varStatus="status">
+
+							<tr id="trIds">
+								<td>${status.index + 1}</td>
+								<td>${planEdit.updateBy.name}</td>
+								<td>${planEdit.remarks}</td>
+								<td><fmt:formatDate value="${planEdit.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
+							</tr>
+							</c:forEach>
+							<c:if test="${projectPlanList == 0}">
+								<tr>
+									<td colspan="6">暂无数据</td>
+								</tr>
+							</c:if>
+					</tbody>
+				</table>
+			</tbody>
+		</table>
+
+		</form:form>
+</body>
+</html>

+ 286 - 0
src/main/webapp/webpage/modules/workengineeringproject/workProjectPlanList.jsp

@@ -0,0 +1,286 @@
+<%@ 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">
+        $(function(){
+            $("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++;
+                    }
+                })
+            });
+            $("#treeTable").treeTable({expandLevel : 1,column:1}).show();
+        })
+
+        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">
+		<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="workEngineeringProject" action="${ctx}/workengineeringproject/workEngineeringProject/planlist" 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="reportNumber" htmlEscape="false" maxlength="255"  class=" form-control input-sm"/>
+			<span>项目名称:</span>
+				<form:input path="projectId.name" htmlEscape="false" maxlength="255"  class=" form-control input-sm"/>
+			<span>业务类型:</span>
+				<form:select path="businessType"  class="form-control m-b">
+					<form:option value="" label=""/>
+					<form:options items="${fns:getMainDictList('business_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+				</form:select>
+			<span>项目状态:</span>
+			<form:select path="status"  class="form-control m-b">
+				<form:option value="" label=""/>
+				<form:options items="${fns:getDictList('engineering_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">
+	       <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="treeTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<%--<th class="sort-column updateDate">序号</th>--%>
+
+				<%--<th  class="sort-column totalProjectName">总项目名称</th>--%>
+				<th style="text-align: center;width: 8%" class="sort-column projectId.number">项目编号</th>
+				<th style="text-align: center;width: 10%" class="sort-column reportNumber">报告号</th>
+				<th style="text-align: center;width: 10%" class="sort-column projectId.name">项目名称</th>
+				<th style="text-align: center;width: 10%" class="sort-column businessType">业务类型</th>
+				<th style="text-align: center;width: 10%" class="sort-column client.name">客户单位</th>
+				<th style="text-align: center;width: 8%">项目负责人</th>
+				<th style="text-align: center;width: 10%" class="sort-column createDate">创建时间</th>
+				<th style="text-align: center;width: 10%" class="sort-column status">项目状态</th>
+				<th style="text-align: center;width: 8%" class="sort-column status">计划编制</th>
+				<th style="text-align: center;width: 8%" class="sort-column status">计划变更</th>
+				<th style="text-align: center;width: 8%" class="sort-column status">计划维护</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:choose>
+		<c:when test="${not empty page.list}">
+		<c:forEach items="${page.list}" var="workEngineeringProject" varStatus="status">
+			<tr  id="${workEngineeringProject.id}" pId="${workEngineeringProject.totalProjectId ne '1'?workEngineeringProject.totalProjectId:'0'}">
+				<%--<td>
+						${status.index+1 }
+				</td>--%>
+					<td>
+						<span title="${workEngineeringProject.projectId.number}">${fns:abbr(workEngineeringProject.projectId.number,40)}</span>
+					</td>
+				<%--<td>--%>
+					<%--<a  href="javascript:void(0)" onclick="openDialogView('查看工程项目信息', '${ctx}/workengineeringproject/workEngineeringProject/form?id=${workEngineeringProject.id}&name=view','80%','80%')">--%>
+						<%--<span title="${workEngineeringProject.totalProjectName}">${fns:abbr(workEngineeringProject.totalProjectName,30)}</span>--%>
+					<%--</a>--%>
+				<%--</td>--%>
+					<td>
+						<a  href="javascript:void(0)" onclick="openDialogView('查看工程项目信息', '${ctx}/workengineeringproject/workEngineeringProject/form?id=${workEngineeringProject.id}&name=view','80%','80%')">
+							<span title="${workEngineeringProject.projectId.name}">${fns:abbr(workEngineeringProject.projectId.name,30)}</span>
+						</a>
+					</td>
+				<td>
+					<span title="${workEngineeringProject.reportNumber}">${fns:abbr(workEngineeringProject.reportNumber,30)}</span>
+				</td>
+
+
+				<td>
+					${fns:getMainDictLabel(workEngineeringProject.businessType, 'business_type', '')}
+				</td>
+				<td>
+						<a  href="javascript:void(0)" onclick="openDialogView('查看客户管理', '${ctx}/workclientinfo/workClientInfo/detail?id=${workEngineeringProject.workClientInfo.id}','80%','80%')">
+							<span title="${workEngineeringProject.workClientInfo.name}">${fns:abbr(workEngineeringProject.workClientInfo.name,30)}</span>
+						</a>
+				</td>
+				<td>
+						${fns:abbr(workEngineeringProject.hostOfficeMasterName,30)}
+				</td>
+				<td>
+					<fmt:formatDate value="${workEngineeringProject.createDate}" pattern="yyyy-MM-dd"/>
+				</td>
+				<td>
+						${fns:getDictLabel(workEngineeringProject.status, 'engineering_type', '')}
+				</td>
+				<td>
+					<div style="text-align: center">
+					<c:choose>
+						<c:when test="${workEngineeringProject.status eq 3 && empty workEngineeringProject.proofreadStatus && (zg || fns:getUser().id eq workEngineeringProject.createBy.id ||
+						fn:containsIgnoreCase(workEngineeringProject.hostOfficeMaster,fns:getUser().id) ||fn:containsIgnoreCase(workEngineeringProject.jointlyOfficeMaster,fns:getUser().id) ||
+						 fn:containsIgnoreCase(workEngineeringProject.hostOfficeMember,fns:getUser().id) ||fn:containsIgnoreCase(workEngineeringProject.jointlyOfficeMember,fns:getUser().id) )}">
+							<c:choose>
+								<c:when test="${fn:contains(sessionScope.userrights, '2') || fn:contains(sessionScope.userrights, 'H')}">
+									<a href="javascript:void(0)" onclick="openDialog('计划编制', '${ctx}/workengineeringproject/workEngineeringProject/form?id=${workEngineeringProject.id}&plan=plan1','80%', '80%')" class="btn btn-info btn-xs" > &nbsp;计划编制</a>
+								</c:when>
+								<c:otherwise>
+									<button class="btn btn-info btn-xs" title="计划编制" onclick="openDialogre('计划编制','${ctx}/workengineeringproject/workEngineeringProject/form?id=${workEngineeringProject.id}&plan=plan1','80%', '80%')">&nbsp;计划编制</button>
+								</c:otherwise>
+							</c:choose>
+						</c:when>
+						<c:otherwise>
+							<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('当前状态不能进行计划编制!',{icon:2})" class="btn btn-default btn-xs">计划编制</a>
+						</c:otherwise>
+					</c:choose>
+					</div>
+				</td>
+				<td>
+					<div style="text-align: center">
+					<c:choose>
+						<c:when test="${workEngineeringProject.status eq 4 && empty workEngineeringProject.proofreadStatus && (zg || fns:getUser().id eq workEngineeringProject.createBy.id ||
+						fn:containsIgnoreCase(workEngineeringProject.hostOfficeMaster,fns:getUser().id) ||fn:containsIgnoreCase(workEngineeringProject.jointlyOfficeMaster,fns:getUser().id) ||
+						 fn:containsIgnoreCase(workEngineeringProject.hostOfficeMember,fns:getUser().id) ||fn:containsIgnoreCase(workEngineeringProject.jointlyOfficeMember,fns:getUser().id) )}">
+							<a href="javascript:void(0)" onclick="openDialog('计划变更', '${ctx}/workengineeringproject/workEngineeringProject/form?id=${workEngineeringProject.id}&plan=plan2','80%', '80%')" class="btn btn-info btn-xs" > &nbsp;计划变更</a>
+						</c:when>
+						<c:otherwise>
+							<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('当前状态不能进行计划变更!',{icon:2})" class="btn btn-default btn-xs">计划变更</a>
+						</c:otherwise>
+					</c:choose>
+					</div>
+				</td>
+				<td>
+					<div style="text-align: center">
+					<c:choose>
+						<c:when test="${workEngineeringProject.status eq 4 && empty workEngineeringProject.proofreadStatus && (zg || fns:getUser().id eq workEngineeringProject.createBy.id ||
+						fn:containsIgnoreCase(workEngineeringProject.hostOfficeMaster,fns:getUser().id) ||fn:containsIgnoreCase(workEngineeringProject.jointlyOfficeMaster,fns:getUser().id) ||
+						 fn:containsIgnoreCase(workEngineeringProject.hostOfficeMember,fns:getUser().id) ||fn:containsIgnoreCase(workEngineeringProject.jointlyOfficeMember,fns:getUser().id) )}">
+							<a href="javascript:void(0)" onclick="openDialog('计划维护', '${ctx}/workengineeringproject/workEngineeringProject/form?id=${workEngineeringProject.id}&plan=plan3','80%', '80%')" class="btn btn-info btn-xs" > &nbsp;计划维护</a>
+						</c:when>
+						<c:otherwise>
+							<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('当前状态不能进行计划维护!',{icon:2})" class="btn btn-default btn-xs">计划维护</a>
+						</c:otherwise>
+					</c:choose>
+					</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>

+ 379 - 0
src/main/webapp/webpage/modules/workengineeringproject/workProjectPlanMaintain.jsp

@@ -0,0 +1,379 @@
+<%@ 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">
+        $(function(){
+            $("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: '#startTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#endTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#remindDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#completeDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });*/
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+            $("#taskNames").attr('disabled','disabled');
+            $("#startTimes").attr('disabled','disabled');
+            $("#endTimes").attr('disabled','disabled');
+            $("#remindUsers").attr('disabled','disabled');
+            $("#remindDates").attr('disabled','disabled');
+            $("#completeUsers").attr('disabled','disabled');
+            $("#completeDates").attr('disabled','disabled');
+        });
+
+        function setCompletedValue(){
+            var ipts = $(":checkbox:checked").parents("tr").find("input:text");
+            var ids = $(":checkbox:checked").parents("tr").find("input:hidden");
+            var selects = $(":checkbox:checked").parents("tr").find("select");
+            // 遍历input并使用val()方法获取值
+            var ipt =ipts.map(function() {return $(this).val();}).get().join(", ");
+            var select =selects.map(function() {return $(this).val();}).get().join(", ");
+            var id =ids.map(function() {return $(this).val();}).get().join(", ");
+            if(id == ""){
+                top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+                return;
+            }
+            var iptList =ipt.split(",");
+            var selectList = select.split(",");
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workengineeringproject/workEngineeringProject/getProjectPlanRows',
+                data:{
+                    "ids":id,
+                    "ipts":ipt,
+            		"selects":select
+                },
+                success:function(data){
+                    var d = JSON.parse(data);
+                    if (d.str == "Success"){
+                        parent.layer.msg(d.str,{icon:1});
+                    }else {
+                        parent.layer.msg(d.str,{icon:2});
+                    }
+                    location.reload();
+                    /*$("#contractNum").val(d.contractNum);
+                    $("#contractName").val(d.clientName);
+                    $("#linkmanName").val(d.linkmanName);
+                    $("#linkmanPhone").val(d.linkmanPhone);
+                    $("#linkmanEmail").val(d.linkmanEmail);
+                    $("#linkmanPosition").val(d.linkmanPosition);*/
+                }
+            })
+        }
+
+        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>
+</head>
+<body class="gray-bg">
+<div class="ibox-content">
+	<sys:message content="${message}"/>
+	<!-- 工具栏 -->
+	<div class="row">
+		<div class="col-sm-12">
+			<div class="pull-left">
+				<%--<button class="btn btn-white btn-sm" title="资格预审项目" onclick="rowAdd()"><i class="fa fa-plus"></i>&nbsp;新增</button>
+                <table:removeRow id="contentTable"></table:removeRow><!-- 删除按钮 -->--%>
+				<p>
+					<%--<table:confirmCompletedRow id="contentTable" url="${ctx}/workengineeringproject/workEngineeringProject/confirmCompletedRow"></table:confirmCompletedRow><!-- 确认按钮 -->
+				--%>
+						<%--<table:removeRow id="contentTable"></table:removeRow>--%>
+						<table:confirm id="contentTable"></table:confirm>
+						<%--<button type="button" class="btn btn-sm btn-success" onclick="setCompletedValue()">确认完成</button>--%>
+				</p>
+			</div>
+		</div>
+	</div>
+
+	<div class="row">
+		<div class="col-sm-12">
+			<form:form id="inputForm" modelAttribute="workEngineeringProject" action="${ctx}/workengineeringproject/workEngineeringProject/storePlan" method="post" enctype="multipart/form-data" class="form-horizontal">
+				<form:hidden path="id"/>
+				<sys:message content="${message}"/>
+
+			<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+				<tbody>
+				<table id="contentTable" class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+					<thead>
+					<tr>
+						<th> <input type="checkbox" class="i-checks"></th>
+						<th>任务序号</th>
+						<th>任务名称</th>
+						<th>开始时间</th>
+						<th>结束时间</th>
+						<th>提醒人</th>
+						<th>提醒时间</th>
+						<th>完成人</th>
+						<th>完成时间</th>
+					</tr>
+					</thead>
+					<tbody id="workProjectPlans">
+					<c:forEach items="${workEngineeringProject.workProjectPlans}" var="plan" varStatus="status">
+						<c:if test="${plan.status eq 1}">
+							<tr id="trId">
+								<td>
+									<i class="fa fa-check-circle"></i>
+								</td>
+								<td>
+										${status.index+1}
+								</td>
+								<td>
+										${plan.taskName}
+								</td>
+								<td>
+									<fmt:formatDate value="${plan.startTime}" pattern="yyyy-MM-dd"/>
+								</td>
+								<td>
+									<fmt:formatDate value="${plan.endTime}" pattern="yyyy-MM-dd"/>
+								</td>
+								<td>
+
+									${plan.remindUser.name}
+								</td>
+								<td>
+									<fmt:formatDate value="${plan.remindDate}" pattern="yyyy-MM-dd"/>
+								</td>
+								<td>
+										${plan.completeUser.name}
+								</td>
+								<td>
+									<fmt:formatDate value="${plan.completeDate}" pattern="yyyy-MM-dd"/>
+									<input name="workProjectPlans[${status.index }].id" type="hidden" style="width:80px;" class="form-control required" value="${plan.id}"/>
+								</td>
+							</tr>
+							<%--<tr id="trId">
+								<td>
+									已确认
+									&lt;%&ndash;<input type="checkbox" id="${plan.id}" class="i-checks">&ndash;%&gt;
+								</td>
+								<td>
+										${status.index+1}
+								</td>
+								<td>
+									<input id="taskNames" name="workProjectPlans[${status.index }].taskName" type="text"  readonly="readonly" class="form-control required" value="${plan.taskName}"/>
+								</td>
+								<td>
+									<input id="startTimes" name="workProjectPlans[${status.index }].startTime" type="text" readonly="readonly" maxlength="20" style="width:140px;" class="laydate-icondate form-control layer-date" value="<fmt:formatDate value="${plan.startTime}" pattern="yyyy-MM-dd"/>"/>
+								</td>
+								<td>
+									<input  id="endTimes" name="workProjectPlans[${status.index }].endTime" type="text" readonly="readonly" maxlength="20" style="width:140px;" class="laydate-icondate form-control layer-date" value="<fmt:formatDate value="${plan.endTime}" pattern="yyyy-MM-dd"/>"/>
+								</td>
+								<td>
+									<select id="remindUsers" name="workProjectPlans[${status.index}].remindUser.id" readonly="readonly" class="form-control m-b">
+										<c:forEach items="${users}" var="list" >
+											<option value="${list.id}" ${list.id==plan.remindUser.id?'selected':''}>${list.name}</option>
+										</c:forEach>
+									</select>
+								</td>
+								<td>
+									<input id="remindDates" name="workProjectPlans[${status.index}].remindDate" type="text" readonly="readonly" maxlength="20" style="width:140px;" class="laydate-icondate form-control layer-date" value="<fmt:formatDate value="${plan.remindDate}" pattern="yyyy-MM-dd"/>"/>
+								</td>
+								<td>
+									<select id="completeUsers" name="workProjectPlans[${status.index}].completeUser.id" readonly="readonly" class="form-control m-b">
+										<c:forEach items="${userList}" var="list" >
+											<option value="${list.id}" ${list.id==plan.completeUser.id?'selected':''}>${list.name}</option>
+										</c:forEach>
+									</select>
+								</td>
+								<td>
+									<input id="completeDates" name="workProjectPlans[${status.index}].completeDate" type="text" readonly="readonly" maxlength="20" style="width:140px;" class="laydate-icondate form-control layer-date" value="<fmt:formatDate value="${plan.completeDate}" pattern="yyyy-MM-dd"/>"/>
+									<input name="workProjectPlans[${status.index }].id" type="hidden" style="width:80px;" class="form-control required" value="${plan.id}"/>
+								</td>
+							</tr>--%>
+						</c:if>
+						<c:if test="${plan.status eq 0}">
+							<tr id="trId">
+								<td>
+									<input type="checkbox" id="${plan.id}" class="i-checks">
+								</td>
+								<td>
+										${status.index+1}
+								</td>
+								<td>
+									<input name="workProjectPlans[${status.index }].taskName" type="hidden" class="form-control required" value="${plan.taskName}"/>
+										${plan.taskName}
+								</td>
+								<td>
+									<input name="workProjectPlans[${status.index}].startTime" type="hidden" value="<fmt:formatDate value="${plan.startTime}" pattern="yyyy-MM-dd"/>" class="form-control layer-date laydate-icon " readonly="readonly" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+									<fmt:formatDate value="${plan.startTime}" pattern="yyyy-MM-dd"/>
+								</td>
+								<td>
+									<fmt:formatDate value="${plan.endTime}" pattern="yyyy-MM-dd"/>
+									<input class="form-control layer-date laydate-icon " type="hidden" readonly="readonly" name="workProjectPlans[${status.index}].endTime" value="<fmt:formatDate value="${plan.endTime}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+								</td>
+								<td>
+									<%--<select id="${status.index}333" name="workProjectPlans[${status.index}].remindUser.id" class="form-control m-b">
+										<option value="" label=""> </option>
+										<c:forEach items="${users}" var="list" >
+											<option value="${list.id}" ${list.id==plan.remindUser.id?'selected':''}>${list.name}</option>
+										</c:forEach>
+									</select>--%>
+									${plan.remindUser.name}
+										<input name="workProjectPlans[${status.index}].remindUser.id" type="hidden" class="form-control required" value="${plan.remindUser.id}"/>
+								</td>
+								<td><fmt:formatDate value="${plan.remindDate}" pattern="yyyy-MM-dd"/>
+									<input class="form-control layer-date laydate-icon " type="hidden"  readonly="readonly" name="workProjectPlans[${status.index}].remindDate" value="<fmt:formatDate value="${plan.remindDate}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+
+									</td>
+								<td>
+									<select id="${plan.id}233" name="workProjectPlans[${status.index}].completeUser.id" class="form-control m-b">
+										<option value="" label=""> </option>
+										<c:forEach items="${userList}" var="list" >
+											<option value="${list.id}" ${list.id==plan.completeUser.id?'selected':''}>${list.name}</option>
+										</c:forEach>
+									</select>
+								</td>
+								<td>
+									<input class="form-control layer-date laydate-icon " type="text"  readonly="readonly" name="workProjectPlans[${status.index}].completeDate" value="<fmt:formatDate value="${plan.completeDate}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+
+									<input name="workProjectPlans[${status.index }].id" type="hidden" style="width:80px;" class="form-control required" value="${plan.id}"/>
+								</td>
+							</tr>
+						</c:if>
+					</c:forEach>
+					<c:if test="${projectPlanList == 0}">
+						<tr>
+							<td colspan="6">暂无数据</td>
+						</tr>
+					</c:if>
+					</tbody>
+				</table>
+				<br/><br/>
+				<tr>
+					<td class="width-35" colspan="3">
+						<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="status">
+									<tr>
+									<%--<td>${status.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}" 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="${attachment.url}">${attachment.attachmentName}</a></td>
+												</c:when>
+												<c:otherwise>
+													<td><a href="javascript:void(0)" onclick="openDialogViewPre('预览','${ctx}/previewController/previewUrl?fileUrl=${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+												</c:otherwise>
+											</c:choose>
+										</c:otherwise>
+									</c:choose>--%>
+										<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,'bmp')
+                                                               or fn:containsIgnoreCase(attachment.attachmentName,'jpeg')}">
+												<td><img src="${attachment.url}" 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')">${attachment.attachmentName}</a></td>
+													</c:when>
+													<c:otherwise>
+														<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('${ctx}/previewController/previewUrl?fileUrl=${workClientAttachment.url}','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+														<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openword','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+														<td><a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%')">${attachment.attachmentName}</a></td>
+														<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openexcel','80%','80%')">${workClientAttachment.attachmentName}</a></td>--%>
+														<%--<td><a href="javascript:void(0)" onclick="POBrowser.openWindow('/ruihua/openppt','80%','80%')">${workClientAttachment.attachmentName}</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="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>
+										<c:if test="${attachment.createBy.id eq fns:getUser().id}">
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/workengineeringproject/workEngineeringProject/deleteFileFromAliyun?attachmentId=${attachment.id}&id=${workEngineeringProject.id}&type=2')" class="btn btn-danger btn-xs" >删除</a>
+										</c:if>
+									</td>
+							</tr>
+						</c:forEach>
+						</table>
+					</td>
+				</tr>
+
+				</tbody>
+			</table>
+
+			</form:form>
+</body>
+</html>

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

+ 69 - 0
src/main/webapp/webpage/modules/workevaluationroom/workEvaluationRoomForm.jsp

@@ -0,0 +1,69 @@
+<%@ 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="workEvaluationRoom" action="${ctx}/workevaluationroom/workEvaluationRoom/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>地址:<font color="red">*</font></label></td>
+					<td class="width-35" colspan="3">
+						<form:textarea path="address" htmlEscape="false" rows="4"    class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>楼层:</label></td>
+					<td class="width-35">
+						<form:input path="floor" 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="houseNumber" htmlEscape="false"    class="form-control required number"/>
+					</td>
+				</tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">备注:</label></td>
+				   <td class="width-35" colspan="3">
+					   <form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control"/>
+				   </td>
+			   </tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 157 - 0
src/main/webapp/webpage/modules/workevaluationroom/workEvaluationRoomList.jsp

@@ -0,0 +1,157 @@
+<%@ 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="workEvaluationRoom" action="${ctx}/workevaluationroom/workEvaluationRoom/" 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="address" htmlEscape="false" maxlength="1000"  class=" form-control input-sm"/>
+			<span>楼层:</span>
+				<form:input path="floor" htmlEscape="false" maxlength="255"  class=" form-control input-sm"/>
+			<span>门牌号码:</span>
+				<form:input path="houseNumber" htmlEscape="false" maxlength="255"  class=" form-control input-sm"/>
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+		<%--	<c:if test="${addBtn != 'addBtn'}">
+				<shiro:hasPermission name="workevaluationroom:workEvaluationRoom:add">--%>
+					<table:addRow url="${ctx}/workevaluationroom/workEvaluationRoom/form" title="评标室管理"></table:addRow><!-- 增加按钮 -->
+			<%--	</shiro:hasPermission>--%>
+				<%--<shiro:hasPermission name="workevaluationroom:workEvaluationRoom:edit">
+                    <table:editRow url="${ctx}/workevaluationroom/workEvaluationRoom/form" title="评标室管理" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+                </shiro:hasPermission>--%>
+			<%--	<shiro:hasPermission name="workevaluationroom:workEvaluationRoom:del">--%>
+					<table:delRow url="${ctx}/workevaluationroom/workEvaluationRoom/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			<%--	</shiro:hasPermission>
+			</c:if>--%>
+
+		<%--	<shiro:hasPermission name="workevaluationroom:workEvaluationRoom:import">--%>
+				<table:importExcel url="${ctx}/workevaluationroom/workEvaluationRoom/import"></table:importExcel><!-- 导入按钮 -->
+		<%--	</shiro:hasPermission>
+			<shiro:hasPermission name="workevaluationroom:workEvaluationRoom:export">--%>
+	       		<table:exportExcel url="${ctx}/workevaluationroom/workEvaluationRoom/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="width: 5%"> <input type="checkbox" class="i-checks"></th>
+				<th style="text-align: center;width: 15%"  class="sort-column address">地址</th>
+				<th style="text-align: center;width: 8%"  class="sort-column floor">楼层</th>
+				<th style="text-align: center;width: 10%"  class="sort-column houseNumber">门牌号码</th>
+				<th style="text-align: center;width: 20%"  class="sort-column remarks">备注</th>
+				<th style="text-align: center;width: 13%"  class="sort-column createDate">创建时间</th>
+				<th style="text-align: center;width: 13%"  class="sort-column updateDate">更新时间</th>
+				<th style="text-align: center;width: 15%">操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="workEvaluationRoom">
+			<tr>
+				<td> <input type="checkbox" id="${workEvaluationRoom.id}" class="i-checks"></td>
+				<td>
+					<a  href="javascript:void(0)" onclick="openDialogView('查看评标室管理', '${ctx}/workevaluationroom/workEvaluationRoom/form?id=${workEvaluationRoom.id}&name=view','80%','80%')">
+							${workEvaluationRoom.address}
+					</a>
+
+				</td>
+				<td>
+					${workEvaluationRoom.floor}
+				</td>
+				<td>
+					${workEvaluationRoom.houseNumber}
+				</td>
+				<td>
+					${fns:abbr(workEvaluationRoom.remarks,30)}
+				</td>
+				<td>
+					<fmt:formatDate value="${workEvaluationRoom.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+				</td>
+				<td>
+					<fmt:formatDate value="${workEvaluationRoom.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+				</td>
+				<td>
+					<div style="text-align: center">
+					<%--<shiro: nhasPermissioname="workevaluationroom:workEvaluationRoom:view">
+						<a href="javascript:void(0)" onclick="openDialogView('查看评标室管理', '${ctx}/workevaluationroom/workEvaluationRoom/form?id=${workEvaluationRoom.id}&name=view','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>--%>
+				<%--	<shiro:hasPermission name="workevaluationroom:workEvaluationRoom:edit">--%>
+    					<a href="javascript:void(0)" onclick="openDialog('修改评标室管理', '${ctx}/workevaluationroom/workEvaluationRoom/form?id=${workEvaluationRoom.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				<%--</shiro:hasPermission>
+    				<shiro:hasPermission name="workevaluationroom:workEvaluationRoom:del">--%>
+						<a href="${ctx}/workevaluationroom/workEvaluationRoom/delete?id=${workEvaluationRoom.id}" onclick="return confirmx('确认要删除该评标室管理吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+				<%--	</shiro:hasPermission>--%>
+					</div>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 69 - 0
src/main/webapp/webpage/modules/workevaluationroom/workEvaluationRoomView.jsp

@@ -0,0 +1,69 @@
+<%@ 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="workEvaluationRoom" action="${ctx}/workevaluationroom/workEvaluationRoom/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">地址:<font color="red">*</font></label></td>
+					<td class="width-35" colspan="3">
+						${workEvaluationRoom.address}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">楼层:<font color="red">*</font></label></td>
+					<td class="width-35">
+							${workEvaluationRoom.floor}
+					</td>
+					<td class="width-15 active"><label class="pull-right">门牌号码:<font color="red">*</font></label></td>
+					<td class="width-35">
+							${workEvaluationRoom.houseNumber}
+					</td>
+				</tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">备注:<font color="red">*</font></label></td>
+				   <td class="width-35" colspan="3">
+						   ${workEvaluationRoom.remarks}
+				   </td>
+			   </tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 111 - 0
src/main/webapp/webpage/modules/workexample/workCaseIndex.jsp

@@ -0,0 +1,111 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例指标管理</title>
+	<meta name="decorator" content="default"/>
+	<%@include file="/webpage/include/treeview.jsp" %>
+	<style type="text/css">
+		.ztree {overflow:auto;margin:0;_margin-top:10px;padding:10px 0 0 10px;}
+	</style>
+	<script type="text/javascript">
+        function changeExample(id,name,parentId) {
+            var exampleId = $("#exampleId").val();
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workexample/workExampleIndices/saveExample',
+                data:{
+                    "ids":id,"exampleId":exampleId
+                },
+                success:function(data){
+                    refreshTree();
+                }
+            })
+
+        }
+	</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 full-width" id="divId">
+	<sys:message content="${message}"/>
+	<div id="content" class="pr full-height full-width">
+		<div id="left"  class="contentShadow fl contents">
+			<div class="ztreeContainer">
+				<div id="ztree" class="ztree leftBox-content"></div>
+			</div>
+		</div>
+		<div id="right"  class="fl contents">
+			<div class="layui-row contentShadow full-height tran-bg">
+				<iframe id="userContent" name="userContent" src="${ctx}/workexample/workExample/example?sign=situation" width="100%" height="100%" frameborder="0"></iframe>
+			</div>
+		</div>
+	</div>
+</div>
+	<script type="text/javascript">
+        function addDiyDom(treeId, treeNode) {
+            var spaceWidth = 15;
+            var switchObj = $("#" + treeNode.tId + "_switch"),
+                icoObj = $("#" + treeNode.tId + "_ico");
+            switchObj.remove();
+            icoObj.before(switchObj);
+
+            if (treeNode.level > 0) {
+                var spaceStr = "<span style='display: inline-block;width:" + (spaceWidth * treeNode.level)+ "px'></span>";
+                switchObj.before(spaceStr);
+            }
+        }
+
+
+        var setting = {data:{simpleData:{enable:true,idKey:"id",pIdKey:"pId",rootPId:'0'}},
+            callback:{onClick:function(event, treeId, treeNode){
+                var id = treeNode.id == '0' ? '' :treeNode.id;
+                    $('#userContent')[0].contentWindow.changeInfo(id);
+                //$('#userContent').attr("src","${ctx}/workexample/workExample/example?id="+id);
+            }
+            }
+            ,view:{
+                showLine: false,
+                showIcon: false,
+                addDiyDom: addDiyDom
+            }
+        };
+
+        function refreshTree(){
+            $.getJSON("${ctx}/sys/mainDictDetail/treeDataByType?type=2&typeName=work_example_type&isAll=true",function(data){
+                $.fn.zTree.init($("#ztree"), setting, data).expandAll(true);
+            });
+        }
+        refreshTree();
+
+        // var width = $('#divId').width();
+        // var leftWidth = width*0.1; // 左侧窗口大小
+        // var htmlObj = $("html"), mainObj = $("#main");
+        // var frameObj = $("#left, #openClose, #right, #right iframe");
+        // function wSize(){
+        //     var strs = getWindowSize().toString().split(",");
+        //     htmlObj.css({"overflow-x":"hidden", "overflow-y":"hidden"});
+        //     mainObj.css("width","auto");
+        //     frameObj.height(strs[0] - 120);
+        //    /* var leftWidth = ($("#left").width() < 0 ? 0 : $("#left").width());
+        //     $("#right").width($("#content").width()- leftWidth - $("#openClose").width() -60);
+        //     $(".ztree").width(leftWidth - 10).height(frameObj.height() - 46);*/
+        //     $("#content").width(width);
+        //     $("#left").width(width*0.12);
+        //     $("#ztree").width(width*0.12);
+        //     $("#ztree").height('86%');
+        //     $("#right").width(width*0.82);
+        //     $("#officeContent").width(width*0.82);
+        // }
+	</script>
+	<%--<script src="${ctxStatic}/common/wsize.min.js" type="text/javascript"></script>--%>
+</body>
+</html>

+ 110 - 0
src/main/webapp/webpage/modules/workexample/workCaseViewIndex.jsp

@@ -0,0 +1,110 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>案例指标管理</title>
+	<meta name="decorator" content="default"/>
+	<%@include file="/webpage/include/treeview.jsp" %>
+	<style type="text/css">
+		.ztree {overflow:auto;margin:0;_margin-top:10px;padding:10px 0 0 10px;}
+	</style>
+	<script type="text/javascript">
+        function changeExample(id,name,parentId) {
+            var exampleId = $("#exampleId").val();
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workexample/workExampleIndices/saveExample',
+                data:{
+                    "ids":id,"exampleId":exampleId
+                },
+                success:function(data){
+                    refreshTree();
+                }
+            })
+
+        }
+	</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 full-width" id="divId">
+	<sys:message content="${message}"/>
+	<div id="content" class="pr full-height full-width">
+		<div id="left"  class="contentShadow fl contents">
+			<div class="ztreeContainer">
+				<div id="ztree" class="ztree leftBox-content"></div>
+			</div>
+		</div>
+		<div id="right"  class="fl contents">
+			<div class="layui-row contentShadow full-height tran-bg">
+				<iframe id="userContent" name="userContent" src="${ctx}/workexample/workExample/listView" width="100%" height="100%" frameborder="0"></iframe>
+			</div>
+		</div>
+	</div>
+</div>
+	<script type="text/javascript">
+        function addDiyDom(treeId, treeNode) {
+            var spaceWidth = 15;
+            var switchObj = $("#" + treeNode.tId + "_switch"),
+                icoObj = $("#" + treeNode.tId + "_ico");
+            switchObj.remove();
+            icoObj.before(switchObj);
+
+            if (treeNode.level > 0) {
+                var spaceStr = "<span style='display: inline-block;width:" + (spaceWidth * treeNode.level)+ "px'></span>";
+                switchObj.before(spaceStr);
+            }
+        }
+
+
+        var setting = {data:{simpleData:{enable:true,idKey:"id",pIdKey:"pId",rootPId:'0'}},
+            callback:{onClick:function(event, treeId, treeNode){
+                var id = treeNode.id == '0' ? '' :treeNode.id;
+                $('#userContent').attr("src","${ctx}/workexample/workExample/listView?type="+id);
+            }
+            }
+            ,view:{
+                showLine: false,
+                showIcon: false,
+                addDiyDom: addDiyDom
+            }
+        };
+
+        function refreshTree(){
+            $.getJSON("${ctx}/sys/mainDictDetail/treeDataByType?type=2&typeName=work_example_type&isAll=true",function(data){
+                $.fn.zTree.init($("#ztree"), setting, data).expandAll(true);
+            });
+        }
+        refreshTree();
+
+        // var width = $('#divId').width();
+        // var leftWidth = width*0.1; // 左侧窗口大小
+        // var htmlObj = $("html"), mainObj = $("#main");
+        // var frameObj = $("#left, #openClose, #right, #right iframe");
+        // function wSize(){
+        //     var strs = getWindowSize().toString().split(",");
+        //     htmlObj.css({"overflow-x":"hidden", "overflow-y":"hidden"});
+        //     mainObj.css("width","auto");
+        //     frameObj.height(strs[0] - 120);
+        //    /* var leftWidth = ($("#left").width() < 0 ? 0 : $("#left").width());
+        //     $("#right").width($("#content").width()- leftWidth - $("#openClose").width() -60);
+        //     $(".ztree").width(leftWidth - 10).height(frameObj.height() - 46);*/
+        //     $("#content").width(width);
+        //     $("#left").width(width*0.12);
+        //     $("#ztree").width(width*0.12);
+        //     $("#ztree").height('86%');
+        //     $("#right").width(width*0.82);
+        //     $("#officeContent").width(width*0.82);
+        // }
+	</script>
+	<%--<script src="${ctxStatic}/common/wsize.min.js" type="text/javascript"></script>--%>
+</body>
+</html>

Diferenças do arquivo suprimidas por serem muito extensas
+ 1346 - 0
src/main/webapp/webpage/modules/workexample/workExampleAudit.jsp


+ 148 - 0
src/main/webapp/webpage/modules/workexample/workExampleConsumption.jsp

@@ -0,0 +1,148 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>主要工料价格及消耗量指标</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+        $(document).ready(function() {
+            //搜索框收放
+            $('#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 changeInfo(id) {
+            $("#dictId").val(id);
+            search();
+        }
+	</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="workExample" action="${ctx}/workexample/workExample/example" method="post" class="form-inline">
+					<%--<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->--%>
+					<input id="dictId" name="dictId" type="hidden" value="${workExample.dictId}"/>
+					<div class="commonQuery lw8">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">工程指标:</label>
+							<div class="layui-input-block with-icon">
+								<sys:treeselect id="exampleType" name="exampleType" value="${workExample.exampleType}" labelName="exampleTypeName" labelValue="${workExample.exampleTypeName}"
+												title="工程指标类型" url="/workexample/workExampleIndices/treeDataExampleSelect" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">工程地点:</label>
+							<div class="layui-input-block with-icon">
+								<sys:treeselect id="area" name="area.id" value="${workExample.area.id}" labelName="area.name" labelValue="${workExample.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">
+								<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">
+					<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:${ exampleExpendList.size() }
+            ,elem: '#contentTable'
+            ,page: false
+            ,cols: [[
+                // {checkbox: true, fixed: true},
+                {field:'name',align:'center', title: '工料名称',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.name +"'>" + d.name + "</span>";
+                    }}
+                ,{field:'name2',align:'center', title: '单位',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.name2 +"'>" + d.name2 + "</span>";
+                    }}
+                ,{field:'counts',align:'center', title: '样本量',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.counts +"'>" + d.counts + "</span>";
+                    }}
+                ,{field:'sums',align:'center', title: '总数量',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.sums +"'>" + d.sums + "</span>";
+                    }}
+                ,{field:'maxs',align:'center', title: '最大单位指标(每100m2)',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.maxs +"'>" + d.maxs + "</span>";
+                    }}
+                ,{field:'mins', align:'center',title: '最小单位指标(每100m2)',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.mins +"'>" + d.mins + "</span>";
+                    }}
+                ,{field:'avgs', align:'center',title: '平均单位指标(每100m2)',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.avgs +"'>" + d.avgs + "</span>";
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty exampleExpendList}">
+                <c:forEach items="${exampleExpendList}" var="exampleExpend" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "id":"${exampleExpend.id}"
+                    ,"name":"${exampleExpend.name}"
+                    ,"name2":"${exampleExpend.name}"
+                    ,"counts":"${exampleExpend.counts}"
+                    ,"sums":"${exampleExpend.sums}"
+                    ,"maxs":"<fmt:formatNumber value="${exampleExpend.maxs}" pattern="#,#0.00"/>"
+                    ,"mins":"<fmt:formatNumber value="${exampleExpend.mins}" pattern="#,#0.00"/>"
+                    ,"avgs":"<fmt:formatNumber value="${exampleExpend.avgs}" pattern="#,#0.00"/>"
+                }
+                </c:forEach>
+                </c:if>
+            ]
+        });
+
+    })
+
+    resizeListTable();
+</script>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 148 - 0
src/main/webapp/webpage/modules/workexample/workExampleEconomics.jsp

@@ -0,0 +1,148 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>经济指标</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+        $(document).ready(function() {
+            //搜索框收放
+            $('#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 changeInfo(id) {
+            $("#dictId").val(id);
+            search();
+        }
+	</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="workExample" action="${ctx}/workexample/workExample/example" method="post" class="form-inline">
+					<%--<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->--%>
+					<input id="dictId" name="dictId" type="hidden" value="${workExample.dictId}"/>
+					<div class="commonQuery lw8">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">工程指标:</label>
+							<div class="layui-input-block with-icon">
+								<sys:treeselect id="exampleType" name="exampleType" value="${workExample.exampleType}" labelName="exampleTypeName" labelValue="${workExample.exampleTypeName}"
+												title="工程指标类型" url="/workexample/workExampleIndices/treeDataExampleSelect" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">工程地点:</label>
+							<div class="layui-input-block with-icon">
+								<sys:treeselect id="area" name="area.id" value="${workExample.area.id}" labelName="area.name" labelValue="${workExample.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">
+								<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">
+					<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:${ exampleEconomicsList.size() }
+            ,elem: '#contentTable'
+            ,page: false
+            ,cols: [[
+                // {checkbox: true, fixed: true},
+                {field:'name',align:'center', title: '主要风险工程',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.name +"'>" + d.name + "</span>";
+                    }}
+                ,{field:'counts',align:'center', title: '样本量',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.counts +"'>" + d.counts + "</span>";
+                    }}
+                ,{field:'sums',align:'center', title: '总工程造价(元)',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.sums +"'>" + d.sums + "</span>";
+                    }}
+                ,{field:'maxs',align:'center', title: '最大单位指标(元/m2)',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.maxs +"'>" + d.maxs + "</span>";
+                    }}
+                ,{field:'mins', align:'center',title: '最小单位指标(元/m2)',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.mins +"'>" + d.mins + "</span>";
+                    }}
+                ,{field:'avgs', align:'center',title: '平均单位指标(元/m2)',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.avgs +"'>" + d.avgs + "</span>";
+                    }}
+                ,{field:'proportion', align:'center',title: '占造价比例(%)',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.proportion +"'>" + d.proportion + "</span>";
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty exampleEconomicsList}">
+                <c:forEach items="${exampleEconomicsList}" var="exampleEconomics" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "id":"${exampleEconomics.id}"
+                    ,"name":"${exampleEconomics.name}"
+                    ,"counts":"${exampleEconomics.counts}"
+                    ,"sums":"<fmt:formatNumber value="${exampleEconomics.sums}" pattern="#,#0.00"/>"
+                    ,"maxs":"<fmt:formatNumber value="${exampleEconomics.maxs}" pattern="#,#0.00"/>"
+                    ,"mins":"<fmt:formatNumber value="${exampleEconomics.mins}" pattern="#,#0.00"/>"
+                    ,"avgs":"<fmt:formatNumber value="${exampleEconomics.avgs}" pattern="#,#0.00"/>"
+                    ,"proportion":"<fmt:formatNumber value="${exampleEconomics.proportion}" pattern="#,#0.00"/>"
+                }
+                </c:forEach>
+                </c:if>
+            ]
+        });
+
+    })
+
+    resizeListTable();
+</script>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 178 - 0
src/main/webapp/webpage/modules/workexample/workExampleExcel.jsp

@@ -0,0 +1,178 @@
+<%@ 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 doSubmitExcel(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            $("#inputFormExcle").attr("action","${ctx}/workexample/workExample/import");
+            var formData = new FormData();
+            formData.append("file",$("#uploadFile")[0].files[0]);
+            console.info($("#inputFormExcle").serialize());
+            debugger;
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workexample/workExample/import',
+                data:formData,
+                dataType: "json",
+                cache: false,
+                processData: false,
+                contentType: false,
+                success:function(data){
+                }
+            });
+		/!* if(validateForm.form()){
+
+			 /!* $("#inputFormExcle").submit();*!/
+			  return true;
+		  }
+
+		 return false;*!/
+		}*/
+
+        function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                $("#inputFormExcle").submit();
+                return true;
+            }
+            return false;
+        }
+		$(document).ready(function() {
+			validateForm = $("#inputFormExcle").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 getChange(){
+            var layerIndex= layer.load(0,{shade: [0.3, '#fff']});
+            var formData = new FormData();
+            formData.append("file",$("#uploadFile")[0].files[0]);
+            $.ajax({
+                type: 'post',
+                url:'${ctx}/workexample/workExample/excel',
+                data: formData,
+                dataType: "json",
+                cache: false,
+                processData: false,
+                contentType: false,
+            }).success(function (result) {
+                layer.close(layerIndex);
+                setExcelInfo(result.data);
+            }).error(function () {
+                top.layer.msg("文件载入失败!");
+            });
+        }
+
+        function addRow(list, idx, tpl, row){
+            var idx1 = $("#excelList 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 setExcelInfo(data){
+            for(var i=0;i<data.length;i++){
+                addRow('#excelList', excelListRowIdx, excelListTpl);
+                excelListRowIdx = excelListRowIdx + 1;
+                    var row = excelListRowIdx - 1 ;
+                    $("#"+"excelList"+row+"_idId").val(data[i].id);
+                    $("#"+"excelList"+row+"_sheetName").val(data[i].sheetName);
+                    $("#"+"excelList"+row+"_idName").val(data[i].name);
+        }
+        }
+    </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="inputFormExcle" modelAttribute="workExampleExcel"  action="${ctx}/workexample/workExample/import"  enctype="multipart/form-data" method="post" class="form-horizontal">
+            <div class="form-group layui-row first">
+                <div class="layui-item layui-col-sm6">
+                    <div class="layui-input-block">
+                        <div class="input-group">
+                            <input id="uploadFile" onchange="getChange()" name="file" type="file" />
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-xs12 form-table-container" >
+                    <table id="" class="table table-bordered table-condensed can-edit no-bottom-margin">
+                        <thead>
+                        <tr>
+                            <th width="20px">序号</th>
+                            <th width="400px">sheet名称</th>
+                            <th width="400px">对应指标项</th>
+                        </tr>
+                        </thead>
+                        <tbody id="excelList">
+
+                        </tbody>
+                    </table>
+                    <script type="text/template" id="excelListTpl">//<!--
+                                    <tr id="excelList{{idx}}">
+                                    <td>
+                                            <input id="excelList{{idx}}_no"  type="text" value="{{idx}}"  readonly="true"   class="form-control "/>
+                                        </td>
+                                        <td>
+                                            <input id="excelList{{idx}}_sheetName"   name="excelList[{{idx}}].sheetName" type="text" value="{{row.sheetName}}"  readonly="true"   class="form-control "/>
+                                        </td>
+                                         <td>
+                                            <sys:treeselectJob id="excelList{{idx}}_id" name="excelList[{{idx}}].id" value="${row.id}" labelName="excelList[{{idx}}].name" labelValue="${row.name}"
+																title="指标类型" url="/workexample/workExampleIndices/treeDataExampleInfo"   cssClass="form-control layui-input required" allowClear="true" notAllowSelectParent="true"/>
+                                        </td>
+                                    </tr>//-->
+                    </script>
+                    <script type="text/javascript">
+                        var excelListRowIdx = 1, excelListTpl = $("#excelListTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+                    </script>
+                </div>
+
+    </div>
+           <%-- <a href="javascript:void(0)" onclick="doSubmit()" class="nav-btn nav-btn-import" ><i class="fa fa-plus"></i>&nbsp;导入</a>--%>
+    <div class="form-group layui-row page-end"></div>
+	</form:form>
+    </div>
+</div>
+</body>
+</html>

Diferenças do arquivo suprimidas por serem muito extensas
+ 1506 - 0
src/main/webapp/webpage/modules/workexample/workExampleForm.jsp


+ 191 - 0
src/main/webapp/webpage/modules/workexample/workExampleIndex.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"/>
+	<%@include file="/webpage/include/treeview.jsp" %>
+	<style type="text/css">
+		.ztree {overflow:auto;margin:0;_margin-top:10px;padding:10px 0 0 10px;}
+	</style>
+	<script type="text/javascript">
+        function refresh(){//刷新
+            window.location="${ctx}/workexample/workExample/form?exampleId="+$("#exampleId").val();
+        }
+        function changeExample(id,name,parentId) {
+            var exampleId = $("#exampleId").val();
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workexample/workExampleIndices/saveExample',
+                data:{
+                    "ids":id,"exampleId":exampleId
+                },
+                success:function(data){
+                    refreshTree(exampleId);
+                }
+            })
+
+			//alert("id:"+id+",name:"+name+",parentId:"+parentId)
+        }
+        function sleep(numberMillis) {
+            var now = new Date();
+            var exitTime = now.getTime() + numberMillis;
+            while (true) {
+                now = new Date();
+                if (now.getTime() > exitTime)
+                    return;
+            }
+        }
+        function addExampleInfo() {
+            parent.layer.msg("请先暂存工程概况数据!", {icon: 5});
+        }
+        function doSubmita(obj) {
+           if($('#userContent')[0].contentWindow.doSubmit(obj)){
+               //sleep(500);
+               return true;
+		   }else {
+               return false;
+		   }
+        }
+
+        function sleep(numberMillis) {
+            var now = new Date();
+            var exitTime = now.getTime() + numberMillis;
+            while (true) {
+                now = new Date();
+                if (now.getTime() > exitTime)
+                    return;
+            }
+        }
+
+	</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 full-width" id="divId">
+	<sys:message content="${message}"/>
+	<div id="content" class="pr full-height full-width">
+		<div id="left"  class="contentShadow fl contents">
+			<div class="ztreeContainer">
+				<c:choose>
+					<c:when test="${sign == 'view' or sign == 'audit'}">
+
+					</c:when>
+					<c:otherwise>
+						<div class="layui-item nav-btns">
+							<input id="exampleId" name="exampleId" type="hidden" value="${workExample.id}"/>
+									<div id="id1" style="display:none">
+										<sys:treeselectExample id="exampleInfo" name="" value="" labelName="" labelValue="" title="指标项目" url="/workexample/workExampleIndices/treeDataExampleInfo" checked="true" cssClass="form-control required" allowClear="true" notAllowSelectParent="true"/>
+									</div>
+									<div id="id2" style="display:none">
+									<button style="font-size:14px;" type="button" onclick="addExampleInfo()" class="nav-btn nav-btn-add"><i class="fa fa-plus"></i>&nbsp;新增
+									</button>
+									</div>
+
+
+						</div>
+					</c:otherwise>
+				</c:choose>
+
+				<div id="ztree" class="ztree leftBox-content"></div>
+			</div>
+		</div>
+		<div id="right"  class="fl contents">
+			<div class="layui-row contentShadow full-height tran-bg">
+				<c:choose>
+					<c:when test="${sign == 'view'}">
+						<iframe id="userContent" name="userContent" src="${ctx}/workexample/workExample/view?id=${workExample.id}" width="100%" height="100%" frameborder="0"></iframe>
+					</c:when>
+					<c:when test="${sign == 'audit'}">
+						<iframe id="userContent" name="userContent" src="${ctx}/workexample/workExample/audit?id=${workExample.id}" width="100%" height="100%" frameborder="0"></iframe>
+					</c:when>
+					<c:when test="${sign == 'modify'}">
+						<iframe id="userContent" name="userContent" src="${ctx}/workexample/workExample/modify?id=${workExample.id}" width="100%" height="100%" frameborder="0"></iframe>
+					</c:when>
+					<c:otherwise>
+						<iframe id="userContent" name="userContent" src="${ctx}/workexample/workExample/forms?id=${workExample.id}" width="100%" height="100%" frameborder="0"></iframe>
+					</c:otherwise>
+				</c:choose>
+			</div>
+		</div>
+	</div>
+</div>
+	<script type="text/javascript">
+        function addDiyDom(treeId, treeNode) {
+            var spaceWidth = 15;
+            var switchObj = $("#" + treeNode.tId + "_switch"),
+                icoObj = $("#" + treeNode.tId + "_ico");
+            switchObj.remove();
+            icoObj.before(switchObj);
+
+            if (treeNode.level > 0) {
+                var spaceStr = "<span style='display: inline-block;width:" + (spaceWidth * treeNode.level)+ "px'></span>";
+                switchObj.before(spaceStr);
+            }
+        }
+
+        var setting = {data:{simpleData:{enable:true,idKey:"id",pIdKey:"pId",rootPId:'0'}},
+            callback:{onClick:function(event, treeId, treeNode){
+                var id = treeNode.id == '0' ? '' :treeNode.id;
+                var _type = treeNode.type;
+                $('#userContent')[0].contentWindow.changeInfo(id,treeNode.pIds,_type);
+
+                //$('#userContent').attr("src","${ctx}/workexample/workExample/view?id="+id+"&parentIds="+treeNode.pIds);
+            }
+            }
+            ,view:{
+                showLine: false,
+                showIcon: false,
+                addDiyDom: addDiyDom
+            }
+        };
+
+        function refreshTree(exampleId){
+           	if(exampleId == undefined){
+                exampleId = '${workExample.id}';
+			}
+            if(exampleId!=null && exampleId!=''&& exampleId != undefined){
+				$("#id1").show();
+                $("#id2").hide();
+			}else{
+                $("#id1").hide();
+                $("#id2").show();
+			}
+            console.log(exampleId+"---------------exampleId");
+            $.getJSON("${ctx}/workexample/workExampleIndices/treeDataExample?workExampleId="+exampleId,function(data){
+                $.fn.zTree.init($("#ztree"), setting, data).expandAll(true);
+            });
+        }
+        refreshTree();
+
+        // var width = $('#divId').width();
+        // var leftWidth = width*0.1; // 左侧窗口大小
+        // var htmlObj = $("html"), mainObj = $("#main");
+        // var frameObj = $("#left, #openClose, #right, #right iframe");
+        // function wSize(){
+        //     var strs = getWindowSize().toString().split(",");
+        //     htmlObj.css({"overflow-x":"hidden", "overflow-y":"hidden"});
+        //     mainObj.css("width","auto");
+        //     frameObj.height(strs[0] - 120);
+        //    /* var leftWidth = ($("#left").width() < 0 ? 0 : $("#left").width());
+        //     $("#right").width($("#content").width()- leftWidth - $("#openClose").width() -60);
+        //     $(".ztree").width(leftWidth - 10).height(frameObj.height() - 46);*/
+        //     $("#content").width(width);
+        //     $("#left").width(width*0.12);
+        //     $("#ztree").width(width*0.12);
+        //     $("#ztree").height('86%');
+        //     $("#right").width(width*0.82);
+        //     $("#officeContent").width(width*0.82);
+        // }
+	</script>
+	<%--<script src="${ctxStatic}/common/wsize.min.js" type="text/javascript"></script>--%>
+</body>
+</html>

+ 150 - 0
src/main/webapp/webpage/modules/workexample/workExampleIndicesAdd.jsp

@@ -0,0 +1,150 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>指标字典管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		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">
+    <c:choose>
+    <c:when test="${not empty edit && edit}">
+        <div class="container">
+    </c:when>
+    <c:otherwise>
+        <div class="container view-form">
+    </c:otherwise>
+    </c:choose>
+
+		<form:form id="inputForm" modelAttribute="workExampleIndices" action="${ctx}/workexample/workExampleIndices/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<form:hidden path="parent.id"/>
+		<form:hidden path="parentIds"/>
+		<form:hidden path="isDisable"/>
+		<sys:message content="${message}"/>
+			<div class="form-group layui-row first lw12">
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label"><span class="require-item">*</span>名称:</label>
+					<div class="layui-input-block with-icon">
+                        <c:choose>
+                            <c:when test="${not empty edit && edit}">
+                                <form:input  path="name" htmlEscape="false"  class="form-control layui-input required"/>
+                            </c:when>
+                            <c:otherwise>
+                                <input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${workExampleIndices.name}"/>
+                            </c:otherwise>
+                        </c:choose>
+
+					</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 with-icon">
+                        <c:choose>
+                            <c:when test="${not empty edit && edit}">
+                                <form:input  path="orderNum" readonly="true" htmlEscape="false"  class="form-control layui-input required"/>
+                            </c:when>
+                            <c:otherwise>
+                                <input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${workExampleIndices.orderNum}"/>
+                            </c:otherwise>
+                        </c:choose>
+
+					</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 with-icon">
+                        <c:choose>
+                            <c:when test="${not empty edit && edit}">
+                                <form:select path="oneItems" class="form-control required simple-select">
+                                    <form:option value="" label=""/>
+                                    <form:options items="${fns:getDictList('is_chapter')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                                </form:select>
+                            </c:when>
+                            <c:otherwise>
+                                <input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${fns:getDictLabel(workExampleIndices.oneItems, 'is_chapter', '')}"/>
+                            </c:otherwise>
+                        </c:choose>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label">项单位:</label>
+					<div class="layui-input-block with-icon">
+                        <c:choose>
+                            <c:when test="${not empty edit && edit}">
+                                <form:select path="itemUnit" class="form-control simple-select ">
+                                    <form:option value="" label=""/>
+                                    <form:options items="${fns:getMainDictList('unit_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                                </form:select>
+                                </c:when>
+                            <c:otherwise>
+                                <input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${fns:getMainDictLabel(workExampleIndices.itemUnit, 'unit_type', '')}"/>
+                            </c:otherwise>
+                        </c:choose>
+
+					</div>
+				</div>
+
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label">小数位数:</label>
+					<div class="layui-input-block with-icon">
+                        <c:choose>
+                            <c:when test="${not empty edit && edit}">
+                                <form:input  path="decimalCount" htmlEscape="false" maxlength="1" class="form-control layui-input number "/>
+                            </c:when>
+                            <c:otherwise>
+                                <input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${workExampleIndices.decimalCount}"/>
+                            </c:otherwise>
+                        </c:choose>
+
+					</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 with-icon">
+						<c:choose>
+							<c:when test="${workExampleIndices.isDisable eq 0}">
+								<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>
+	</form:form>
+    </div>
+</div>
+</body>
+</html>

+ 47 - 0
src/main/webapp/webpage/modules/workexample/workExampleIndicesForm.jsp

@@ -0,0 +1,47 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>指标字典管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workExampleIndices" action="${ctx}/workexample/workExampleIndices/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 135 - 0
src/main/webapp/webpage/modules/workexample/workExampleIndicesList.jsp

@@ -0,0 +1,135 @@
+<%@ 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 : 2},{ 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="workExampleIndices" action="${ctx}/workexample/workExampleIndices/" method="post" class="form-inline">
+
+					<div class="commonQuery">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">名    称:</label>
+							<div class="layui-input-block with-icon">
+								<form:input path="name" htmlEscape="false" 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">
+							</div>
+						</div>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<button id="searchReset" style="margin-right: 10px;" 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">
+					<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="40%">指标名称</th>
+						<th  >排序</th>
+						<th >禁用状态</th>
+						<th width="240px">操作</th>
+					</tr>
+					</thead>
+					<c:choose>
+						<c:when test="${not empty list}">
+							<c:forEach items="${list}" var="workExampleIndices">
+								<tr id="${workExampleIndices.id}" pid="${workExampleIndices.parent.id}">
+									<td><a  href="#" onclick="openDialogView('查看指标项目', '${ctx}/workexample/workExampleIndices/form?id=${workExampleIndices.id}&view=view','60%', '60%')">
+											${workExampleIndices.name}
+									</a></td>
+									<td style="text-align: center">
+											${workExampleIndices.orderNum}
+									</td>
+									<td style="text-align: center">
+											${fns:getDictLabel(workExampleIndices.isDisable, 'is_disable', '')}
+									</td>
+									<td class="op-td text-center">
+										<div class="op-btn-box">
+											<a href="javascript:void(0);" onclick="openDialog('修改', '${ctx}/workexample/workExampleIndices/form?id=${workExampleIndices.id}&view=edit','60%','60%')" class="op-btn op-btn-edit"><i class="fa fa-edit"></i> 修改</a>
+											<c:choose>
+												<c:when test="${workExampleIndices.type eq 2 || workExampleIndices.type eq 3}">
+													<a href="javascript:void(0);" onclick="openDialog('添加指标项', '${ctx}/workexample/workExampleIndices/form?id=${workExampleIndices.id}&view=save','60%','60%')" class="op-btn op-btn-add"><i class="fa fa-plus"></i> 添加指标</a>
+												</c:when>
+												<c:when test="${workExampleIndices.type < 8}">
+													<a href="javascript:void(0);" onclick="openDialog('添加指标项', '${ctx}/workexample/workExampleIndices/form?id=${workExampleIndices.id}&view=save','60%','60%')" class="op-btn op-btn-add"><i class="fa fa-plus"></i> 添加项</a>
+												</c:when>
+												<c:otherwise></c:otherwise>
+											</c:choose>
+											<c:choose>
+												<c:when test="${workExampleIndices.isDisable ne 0}">
+													<a href="${ctx}/workexample/workExampleIndices/delete?id=${workExampleIndices.id}&status=0" onclick="return confirmx('确认要启用该指标项目及其子指标项目吗?', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 启用</a>
+												</c:when>
+												<c:otherwise>
+													<a href="${ctx}/workexample/workExampleIndices/delete?id=${workExampleIndices.id}&status=1" onclick="return confirmx('确认要禁用该指标项目及其子指标项目吗?', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 禁用</a>
+												</c:otherwise>
+											</c:choose>
+										</div>
+									</td>
+								</tr>
+							</c:forEach>
+						</c:when>
+						<c:otherwise>
+							<tr>
+								<td colspan="4" align="center">暂无数据</td>
+							</tr>
+						</c:otherwise>
+					</c:choose>
+
+					</tbody>
+				</table>
+
+				<!-- 分页代码 -->
+				<%--<table:page page="${page}"></table:page>--%>
+
+			</div>
+		</div>
+	</div>
+</div>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 117 - 0
src/main/webapp/webpage/modules/workexample/workExampleIndicesSave.jsp

@@ -0,0 +1,117 @@
+<%@ 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>
+<div class="single-form">
+		<c:choose>
+			<c:when test="${not empty edit && edit}">
+				<div class="container">
+			</c:when>
+			<c:otherwise>
+				<div class="container view-form">
+			</c:otherwise>
+		</c:choose>
+		<form:form id="inputForm" modelAttribute="workExampleIndices" action="${ctx}/workexample/workExampleIndices/save" method="post" class="form-horizontal">
+			<form:hidden path="id"/>
+			<form:hidden path="parent.id"/>
+			<form:hidden path="parentIds"/>
+			<form:hidden path="isDisable"/>
+			<sys:message content="${message}"/>
+		<div class="form-group layui-row first lw12">
+			<div class="layui-item layui-col-sm12">
+				<label class="layui-form-label"><span class="require-item">*</span>名称:</label>
+				<div class="layui-input-block with-icon">
+					<c:choose>
+						<c:when test="${not empty edit && edit}">
+							<form:input  path="name" htmlEscape="false"  class="form-control layui-input required"/>
+						</c:when>
+						<c:otherwise>
+							<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${workExampleIndices.name}"/>
+						</c:otherwise>
+					</c:choose>
+				</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 with-icon">
+					<c:choose>
+						<c:when test="${not empty edit && edit}">
+							<form:input  path="orderNum" readonly="true" htmlEscape="false"  class="form-control layui-input required"/>
+						</c:when>
+						<c:otherwise>
+							<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${workExampleIndices.orderNum}"/>
+						</c:otherwise>
+					</c:choose>
+				</div>
+			</div>
+			<c:if test="${workExampleIndices.orderNum > 1000}">
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label"><span class="require-item">*</span>指标类型:</label>
+					<div class="layui-input-block with-icon">
+						<c:choose>
+							<c:when test="${not empty edit && edit}">
+								<form:select path="view" class="form-control required simple-select">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('example_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</c:when>
+							<c:otherwise>
+								<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${fns:getDictLabel(workExampleIndices.view, 'example_type', '')}"/>
+							</c:otherwise>
+						</c:choose>
+
+					</div>
+				</div>
+			</c:if>
+			<div class="layui-item layui-col-sm12">
+				<label class="layui-form-label"><span class="require-item">*</span>禁用状态:</label>
+				<div class="layui-input-block with-icon">
+					<c:choose>
+						<c:when test="${workExampleIndices.isDisable eq 0}">
+							<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>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 440 - 0
src/main/webapp/webpage/modules/workexample/workExampleList.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">
+        $(document).ready(function() {
+            //搜索框收放
+            $('#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: '#beginContractDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+
+
+            laydate.render({
+                elem: '#endContractDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+        });
+        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,
+                maxmin: false, //开启最大化最小化按钮
+                skin: 'three-btns',
+                content: url ,
+                btn: ['送审','暂存','关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        top.layer.close(index);//关闭对话框。
+//                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                    return false;
+                },
+                btn3: function(index){
+                }
+            });
+        }
+        function 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: false, //开启最大化最小化按钮
+                skin: 'two-btns',
+                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.doSubmita(1) ){
+                        window.location.href='${ctx}/workexample/workExample/';
+                        //top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+
+                },
+                cancel: function(index){
+                }
+            });
+        }
+        function openDialogModify(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: false, //开启最大化最小化按钮
+                skin: 'two-btns',
+                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.doSubmita(1) ){
+                        window.location.href='${ctx}/workexample/workExample/';
+                        parent.parent.refreshTabIndex();
+                        //top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+
+                },
+                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: 2,
+                area: [width, height],
+                title: title,
+                maxmin: false, //开启最大化最小化按钮
+                skin: 'tow-btns',
+                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('#inputFormExcle');
+                    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, layero){
+                   /*  window.location.href='http://cdn.gangwaninfo.com/app-data/appVersion/案例模板.xlsx';*/
+                    window.location.href='${ctx}/workexample/workExample/import/template';
+                },
+
+                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="workExample" action="${ctx}/workexample/workExample/" 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 lw8">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">工程类型:</label>
+							<div class="layui-input-block with-icon">
+								<sys:treeselect id="mainDictDetail" name="mainDictDetail.id" value="${workExample.mainDictDetail.id}" labelName="mainDictDetail.detailName"
+												labelValue="${workExample.mainDictDetail.detailName}"
+												title="类型" url="/sys/mainDictDetail/treeDataByType?type=2&typeName=work_example_type&isAll=true" notAllowSelectParent="true" cssClass="form-control	 layui-input"
+												allowClear="true"/>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">工程名称:</label>
+							<div class="layui-input-block">
+								<form:input path="name" htmlEscape="false" maxlength="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" class="lw8" 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="${workExample.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="${workExample.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">
+								<sys:treeselect id="areaId" name="area.id" value="${workExample.area.id}" labelName="area.name" labelValue="${workExample.area.name}"
+												title="工程地点" url="/sys/area/treeData" cssClass="form-control layui-input " allowClear="true" notAllowSelectParent="false"/>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">建设规模:</label>
+							<div class="layui-input-block">
+								<form:input path="buildScale" 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="modus" 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="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>
+				</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="workexample:workExample:add">
+						<button class="nav-btn nav-btn-add" title="案例申请" onclick="openDialogreplay('案例申请','${ctx}/workexample/workExample/form','95%','95%')"><i class="fa fa-plus"></i>&nbsp;添加</button>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="workexample:workExample:import">
+						<%--<table:importExcelExample url="${ctx}/workexample/workExample/import"></table:importExcelExample><!-- 导入按钮 -->--%>
+						<sys:treeselectTmp id="exampleInfo" name="" value="" labelName="" labelValue="" title="指标项目" url="/workexample/workExampleIndices/treeDataExampleInfo" checked="true" cssClass="form-control required " allowClear="true" notAllowSelectParent="true"/>
+						<button class="nav-btn nav-btn-import" title="导入数据" onclick="openDialogreExcel('导入数据', '${ctx}/workexample/workExample/importDialogre','90%','90%')" ><i class="glyphicon glyphicon-import"></i>&nbsp;导入</button>
+						<a href="javascript:void(0)" onclick="openDialogView('导入日志', '${ctx}/workexampleimplog/workExampleImplog/list','95%','95%')" class="nav-btn nav-btn-import" ><i class="glyphicon glyphicon-v"></i>&nbsp;导入日志</a>
+					</shiro:hasPermission>
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+					<div style="clear: both;"></div>
+				</div>
+				<table class="oa-table layui-table" id="contentTable"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable'
+            ,page: false
+            ,cols: [[
+                // {checkbox: true, fixed: true},
+                {field:'index',align:'center', title: '序号',width:40}
+                ,{field:'type',align:'center', title: '工程类型',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.type +"'>" + d.type + "</span>";
+                    }}
+                ,{field:'name',align:'center',title: '工程名称',minWidth:120,templet:function(d){
+                        var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看案例信息', '${ctx}/workexample/workExample/form?id=" + d.id + "&tabId=1','95%','95%')\">" +
+                            "<span title=" + d.name + ">" + d.name + "</span></a>";
+                        return xml;
+                    }}
+                ,{field:'address',align:'center', title: '工程地点',minWidth:120,templet:function(d){
+                    return "<span title='"+ d.address +"'>" + d.address + "</span>";
+                }}
+                ,{field:'buildScale',align:'center', title: '建设规模(m2)',minWidth:120,templet:function(d){
+                    return "<span title='"+ d.buildScale +"'>" + d.buildScale + "</span>";
+                }}
+                ,{field:'modus', align:'center',title: '结构形式',width:90,templet:function(d){
+                    return "<span title='"+ d.modus +"'>" + d.modus + "</span>";
+                }}
+                ,{field:'basicType', align:'center',title: '基础类型',width:90,templet:function(d){
+                    return "<span title='"+ d.basicType +"'>" + d.basicType + "</span>";
+                }}
+                ,{field:'scale', align:'center',title: '规模',width:90,templet:function(d){
+                    return "<span title='"+ d.scale +"'>" + d.scale + "</span>";
+                }}
+                ,{field:'endDate', align:'center',title: '竣工日期',width:90,templet:function(d){
+                    return "<span title='"+ d.endDate +"'>" + d.endDate + "</span>";
+                }}
+                ,{field:'createBy', align:'center',title: '创建人',width:90,templet:function(d){
+                    return "<span title='"+ d.createBy +"'>" + d.createBy + "</span>";
+                }}
+                ,{field:'status',align:'center', title: '状态', width:70,templet:function(d){
+                    var st = getAuditState(d.status);
+                    if(st.action)
+                        var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/workexample/workExample/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}/workexample/workExample/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=\"openDialogreplay('修改案例信息', '${ctx}/workexample/workExample/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=\"openDialogModify('修改案例信息', '${ctx}/workexample/workExample/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}/workexample/workExample/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}/workexample/workExample/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="workExample" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${workExample.id}"
+                    ,"type":"${workExample.mainDictDetail.detailName}"
+                    ,"name":"${workExample.name}"
+                    ,"address":"${workExample.area.name}"
+                    ,"modus":"${workExample.modus}"
+                    ,"basicType":"${workExample.basicType}"
+                    ,"buildScale":"${workExample.buildScale}"
+                    ,"scale":"${workExample.scale}"
+                    ,"endDate":"<fmt:formatDate value="${workExample.endDate}" pattern="yyyy-MM-dd"/>"
+                    ,"status":"${workExample.status}"
+                    ,"createBy":"${workExample.createBy.name}"
+                    <c:if test="${fns:getUser().id == workExample.createBy.id}">
+                    <c:if test="${workExample.status == '2' }">,"cancancel":"1"</c:if>
+                    <shiro:hasPermission name="workexample:workExample:edit"><c:choose>
+                    <c:when test="${workExample.status == '1' }">,"canedit1":"1"</c:when>
+                    <c:when test="${workExample.status == '4'}">,"canedit2":"1"</c:when>
+                    <c:when test="${workExample.status == '3'}">,"canedit3":"1"</c:when>
+                    </c:choose></shiro:hasPermission>
+                    <shiro:hasPermission name="workexample:workExample:del"><c:choose>
+                    <c:when test="${(workExample.status == '1' or workExample.status == '3' or workExample.status == '4')}">,"candelete":"1"</c:when>
+                    </c:choose></shiro:hasPermission>
+                    </c:if>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+            // ,even: true
+            // ,height: 315
+        });
+
+    })
+
+    resizeListTable();
+</script>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 330 - 0
src/main/webapp/webpage/modules/workexample/workExampleListView.jsp

@@ -0,0 +1,330 @@
+<%@ 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: '#beginContractDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+
+
+            laydate.render({
+                elem: '#endContractDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+        });
+        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,
+                maxmin: false, //开启最大化最小化按钮
+                skin: 'three-btns',
+                content: url ,
+                btn: ['送审','暂存','关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        top.layer.close(index);//关闭对话框。
+//                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                    return false;
+                },
+                btn3: function(index){
+                }
+            });
+        }
+        function 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: false, //开启最大化最小化按钮
+                skin: 'two-btns',
+                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.doSubmita(1) ){
+                        window.location.href='${ctx}/workexample/workExample/';
+                        //top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+
+                },
+                cancel: function(index){
+                }
+            });
+        }
+        function openDialogModify(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: false, //开启最大化最小化按钮
+                skin: 'two-btns',
+                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.doSubmita(1) ){
+                        //top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+
+                },
+                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: 2,
+                area: [width, height],
+                title: title,
+                maxmin: false, //开启最大化最小化按钮
+                skin: 'tow-btns',
+                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('#inputFormExcle');
+                    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, layero){
+                   /*  window.location.href='http://cdn.gangwaninfo.com/app-data/appVersion/案例模板.xlsx';*/
+                    window.location.href='${ctx}/workexample/workExample/import/template';
+                },
+
+                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="workExample" action="${ctx}/workexample/workExample/listView" 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 lw8">
+						<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 with-icon">
+								<sys:treeselect id="areaId" name="area.id" value="${workExample.area.id}" labelName="area.name" labelValue="${workExample.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">
+								<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" class="lw8" style="clear:both;display:none;">
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="contentShadow layui-form contentDetails">
+				<div class="nav-btns">
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+					<div style="clear: both;"></div>
+				</div>
+				<table class="oa-table layui-table" id="contentTable"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable'
+            ,page: false
+            ,cols: [[
+                // {checkbox: true, fixed: true},
+                {field:'index',align:'center', title: '序号',width:40}
+                ,{field:'type',align:'center', title: '工程类型',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.type +"'>" + d.type + "</span>";
+                    }}
+                ,{field:'name',align:'center',title: '工程名称',minWidth:120,templet:function(d){
+                        var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看案例信息', '${ctx}/workexample/workExample/form?id=" + d.id + "&tabId=1','95%','95%')\">" +
+                            "<span title=" + d.name + ">" + d.name + "</span></a>";
+                        return xml;
+                    }}
+                ,{field:'address',align:'center', title: '工程地点',minWidth:120,templet:function(d){
+                    return "<span title='"+ d.address +"'>" + d.address + "</span>";
+                }}
+                ,{field:'buildScale',align:'center', title: '建设规模(m2)',minWidth:120,templet:function(d){
+                    return "<span title='"+ d.buildScale +"'>" + d.buildScale + "</span>";
+                }}
+                ,{field:'modus', align:'center',title: '结构形式',width:90,templet:function(d){
+                    return "<span title='"+ d.modus +"'>" + d.modus + "</span>";
+                }}
+                ,{field:'basicType', align:'center',title: '基础类型',width:90,templet:function(d){
+                    return "<span title='"+ d.basicType +"'>" + d.basicType + "</span>";
+                }}
+                ,{field:'endDate', align:'center',title: '竣工日期',width:90,templet:function(d){
+                    return "<span title='"+ d.endDate +"'>" + d.endDate + "</span>";
+                }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="workExample" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${workExample.id}"
+                    ,"type":"${workExample.mainDictDetail.detailName}"
+                    ,"name":"${workExample.name}"
+                    ,"address":"${workExample.area.name}"
+                    ,"modus":"${workExample.modus}"
+                    ,"basicType":"${workExample.basicType}"
+                    ,"buildScale":"${workExample.buildScale}"
+                    ,"endDate":"<fmt:formatDate value="${workExample.endDate}" pattern="yyyy-MM-dd"/>"
+                }
+                </c:forEach>
+                </c:if>
+            ]
+            // ,even: true
+            // ,height: 315
+        });
+
+    })
+
+    resizeListTable();
+</script>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 412 - 0
src/main/webapp/webpage/modules/workexample/workExampleLists.jsp

@@ -0,0 +1,412 @@
+<%@ 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(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: '#beginContractDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+
+
+            laydate.render({
+                elem: '#endContractDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+        });
+        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,
+                maxmin: false, //开启最大化最小化按钮
+                skin: 'three-btns',
+                content: url ,
+                btn: ['送审','暂存','关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        top.layer.close(index);//关闭对话框。
+//                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                    return false;
+                },
+                btn3: function(index){
+                }
+            });
+        }
+        function 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: false, //开启最大化最小化按钮
+                skin: 'two-btns',
+                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
+                    }
+
+                },
+                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="workExample" action="${ctx}/workexample/workExamples/" 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 lw8">
+						<<div class="layui-item query athird">
+						<label class="layui-form-label">工程类型:</label>
+						<div class="layui-input-block with-icon">
+							<sys:treeselect id="mainDictDetail" name="mainDictDetail.id" value="${workExample.mainDictDetail.id}" labelName="mainDictDetail.detailName"
+											labelValue="${workExample.mainDictDetail.detailName}"
+											title="类型" url="/sys/mainDictDetail/treeDataByType?type=2&typeName=work_example_type&isAll=true" notAllowSelectParent="true" cssClass="form-control	 layui-input"
+											allowClear="true"/>
+						</div>
+					</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">工程名称:</label>
+							<div class="layui-input-block">
+								<form:input path="name" htmlEscape="false" maxlength="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" class="lw8" 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="${workExample.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="${workExample.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">
+								<sys:treeselect id="areaId" name="area.id" value="${workExample.area.id}" labelName="area.name" labelValue="${workExample.area.name}"
+												title="工程地点" url="/sys/area/treeData" cssClass="form-control layui-input " allowClear="true" notAllowSelectParent="false"/>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">建设规模:</label>
+							<div class="layui-input-block">
+								<form:input path="buildScale" 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="modus" 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="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>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="contentShadow layui-form contentDetails">
+				<div class="nav-btns">
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+					<div style="clear: both;"></div>
+				</div>
+				<table class="oa-table layui-table" id="contentTable"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable'
+            ,page: false
+            ,cols: [[
+                // {checkbox: true, fixed: true},
+                {field:'index',align:'center', title: '序号',width:40}
+                ,{field:'type',align:'center', title: '工程类型',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.type +"'>" + d.type + "</span>";
+                    }}
+                ,{field:'name',align:'center',title: '工程名称',minWidth:120,templet:function(d){
+                        var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看案例信息', '${ctx}/workexample/workExample/form?id=" + d.id + "&tabId=1','95%','95%')\">" +
+                            "<span title=" + d.name + ">" + d.name + "</span></a>";
+                        return xml;
+                    }}
+                ,{field:'address',align:'center', title: '工程地点',minWidth:160,templet:function(d){
+                    return "<span title='"+ d.address +"'>" + d.address + "</span>";
+                }}
+                ,{field:'buildScale',align:'center', title: '建设规模(m2)',minWidth:160,templet:function(d){
+                    return "<span title='"+ d.buildScale +"'>" + d.buildScale + "</span>";
+                }}
+                ,{field:'modus', align:'center',title: '结构形式',width:90,templet:function(d){
+                    return "<span title='"+ d.modus +"'>" + d.modus + "</span>";
+                }}
+                ,{field:'basicType', align:'center',title: '基础类型',width:90,templet:function(d){
+                    return "<span title='"+ d.basicType +"'>" + d.basicType + "</span>";
+                }}
+                ,{field:'scale', align:'center',title: '规模',width:90,templet:function(d){
+                    return "<span title='"+ d.scale +"'>" + d.scale + "</span>";
+                }}
+                ,{field:'startDate', align:'center',title: '开工日期',width:90,templet:function(d){
+                    return "<span title='"+ d.startDate +"'>" + d.startDate + "</span>";
+                }}
+                ,{field:'endDate', align:'center',title: '竣工日期',width:90,templet:function(d){
+                    return "<span title='"+ d.endDate +"'>" + d.endDate + "</span>";
+                }}
+                ,{field:'officeName', align:'center',title: '所属部门',width:90,templet:function(d){
+                    return "<span title='"+ d.officeName +"'>" + d.officeName + "</span>";
+                }}
+                ,{field:'safeLevel', align:'center',title: '结构安全等级',width:90,templet:function(d){
+                    return "<span title='"+ d.safeLevel +"'>" + d.safeLevel + "</span>";
+                }}
+                ,{field:'stage', align:'center',title: '编制阶段',width:90,templet:function(d){
+                    return "<span title='"+ d.stage +"'>" + d.stage + "</span>";
+                }}
+                ,{field:'investmentType', align:'center',title: '投资类型',width:90,templet:function(d){
+                    return "<span title='"+ d.investmentType +"'>" + d.investmentType + "</span>";
+                }}
+                ,{field:'valuationType', align:'center',title: '计价类型',width:90,templet:function(d){
+                    return "<span title='"+ d.valuationType +"'>" + d.valuationType + "</span>";
+                }}
+                ,{field:'valuationAccording', align:'center',title: '计价依据',width:90,templet:function(d){
+                    return "<span title='"+ d.valuationAccording +"'>" + d.valuationAccording + "</span>";
+                }}
+                ,{field:'biddingPrice', align:'center',title: '招标基准信息价',width:90,templet:function(d){
+                    return "<span title='"+ d.biddingPrice +"'>" + d.biddingPrice + "</span>";
+                }}
+                ,{field:'taxModel', align:'center',title: '计税模式',width:90,templet:function(d){
+                    return "<span title='"+ d.taxModel +"'>" + d.taxModel + "</span>";
+                }}
+                ,{field:'abovegroundArea', align:'center',title: '地上建筑面积',width:90,templet:function(d){
+                    return "<span title='"+ d.abovegroundArea +"'>" + d.abovegroundArea + "</span>";
+                }}
+                ,{field:'undergroundArea', align:'center',title: '地下建筑面积',width:90,templet:function(d){
+                    return "<span title='"+ d.undergroundArea +"'>" + d.undergroundArea + "</span>";
+                }}
+                ,{field:'civilArea', align:'center',title: '人防建筑面积',width:90,templet:function(d){
+                    return "<span title='"+ d.civilArea +"'>" + d.civilArea + "</span>";
+                }}
+                ,{field:'garageArea', align:'center',title: '车库建筑面积',width:90,templet:function(d){
+                    return "<span title='"+ d.garageArea +"'>" + d.garageArea + "</span>";
+                }}
+                ,{field:'abovegroundLayer', align:'center',title: '地上层数',width:90,templet:function(d){
+                    return "<span title='"+ d.abovegroundLayer +"'>" + d.abovegroundLayer + "</span>";
+                }}
+                ,{field:'undergroundLayer', align:'center',title: '地下层数',width:90,templet:function(d){
+                    return "<span title='"+ d.undergroundLayer +"'>" + d.undergroundLayer + "</span>";
+                }}
+                ,{field:'abovegroundHeight', align:'center',title: '地上层高',width:90,templet:function(d){
+                    return "<span title='"+ d.abovegroundHeight +"'>" + d.abovegroundHeight + "</span>";
+                }}
+                ,{field:'undergroundHeight', align:'center',title: '地下层高',width:90,templet:function(d){
+                    return "<span title='"+ d.undergroundHeight +"'>" + d.undergroundHeight + "</span>";
+                }}
+                ,{field:'totalHeight', align:'center',title: '总层数',width:90,templet:function(d){
+                    return "<span title='"+ d.totalHeight +"'>" + d.totalHeight + "</span>";
+                }}
+                ,{field:'eavesHeight', align:'center',title: '檐 高',width:90,templet:function(d){
+                    return "<span title='"+ d.eavesHeight +"'>" + d.eavesHeight + "</span>";
+                }}
+                ,{field:'insideDecoration', align:'center',title: '内墙面装修',width:90,templet:function(d){
+                    return "<span title='"+ d.insideDecoration +"'>" + d.insideDecoration + "</span>";
+                }}
+                ,{field:'outsideDecoration', align:'center',title: '外墙面装修',width:90,templet:function(d){
+                    return "<span title='"+ d.outsideDecoration +"'>" + d.outsideDecoration + "</span>";
+                }}
+                ,{field:'skylightDecoration', align:'center',title: '天棚装修',width:90,templet:function(d){
+                    return "<span title='"+ d.skylightDecoration +"'>" + d.skylightDecoration + "</span>";
+                }}
+                ,{field:'floorDecoration', align:'center',title: '楼地面装修',width:90,templet:function(d){
+                    return "<span title='"+ d.floorDecoration +"'>" + d.floorDecoration + "</span>";
+                }}
+                ,{field:'door', align:'center',title: '门',width:90,templet:function(d){
+                    return "<span title='"+ d.door +"'>" + d.door + "</span>";
+                }}
+                ,{field:'window', align:'center',title: '窗',width:90,templet:function(d){
+                    return "<span title='"+ d.window +"'>" + d.window + "</span>";
+                }}
+                ,{field:'createBy', align:'center',title: '创建人',width:90,templet:function(d){
+                    return "<span title='"+ d.createBy +"'>" + d.createBy + "</span>";
+                }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="workExample" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${workExample.id}"
+                    ,"type":"${workExample.mainDictDetail.detailName}"
+                    ,"name":"${workExample.name}"
+                    ,"address":"${workExample.area.name}"
+                    ,"modus":"${workExample.modus}"
+                    ,"basicType":"${workExample.basicType}"
+                    ,"buildScale":"${workExample.buildScale}"
+                    ,"scale":"${workExample.scale}"
+                    ,"officeName":"${workExample.officeName}"
+                    ,"safeLevel":"${workExample.safeLevel}"
+                    ,"stage":"${workExample.stage}"
+                    ,"investmentType":"${workExample.investmentType}"
+                    ,"valuationType":"${workExample.valuationType}"
+                    ,"valuationAccording":"${workExample.valuationAccording}"
+                    ,"biddingPrice":"${workExample.biddingPrice}"
+                    ,"taxModel":"${workExample.taxModel}"
+                    ,"abovegroundArea":"${workExample.abovegroundArea}"
+                    ,"undergroundArea":"${workExample.undergroundArea}"
+                    ,"civilArea":"${workExample.civilArea}"
+                    ,"garageArea":"${workExample.garageArea}"
+                    ,"abovegroundLayer":"${workExample.abovegroundLayer}"
+                    ,"undergroundLayer":"${workExample.undergroundLayer}"
+                    ,"abovegroundHeight":"${workExample.abovegroundHeight}"
+                    ,"undergroundHeight":"${workExample.undergroundHeight}"
+                    ,"totalHeight":"${workExample.totalHeight}"
+                    ,"eavesHeight":"${workExample.eavesHeight}"
+                    ,"insideDecoration":"${workExample.insideDecoration}"
+                    ,"outsideDecoration":"${workExample.outsideDecoration}"
+                    ,"skylightDecoration":"${workExample.skylightDecoration}"
+                    ,"floorDecoration":"${workExample.floorDecoration}"
+                    ,"door":"${workExample.door}"
+                    ,"window":"${workExample.window}"
+                    ,"endDate":"<fmt:formatDate value="${workExample.endDate}" pattern="yyyy-MM-dd"/>"
+                    ,"startDate":"<fmt:formatDate value="${workExample.startDate}" pattern="yyyy-MM-dd"/>"
+                    ,"status":"${workExample.status}"
+                    ,"createBy":"${workExample.createBy.name}"
+                }
+                </c:forEach>
+                </c:if>
+            ]
+            // ,even: true
+            // ,height: 315
+        });
+
+    })
+
+    resizeListTable();
+</script>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

Diferenças do arquivo suprimidas por serem muito extensas
+ 1498 - 0
src/main/webapp/webpage/modules/workexample/workExampleModify.jsp


+ 148 - 0
src/main/webapp/webpage/modules/workexample/workExampleSingle.jsp

@@ -0,0 +1,148 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>单项工程造价指标</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+        $(document).ready(function() {
+            //搜索框收放
+            $('#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 changeInfo(id) {
+            $("#dictId").val(id);
+            search();
+        }
+	</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="workExample" action="${ctx}/workexample/workExample/example" method="post" class="form-inline">
+					<%--<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->--%>
+					<input id="dictId" name="dictId" type="hidden" value="${workExample.dictId}"/>
+					<div class="commonQuery lw8">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">工程指标:</label>
+							<div class="layui-input-block with-icon">
+								<sys:treeselect id="exampleType" name="exampleType" value="${workExample.exampleType}" labelName="exampleTypeName" labelValue="${workExample.exampleTypeName}"
+												title="工程指标类型" url="/workexample/workExampleIndices/treeDataExampleSelect" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">工程地点:</label>
+							<div class="layui-input-block with-icon">
+									<sys:treeselect id="area" name="area.id" value="${workExample.area.id}" labelName="area.name" labelValue="${workExample.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">
+								<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">
+					<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:${ exampleSingleList.size() }
+            ,elem: '#contentTable'
+            ,page: false
+            ,cols: [[
+                // {checkbox: true, fixed: true},
+                {field:'name',align:'center', title: '费用名称',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.name +"'>" + d.name + "</span>";
+                    }}
+                ,{field:'counts',align:'center', title: '样 本 量',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.counts +"'>" + d.counts + "</span>";
+                    }}
+                ,{field:'sums',align:'center', title: '总金额(元)',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.sums +"'>" + d.sums + "</span>";
+                    }}
+                ,{field:'maxs',align:'center', title: '最大单位造价(m2)',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.maxs +"'>" + d.maxs + "</span>";
+                    }}
+                ,{field:'mins', align:'center',title: '最小单位造价(m2)',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.mins +"'>" + d.mins + "</span>";
+                    }}
+                ,{field:'avgs', align:'center',title: '平均单位造价(m2)',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.avgs +"'>" + d.avgs + "</span>";
+                    }}
+                ,{field:'proportion', align:'center',title: '占造价比例(%)',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.proportion +"'>" + d.proportion + "</span>";
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty exampleSingleList}">
+                <c:forEach items="${exampleSingleList}" var="exampleSingle" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "id":"${exampleSingle.id}"
+                    ,"name":"${exampleSingle.name}"
+                    ,"counts":"${exampleSingle.counts}"
+                    ,"sums":"<fmt:formatNumber value="${exampleSingle.sums}" pattern="#,#0.00"/>"
+                    ,"maxs":"<fmt:formatNumber value="${exampleSingle.maxs}" pattern="#,#0.00"/>"
+                    ,"mins":"<fmt:formatNumber value="${exampleSingle.mins}" pattern="#,#0.00"/>"
+                    ,"avgs":"<fmt:formatNumber value="${exampleSingle.avgs}" pattern="#,#0.00"/>"
+                    ,"proportion":"<fmt:formatNumber value="${exampleSingle.proportion}" pattern="#,#0.00"/>"
+                }
+                </c:forEach>
+                </c:if>
+            ]
+        });
+
+    })
+
+    resizeListTable();
+</script>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 126 - 0
src/main/webapp/webpage/modules/workexample/workExampleSituation.jsp

@@ -0,0 +1,126 @@
+<%@ 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(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 changeInfo(id) {
+            $("#dictId").val(id);
+            search();
+        }
+    </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="workExample" action="${ctx}/workexample/workExample/example" method="post" class="form-inline">
+                    <%--<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->--%>
+                    <input id="dictId" name="dictId" type="hidden" value="${workExample.dictId}"/>
+                    <div class="commonQuery lw8">
+                        <div class="layui-item query athird">
+                            <label class="layui-form-label">工程指标:</label>
+                            <div class="layui-input-block with-icon">
+                                <sys:treeselect id="exampleType" name="exampleType" value="${workExample.exampleType}" labelName="exampleTypeName" labelValue="${workExample.exampleTypeName}"
+                                                title="工程指标类型" url="/workexample/workExampleIndices/treeDataExampleSelect" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+                            </div>
+                        </div>
+                        <div class="layui-item query athird">
+                            <label class="layui-form-label">工程地点:</label>
+                            <div class="layui-input-block with-icon">
+                                <sys:treeselect id="area" name="area.id" value="${workExample.area.id}" labelName="area.name" labelValue="${workExample.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">
+                                <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">
+                    <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>
+                <div class="single-form view-form">
+                    <div class="container">
+                        <div class="form-group layui-row first">
+                            <div class="layui-item layui-col-sm6 lw7">
+                                <label class="layui-form-label">工程类型:</label>
+                                <div class="layui-input-block">
+                                    <input id="workType" path="workType" readonly="true" htmlEscape="false" class="form-control required layui-input" value="${workExample.workType}"/>
+                                </div>
+                            </div>
+                            <div class="layui-item layui-col-sm6 lw7">
+                                <label class="layui-form-label">样 本 量:</label>
+                                <div class="layui-input-block">
+                                    <input readonly="true" htmlEscape="false" class="form-control required layui-input" value="${workExample.counts}"/>
+                                </div>
+                            </div>
+                            <div class="layui-item layui-col-sm6 lw7">
+                                <label class="layui-form-label double-line">总建设规模(㎡):</label>
+                                <div class="layui-input-block">
+                                    <input readonly="true" htmlEscape="false" class="form-control required layui-input" value="${workExample.sums}"/>
+                                </div>
+                            </div>
+                            <div class="layui-item layui-col-sm6 lw7">
+                                <label class="layui-form-label double-line">平均建设规模(㎡):</label>
+                                <div class="layui-input-block">
+                                    <input readonly="true" htmlEscape="false" class="form-control required layui-input" value="${workExample.avgs}"/>
+                                </div>
+                            </div>
+                            <div class="layui-item layui-col-sm6 lw7">
+                                <label class="layui-form-label double-line">最小建设规模(㎡):</label>
+                                <div class="layui-input-block">
+                                    <input readonly="true" htmlEscape="false" class="form-control required layui-input" value="${workExample.mins}"/>
+                                </div>
+                            </div>
+                            <div class="layui-item layui-col-sm6 lw7">
+                                <label class="layui-form-label double-line">最大建设规模(㎡):</label>
+                                <div class="layui-input-block">
+                                    <input readonly="true" htmlEscape="false" class="form-control required layui-input" value="${workExample.maxs}"/>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div id="changewidth"></div>
+</div>
+</body>
+</html>

Diferenças do arquivo suprimidas por serem muito extensas
+ 1275 - 0
src/main/webapp/webpage/modules/workexample/workExampleView.jsp


+ 148 - 0
src/main/webapp/webpage/modules/workexample/workExampleWork.jsp

@@ -0,0 +1,148 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>主要工程量指标</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+        $(document).ready(function() {
+            //搜索框收放
+            $('#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 changeInfo(id) {
+            $("#dictId").val(id);
+            search();
+        }
+	</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="workExample" action="${ctx}/workexample/workExample/example" method="post" class="form-inline">
+					<%--<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->--%>
+					<input id="dictId" name="dictId" type="hidden" value="${workExample.dictId}"/>
+					<div class="commonQuery lw8">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">工程指标:</label>
+							<div class="layui-input-block with-icon">
+								<sys:treeselect id="exampleType" name="exampleType" value="${workExample.exampleType}" labelName="exampleTypeName" labelValue="${workExample.exampleTypeName}"
+												title="工程指标类型" url="/workexample/workExampleIndices/treeDataExampleSelect" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">工程地点:</label>
+							<div class="layui-input-block with-icon">
+								<sys:treeselect id="area" name="area.id" value="${workExample.area.id}" labelName="area.name" labelValue="${workExample.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">
+								<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">
+					<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:${ exampleProjectList.size() }
+            ,elem: '#contentTable'
+            ,page: false
+            ,cols: [[
+                // {checkbox: true, fixed: true},
+                {field:'name',align:'center', title: '工料名称',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.name +"'>" + d.name + "</span>";
+                    }}
+                ,{field:'name2',align:'center', title: '单位',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.name2 +"'>" + d.name2 + "</span>";
+                    }}
+                ,{field:'counts',align:'center', title: '样本量',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.counts +"'>" + d.counts + "</span>";
+                    }}
+                ,{field:'sums',align:'center', title: '总数量',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.sums +"'>" + d.sums + "</span>";
+                    }}
+                ,{field:'maxs',align:'center', title: '最大单位指标(每100㎡)',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.maxs +"'>" + d.maxs + "</span>";
+                    }}
+                ,{field:'mins', align:'center',title: '最小单位指标(每100㎡)',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.mins +"'>" + d.mins + "</span>";
+                    }}
+                ,{field:'avgs', align:'center',title: '平均单位指标(每100㎡)',minWidth:120,templet:function(d){
+                        return "<span title='"+ d.avgs +"'>" + d.avgs + "</span>";
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty exampleProjectList}">
+                <c:forEach items="${exampleProjectList}" var="exampleProject" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "id":"${exampleProject.id}"
+                    ,"name":"${exampleProject.name}"
+                    ,"name2":"${exampleProject.name}"
+                    ,"counts":"${exampleProject.counts}"
+                    ,"sums":"${exampleProject.sums}"
+                    ,"maxs":"<fmt:formatNumber value="${exampleProject.maxs}" pattern="#,#0.00"/>"
+                    ,"mins":"<fmt:formatNumber value="${exampleProject.mins}" pattern="#,#0.00"/>"
+                    ,"avgs":"<fmt:formatNumber value="${exampleProject.avgs}" pattern="#,#0.00"/>"
+                }
+                </c:forEach>
+                </c:if>
+            ]
+        });
+
+    })
+
+    resizeListTable();
+</script>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 15 - 0
src/main/webapp/webpage/modules/workexample/workTrack.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/workexampleimplog/workExampleImplogForm.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="workExampleImplog" action="${ctx}/workexampleimplog/workExampleImplog/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="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="officeId" 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="exampleId" 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="indexId" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">项:</label></td>
+					<td class="width-35">
+						<form:input path="termId" 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="reason" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">状态:</label></td>
+					<td class="width-35">
+						<form:input path="flat" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 250 - 0
src/main/webapp/webpage/modules/workexampleimplog/workExampleImplogList.jsp

@@ -0,0 +1,250 @@
+<%@ 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="workExampleImplog" action="${ctx}/workexampleimplog/workExampleImplog/" 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="exampleName" name="exampleName" type="text"  maxlength="64" class=" form-control  layui-input "  />
+								</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="beginCreateDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${workExampleImplog.beginCreateDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+								<span class="group-sep">-</span>
+								<input id="endDate" placeholder="结束时间" name="endCreateDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${workExampleImplog.endCreateDate}" 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 style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+
+		<div class="full-width fl">
+			<div class="contentShadow layui-form contentDetails">
+				<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:'exampleName',align:'center', minWidth:130,title: '工程名称', templet:function(d){
+                        return "<span title='"+ d.exampleName +"'>" + d.exampleName + "</span>";
+                    }},
+                {field:'indexName',align:'center', minWidth:130, title: '指标名称',templet:function(d){
+                        return "<span title='"+ d.indexName +"'>" + d.indexName + "</span>";
+                    }}
+               /* ,{field:'termName',align:'center', width:100, title: '指标项',templet:function(d){
+                        return "<span title='"+ d.termName +"'>" + d.termName + "</span>";
+                    }}*/
+                ,{field:'userName',align:'center', width:100, title: '操作人',templet:function(d){
+                        return "<span title='"+ d.userName +"'>" + d.userName + "</span>";
+                    }}
+                ,{field:'reason',align:'center', minWidth:130, title: '失败原因',templet:function(d){
+                        return "<span title='"+ d.reason +"'>" + d.reason + "</span>";
+                    }}
+                ,{field:'createDate',align:'center',sort: true,width:130, title: '导入时间', templet:function(d){
+                        return "<span title='"+ d.createDate +"'>" + d.createDate + "</span>";
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="workExampleImplog" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "id":"${workExampleImplog.id}"
+                    ,"exampleName":"${workExampleImplog.exampleName}"
+                    ,"indexName":"${workExampleImplog.indexName}"
+                   /* ,"termName":"${workExampleImplog.termName}"*/
+                    ,"userName":"${workExampleImplog.userName}"
+                    ,"reason":"${workExampleImplog.reason}"
+                    ,"createDate":"<fmt:formatDate value="${workExampleImplog.createDate}" pattern="yyyy-MM-dd HH:mm"/>"
+                }
+                </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 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>

+ 61 - 0
src/main/webapp/webpage/modules/workexplore/workExploreForm.jsp

@@ -0,0 +1,61 @@
+<%@ 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);
+					}
+				}
+			});
+            getCurrentDocumentHei()
+		});
+        function getCurrentDocumentHei(){
+            var height = $(document).outerHeight();
+            parent.$("#controltype").attr("height",height +"px")
+        }
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="workExplore" action="${ctx}/workexplore/workExplore/save" method="post" class="form-horizontal">
+			<form:hidden path="id"/>
+			<sys:message content="${message}"/>
+			<input type="hidden" name="projectId" id="projectId">
+			<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>基础信息</h2></div>
+				<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" style="margin-left:131px">
+						<form:textarea path="remarks" htmlEscape="false" rows="16"    class="form-control required"/>
+					</div>
+				</div>
+			</div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 25 - 0
src/main/webapp/webpage/modules/workexplore/workExploreFormView.jsp

@@ -0,0 +1,25 @@
+<%@ 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 first">
+            <div class="form-group-label"><h2>现场踏勘记录</h2></div>
+            <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" style="margin-left:131px">
+                    <textarea id="content" name="content" rows="10" disabled="disabled"
+                              class="form-control summernote required" placeholder="内容"
+                              required></textarea>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+</body>
+</html>

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

+ 257 - 0
src/main/webapp/webpage/modules/workfield/workFieldAudit.jsp

@@ -0,0 +1,257 @@
+<%@ 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;
+            }else {
+                parent.layer.msg("信息未填写完整!", {icon: 5});
+            }
+            return false;
+        }
+        $(document).ready(function() {
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+
+            laydate.render({
+                elem: '#startDate',
+                event: 'focus',
+                type : 'date'
+            });
+            laydate.render({
+                elem: '#endDate',
+                event: 'focus',
+                type : 'date'
+            });
+        });
+        function insertTitle(tValue){
+            var list = "${workField.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 = "73";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workField/"+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);}
+        }
+
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container view-form">
+		<form:form id="inputForm" modelAttribute="workField" action="${ctx}/workfield/workField/saveAudit" method="post" class="form-horizontal">
+			<form:hidden path="id"/>
+			<form:hidden path="home"/>
+			<form:hidden path="act.taskId"/>
+			<form:hidden path="act.taskName"/>
+			<form:hidden path="act.taskDefKey"/>
+			<form:hidden path="act.procInsId"/>
+			<form:hidden path="act.procDefId"/>
+			<form:hidden id="flag" path="act.flag"/>
+			<sys:message content="${message}"/>
+			<input type="hidden" name="workStaffBasicInfo.id" value="${workField.workStaffBasicInfo.id}">
+			<div class="form-group layui-row first lw8">
+				<div class="form-group-label"><h2>基础信息</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">姓名:</label>
+					<div class="layui-input-block">
+						<form:input id="name" path="name" htmlEscape="false" readonly="true" class="form-control  layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">外勤申请编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<form:input id="num" path="num" htmlEscape="false"   readonly="true" class="form-control layui-input"/>
+							<span class="input-group-btn">
+								<label class="form-status"><c:choose><c:when test="${ empty workField.status}">新添</c:when><c:otherwise>${fns:getDictLabel(workField.status, 'audit_state','')}</c:otherwise>	</c:choose></label>
+							</span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">工号:</label>
+					<div class="layui-input-block">
+						<form:input  path="workStaffBasicInfo.no" htmlEscape="false" readonly="true" 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">
+						<form:input  path="workStaffBasicInfo.status" htmlEscape="false" readonly="true" 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">
+						<form:input  path="workStaffBasicInfo.office.name" htmlEscape="false" readonly="true" 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">
+						<form:input  path="workStaffBasicInfo.jobGrade.name" 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">
+						<input  type="text"  maxlength="20" class="laydate-icondate required form-control layer-date layui-input laydate-icon query-group"
+							   value="<fmt:formatDate value="${workField.startDate}" pattern="yyyy-MM-dd"/>"/>
+						</input>
+						<span class="group-sep">-</span>
+						<input value="${fns:getDictLabel(workField.startType, 'date_type', '')}" readonly="true" class="form-control  simple-select query-group">
+					</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="laydate-icondate required form-control layer-date layui-input laydate-icon query-group"
+							   value="<fmt:formatDate value="${workField.endDate}" pattern="yyyy-MM-dd"/>"/>
+						</input>
+						<span class="group-sep">-</span>
+						<input value="${fns:getDictLabel(workField.endType, 'date_type', '')}" readonly="true" class="form-control  simple-select query-group">
+					</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="days" 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">
+						<input type="text" maxlength="20" class="laydate-icondate required form-control layer-date layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workField.createDate}" pattern="yyyy-MM-dd"/>"/>
+						</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="reason" htmlEscape="false" rows="4" maxlength="255"  readonly="true" class="form-control required"/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>附件信息</h2></div>
+				<%--<div class="layui-item nav-btns">
+					<a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+				</div>--%>
+				<div id="addFile_attachment" style="display: none" class="upload-progress">
+					<span id="fileName_attachment" ></span>
+					<b><span id="baifenbi_attachment" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>
+				<input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+				<span id="attachment_title"></span>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+								<%-- <th>序号</th>--%>
+							<th>文件预览</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:forEach items="${workField.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 lw8">
+				<div class="form-group-label"><h2>审批意见</h2></div>
+				<div class="layui-item layui-col-sm12  with-textarea">
+					<label class="layui-form-label">审批意见:</label>
+					<div class="layui-input-block">
+						<form:textarea path="act.comment" class="form-control" rows="4" maxlength="127" />
+						<input type="file" name="upload_files" style="display: none;">
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>审批流程</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<act:flowChart procInsId="${workField.act.procInsId}"/>
+					<act:histoicFlow procInsId="${workField.act.procInsId}"/>
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 373 - 0
src/main/webapp/webpage/modules/workfield/workFieldForm.jsp

@@ -0,0 +1,373 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>外勤申请管理</title>
+	<meta name="decorator" content="default"/>
+	<style>
+		label.error{
+			top:40px;
+			left:0;
+		}
+		#reason-error{
+			top:80px;
+		}
+	</style>
+	<script type="text/javascript">
+        var validateForm;
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                if(obj == 2){
+                    $("#inputForm").attr("action","${ctx}/workfield/workField/store");
+                }else{
+                    $("#inputForm").attr("action","${ctx}/workfield/workField/save");
+                }
+                var endDate = $("#endDate").val().replace("-","").replace("-","");
+                //结束
+                var startDate =  $("#startDate").val().replace("-","").replace("-","");
+                var strtType = $("#startType").val();
+                var endType = $("#endType").val();
+                if(endDate != null && endDate != undefined && endDate != '' && startDate != null && startDate != undefined && startDate != '') {
+                    var days = endDate - startDate;
+                    console.log("------days----" + days);
+                    if (days < 0) {
+                        parent.layer.msg("结束日期必须在开始日期之后!!!", {icon: 5});
+                        return;
+                    }else if(days == 0){
+                        if("2" == strtType && "1" == endType){
+                            parent.layer.msg("结束日期必须在开始日期之后!!!", {icon: 5});
+                            return;
+                        }
+                    }
+                }
+                $("#inputForm").submit();
+                return true;
+            }else {
+                parent.layer.msg("信息未填写完整!", {icon: 5});
+            }
+            return false;
+        }
+        $(document).ready(function() {
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+
+            laydate.render({
+                elem: '#startDate',
+                event: 'focus',
+                type : 'date',
+                done: function(value){//日期时间被切换后的回调
+                    var endDate = $("#endDate").val();
+                    //console.log("------endDate----"+endDate);
+                    var strtType = $("#startType").val();
+                    var endType = $("#endType").val();
+                    if(endDate != null && endDate != undefined && endDate != '') {
+                        var s1 = new Date(value.replace(/-/g, "/"));
+                        var s2 = new Date(endDate.replace(/-/g, "/"));
+                        var days = s2.getTime() - s1.getTime();
+                        if(days < 0){
+                            parent.layer.msg("结束日期必须在开始日期之后!!!", {icon: 5});
+                            return;
+                        }else if(days == 0){
+                            if("1" == strtType && "2" == endType){
+                                $("#days").val(1);
+                            }else if("2" == strtType && "1" == endType){
+                                parent.layer.msg("结束日期必须在开始日期之后!!!", {icon: 5});
+                                return;
+                            }else{
+                                $("#days").val(0.5);
+                            }
+                        }else{
+                            var time = parseInt(days / (1000 * 60 * 60 * 24));
+                            //console.log("--------time-------"+time);
+                            if("1" == strtType && "1" == endType){
+                                $("#days").val( time+0.5);
+                            }else if("1" == strtType && "2" == endType){
+                                $("#days").val( time+1);
+                            }else if("2" == strtType && "2" == endType){
+                                $("#days").val( time+0.5);
+                            }else if("2" == strtType && "1" == endType){
+                                $("#days").val( time);
+                            }
+                        }
+                    }
+                }
+            });
+            laydate.render({
+                elem: '#endDate',
+                event: 'focus',
+                type : 'date',
+                done: function(value){//日期时间被切换后的回调
+                    var startDate = $("#startDate").val();
+                    //console.log("------startDate----"+startDate);
+                    var strtType = $("#startType").val();
+                    var endType = $("#endType").val();
+                    if(startDate != null && startDate != undefined && startDate != '') {
+                        var s1 = new Date(startDate.replace(/-/g, "/"));
+                        var s2 = new Date(value.replace(/-/g, "/"));
+                        var days = s2.getTime() - s1.getTime();
+                        if(days < 0){
+                            parent.layer.msg("结束日期必须在开始日期之后!!!", {icon: 5});
+                            return;
+                        }else if(days == 0){
+                            if("1" == strtType && "2" == endType){
+                                $("#days").val(1);
+                            }else if("2" == strtType && "1" == endType){
+                                parent.layer.msg("结束日期必须在开始日期之后!!!", {icon: 5});
+                                return;
+                            }else{
+                                $("#days").val(0.5);
+                            }
+                        }else{
+                            var time = parseInt(days / (1000 * 60 * 60 * 24));
+                            //console.log("--------time-------"+time);
+                            if("1" == strtType && "1" == endType){
+                                $("#days").val( time+0.5);
+                            }else if("1" == strtType && "2" == endType){
+                                $("#days").val( time+1);
+                            }else if("2" == strtType && "2" == endType){
+                                $("#days").val( time+0.5);
+                            }else if("2" == strtType && "1" == endType){
+                                $("#days").val( time);
+                            }
+                        }
+                    }
+                }
+            });
+        });
+
+
+        function insertTitle(tValue){
+            var list = "${workField.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 = "75";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workField/"+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 setT() {
+            var startDate = $("#startDate").val();
+            var endDate = $("#endDate").val();
+            //console.log("------startDate----"+startDate);
+            var strtType = $("#startType").val();
+            var endType = $("#endType").val();
+            if(startDate != null && startDate != undefined && startDate != '' && endDate != null && endDate != undefined && endDate != '' ){
+                var s1 = new Date(startDate.replace(/-/g, "/"));
+                var s2 = new Date(endDate.replace(/-/g, "/"));
+                var days = s2.getTime() - s1.getTime();
+                if(days < 0){
+                    parent.layer.msg("结束日期必须在开始日期之后!!!", {icon: 5});
+                    return;
+                }else if(days == 0){
+                    if("1" == strtType && "2" == endType){
+                        $("#days").val(1);
+                    }else if("2" == strtType && "1" == endType){
+                        parent.layer.msg("结束日期必须在开始日期之后!!!", {icon: 5});
+                        return;
+                    }else{
+                        $("#days").val(0.5);
+                    }
+                }else{
+                    var time = parseInt(days / (1000 * 60 * 60 * 24));
+                    //console.log("--------time-------"+time);
+                    if("1" == strtType && "1" == endType){
+                        $("#days").val( time+0.5);
+                    }else if("1" == strtType && "2" == endType){
+                        $("#days").val( time+1);
+                    }else if("2" == strtType && "2" == endType){
+                        $("#days").val( time+0.5);
+                    }else if("2" == strtType && "1" == endType){
+                        $("#days").val( time);
+                    }
+                }
+            }
+        }
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="workField" action="${ctx}/workfield/workField/save" method="post" class="form-horizontal">
+			<form:hidden path="id"/>
+			<input type="hidden" name="workStaffBasicInfo.id" value="${workField.workStaffBasicInfo.id}">
+			<div class="form-group layui-row first lw8">
+				<div class="form-group-label"><h2>基础信息</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">姓名:</label>
+					<div class="layui-input-block">
+						<form:input id="name" path="name" htmlEscape="false" readonly="true" class="form-control  layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">外勤申请编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<form:input id="num" path="num" htmlEscape="false"   readonly="true" class="form-control layui-input"/>
+							<span class="input-group-btn">
+								<label class="form-status"><c:choose><c:when test="${ empty workField.status}">新添</c:when><c:otherwise>${fns:getDictLabel(workField.status, 'audit_state','')}</c:otherwise>	</c:choose></label>
+							</span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">工号:</label>
+					<div class="layui-input-block">
+						<form:input  path="workStaffBasicInfo.no" htmlEscape="false" readonly="true" 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">
+						<form:input  path="workStaffBasicInfo.status" htmlEscape="false" readonly="true" 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">
+						<form:input  path="workStaffBasicInfo.office.name" htmlEscape="false" readonly="true" 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">
+						<form:input  path="workStaffBasicInfo.jobGrade.name" 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">
+						<input id="startDate" name="startDate" style="background-color: #ffffff;" readonly="true"  htmlEscape="false"  maxlength="20" class="laydate-icondate required form-control layer-date layui-input laydate-icon query-group"
+							   value="<fmt:formatDate value="${workField.startDate}" pattern="yyyy-MM-dd"/>"/>
+						</input>
+						<span class="group-sep">-</span>
+						<form:select path="startType" onchange="setT()" class="form-control  simple-select query-group">
+							<form:options items="${fns:getDictList('date_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="endDate" name="endDate" style="background-color: #ffffff;" readonly="true"  htmlEscape="false" maxlength="20" class="laydate-icondate required form-control layer-date layui-input laydate-icon query-group"
+							   value="<fmt:formatDate value="${workField.endDate}" pattern="yyyy-MM-dd"/>"/>
+						</input>
+						<span class="group-sep">-</span>
+						<form:select path="endType" onchange="setT()" class="form-control  simple-select query-group">
+							<form:options items="${fns:getDictList('date_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="days" 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">
+						<input id="createDate" name="createDate" type="text" maxlength="20" class="laydate-icondate required form-control layer-date layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workField.createDate}" pattern="yyyy-MM-dd"/>"/>
+						</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="reason" htmlEscape="false" rows="4" maxlength="255"   class="form-control required"/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>附件信息</h2></div>
+				<div class="layui-item nav-btns">
+					<a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+				</div>
+				<div id="addFile_attachment" style="display: none" class="upload-progress">
+					<span id="fileName_attachment" ></span>
+					<b><span id="baifenbi_attachment" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>
+				<input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+				<span id="attachment_title"></span>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+								<%-- <th>序号</th>--%>
+							<th>文件预览</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:forEach items="${workField.workAttachments}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td class="op-td">
+									<div class="op-btn-box" >
+										<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+										<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+										</c:if>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 326 - 0
src/main/webapp/webpage/modules/workfield/workFieldList.jsp

@@ -0,0 +1,326 @@
+<%@ 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(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: '#beginContractDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+
+
+            laydate.render({
+                elem: '#endContractDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+        });
+
+        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: false, //开启最大化最小化按钮
+                skin: 'three-btns',
+                content: url ,
+                btn: ['送审','暂存','关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        top.layer.close(index);//关闭对话框。
+//                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                    return false;
+                },
+                btn3: function(index){
+                }
+            });
+        }
+        function 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: false, //开启最大化最小化按钮
+                skin: 'two-btns',
+                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
+                    }
+
+                },
+                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="workField" action="${ctx}/workfield/workField/" 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 lw8">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">姓名:</label>
+							<div class="layui-input-block">
+								<form:input path="name" htmlEscape="false" 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="workStaffBasicInfo.no" 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" class="lw8" 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="${workContractRecord.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="${workContractRecord.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">
+								<form:input path="num" 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="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>
+				</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="workfield:workField:add">
+						<button class="nav-btn nav-btn-add" title="外勤申请" onclick="openDialogre('外勤申请','${ctx}/workfield/workField/form','95%','95%')"><i class="fa fa-plus"></i>&nbsp;添加</button>
+					</shiro:hasPermission>
+
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+					<div style="clear: both;"></div>
+				</div>
+				<table class="oa-table layui-table" id="contentTable"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable'
+            ,page: false
+            ,cols: [[
+                // {checkbox: true, fixed: true},
+                {field:'index',align:'center', title: '序号',width:40}
+                ,{field:'num',align:'center',title: '外勤编号',minWidth:160,templet:function(d){
+                    var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看外勤申请', '${ctx}/workfield/workField/form?id=" + d.id + "&tabId=1','95%','95%')\">" +
+                        "<span title=" + d.num + ">" + d.num + "</span></a>";
+                    return xml;
+                }}
+                ,{field:'no',align:'center', title: '工号',minWidth:160,templet:function(d){
+                    return "<span title='"+ d.no +"'>" + d.no + "</span>";
+                }}
+                ,{field:'name',align:'center', title: '姓名',minWidth:160,templet:function(d){
+                    return "<span title='"+ d.name +"'>" + d.name + "</span>";
+                }}
+                ,{field:'officeName',align:'center', title: '部门',minWidth:160,templet:function(d){
+                    return "<span title='"+ d.officeName +"'>" + d.officeName + "</span>";
+                }}
+                ,{field:'jg', align:'center',title: '职级',minWidth:160,templet:function(d){
+                    return "<span title='"+ d.jg +"'>" + d.jg + "</span>";
+                }}
+                ,{field:'days', align:'center',title: '外勤天数',minWidth:160,templet:function(d){
+                    return "<span title='"+ d.days +"'>" + d.days + "</span>";
+                }}
+                ,{field:'createDate',align:'center', sort:true,title: '申请日期',minWidth:160}
+                ,{field:'status',align:'center', title: '状态',minWidth:160,templet:function(d){
+                    <%--var st = getAuditState(d.status);--%>
+                    <%--var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/workcontractrecord/workContractRecord/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}/workfield/workField/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:"操作",minWidth:160,templet:function(d){
+                    ////对操作进行初始化
+                    var xml = "";
+                    if(d.cancancel != undefined && d.cancancel == "1")
+                        xml += "<a href=\"${ctx}/workfield/workField/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}/workfield/workField/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}/workfield/workField/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}/workfield/workField/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}/workfield/workField/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="workField" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${workField.id}"
+                    ,"num":"${workField.num}"
+                    ,"name":"${workField.name}"
+                    ,"no":"${workField.workStaffBasicInfo.no}"
+                    ,"officeName":"${workField.workStaffBasicInfo.office.name}"
+                    ,"jg":"${workField.workStaffBasicInfo.jobGrade.name}"
+                    ,"days":"${workField.days}"
+                    ,"createDate":"<fmt:formatDate value="${workField.createDate}" pattern="yyyy-MM-dd"/>"
+                    ,"status":"${workField.status}"
+                    <c:if test="${fns:getUser().id == workField.createBy.id}">
+                    <c:if test="${workField.status == '2' }">,"cancancel":"1"</c:if>
+                    <shiro:hasPermission name="workfield:workField:edit"><c:choose>
+                    <c:when test="${workField.status == '1' }">,"canedit1":"1"</c:when>
+                    <c:when test="${workField.status == '4'}">,"canedit2":"1"</c:when>
+                    <c:when test="${workField.status == '3'}">,"canedit3":"1"</c:when>
+                    </c:choose></shiro:hasPermission>
+                    <shiro:hasPermission name="workfield:workField:del"><c:choose>
+                    <c:when test="${(workField.status == '1' or workField.status == '3' or workField.status == '4')}">,"candelete":"1"</c:when>
+                    </c:choose></shiro:hasPermission>
+                    </c:if>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+            // ,even: true
+            // ,height: 315
+        });
+
+    })
+
+    resizeListTable();
+</script>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 369 - 0
src/main/webapp/webpage/modules/workfield/workFieldModify.jsp

@@ -0,0 +1,369 @@
+<%@ 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 == 2){
+                    $("#flag").val("no");
+                }else{
+                    $("#flag").val("yes");
+                }
+                var endDate = $("#endDate").val().replace("-","").replace("-","");
+                //结束
+                var startDate =  $("#startDate").val().replace("-","").replace("-","");
+                var strtType = $("#startType").val();
+                var endType = $("#endType").val();
+                if(endDate != null && endDate != undefined && endDate != '' && startDate != null && startDate != undefined && startDate != '') {
+                    var days = endDate - startDate;
+                    console.log("------days----" + days);
+                    if (days < 0) {
+                        parent.layer.msg("结束日期必须在开始日期之后!!!", {icon: 5});
+                        return;
+                    }else if(days == 0){
+                        if("2" == strtType && "1" == endType){
+                            parent.layer.msg("结束日期必须在开始日期之后!!!", {icon: 5});
+                            return;
+                        }
+                    }
+                }
+                $("#inputForm").submit();
+                return true;
+            }else {
+                parent.layer.msg("信息未填写完整!", {icon: 5});
+            }
+            return false;
+        }
+        $(document).ready(function() {
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+
+            laydate.render({
+                elem: '#startDate',
+                event: 'focus',
+                type : 'date',
+                done: function(value){//日期时间被切换后的回调
+                    var endDate = $("#endDate").val();
+                    //console.log("------endDate----"+endDate);
+                    var strtType = $("#startType").val();
+                    var endType = $("#endType").val();
+                    if(endDate != null && endDate != undefined && endDate != '') {
+                        var s1 = new Date(value.replace(/-/g, "/"));
+                        var s2 = new Date(endDate.replace(/-/g, "/"));
+                        var days = s2.getTime() - s1.getTime();
+                        if(days < 0){
+                            parent.layer.msg("结束日期必须在开始日期之后!!!", {icon: 5});
+                            return;
+                        }else if(days == 0){
+                            if("1" == strtType && "2" == endType){
+                                $("#days").val(1);
+                            }else if("2" == strtType && "1" == endType){
+                                parent.layer.msg("结束日期必须在开始日期之后!!!", {icon: 5});
+                                return;
+                            }else{
+                                $("#days").val(0.5);
+                            }
+                        }else{
+                            var time = parseInt(days / (1000 * 60 * 60 * 24));
+                            //console.log("--------time-------"+time);
+                            if("1" == strtType && "1" == endType){
+                                $("#days").val( time+0.5);
+                            }else if("1" == strtType && "2" == endType){
+                                $("#days").val( time+1);
+                            }else if("2" == strtType && "2" == endType){
+                                $("#days").val( time+0.5);
+                            }else if("2" == strtType && "1" == endType){
+                                $("#days").val( time);
+                            }
+                        }
+                    }
+                }
+            });
+            laydate.render({
+                elem: '#endDate',
+                event: 'focus',
+                type : 'date',
+                done: function(value){//日期时间被切换后的回调
+                    var startDate = $("#startDate").val();
+                    //console.log("------startDate----"+startDate);
+                    var strtType = $("#startType").val();
+                    var endType = $("#endType").val();
+                    if(startDate != null && startDate != undefined && startDate != '') {
+                        var s1 = new Date(startDate.replace(/-/g, "/"));
+                        var s2 = new Date(value.replace(/-/g, "/"));
+                        var days = s2.getTime() - s1.getTime();
+                        if(days < 0){
+                            parent.layer.msg("结束日期必须在开始日期之后!!!", {icon: 5});
+                            return;
+                        }else if(days == 0){
+                            if("1" == strtType && "2" == endType){
+                                $("#days").val(1);
+                            }else if("2" == strtType && "1" == endType){
+                                parent.layer.msg("结束日期必须在开始日期之后!!!", {icon: 5});
+                                return;
+                            }else{
+                                $("#days").val(0.5);
+                            }
+                        }else{
+                            var time = parseInt(days / (1000 * 60 * 60 * 24));
+                            //console.log("--------time-------"+time);
+                            if("1" == strtType && "1" == endType){
+                                $("#days").val( time+0.5);
+                            }else if("1" == strtType && "2" == endType){
+                                $("#days").val( time+1);
+                            }else if("2" == strtType && "2" == endType){
+                                $("#days").val( time+0.5);
+                            }else if("2" == strtType && "1" == endType){
+                                $("#days").val( time);
+                            }
+                        }
+                    }
+                }
+            });
+        });
+        function insertTitle(tValue){
+            var list = "${workField.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 = "75";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workField/"+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 setT() {
+            var startDate = $("#startDate").val();
+            var endDate = $("#endDate").val();
+            //console.log("------startDate----"+startDate);
+            var strtType = $("#startType").val();
+            var endType = $("#endType").val();
+            if(startDate != null && startDate != undefined && startDate != '' && endDate != null && endDate != undefined && endDate != '' ){
+                var s1 = new Date(startDate.replace(/-/g, "/"));
+                var s2 = new Date(endDate.replace(/-/g, "/"));
+                var days = s2.getTime() - s1.getTime();
+                if(days < 0){
+                    parent.layer.msg("结束日期必须在开始日期之后!!!", {icon: 5});
+                    return;
+                }else if(days == 0){
+                    if("1" == strtType && "2" == endType){
+                        $("#days").val(1);
+                    }else if("2" == strtType && "1" == endType){
+                        parent.layer.msg("结束日期必须在开始日期之后!!!", {icon: 5});
+                        return;
+                    }else{
+                        $("#days").val(0.5);
+                    }
+                }else{
+                    var time = parseInt(days / (1000 * 60 * 60 * 24));
+                    //console.log("--------time-------"+time);
+                    if("1" == strtType && "1" == endType){
+                        $("#days").val( time+0.5);
+                    }else if("1" == strtType && "2" == endType){
+                        $("#days").val( time+1);
+                    }else if("2" == strtType && "2" == endType){
+                        $("#days").val( time+0.5);
+                    }else if("2" == strtType && "1" == endType){
+                        $("#days").val( time);
+                    }
+                }
+            }
+        }
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="workField" action="${ctx}/workfield/workField/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"/>
+			<input type="hidden" name="workStaffBasicInfo.id" value="${workField.workStaffBasicInfo.id}">
+			<div class="form-group layui-row first lw8">
+				<div class="form-group-label"><h2>基础信息</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">姓名:</label>
+					<div class="layui-input-block">
+						<form:input id="name" path="name" htmlEscape="false" readonly="true" class="form-control  layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">外勤申请编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<form:input id="num" path="num" htmlEscape="false"   readonly="true" class="form-control layui-input"/>
+							<span class="input-group-btn">
+								<label class="form-status"><c:choose><c:when test="${ empty workField.status}">新添</c:when><c:otherwise>${fns:getDictLabel(workField.status, 'audit_state','')}</c:otherwise>	</c:choose></label>
+							</span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">工号:</label>
+					<div class="layui-input-block">
+						<form:input  path="workStaffBasicInfo.no" htmlEscape="false" readonly="true" 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">
+						<form:input  path="workStaffBasicInfo.status" htmlEscape="false" readonly="true" 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">
+						<form:input  path="workStaffBasicInfo.office.name" htmlEscape="false" readonly="true" 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">
+						<form:input  path="workStaffBasicInfo.jobGrade.name" 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">
+						<input id="startDate" name="startDate" style="background-color: #ffffff;" readonly="true"  htmlEscape="false"  maxlength="20" class="laydate-icondate required form-control layer-date layui-input laydate-icon query-group"
+							   value="<fmt:formatDate value="${workField.startDate}" pattern="yyyy-MM-dd"/>"/>
+						</input>
+						<span class="group-sep">-</span>
+						<form:select path="startType" onchange="setT()" class="form-control  simple-select query-group">
+							<form:options items="${fns:getDictList('date_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="endDate" name="endDate" style="background-color: #ffffff;" readonly="true"  htmlEscape="false" maxlength="20" class="laydate-icondate required form-control layer-date layui-input laydate-icon query-group"
+							   value="<fmt:formatDate value="${workField.endDate}" pattern="yyyy-MM-dd"/>"/>
+						</input>
+						<span class="group-sep">-</span>
+						<form:select path="endType" onchange="setT()" class="form-control simple-select query-group">
+							<form:options items="${fns:getDictList('date_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="days" 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">
+						<input id="createDate" name="createDate" type="text" maxlength="20" class="laydate-icondate required form-control layer-date layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workField.createDate}" pattern="yyyy-MM-dd"/>"/>
+						</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="reason" htmlEscape="false" rows="4" maxlength="255"   class="form-control required"/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>附件信息</h2></div>
+				<div class="layui-item nav-btns">
+					<a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+				</div>
+				<div id="addFile_attachment" style="display: none" class="upload-progress">
+					<span id="fileName_attachment" ></span>
+					<b><span id="baifenbi_attachment" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>
+				<input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+				<span id="attachment_title"></span>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+								<%-- <th>序号</th>--%>
+							<th>文件预览</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:forEach items="${workField.workAttachments}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td class="op-td">
+									<div class="op-btn-box" >
+										<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+										<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+										</c:if>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 232 - 0
src/main/webapp/webpage/modules/workfield/workFieldView.jsp

@@ -0,0 +1,232 @@
+<%@ 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 == 2){
+                    $("#inputForm").attr("action","${ctx}/workfield/workField/store");
+                }else{
+                    $("#inputForm").attr("action","${ctx}/workfield/workField/save");
+                }
+                $("#inputForm").submit();
+                return true;
+            }else {
+                parent.layer.msg("信息未填写完整!", {icon: 5});
+            }
+            return false;
+        }
+        $(document).ready(function() {
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+
+            laydate.render({
+                elem: '#startDate',
+                event: 'focus',
+                type : 'date'
+            });
+            laydate.render({
+                elem: '#endDate',
+                event: 'focus',
+                type : 'date'
+            });
+        });
+        function insertTitle(tValue){
+            var list = "${workField.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 = "73";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workField/"+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);}
+        }
+
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container view-form">
+		<form:form id="inputForm" modelAttribute="workField" action="${ctx}/workfield/workField/save" method="post" class="form-horizontal">
+			<form:hidden path="id"/>
+			<input type="hidden" name="workStaffBasicInfo.id" value="${workField.workStaffBasicInfo.id}">
+			<div class="form-group layui-row first lw8">
+				<div class="form-group-label"><h2>基础信息</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">姓名:</label>
+					<div class="layui-input-block">
+						<form:input id="name" path="name" htmlEscape="false" readonly="true" class="form-control  layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">外勤申请编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<form:input id="num" path="num" htmlEscape="false"   readonly="true" class="form-control layui-input"/>
+							<span class="input-group-btn">
+								<label class="form-status"><c:choose><c:when test="${ empty workField.status}">新添</c:when><c:otherwise>${fns:getDictLabel(workField.status, 'audit_state','')}</c:otherwise>	</c:choose></label>
+							</span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">工号:</label>
+					<div class="layui-input-block">
+						<form:input  path="workStaffBasicInfo.no" htmlEscape="false" readonly="true" 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">
+						<form:input  path="workStaffBasicInfo.status" htmlEscape="false" readonly="true" 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">
+						<form:input  path="workStaffBasicInfo.office.name" htmlEscape="false" readonly="true" 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">
+						<form:input  path="workStaffBasicInfo.jobGrade.name" 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">
+						<input  type="text"  maxlength="20" class="laydate-icondate required form-control layer-date layui-input laydate-icon query-group"
+							   value="<fmt:formatDate value="${workField.startDate}" pattern="yyyy-MM-dd"/>"/>
+						</input>
+						<span class="group-sep">-</span>
+						<input value="${fns:getDictLabel(workField.startType, 'date_type', '')}" readonly="true" class="form-control  simple-select query-group">
+					</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="laydate-icondate required form-control layer-date layui-input laydate-icon query-group"
+							   value="<fmt:formatDate value="${workField.endDate}" pattern="yyyy-MM-dd"/>"/>
+						</input>
+						<span class="group-sep">-</span>
+						<input value="${fns:getDictLabel(workField.endType, 'date_type', '')}" readonly="true" class="form-control  simple-select query-group">
+					</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="days" 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">
+						<input type="text" maxlength="20" class="laydate-icondate required form-control layer-date layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workField.createDate}" pattern="yyyy-MM-dd"/>"/>
+						</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="reason" htmlEscape="false" rows="4" maxlength="255"  readonly="true" class="form-control required"/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>附件信息</h2></div>
+				<%--<div class="layui-item nav-btns">
+					<a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+				</div>--%>
+				<div id="addFile_attachment" style="display: none" class="upload-progress">
+					<span id="fileName_attachment" ></span>
+					<b><span id="baifenbi_attachment" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>
+				<input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+				<span id="attachment_title"></span>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="upTable" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+								<%-- <th>序号</th>--%>
+							<th>文件预览</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:forEach items="${workField.workAttachments}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td class="op-td">
+									<div class="op-btn-box" >
+										<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+										<%--<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+										</c:if>--%>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

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

+ 180 - 0
src/main/webapp/webpage/modules/workfullconstructsheet/workFullConstructsheetAudit.jsp

@@ -0,0 +1,180 @@
+<%@ 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;
+		$('#btnPresent').click(function () {
+			$.ajax({
+	             url:"${ctx}/workfullconstructsheet/workFullConstructsheet/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="hideScroll">
+		<form:form id="inputForm" modelAttribute="workFullConstructsheet"  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="${requestScope.message}"/>
+		<c:set var="status" value="${workFullConstructsheet.act.status}" />
+			<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+				<tbody>
+					<tr>
+						<td class="width-15 active" rowspan="9"><label class="pull-right">台账信息:</label></td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">施工单位:</label></td>
+						<td class="width-40" colspan="3">
+								${workFullManage.constructId.unitName}
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">联系单主题:</label></td>
+						<td class="width-40" colspan="3">
+								${workFullConstructsheet.constructsheetTopic}
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">项目编号:</label></td>
+						<td class="width-30">
+								${workFullConstructsheet.projectNumber}
+						</td>
+						<td class="width-15 active"><label class="pull-right">联系单编号:</label></td>
+						<td class="width-30">
+								${workFullConstructsheet.constructsheetNumber}
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">施工标段:</label></td>
+						<td class="width-30">
+								${workFullConstructsheet.constructSection}
+						</td>
+						<td class="width-15 active"><label class="pull-right">是否产生费用增减:</label></td>
+						<td class="width-30">
+								${fns:getDictLabel(workFullConstructsheet.costIncreaseDecrease,'cost_increase_decrease' ,'' )}
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">业主处理意见:</label></td>
+						<td class="width-40" colspan="3">
+								${workFullConstructsheet.proprietorComment}
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">变更原因及主要内容:</label></td>
+						<td class="width-40" colspan="3">
+								${workFullConstructsheet.changeContext}
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+						<td class="width-40" colspan="3">
+								${workFullConstructsheet.remarks}
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">文件上传:</label></td>
+						<td class="width-40" colspan="3">
+							<div>
+								<div style="float:left; height: 100%; width: 100%; ">
+									<table id="listManuscriptFile"  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:if test="${not empty workFullConstructsheet.workAttachments}">
+											<c:forEach items="${workFullConstructsheet.workAttachments}" var="attachment" varStatus="varStatus">
+												<tr>
+													<%--<td>${varStatus.index+1}</td>--%>
+														<%--<td>${workFullConstructsheet.workattachment.attachmentName}</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="${workFullConstructsheet.workattachment.url}"><span title="${workFullConstructsheet.workattachment.attachmentName}">${fns:abbr(workFullConstructsheet.workattachment.attachmentName, 20)}</span></a></td>--%>
+																	<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="openDialogViewPre('预览','${ctx}/previewController/previewUrl?fileUrl=${workFullConstructsheet.workattachment.url}','80%','80%')"><span title="${workFullConstructsheet.workattachment.attachmentName}">${fns:abbr(workFullConstructsheet.workattachment.attachmentName, 20)}</span></a></td>--%>
+																	<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 HH:mm:ss"/></td>
+													<td>
+														<a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>
+													</td>
+												</tr>
+											</c:forEach>
+										</c:if>
+									</table>
+								</div>
+							</div>
+						</td>
+					</tr>
+					<c:if test="${not empty status}">
+						<tr>
+							<td class="width-15 active" rowspan="2"><label class="pull-right">审批意见:</label></td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">意见:</label></td>
+							<td class="width-30" colspan="3">
+								<form:textarea path="act.comment" class="form-control" rows="3" maxlength="20"/>
+							</td>
+						</tr>
+					</c:if>
+
+				</tbody>
+			</table>
+
+		<act:flowChart procInsId="${workFullConstructsheet.act.procInsId}"/>
+		<act:histoicFlow procInsId="${workFullConstructsheet.act.procInsId}"/>
+	</form:form>
+</body>
+</html>

+ 118 - 0
src/main/webapp/webpage/modules/workfullconstructsheet/workFullConstructsheetAuditHistory.jsp

@@ -0,0 +1,118 @@
+<%@ 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" style="height: 70px;">
+			<h5>
+				<ul class="nav nav-tabs">
+					<li><a href="${ctx}/workfullconstructsheet/workFullConstructsheet/workfullmanageList">项目列表</a></li>
+					<li><a href="${ctx}/workfullconstructsheet/workFullConstructsheet/auditTodo">待审核列表</a></li>
+					<li class="active"><a href="${ctx}/workfullconstructsheet/workFullConstructsheet/auditHistory">已审核列表</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="${requestScope.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;width: 10%;">流程发起人</th>
+					<th style="text-align: center;width: 10%;">流程名称</th>
+					<th style="text-align: center;width: 10%;">流程版本</th>
+					<th style="text-align: center;width: 20%;">联系单主题</th>
+					<th style="text-align: center;width: 10%;">施工标段</th>
+					<th style="text-align: center;width: 25%;">所属项目</th>
+					<th style="text-align: center;width: 15%;">流程发起时间</th>
+				</tr>
+				</thead>
+				<tbody>
+				<c:forEach items="${list}" var="workFullConstructsheet">
+					<c:set var="task" value="${workFullConstructsheet.act.task}" />
+					<c:set var="vars" value="${workFullConstructsheet.act.vars}" />
+					<c:set var="procDef" value="${workFullConstructsheet.act.procDef}" />
+					<c:set var="status" value="${workFullConstructsheet.act.status}" />
+					<tr>
+						<td>${workFullConstructsheet.act.vars.map.applyUserId}</td>
+						<td>${procDef.name}</td>
+						<td><b title='流程版本号'>V: ${procDef.version}</b></td>
+						<td>
+							<shiro:hasPermission name="workfullconstructsheet:workFullConstructsheet:view">
+								<a href="javascript:void(0)" onclick="openDialogView('查看施工联系单', '${ctx}/workfullconstructsheet/workFullConstructsheet/form?id=${workFullConstructsheet.id}&dialog=view','80%','80%')">
+									<span title="${workFullConstructsheet.constructsheetTopic}">${fns:abbr(workFullConstructsheet.constructsheetTopic, 40)}</span>
+								</a>
+							</shiro:hasPermission>
+						</td>
+						<td>${workFullConstructsheet.constructSection}</td>
+						<td>
+							<a  href="javascript:void(0)" onclick="openDialogView('查看项目', '${ctx}/workfullmanage/workFullManage/form?id=${workFullConstructsheet.workFullManage.id}&tabId=0','80%','80%')">
+								<span title="${workFullConstructsheet.workFullManage.fullProjectName}">${fns:abbr(workFullConstructsheet.workFullManage.fullProjectName, 40)}</span>
+							</a>
+						</td>
+						<td><fmt:formatDate value="${workFullConstructsheet.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>

+ 233 - 0
src/main/webapp/webpage/modules/workfullconstructsheet/workFullConstructsheetAuditTodo.jsp

@@ -0,0 +1,233 @@
+<%@ 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}/workfullconstructsheet/workFullConstructsheet/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}/workfullconstructsheet/workFullConstructsheet/auditTodo/';
+                }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中展示
+					var formId = inputForm.attr("id");
+					if(formId){
+					    var $document = iframeWin.contentWindow.document;
+					    $document.getElementById("flag").setAttribute("value","yes");
+					    $document.getElementById(formId).setAttribute("action","${ctx}/workfullconstructsheet/workFullConstructsheet/saveAudit");
+					    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("flag").setAttribute("value","no");
+                        $document.getElementById(formId).setAttribute("action","${ctx}/workfullconstructsheet/workFullConstructsheet/saveAudit");
+                        formSubmit($document,formId,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: false,opacity:0.1});
+                $($document.getElementById(inputForm)).ajaxSubmit({
+                    success:function(data) {
+                        top.layer.close(index);
+                        history.go(0);
+                        parent.layer.msg("审批完成!!!",{icon:6});
+                        parent.layer.close(loadingMessage);
+                    }
+                });
+            }
+        }
+	</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}/workfullconstructsheet/workFullConstructsheet/workfullmanageList">项目列表</a></li>
+					<li class="active"><a href="${ctx}/workfullconstructsheet/workFullConstructsheet/auditTodo">待审核列表</a></li>
+					<li><a href="${ctx}/workfullconstructsheet/workFullConstructsheet/auditHistory">已审核列表</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="${requestScope.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;width:10%">流程发起人</th>
+					<th style="text-align: center;width:10%">当前环节</th>
+					<th style="text-align: center;width:8%">流程名称</th>
+					<th style="text-align: center;width:8%">流程版本</th>
+					<th style="text-align: center;width:20%">项目名称</th>
+					<th style="text-align: center;width:15%">联系单主题</th>
+					<th style="text-align: center;width:8%">施工标段</th>
+					<th style="text-align: center;width:13%">流程发起时间</th>
+					<th style="text-align: center;width:8%">操作</th>
+				</tr>
+				</thead>
+				<tbody>
+				<c:forEach items="${list}" var="workFullConstructsheet">
+					<c:set var="task" value="${workFullConstructsheet.act.task}" />
+					<c:set var="vars" value="${workFullConstructsheet.act.vars}" />
+					<c:set var="procDef" value="${workFullConstructsheet.act.procDef}" />
+					<c:set var="status" value="${workFullConstructsheet.act.status}" />
+					<tr>
+						<td>${workFullConstructsheet.act.vars.map.applyUserId}</td>
+						<td>
+							${task.name}
+						</td>
+						<td>${procDef.name}</td>
+						<td><b title='流程版本号'>V: ${procDef.version}</b></td>
+						<td>
+							<a  href="javascript:void(0)" onclick="openDialogView('查看项目', '${ctx}/workfullmanage/workFullManage/form?id=${workFullConstructsheet.workFullManage.id}&tabId=0','80%','80%')">
+								<span title="${workFullConstructsheet.workFullManage.fullProjectName}">${fns:abbr(workFullConstructsheet.workFullManage.fullProjectName, 30)}</span>
+							</a>
+						</td>
+						<td><span title="${workFullConstructsheet.constructsheetTopic}">${fns:abbr(workFullConstructsheet.constructsheetTopic, 30)}</span></td>
+						<td>${workFullConstructsheet.constructSection}</td>
+						<td><fmt:formatDate value="${workFullConstructsheet.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
+						<td>
+							<div style="text-align: center">
+							<a href="javascript:void(0)" onclick="openDialogre('施工联系单审核流程', '${ctx}/workfullconstructsheet/workFullConstructsheet/applyOnWorkFullConstructsheet?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>

+ 294 - 0
src/main/webapp/webpage/modules/workfullconstructsheet/workFullConstructsheetForm.jsp

@@ -0,0 +1,294 @@
+<%@ 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);
+					}
+				}
+			});
+		});
+
+        $(function () {
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+        })
+        function attachment_insertTitle(tValue){
+            var list = "${workFullConstructsheet.workAttachments}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = $("#id").val();
+            var attachmentFlag = "47";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workFullConstructsheet/"+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 delFile(id,attaId,attachmentUrl,obj) {
+            var loadingMessage = parent.layer.load(0, {shade: [0.1,'#393d49']});
+            var tr = $(obj).parent().parent();
+            $.ajax({
+                type:'POST',
+                dataType:'json',
+                url:'${ctx}/workfullconstructsheet/workFullConstructsheet/delFile',
+                data:{"id":id,"attaId":attaId,"attachmentUrl":attachmentUrl},
+                cache:false,
+                success: function() {
+                    tr.remove();
+                    parent.layer.msg("删除成功!!!",{icon:6});
+                    parent.layer.close(loadingMessage);
+                },
+                error:function () {
+                    parent.layer.msg("删除失败!!!",{icon:3});
+                    parent.layer.close(loadingMessage);
+                }
+            });
+        }
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workFullConstructsheet" enctype="multipart/form-data" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<form:hidden path="workFullManageId"/>
+		<input type="hidden" name="listpage" value="${listpage}"/>
+		<sys:message content="${requestScope.message}"/>
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+		   		<tr>
+					<td class="width-15 active" rowspan="9"><label class="pull-right">台账信息:</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">施工单位:</label></td>
+					<td class="width-40" colspan="3">
+						${workFullManage.constructId.unitName}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>联系单主题:</label></td>
+					<td class="width-40" colspan="3">
+						<form:input path="constructsheetTopic" 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-30">
+						<form:input path="projectNumber" htmlEscape="false"    class="form-control required"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>联系单编号:</label></td>
+					<td class="width-30">
+						<form:input path="constructsheetNumber" 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-30">
+						<form:input path="constructSection" htmlEscape="false"    class="form-control required"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">是否产生费用增减:</label></td>
+					<td class="width-30">
+						<form:radiobuttons path="costIncreaseDecrease" items="${fns:getDictList('cost_increase_decrease')}" itemLabel="label" itemValue="value" htmlEscape="false" class="i-checks "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">业主处理意见:</label></td>
+					<td class="width-40" colspan="3">
+						<form:textarea path="proprietorComment" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">变更原因及主要内容:</label></td>
+					<td class="width-40" colspan="3">
+						<form:textarea path="changeContext" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-40" colspan="3">
+						<form:textarea path="remarks" htmlEscape="false"     class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">文件上传:</label></td>
+					<td class="width-40" colspan="3">
+						<div>
+							<div style="float:left; height: 100%; width: 100%; ">
+								<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" style="display: none;" multiple="multiple" onChange="if(this.value)attachment_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="listManuscriptFile"  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:if test="${not empty workFullConstructsheet.workAttachments}">
+											<c:forEach items="${workFullConstructsheet.workAttachments}" var="attachment" varStatus="varStatus">
+												<tr>
+												<%--	<td>${varStatus.index+1}</td>--%>
+													<%--<td><span title="${attachment.attachmentName}">${fns:abbr(attachment.attachmentName, 30)}</span></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="${workFullConstructsheet.workattachment.url}"><span title="${workFullConstructsheet.workattachment.attachmentName}">${fns:abbr(workFullConstructsheet.workattachment.attachmentName, 20)}</span></a></td>--%>
+																	<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="openDialogViewPre('预览','${ctx}/previewController/previewUrl?fileUrl=${workFullConstructsheet.workattachment.url}','80%','80%')"><span title="${workFullConstructsheet.workattachment.attachmentName}">${fns:abbr(workFullConstructsheet.workattachment.attachmentName, 20)}</span></a></td>--%>
+																	<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 HH:mm:ss"/></td>
+													<td>
+														<a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>
+														<a class="btn btn-danger btn-xs" href="javascript:void(0)" onclick="delFile('${workFullConstructsheet.id}','${attachment.id}','${attachment.url}',this)">删除</a>
+													<%--<shiro:hasPermission name="workfullconstructsheet:workFullConstructsheet:delFile">--%>
+															<%--<a href="${ctx}/workfullconstructsheet/workFullConstructsheet/delFile?id=${workFullConstructsheet.id}&attachmentFlag=47" onclick="return confirmx('确认要删除该附件吗?', this.href)">删除</a>--%>
+														<%--</shiro:hasPermission>--%>
+													</td>
+												</tr>
+											</c:forEach>
+										</c:if>
+									</tbody>
+								</table>
+							</div>
+						</div>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active" rowspan="5"><label class="pull-right">项目信息:</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目编号:</label></td>
+					<td class="width-30">
+							${workFullManage.fullProjectNumber}
+					</td>
+					<td class="width-15 active"><label class="pull-right">项目来源:</label></td>
+					<td class="width-30">
+						<input value="${fns:getDictLabel(workFullManage.fullProjectSource, 'full_project_source', '')}" htmlEscape="false" readonly="readonly"   class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+					<td class="width-30" colspan="3">
+							${workFullManage.fullProjectName}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">行业分类:</label></td>
+					<td class="width-30">
+							${fns:getDictLabel(workFullManage.fullIndustryType, 'full_industry_type', '')}
+					</td>
+					<td class="width-15 active"><label class="pull-right">结构类型:</label></td>
+					<td class="width-30">
+							${fns:getDictLabel(workFullManage.fullStructureType, 'full_structure_type', '')}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">投资额(元):</label></td>
+					<td class="width-40">
+							${workFullManage.fullInvestMoney}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active" rowspan="5"><label class="pull-right">客户单位:</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">业主单位:</label></td>
+					<td class="width-40" colspan="3">
+							${workFullManage.workClientInfo.name}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">客户信用等级:</label></td>
+					<td class="width-30">
+							${workFullManage.workClientInfo.creditRank}
+					</td>
+					<td class="width-15 active"><label class="pull-right">业主联系人:</label></td>
+					<td class="width-30">
+							${workFullManage.workClientInfo.workClientLinkman.name}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">职务:</label></td>
+					<td class="width-30">
+							${workFullManage.workClientInfo.workClientLinkman.position}
+					</td>
+					<td class="width-15 active"><label class="pull-right">联系方式:</label></td>
+					<td class="width-30">
+							${workFullManage.workClientInfo.workClientLinkman.linkPhone}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">QQ:</label></td>
+					<td class="width-30">
+							${workFullManage.workClientInfo.workClientLinkman.qq}
+					</td>
+					<td class="width-15 active"><label class="pull-right">Email:</label></td>
+					<td class="width-30">
+							${workFullManage.workClientInfo.workClientLinkman.email}
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 361 - 0
src/main/webapp/webpage/modules/workfullconstructsheet/workFullConstructsheetList.jsp

@@ -0,0 +1,361 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>施工联系单管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+
+        function openDialogre(title,url,width,height,target) {
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url,
+                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}/workfullconstructsheet/workFullConstructsheet/save?submit=submit");
+                        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}/workfullconstructsheet/workFullConstructsheet/save?submit=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}/workfullconstructsheet/workFullConstructsheet/save?submit=reapply");
+                        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}/workfullconstructsheet/workFullConstructsheet/save?submit=repeal");
+                        formSubmit($document,formId,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><a href="${ctx}/workfullconstructsheet/workFullConstructsheet/auditTodo?workFullManageId=${workFullConstructsheet.workFullManageId}">待审核列表</a></li>--%>
+				<%--<li><a href="${ctx}/workfullconstructsheet/workFullConstructsheet/auditHistory?workFullManageId=${workFullConstructsheet.workFullManageId}">已审核列表</a></li>--%>
+				<%--<li class="active"><a href="${ctx}/workfullconstructsheet/workFullConstructsheet/list?workFullManageId=${workFullConstructsheet.workFullManageId}">施工联系单列表</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="workFullConstructsheet" action="${ctx}/workfullconstructsheet/workFullConstructsheet/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}"/>
+		<input type="hidden" name="workFullManageId" value="${requestScope.workFullManageId}"/>
+		<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+		<div class="form-group">
+			<span>施工联系单编号:</span>
+			<form:input path="constructsheetNumber" htmlEscape="false" maxlength="255"  class=" form-control input-sm"/>
+			<span>施工联系单主题:</span>
+			<form:input path="constructsheetTopic" 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">
+			<c:if test="${workFullManage.fullProjectStatus le 3 and workFullManage.fullProjectStatus ge 1}">
+				<shiro:hasPermission name="workfullconstructsheet:workFullConstructsheet:add">
+					<button onclick="openDialogre('添加施工联系单', '${ctx}/workfullconstructsheet/workFullConstructsheet/form?workFullManageId=${workFullManageId}&dialig=add','80%','80%')"
+							class="btn btn-white btn-sm" title="添加"><i class="fa fa-plus">添加</i></button>
+				</shiro:hasPermission>
+			</c:if>
+			<shiro:hasPermission name="workfullconstructsheet:workFullConstructsheet:import">
+				<table:importExcel url="${ctx}/workfullconstructsheet/workFullConstructsheet/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workfullconstructsheet:workFullConstructsheet:export">
+	       		<table:exportExcel url="${ctx}/workfullconstructsheet/workFullConstructsheet/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: 10%"  class="sort-column projectNumber">项目编号</th>
+				<th style="text-align: center;width: 15%">施工单位</th>
+				<th style="text-align: center;width: 7%"  class="sort-column constructSection">施工标段</th>
+				<th style="text-align: center;width: 10%"  class="sort-column constructsheetNumber">施工联系单编号</th>
+				<th style="text-align: center;width: 13%"  class="sort-column constructsheetTopic">联系单主题</th>
+				<th style="text-align: center;width: 10%"  class="sort-column costIncreaseDecrease">是否产生费用增减</th>
+				<th style="text-align: center;width: 7%"  class="sort-column status">当前状态</th>
+				<th style="text-align: center;width: 7%">流程追踪</th>
+				<th style="text-align: center;width: 15%">操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="workFullConstructsheet" varStatus="index">
+			<tr>
+				<td>
+					${index.index + 1}
+				</td>
+				<td>
+					<span title="${workFullConstructsheet.projectNumber}">${fns:abbr(workFullConstructsheet.projectNumber, 30)}</span>
+				</td>
+				<td>
+					<span title="${workFullConstructsheet.workFullManage.constructId.unitName}">${fns:abbr(workFullConstructsheet.workFullManage.constructId.unitName, 30)}</span>
+				</td>
+				<td>
+					${workFullConstructsheet.constructSection}
+				</td>
+				<td>
+					<span title="${workFullConstructsheet.constructsheetNumber}">${fns:abbr(workFullConstructsheet.constructsheetNumber, 30)}</span>
+				</td>
+				<td>
+					<span title="${workFullConstructsheet.constructsheetTopic}">${fns:abbr(workFullConstructsheet.constructsheetTopic, 40)}</span>
+				</td>
+				<td>
+					${fns:getDictLabel(workFullConstructsheet.costIncreaseDecrease, 'cost_increase_decrease', '')}
+				</td>
+				<td>
+					${fns:getDictLabel(workFullConstructsheet.status, 'work_full_constructsheet_status','' )}
+				</td>
+				<td>
+					<div style="text-align: center">
+					<c:if test="${! empty workFullConstructsheet.processInstanceId}">
+						<shiro:hasPermission name="workfullconstructsheet:workFullConstructsheet:view">
+							<a href="javascript:void(0)" onclick="openDialogView('流程追踪', '${ctx}/workfullconstructsheet/workFullConstructsheet/getProcess?id=${workFullConstructsheet.id}','80%','80%')" class="btn btn-info btn-xs" >流程追踪</a>
+						</shiro:hasPermission>
+					</c:if>
+					<c:if test="${empty workFullConstructsheet.processInstanceId}">
+						<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('暂无流程信息',{icon:2})" class="btn btn-default btn-xs">流程追踪</a>
+
+					</c:if>
+					</div>
+				</td>
+				<td>
+					<div style="text-align: center">
+					<!--0暂存,1审核中,2已通过,3未通过,4已撤回-->
+					<shiro:hasPermission name="workfullconstructsheet:workFullConstructsheet:view">
+						<a href="javascript:void(0)" onclick="openDialogView('查看施工联系单', '${ctx}/workfullconstructsheet/workFullConstructsheet/form?id=${workFullConstructsheet.id}&dialog=view','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<!--修改:创建人权限,暂存、未通过可以修改;暂存的修改可以开启流程,未通过的修改可以重新申请或撤回-->
+					<c:if test="${workFullConstructsheet.status ==0 || workFullConstructsheet.status == 3}">
+						<shiro:hasPermission name="workfullconstructsheet:workFullConstructsheet:edit">
+							<c:choose>
+								<c:when test="${fn:contains(workFullConstructsheet.createBy.id, fns:getUser())}">
+									<c:if test="${workFullConstructsheet.status == 0 }">
+										<a href="javascript:void(0)" onclick="openDialogre('修改施工联系单', '${ctx}/workfullconstructsheet/workFullConstructsheet/form?id=${workFullConstructsheet.id}&dialog=edit','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+									</c:if>
+									<c:if test="${workFullConstructsheet.status == 3 && workFullConstructsheet.processEnded}"><%--流程未结束是true--%>
+										<a href="javascript:void(0)" onclick="openDialogreReapply('修改施工联系单', '${ctx}/workfullconstructsheet/workFullConstructsheet/form?id=${workFullConstructsheet.id}&dialog=edit','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+									</c:if>
+									<c:if test="${workFullConstructsheet.status == 3 && !workFullConstructsheet.processEnded}"><%--流程已结束--%>
+										<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:if>
+								</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>
+						</shiro:hasPermission>
+					</c:if>
+					<c:if test="${workFullConstructsheet.status ==1}">
+						<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:if>
+					<c:if test="${workFullConstructsheet.status ==2}">
+						<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:if>
+					<c:if test="${workFullConstructsheet.status ==4}">
+						<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:if>
+
+					<%-- 删除:项目登记人、项目经理权限;当项目竣工后,只有项目经理可以删除; --%>
+					<shiro:hasPermission name="workfullconstructsheet:workFullConstructsheet:del">
+						<c:choose>
+							<c:when test="${fn:contains(workFullManage.hostMaster, fns:getUser()) or workFullManage.createBy.id == fns:getUser()}">
+								<c:if test="${workFullManage.fullProjectStatus le 3 and workFullManage.fullProjectStatus ge 1}">
+									<a href="${ctx}/workfullconstructsheet/workFullConstructsheet/delete?id=${workFullConstructsheet.id}" onclick="return confirmx('确认要删除该施工联系单吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+								</c:if>
+								<c:if test="${workFullManage.fullProjectStatus ge 4}">
+									<c:choose>
+										<c:when test="${fn:contains(workFullManage.hostMaster, fns:getUser())}">
+											<a href="${ctx}/workfullconstructsheet/workFullConstructsheet/delete?id=${workFullConstructsheet.id}" onclick="return confirmx('确认要删除该施工联系单吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+										</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-trash"></i>删除</a>
+										</c:otherwise>
+									</c:choose>
+								</c:if>
+							</c:when>
+							<c:otherwise>
+								<a href="javascript:parent.layer.msg('项目登记人、项目经理权限',{icon:2})" class="btn btn-default btn-xs"><i class="fa fa-trash"></i> 删除</a>
+							</c:otherwise>
+						</c:choose>
+					</shiro:hasPermission>
+					</div>
+				</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/workfullconstructsheet/workFullConstructsheetTask.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>
+

+ 196 - 0
src/main/webapp/webpage/modules/workfullconstructsheet/workFullConstructsheetView.jsp

@@ -0,0 +1,196 @@
+<%@ 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="workFullConstructsheet"  method="post" class="form-horizontal">
+		<sys:message content="${requestScope.message}"/>
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+		   		<tr>
+					<td class="width-15 active" rowspan="9"><label class="pull-right">台账信息:</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">施工单位:</label></td>
+					<td class="width-40" colspan="3">
+						${workFullManage.constructId.unitName}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">联系单主题:</label></td>
+					<td class="width-40" colspan="3">
+						${workFullConstructsheet.constructsheetTopic}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目编号:</label></td>
+					<td class="width-30">
+						${workFullConstructsheet.projectNumber}
+					</td>
+					<td class="width-15 active"><label class="pull-right">联系单编号:</label></td>
+					<td class="width-30">
+						${workFullConstructsheet.constructsheetNumber}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">施工标段:</label></td>
+					<td class="width-30">
+						${workFullConstructsheet.constructSection}
+					</td>
+					<td class="width-15 active"><label class="pull-right">是否产生费用增减:</label></td>
+					<td class="width-30">
+						${fns:getDictLabel(workFullConstructsheet.costIncreaseDecrease,'cost_increase_decrease' ,'' )}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">业主处理意见:</label></td>
+					<td class="width-40" colspan="3">
+						${workFullConstructsheet.proprietorComment}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">变更原因及主要内容:</label></td>
+					<td class="width-40" colspan="3">
+						${workFullConstructsheet.changeContext}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-40" colspan="3">
+						${workFullConstructsheet.remarks}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">文件上传:</label></td>
+					<td class="width-40" colspan="3">
+						<div>
+							<div style="float:left; height: 100%; width: 100%; ">
+								<table id="listManuscriptFile"  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:if test="${not empty workFullConstructsheet.workAttachments}">
+										<c:forEach items="${workFullConstructsheet.workAttachments}" var="attachment" varStatus="varStatus">
+										<tr>
+											<%--<td>${varStatus.index+1}</td>--%>
+												<%--<td>${workFullConstructsheet.workattachment.attachmentName}</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="${workFullConstructsheet.workattachment.url}"><span title="${workFullConstructsheet.workattachment.attachmentName}">${fns:abbr(workFullConstructsheet.workattachment.attachmentName, 20)}</span></a></td>--%>
+															<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="openDialogViewPre('预览','${ctx}/previewController/previewUrl?fileUrl=${workFullConstructsheet.workattachment.url}','80%','80%')"><span title="${workFullConstructsheet.workattachment.attachmentName}">${fns:abbr(workFullConstructsheet.workattachment.attachmentName, 20)}</span></a></td>--%>
+															<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 HH:mm:ss"/></td>
+											<td>
+												<a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>
+											</td>
+										</tr>
+										</c:forEach>
+									</c:if>
+								</table>
+							</div>
+						</div>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active" rowspan="5"><label class="pull-right">项目信息:</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目编号:</label></td>
+					<td class="width-30">
+							${workFullManage.fullProjectNumber}
+					</td>
+					<td class="width-15 active"><label class="pull-right">项目来源:</label></td>
+					<td class="width-30">
+							${fns:getDictLabel(workFullManage.fullProjectSource, 'full_project_source', '')}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+					<td class="width-30" colspan="3">
+							${workFullManage.fullProjectName}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">行业分类:</label></td>
+					<td class="width-30">
+							${fns:getDictLabel(workFullManage.fullIndustryType, 'full_industry_type', '')}
+					</td>
+					<td class="width-15 active"><label class="pull-right">结构类型:</label></td>
+					<td class="width-30">
+							${fns:getDictLabel(workFullManage.fullStructureType, 'full_structure_type', '')}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">投资额(元):</label></td>
+					<td class="width-40">
+							${workFullManage.fullInvestMoney}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active" rowspan="5"><label class="pull-right">客户单位:</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">业主单位:</label></td>
+					<td class="width-40" colspan="3">
+							${workFullManage.workClientInfo.name}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">客户信用等级:</label></td>
+					<td class="width-30">
+							${workFullManage.workClientInfo.creditRank}
+					</td>
+					<td class="width-15 active"><label class="pull-right">业主联系人:</label></td>
+					<td class="width-30">
+							${workFullManage.workClientInfo.workClientLinkman.name}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">职务:</label></td>
+					<td class="width-30">
+							${workFullManage.workClientInfo.workClientLinkman.position}
+					</td>
+					<td class="width-15 active"><label class="pull-right">联系方式:</label></td>
+					<td class="width-30">
+							${workFullManage.workClientInfo.workClientLinkman.linkPhone}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">QQ:</label></td>
+					<td class="width-30">
+							${workFullManage.workClientInfo.workClientLinkman.qq}
+					</td>
+					<td class="width-15 active"><label class="pull-right">Email:</label></td>
+					<td class="width-30">
+							${workFullManage.workClientInfo.workClientLinkman.email}
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 235 - 0
src/main/webapp/webpage/modules/workfullconstructsheet/workfullmanageList.jsp

@@ -0,0 +1,235 @@
+<%@ 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">
+        $(function(){
+            $("#treeTable").treeTable({expandLevel : 2,column:1}).show();
+        });
+        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}/workfullconstructsheet/workFullConstructsheet/save?submit=submit");
+                        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}/workfullconstructsheet/workFullConstructsheet/save?submit=toStore");
+                        formSubmit($document,formId,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}/workfullconstructsheet/workFullConstructsheet/workfullmanageList">项目列表</a></li>
+				<li><a href="${ctx}/workfullconstructsheet/workFullConstructsheet/auditTodo">待审核列表</a></li>
+				<li><a href="${ctx}/workfullconstructsheet/workFullConstructsheet/auditHistory">已审核列表</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="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="workFullManage" action="${ctx}/workfullconstructsheet/workFullConstructsheet/workfullmanageList" method="post" class="form-inline">
+		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+		<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+		<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+		<a href="#" id="moresee" class="fa fa-chevron-down" style="float: right;">更多</a>
+		<div class="form-group">
+			<label>项目编号:</label>
+			<form:input path="fullProjectNumber" htmlEscape="false"    class="form-control required"/>
+			<label>项目名称:</label>
+			<form:input path="fullProjectName" htmlEscape="false"    class="form-control required"/>
+		</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="treeTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th style="text-align: center;">序号</th>
+				<th style="text-align: center;"  class="sort-column fullProjectNumber">项目编号</th>
+				<th style="text-align: center;"  class="sort-column fullProjectName">项目名称</th>
+				<th style="text-align: center;"  class="sort-column ciName">客户单位</th>
+				<th style="text-align: center;">项目负责人</th>
+				<th style="text-align: center;"  class="sort-column createDate">创建日期</th>
+				<th style="text-align: center;"  class="sort-column fullProjectStatus">项目状态</th>
+				<th style="text-align: center;">施工联系单</th>
+				<th style="text-align: center;">操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="workFullManage" varStatus="index">
+			<tr id="${workFullManage.id}" pId="${workFullManage.totalFullId ne '1'?workFullManage.totalFullId:'0'}">
+				<td>${index.index+1}</td>
+				<td>
+					<span title="${workFullManage.fullProjectNumber}">${fns:abbr(workFullManage.fullProjectNumber, 30)}</span>
+				</td>
+				<td>
+					<a  href="javascript:void(0)" onclick="openDialogView('查看项目', '${ctx}/workfullmanage/workFullManage/form?id=${workFullManage.id}&tabId=0','80%','80%')">
+						<span title="${workFullManage.fullProjectName}">${fns:abbr(workFullManage.fullProjectName, 30)}</span>
+					</a>
+				</td>
+				<td>
+					<span title="${workFullManage.ciName}">${fns:abbr(workFullManage.ciName, 30)}</span>
+				</td>
+				<td>
+					<span title="${workFullManage.hostMasterName}">${fns:abbr(workFullManage.hostMasterName, 30)}</span>
+				</td>
+				<td>
+					<fmt:formatDate value="${workFullManage.createDate}" pattern="yyyy-MM-dd"/>
+				</td>
+				<td>
+					${fns:getDictLabel(workFullManage.fullProjectStatus,'full_project_status' ,'' )}
+				</td>
+				<td>
+					<div style="text-align: center">
+					<c:choose>
+						<c:when test="${workFullManage.fullProjectStatus le 3 and workFullManage.fullProjectStatus ge 1}">
+							<shiro:hasPermission name="workfullconstructsheet:workFullConstructsheet:add">
+								<a href="javascript:void(0)" onclick="openDialogre('新增施工联系单', '${ctx}/workfullconstructsheet/workFullConstructsheet/form?workFullManageId=${workFullManage.id}&dialog=add&listpage=workfullmanageList','80%','80%')" class="btn btn-info btn-xs" >施工联系单</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">施工联系单</a>
+						</c:otherwise>
+					</c:choose>
+					</div>
+				</td>
+				<td>
+					<div style="text-align: center">
+					<shiro:hasPermission name="workfullconstructsheet:workFullConstructsheet:list">
+						<a href="javascript:void(0)" onclick="openDialogView('施工联系单列表','${ctx}/workfullconstructsheet/workFullConstructsheet/list?workFullManageId=${workFullManage.id}','80%','80%')" class="btn btn-info btn-xs" >施工联系单记录</a>
+					</shiro:hasPermission>
+					</div>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 124 - 0
src/main/webapp/webpage/modules/workfulldesignchange/workFullDesignchangeAudit.jsp

@@ -0,0 +1,124 @@
+<%@ 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>
+</head>
+
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workFullDesignchange"  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="${workFullDesignchange.act.status}" />
+			<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+				<tbody>
+				<tr>
+					<td class="width-15 active" rowspan="9"><label class="pull-right">文件信息:</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">单位工程名称:</label></td>
+					<td class="width-40" colspan="3">
+							${workFullDesignchange.unitProjectName}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目编号:</label></td>
+					<td class="width-30">
+							${workFullDesignchange.projectNumber}
+					</td>
+					<td class="width-15 active"><label class="pull-right">变更编号:</label></td>
+					<td class="width-30">
+							${workFullDesignchange.changeNumber}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">设计单位:</label></td>
+					<td class="width-40" colspan="3">
+							${workFullManage.designId.unitName}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">执行单位:</label></td>
+					<td class="width-40" colspan="3">
+							${workFullDesignchange.performer}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">设计变更来源:</label></td>
+					<td class="width-30">
+							${workFullDesignchange.changeSource}
+					</td>
+					<td class="width-15 active"><label class="pull-right">设计变更时间:</label></td>
+					<td class="width-30">
+						<fmt:formatDate value="${workFullDesignchange.changeTime}" 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">
+							${workFullDesignchange.constructSection}
+					</td>
+					<td class="width-15 active"><label class="pull-right">是否涉及造价变更:</label></td>
+					<td class="width-30">
+							${fns:getDictLabel(workFullDesignchange.costVariation,'cost_variation' ,'' )}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">变更原因及主要内容:</label></td>
+					<td class="width-40" colspan="3">
+							${workFullDesignchange.changeContext}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-40" colspan="3">
+							${workFullDesignchange.remarks}
+					</td>
+				</tr>
+				<c:if test="${not empty status}">
+					<tr>
+						<td class="width-15 active" rowspan="2"><label class="pull-right">审批意见:</label></td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">意见:</label></td>
+						<td class="width-30" colspan="3">
+							<form:textarea path="act.comment" class="form-control " rows="3" maxlength="20"/>
+						</td>
+					</tr>
+				</c:if>
+
+				</tbody>
+			</table>
+
+		<act:flowChart procInsId="${workFullDesignchange.act.procInsId}"/>
+		<act:histoicFlow procInsId="${workFullDesignchange.act.procInsId}"/>
+	</form:form>
+</body>
+</html>

+ 118 - 0
src/main/webapp/webpage/modules/workfulldesignchange/workFullDesignchangeAuditHistory.jsp

@@ -0,0 +1,118 @@
+<%@ 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" style="height: 70px;">
+			<h5>
+				<ul class="nav nav-tabs">
+					<li><a href="${ctx}/workfulldesignchange/workFullDesignchange/workfullmanageList">项目列表</a></li>
+					<li><a href="${ctx}/workfulldesignchange/workFullDesignchange/auditTodo">待审核列表</a></li>
+					<li class="active"><a href="${ctx}/workfulldesignchange/workFullDesignchange/auditHistory">已审核列表</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;width: 10%">流程发起人</th>
+					<th style="text-align: center;width: 10%">流程名称</th>
+					<th style="text-align: center;width: 10%">流程版本</th>
+					<th style="text-align: center;width: 20%">单位工程名称</th>
+					<th style="text-align: center;width: 10%">施工标段</th>
+					<th style="text-align: center;width: 25%">所属项目</th>
+					<th style="text-align: center;width: 15%">流程发起时间</th>
+				</tr>
+				</thead>
+				<tbody>
+				<c:forEach items="${list}" var="workFullDesignchange">
+					<c:set var="task" value="${workFullDesignchange.act.task}" />
+					<c:set var="vars" value="${workFullDesignchange.act.vars}" />
+					<c:set var="procDef" value="${workFullDesignchange.act.procDef}" />
+					<c:set var="status" value="${workFullMeetingminutes.act.status}" />
+					<tr>
+						<td>${workFullDesignchange.act.vars.map.applyUserId}</td>
+						<td>${procDef.name}</td>
+						<td><b title='流程版本号'>V: ${procDef.version}</b></td>
+						<td>
+							<shiro:hasPermission name="workfulldesignchange:workFullDesignchange:view">
+								<a href="javascript:void(0)" onclick="openDialogView('查看设计变更', '${ctx}/workfulldesignchange/workFullDesignchange/form?id=${workFullDesignchange.id}&dialog=view','80%','80%')">
+									<span title="${workFullDesignchange.unitProjectName}">${fns:abbr(workFullDesignchange.unitProjectName, 40)}</span>
+								</a>
+							</shiro:hasPermission>
+						</td>
+						<td>${workFullDesignchange.constructSection}</td>
+						<td>
+							<a  href="javascript:void(0)" onclick="openDialogView('查看项目', '${ctx}/workfullmanage/workFullManage/form?id=${workFullDesignchange.workFullManage.id}&tabId=0','80%','80%')">
+								<span title="${workFullDesignchange.workFullManage.fullProjectName}">${fns:abbr(workFullDesignchange.workFullManage.fullProjectName, 40)}</span>
+							</a>
+						</td>
+						<td><fmt:formatDate value="${workFullDesignchange.updateDate}" 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>

+ 233 - 0
src/main/webapp/webpage/modules/workfulldesignchange/workFullDesignchangeAuditTodo.jsp

@@ -0,0 +1,233 @@
+<%@ 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}/workfulldesignchange/workFullDesignchange/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}/workfulldesignchange/workFullDesignchange/auditTodo/';
+                }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中展示
+					var formId = inputForm.attr("id");
+                    if(formId){
+                        var $document = iframeWin.contentWindow.document;
+                        $document.getElementById("flag").setAttribute("value","yes");
+                        $document.getElementById(formId).setAttribute("action","${ctx}/workfulldesignchange/workFullDesignchange/saveAudit");
+                        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("flag").setAttribute("value","no");
+                        $document.getElementById(formId).setAttribute("action","${ctx}/workfulldesignchange/workFullDesignchange/saveAudit");
+                        formSubmit($document,formId,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: false,opacity:0.1});
+                $($document.getElementById(inputForm)).ajaxSubmit({
+                    success:function(data) {
+                        top.layer.close(index);
+                        history.go(0);
+                        parent.layer.msg("审批完成!!!",{icon:6});
+                        parent.layer.close(loadingMessage);
+                    }
+                });
+            }
+        }
+	</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}/workfulldesignchange/workFullDesignchange/workfullmanageList">项目列表</a></li>
+					<li class="active"><a href="${ctx}/workfulldesignchange/workFullDesignchange/auditTodo">待审核列表</a></li>
+					<li><a href="${ctx}/workfulldesignchange/workFullDesignchange/auditHistory?workFullManageId=${workFullDesignchange.workFullManageId}">已审核列表</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;width: 10%">流程发起人</th>
+					<th style="text-align: center;width: 10%">当前环节</th>
+					<th style="text-align: center;width: 10%">流程名称</th>
+					<th style="text-align: center;width: 8%">流程版本</th>
+					<th style="text-align: center;width: 15%">单位工程名称</th>
+					<th style="text-align: center;width: 7%">施工标段</th>
+					<th style="text-align: center;width: 20%">所属项目</th>
+					<th style="text-align: center;width: 13%">流程发起时间</th>
+					<th style="text-align: center;width: 6%">操作</th>
+				</tr>
+				</thead>
+				<tbody>
+				<c:forEach items="${list}" var="workFullDesignchange">
+					<c:set var="task" value="${workFullDesignchange.act.task}" />
+					<c:set var="vars" value="${workFullDesignchange.act.vars}" />
+					<c:set var="procDef" value="${workFullDesignchange.act.procDef}" />
+					<c:set var="status" value="${workFullDesignchange.act.status}" />
+					<tr>
+						<td>${workFullDesignchange.act.vars.map.applyUserId}</td>
+						<td>
+							${task.name}
+						</td>
+						<td>${procDef.name}</td>
+						<td><b title='流程版本号'>V: ${procDef.version}</b></td>
+						<td><span title="${workFullDesignchange.unitProjectName}">${fns:abbr(workFullDesignchange.unitProjectName, 40)}</span></td>
+						<td>${workFullDesignchange.constructSection}</td>
+						<td>
+							<a  href="javascript:void(0)" onclick="openDialogView('查看项目', '${ctx}/workfullmanage/workFullManage/form?id=${workFullDesignchange.workFullManage.id}&tabId=0','80%','80%')">
+								<span title="${workFullDesignchange.workFullManage.fullProjectName}">${fns:abbr(workFullDesignchange.workFullManage.fullProjectName, 40)}</span>
+							</a>
+						</td>
+						<td><fmt:formatDate value="${workFullDesignchange.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
+						<td>
+							<div style="text-align: center">
+							<a href="javascript:void(0)" onclick="openDialogre('设计变更审核流程', '${ctx}/workfulldesignchange/workFullDesignchange/applyOnWorkFullDesignchange?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>

+ 346 - 0
src/main/webapp/webpage/modules/workfulldesignchange/workFullDesignchangeForm.jsp

@@ -0,0 +1,346 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>设计变更管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+			
+					laydate.render({
+			            elem: '#changeTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+						type : 'datetime'
+			        });
+		});
+		$(function () {
+			$("#attachment_btn").click(function () {
+				$("#attachment_file").click();
+            });
+        })
+        function attachment_insertTitle(tValue){
+            var list = "${workFullDesignchange.workAttachments}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = $("#id").val();
+            var attachmentFlag = "46";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workFullDesignchange/"+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 delFile(id,attaId,attachmentUrl,obj) {
+            var loadingMessage = parent.layer.load(0, {shade: [0.1,'#393d49']});
+            var tr = $(obj).parent().parent();
+            $.ajax({
+                type:'POST',
+                dataType:'json',
+                url:'${ctx}/workfulldesignchange/workFullDesignchange/delFile',
+                data:{"id":id,"attaId":attaId,"attachmentUrl":attachmentUrl},
+                cache:false,
+                success: function() {
+                    tr.remove();
+                    parent.layer.msg("删除成功!!!",{icon:6});
+                    parent.layer.close(loadingMessage);
+                },
+                error:function () {
+                    parent.layer.msg("删除失败!!!",{icon:3});
+                    parent.layer.close(loadingMessage);
+                }
+            });
+        }
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workFullDesignchange" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<form:hidden path="workFullManageId"/>
+		<input type="hidden" name="listpage" value="${listpage}"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+		   		<tr>
+					<td class="width-15 active" rowspan="10"><label class="pull-right">文件信息:</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>单位工程名称:</label></td>
+					<td class="width-40" colspan="3">
+						<form:input path="unitProjectName" 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-30">
+						<form:input path="projectNumber" htmlEscape="false"    class="form-control required"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>变更编号:</label></td>
+					<td class="width-30">
+						<form:input path="changeNumber" htmlEscape="false"    class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">设计单位:</label></td>
+					<td class="width-40" colspan="3">
+						${workFullManage.designId.unitName}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>执行单位:</label></td>
+					<td class="width-40" colspan="3">
+						<form:input path="performer" htmlEscape="false"    class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">设计变更来源:</label></td>
+					<td class="width-30">
+						<form:input path="changeSource" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">设计变更时间:</label></td>
+					<td class="width-30">
+						<input id="changeTime" name="changeTime" type="text" maxlength="20" class="laydate-icondate form-control layer-date "
+							value="<fmt:formatDate value="${workFullDesignchange.changeTime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>施工标段:</label></td>
+					<td class="width-30">
+						<form:input path="constructSection" htmlEscape="false"    class="form-control required"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">是否涉及造价变更:</label></td>
+					<td class="width-30">
+						<form:radiobuttons path="costVariation" items="${fns:getDictList('cost_variation')}" itemLabel="label" itemValue="value" htmlEscape="false" class="i-checks "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">变更原因及主要内容:</label></td>
+					<td class="width-40" colspan="3">
+						<form:textarea path="changeContext" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-40" colspan="3">
+						<form:textarea path="remarks" htmlEscape="false"     class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">文件上传:</label></td>
+					<td class="width-40" colspan="3">
+						<div>
+							<div style="float:left; height: 100%; width: 100%; ">
+								<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)attachment_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="listManuscriptFile"  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:if test="${not empty workFullDesignchange.workAttachments}">
+											<c:forEach items="${workFullDesignchange.workAttachments}" var="workAttachment" varStatus="varStatus">
+												<tr>
+													<%--<td>${varStatus.index+1}</td>--%>
+													<c:choose>
+														<c:when test="${fn:containsIgnoreCase(workAttachment.attachmentName,'jpg')
+															   or fn:containsIgnoreCase(workAttachment.attachmentName,'png')
+															   or fn:containsIgnoreCase(workAttachment.attachmentName,'gif')
+															   or fn:containsIgnoreCase(workAttachment.attachmentName,'jpeg')}">
+															<td><img src="${workAttachment.url}" onclick="openDialogView(' ','${ctx}/sys/picturepreview/picturePreview?url=${workAttachment.url}','860px','600px')"	 width="50" height="50" alt="${workAttachment.attachmentName}"/></td>
+														</c:when>
+														<c:otherwise>
+															<c:choose>
+																<c:when test="${fn:containsIgnoreCase(workAttachment.attachmentName,'pdf')}">
+																	<td><a href="javascript:void(0)" onclick="preview('预览','${workAttachment.url}','80%','80%','1')">
+																		<span title="${workAttachment.attachmentName}">${fns:abbr(workAttachment.attachmentName, 20)}</span></a></td>
+																	<%--<td><a href="${workFullDesignchange.workattachment.url}"><span title="${workFullDesignchange.workattachment.attachmentName}">${fns:abbr(workFullDesignchange.workattachment.attachmentName, 20)}</span></a></td>--%>
+																</c:when>
+																<c:otherwise>
+																	<td><a href="javascript:void(0)" onclick="preview('预览','${workAttachment.url}','80%','80%')">
+																		<span title="${workAttachment.attachmentName}">${fns:abbr(workAttachment.attachmentName, 20)}</span></a></td>
+																	<%--<td><a href="javascript:void(0)" onclick="openDialogViewPre('预览','${ctx}/previewController/previewUrl?fileUrl=${workFullDesignchange.workattachment.url}','80%','80%')"><span title="${workFullDesignchange.workattachment.attachmentName}">${fns:abbr(workFullDesignchange.workattachment.attachmentName, 20)}</span></a></td>--%>
+																</c:otherwise>
+															</c:choose>
+														</c:otherwise>
+													</c:choose>
+													<td>${workAttachment.attachmentUser}</td>
+													<td><fmt:formatDate value="${workAttachment.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
+													<td>
+														<a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${workAttachment.url}" class="btn btn-success btn-xs">下载</a>
+														<a class="btn btn-danger btn-xs" href="javascript:void(0)" onclick="delFile('${workFullDesignchange.id}','${workAttachment.id}','${workAttachment.url}',this)">删除</a>
+														<%--<shiro:hasPermission name="workfulldesignchange:workFullDesignchange:delFile">--%>
+															<%--<a href="${ctx}/workfulldesignchange/workFullDesignchange/delFile?id=${workFullDesignchange.id}&wtId=${workAttachment.id}&attachmentFlag=46" onclick="return confirmx('确认要删除该附件吗?', this.href)" class="btn btn-danger btn-xs">删除</a>--%>
+														<%--</shiro:hasPermission>--%>
+
+													</td>
+												</tr>
+											</c:forEach>
+										</c:if>
+									</tbody>
+								</table>
+							</div>
+						</div>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active" rowspan="5"><label class="pull-right">项目信息:</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目编号:</label></td>
+					<td class="width-30">
+							${workFullManage.fullProjectNumber}
+					</td>
+					<td class="width-15 active"><label class="pull-right">项目来源:</label></td>
+					<td class="width-30">
+						<input value="${fns:getDictLabel(workFullManage.fullProjectSource, 'full_project_source', '')}" htmlEscape="false" readonly="readonly"   class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+					<td class="width-30" colspan="3">
+							${workFullManage.fullProjectName}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">行业分类:</label></td>
+					<td class="width-30">
+							${fns:getDictLabel(workFullManage.fullIndustryType, 'full_industry_type', '')}
+					</td>
+					<td class="width-15 active"><label class="pull-right">结构类型:</label></td>
+					<td class="width-30">
+							${fns:getDictLabel(workFullManage.fullStructureType, 'full_structure_type', '')}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">投资额(元):</label></td>
+					<td class="width-40">
+							${workFullManage.fullInvestMoney}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active" rowspan="5"><label class="pull-right">客户单位:</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">业主单位:</label></td>
+					<td class="width-40" colspan="3">
+							${workFullManage.workClientInfo.name}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">客户信用等级:</label></td>
+					<td class="width-30">
+							${workFullManage.workClientInfo.creditRank}
+					</td>
+					<td class="width-15 active"><label class="pull-right">业主联系人:</label></td>
+					<td class="width-30">
+							${workFullManage.workClientInfo.workClientLinkman.name}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">职务:</label></td>
+					<td class="width-30">
+							${workFullManage.workClientInfo.workClientLinkman.position}
+					</td>
+					<td class="width-15 active"><label class="pull-right">联系方式:</label></td>
+					<td class="width-30">
+							${workFullManage.workClientInfo.workClientLinkman.linkPhone}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">QQ:</label></td>
+					<td class="width-30">
+							${workFullManage.workClientInfo.workClientLinkman.qq}
+					</td>
+					<td class="width-15 active"><label class="pull-right">Email:</label></td>
+					<td class="width-30">
+							${workFullManage.workClientInfo.workClientLinkman.email}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active" rowspan="2"><label class="pull-right">部门安排:</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">主办公司/部门:</label></td>
+					<td class="width-30">
+						${workFullManage.hostCompany}
+					</td>
+					<td class="width-15 active"><label class="pull-right">协办公司/部门:</label></td>
+					<td class="width-30">
+						${workFullManage.followCompany}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active" rowspan="3"><label class="pull-right">人员安排:</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">主办公司/部门负责人:</label></td>
+					<td class="width-30">
+						${workFullManage.hostMasterName}
+					</td>
+					<td class="width-15 active"><label class="pull-right">主办公司/部门项目组成员:</label></td>
+					<td class="width-30">
+						${workFullManage.hostMemberName}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">协办公司/部门负责人:</label></td>
+					<td class="width-30">
+						${workFullManage.followMasterName}
+					</td>
+					<td class="width-15 active"><label class="pull-right">协办公司/部门项目组成员:</label></td>
+					<td class="width-30">
+						${workFullManage.followMemberName}
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 351 - 0
src/main/webapp/webpage/modules/workfulldesignchange/workFullDesignchangeList.jsp

@@ -0,0 +1,351 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>设计变更管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+        function openDialogre(title,url,width,height,target) {
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url,
+                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}/workfulldesignchange/workFullDesignchange/save?submit=submit");
+                        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}/workfulldesignchange/workFullDesignchange/save?submit=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}/workfulldesignchange/workFullDesignchange/save?submit=reapply");
+                        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}/workfulldesignchange/workFullDesignchange/save?submit=repeal");
+                        formSubmit($document,formId,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>
+			设计变更列表
+		</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="workFullDesignchange" action="${ctx}/workfulldesignchange/workFullDesignchange/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}"/>
+		<input type="hidden" name="workFullManageId" value="${requestScope.workFullManageId}"/>
+		<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+		<div class="form-group">
+			<span>单位工程名称:</span>
+				<form:input path="unitProjectName" htmlEscape="false" maxlength="255"  class=" form-control input-sm"/>
+			<span>变更编号:</span>
+				<form:input path="changeNumber" 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">
+			<c:if test="${workFullManage.fullProjectStatus le 3 and workFullManage.fullProjectStatus ge 1}">
+				<shiro:hasPermission name="workfulldesignchange:workFullDesignchange:add">
+					<button onclick="openDialogre('添加设计变更', '${ctx}/workfulldesignchange/workFullDesignchange/form?workFullManageId=${workFullManageId}&dialig=add','80%','80%')"
+							class="btn btn-white btn-sm" title="添加"><i class="fa fa-plus">添加</i></button>
+				</shiro:hasPermission>
+			</c:if>
+			<shiro:hasPermission name="workfulldesignchange:workFullDesignchange:import">
+				<table:importExcel url="${ctx}/workfulldesignchange/workFullDesignchange/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workfulldesignchange:workFullDesignchange:export">
+	       		<table:exportExcel url="${ctx}/workfulldesignchange/workFullDesignchange/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: 9%"  class="sort-column projectNumber">项目编号</th>
+				<th style="text-align: center;width: 15%"  class="sort-column unitProjectName">单位工程名称</th>
+				<th style="text-align: center;width: 7%"  class="sort-column constructSection">施工标段</th>
+				<th style="text-align: center;width: 12%">设计单位</th>
+				<th style="text-align: center;width: 15%"  class="sort-column performer">设计变更执行单位</th>
+				<th style="text-align: center;width: 8%"  class="sort-column costVariation">是否涉及造价变更</th>
+				<th style="text-align: center;width: 7%"  class="sort-column status">当前状态</th>
+				<th style="text-align: center;width: 7%">流程追踪</th>
+				<th style="text-align: center;width: 15%">操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="workFullDesignchange" varStatus="index">
+			<tr>
+				<td> ${index.index + 1}</td>
+				<td>
+					<span title="${workFullDesignchange.projectNumber}">${fns:abbr(workFullDesignchange.projectNumber, 30)}</span>
+				</td>
+				<td>
+					<span title="${workFullDesignchange.unitProjectName}">${fns:abbr(workFullDesignchange.unitProjectName, 30)}</span>
+				</td>
+				<td>
+					${workFullDesignchange.constructSection}
+				</td>
+				<td>
+					<span title="${workFullDesignchange.workFullManage.designId.unitName}">${fns:abbr(workFullDesignchange.workFullManage.designId.unitName, 30)}</span>
+				</td>
+				<td>
+					<span title="${workFullDesignchange.performer}">${fns:abbr(workFullDesignchange.performer, 30)}</span>
+				</td>
+				<td>
+					${fns:getDictLabel(workFullDesignchange.costVariation, 'cost_variation', '')}
+				</td>
+				<td>
+					${fns:getDictLabel(workFullDesignchange.status,'work_full_designchange_status' ,'' )}
+				</td>
+				<td>
+					<div style="text-align: center">
+					<c:if test="${! empty workFullDesignchange.processInstanceId}">
+						<shiro:hasPermission name="workfulldesignchange:workFullDesignchange:view">
+							<a href="javascript:void(0)" onclick="openDialogView('流程追踪', '${ctx}/workfulldesignchange/workFullDesignchange/getProcess?id=${workFullDesignchange.id}','80%','80%')" class="btn btn-info btn-xs" >流程追踪</a>
+						</shiro:hasPermission>
+					</c:if>
+					<c:if test="${empty workFullDesignchange.processInstanceId}">
+						<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('暂无流程信息',{icon:2})" class="btn btn-default btn-xs">流程追踪</a>
+					</c:if>
+					</div>
+				</td>
+				<td>
+					<div style="text-align: center">
+					<!--0暂存,1审核中,2已通过,3未通过,4已撤回-->
+					<shiro:hasPermission name="workfulldesignchange:workFullDesignchange:view">
+						<a href="javascript:void(0)" onclick="openDialogView('查看设计变更', '${ctx}/workfulldesignchange/workFullDesignchange/form?id=${workFullDesignchange.id}&dialog=view','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<!--修改:创建人权限,暂存、未通过可以修改;暂存的修改可以开启流程,未通过的修改可以重新申请或撤回-->
+					<c:if test="${workFullDesignchange.status ==0 || workFullDesignchange.status ==3}">
+						<shiro:hasPermission name="workfulldesignchange:workFullDesignchange:edit">
+							<c:choose>
+								<c:when test="${fn:contains(workFullDesignchange.createBy.id, fns:getUser())}">
+									<c:if test="${workFullDesignchange.status == 0 }">
+										<a href="javascript:void(0)" onclick="openDialogre('修改设计变更', '${ctx}/workfulldesignchange/workFullDesignchange/form?id=${workFullDesignchange.id}&dialog=edit','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+									</c:if>
+									<c:if test="${workFullDesignchange.status == 3 && workFullDesignchange.processEnded}"><%--流程未结束是true--%>
+										<a href="javascript:void(0)" onclick="openDialogreReapply('修改设计变更', '${ctx}/workfulldesignchange/workFullDesignchange/form?id=${workFullDesignchange.id}&dialog=edit','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+									</c:if>
+									<c:if test="${workFullDesignchange.status == 3 && !workFullDesignchange.processEnded}"><%--流程未结束--%>
+										<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:if>
+								</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>
+						</shiro:hasPermission>
+					</c:if>
+					<c:if test="${workFullDesignchange.status == 1}">
+						<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:if>
+					<c:if test="${workFullDesignchange.status == 2}">
+						<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:if>
+					<c:if test="${workFullDesignchange.status == 4}">
+						<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:if>
+					<%-- 删除:项目登记人、项目经理权限;当项目竣工后,只有项目经理可以删除; --%>
+					<shiro:hasPermission name="workfulldesignchange:workFullDesignchange:del">
+						<c:choose>
+							<c:when test="${fn:contains(workFullManage.hostMaster, fns:getUser()) or workFullManage.createBy.id == fns:getUser()}">
+								<c:if test="${workFullManage.fullProjectStatus le 3 and workFullManage.fullProjectStatus ge 1}">
+									<a href="${ctx}/workfulldesignchange/workFullDesignchange/delete?id=${workFullDesignchange.id}" onclick="return confirmx('确认要删除该设计变更吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+								</c:if>
+								<c:if test="${workFullManage.fullProjectStatus ge 4}">
+									<c:choose>
+										<c:when test="${fn:contains(workFullManage.hostMaster, fns:getUser())}">
+											<a href="${ctx}/workfulldesignchange/workFullDesignchange/delete?id=${workFullDesignchange.id}" onclick="return confirmx('确认要删除该设计变更吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+										</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-trash"></i>删除</a>
+										</c:otherwise>
+									</c:choose>
+								</c:if>
+							</c:when>
+							<c:otherwise>
+								<a href="javascript:parent.layer.msg('项目登记人、项目经理权限',{icon:2})" class="btn btn-default btn-xs"><i class="fa fa-trash"></i> 删除</a>
+							</c:otherwise>
+						</c:choose>
+					</shiro:hasPermission>
+					</div>
+				</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/workfulldesignchange/workFullDesignchangeTask.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>
+

+ 243 - 0
src/main/webapp/webpage/modules/workfulldesignchange/workFullDesignchangeView.jsp

@@ -0,0 +1,243 @@
+<%@ 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="workFullDesignchange"   method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<form:hidden path="workFullManageId"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+		   		<tr>
+					<td class="width-15 active" rowspan="10"><label class="pull-right">文件信息:</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">单位工程名称:</label></td>
+					<td class="width-40" colspan="3">
+						${workFullDesignchange.unitProjectName}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目编号:</label></td>
+					<td class="width-30">
+						${workFullDesignchange.projectNumber}
+					</td>
+					<td class="width-15 active"><label class="pull-right">变更编号:</label></td>
+					<td class="width-30">
+						${workFullDesignchange.changeNumber}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">设计单位:</label></td>
+					<td class="width-40" colspan="3">
+						${workFullManage.designId.unitName}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">执行单位:</label></td>
+					<td class="width-40" colspan="3">
+						${workFullDesignchange.performer}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">设计变更来源:</label></td>
+					<td class="width-30">
+						${workFullDesignchange.changeSource}
+					</td>
+					<td class="width-15 active"><label class="pull-right">设计变更时间:</label></td>
+					<td class="width-30">
+						<fmt:formatDate value="${workFullDesignchange.changeTime}" 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">
+						${workFullDesignchange.constructSection}
+					</td>
+					<td class="width-15 active"><label class="pull-right">是否涉及造价变更:</label></td>
+					<td class="width-30">
+						${fns:getDictLabel(workFullDesignchange.costVariation,'cost_variation' ,'' )}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">变更原因及主要内容:</label></td>
+					<td class="width-40" colspan="3">
+						${workFullDesignchange.changeContext}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-40" colspan="3">
+						${workFullDesignchange.remarks}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">文件上传:</label></td>
+					<td class="width-40" colspan="3">
+						<div>
+							<div style="float:left; height: 100%; width: 100%; ">
+								<table id="listManuscriptFile"  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:if test="${not empty workFullDesignchange.workAttachments}">
+											<c:forEach items="${workFullDesignchange.workAttachments}" var="workAttachment" varStatus="varStatus">
+												<tr>
+													<%--<td>${varStatus.index+1}</td>--%>
+													<c:choose>
+														<c:when test="${fn:containsIgnoreCase(workAttachment.attachmentName,'jpg')
+															   or fn:containsIgnoreCase(workAttachment.attachmentName,'png')
+															   or fn:containsIgnoreCase(workAttachment.attachmentName,'gif')
+															   or fn:containsIgnoreCase(workAttachment.attachmentName,'jpeg')}">
+															<td><img src="${workAttachment.url}" onclick="openDialogView(' ','${ctx}/sys/picturepreview/picturePreview?url=${workAttachment.url}','860px','600px')" width="50" height="50" alt="${workAttachment.attachmentName}"/></td>
+														</c:when>
+														<c:otherwise>
+															<c:choose>
+																<c:when test="${fn:containsIgnoreCase(workAttachment.attachmentName,'pdf')}">
+																	<td><a href="javascript:void(0)" onclick="preview('预览','${workAttachment.url}','80%','80%','1')">
+																		<span title="${workAttachment.attachmentName}">${fns:abbr(workAttachment.attachmentName, 20)}</span></a></td>
+																	<%--<td><a href="${workFullDesignchange.workattachment.url}"><span title="${workFullDesignchange.workattachment.attachmentName}">${fns:abbr(workFullDesignchange.workattachment.attachmentName, 20)}</span></a></td>--%>
+																</c:when>
+																<c:otherwise>
+																	<td><a href="javascript:void(0)" onclick="preview('预览','${workAttachment.url}','80%','80%')">
+																		<span title="${workAttachment.attachmentName}">${fns:abbr(workAttachment.attachmentName, 20)}</span></a></td>
+																	<%--<td><a href="javascript:void(0)" onclick="openDialogViewPre('预览','${ctx}/previewController/previewUrl?fileUrl=${workFullDesignchange.workattachment.url}','80%','80%')"><span title="${workFullDesignchange.workattachment.attachmentName}">${fns:abbr(workFullDesignchange.workattachment.attachmentName, 20)}</span></a></td>--%>
+																</c:otherwise>
+															</c:choose>
+														</c:otherwise>
+													</c:choose>
+													<td>${workAttachment.attachmentUser}</td>
+													<td><fmt:formatDate value="${workAttachment.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
+													<td>
+														<a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${workAttachment.url}" class="btn btn-success btn-xs">下载</a>
+													</td>
+												</tr>
+											</c:forEach>
+									   </c:if>
+								</table>
+							</div>
+						</div>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active" rowspan="5"><label class="pull-right">项目信息:</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目编号:</label></td>
+					<td class="width-30">
+						${workFullManage.fullProjectNumber}
+					</td>
+					<td class="width-15 active"><label class="pull-right">项目来源:</label></td>
+					<td class="width-30">
+							${fns:getDictLabel(workFullManage.fullProjectSource, 'full_project_source', '')}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+					<td class="width-30" colspan="3">
+						${workFullManage.fullProjectName}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">行业分类:</label></td>
+					<td class="width-30">
+						${fns:getDictLabel(workFullManage.fullIndustryType, 'full_industry_type', '')}
+					</td>
+					<td class="width-15 active"><label class="pull-right">结构类型:</label></td>
+					<td class="width-30">
+						${fns:getDictLabel(workFullManage.fullStructureType, 'full_structure_type', '')}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">投资额(元):</label></td>
+					<td class="width-40">
+						${workFullManage.fullInvestMoney}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active" rowspan="5"><label class="pull-right">客户单位:</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">业主单位:</label></td>
+					<td class="width-40" colspan="3">
+						${workFullManage.workClientInfo.name}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">客户信用等级:</label></td>
+					<td class="width-30">
+						${workFullManage.workClientInfo.creditRank}
+					</td>
+					<td class="width-15 active"><label class="pull-right">业主联系人:</label></td>
+					<td class="width-30">
+						${workFullManage.workClientInfo.workClientLinkman.name}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">职务:</label></td>
+					<td class="width-30">
+						${workFullManage.workClientInfo.workClientLinkman.position}
+					</td>
+					<td class="width-15 active"><label class="pull-right">联系方式:</label></td>
+					<td class="width-30">
+						${workFullManage.workClientInfo.workClientLinkman.linkPhone}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">QQ:</label></td>
+					<td class="width-30">
+						${workFullManage.workClientInfo.workClientLinkman.qq}
+					</td>
+					<td class="width-15 active"><label class="pull-right">Email:</label></td>
+					<td class="width-30">
+						${workFullManage.workClientInfo.workClientLinkman.email}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active" rowspan="2"><label class="pull-right">部门安排:</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">主办公司/部门:</label></td>
+					<td class="width-30">
+						${workFullManage.hostCompany}
+					</td>
+					<td class="width-15 active"><label class="pull-right">协办公司/部门:</label></td>
+					<td class="width-30">
+						${workFullManage.followCompany}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active" rowspan="3"><label class="pull-right">人员安排:</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">主办公司/部门负责人:</label></td>
+					<td class="width-30">
+						${workFullManage.hostMasterName}
+					</td>
+					<td class="width-15 active"><label class="pull-right">主办公司/部门项目组成员:</label></td>
+					<td class="width-30">
+						${workFullManage.hostMemberName}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">协办公司/部门负责人:</label></td>
+					<td class="width-30">
+						${workFullManage.followMasterName}
+					</td>
+					<td class="width-15 active"><label class="pull-right">协办公司/部门项目组成员:</label></td>
+					<td class="width-30">
+						${workFullManage.followMemberName}
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 235 - 0
src/main/webapp/webpage/modules/workfulldesignchange/workfullmanageList.jsp

@@ -0,0 +1,235 @@
+<%@ 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">
+        $(function(){
+            $("#treeTable").treeTable({expandLevel : 2,column:1}).show();
+        });
+        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}/workfulldesignchange/workFullDesignchange/save?submit=submit");
+                        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}/workfulldesignchange/workFullDesignchange/save?submit=toStore");
+                        formSubmit($document,formId,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}/workfulldesignchange/workFullDesignchange/workfullmanageList">项目列表</a></li>
+				<li><a href="${ctx}/workfulldesignchange/workFullDesignchange/auditTodo">待审核列表</a></li>
+				<li><a href="${ctx}/workfulldesignchange/workFullDesignchange/auditHistory">已审核列表</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="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="workFullManage" action="${ctx}/workfulldesignchange/workFullDesignchange/workfullmanageList" method="post" class="form-inline">
+		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+		<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+		<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+		<a href="#" id="moresee" class="fa fa-chevron-down" style="float: right;">更多</a>
+		<div class="form-group">
+			<label>项目编号:</label>
+			<form:input path="fullProjectNumber" htmlEscape="false"    class="form-control required"/>
+			<label>项目名称:</label>
+			<form:input path="fullProjectName" htmlEscape="false"    class="form-control required"/>
+		</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="treeTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th style="text-align: center;">序号</th>
+				<th style="text-align: center;"  class="sort-column fullProjectNumber">项目编号</th>
+				<th style="text-align: center;"  class="sort-column fullProjectName">项目名称</th>
+				<th style="text-align: center;"  class="sort-column ciName">客户单位</th>
+				<th style="text-align: center;">项目负责人</th>
+				<th style="text-align: center;"  class="sort-column createDate">创建日期</th>
+				<th style="text-align: center;"  class="sort-column fullProjectStatus">项目状态</th>
+				<th style="text-align: center;">设计变更</th>
+				<th style="text-align: center;">操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="workFullManage" varStatus="index">
+			<tr  id="${workFullManage.id}" pId="${workFullManage.totalFullId ne '1'?workFullManage.totalFullId:'0'}">
+				<td>${index.index +1}</td>
+				<td>
+					<span title="${workFullManage.fullProjectNumber}">${fns:abbr(workFullManage.fullProjectNumber, 30)}</span>
+				</td>
+				<td>
+					<a  href="javascript:void(0)" onclick="openDialogView('查看项目', '${ctx}/workfullmanage/workFullManage/form?id=${workFullManage.id}&tabId=0','80%','80%')">
+						<span title="${workFullManage.fullProjectName}">${fns:abbr(workFullManage.fullProjectName, 30)}</span>
+					</a>
+				</td>
+				<td>
+					<span title="${workFullManage.ciName}">${fns:abbr(workFullManage.ciName, 30)}</span>
+				</td>
+				<td>
+					<span title="${workFullManage.hostMasterName}">${fns:abbr(workFullManage.hostMasterName, 30)}</span>
+				</td>
+				<td>
+					<fmt:formatDate value="${workFullManage.createDate}" pattern="yyyy-MM-dd"/>
+				</td>
+				<td>
+					${fns:getDictLabel(workFullManage.fullProjectStatus,'full_project_status' ,'' )}
+				</td>
+				<td>
+					<div style="text-align: center">
+					<c:choose>
+						<c:when test="${workFullManage.fullProjectStatus le 3 and workFullManage.fullProjectStatus ge 1}">
+							<shiro:hasPermission name="workfulldesignchange:workFullDesignchange:add">
+								<a href="javascript:void(0)" onclick="openDialogre('新增设计变更', '${ctx}/workfulldesignchange/workFullDesignchange/form?workFullManageId=${workFullManage.id}&dialog=add&listpage=workfullmanageList','80%','80%')" class="btn btn-info btn-xs" >设计变更</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">设计变更</a>
+						</c:otherwise>
+					</c:choose>
+					</div>
+				</td>
+				<td>
+					<div style="text-align: center">
+					<shiro:hasPermission name="workfulldesignchange:workFullDesignchange:list">
+						<a href="javascript:void(0)" onclick="openDialogView('设计变更列表','${ctx}/workfulldesignchange/workFullDesignchange/list?workFullManageId=${workFullManage.id}','80%','80%')" class="btn btn-info btn-xs" >设计变更记录</a>
+					</shiro:hasPermission>
+					</div>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 158 - 0
src/main/webapp/webpage/modules/workfullexecute/list4monitor.jsp

@@ -0,0 +1,158 @@
+<%@ 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: '#startTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+	            event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'datetime'
+	        });
+			laydate.render({
+	            elem: '#endTime', //目标元素。由于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">
+		<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">
+
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="workFullExecute"  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="fileName" htmlEscape="false" maxlength="255"  class=" form-control input-sm"/>
+			<span>文件类型:</span>
+				<form:select path="fileType"  class="form-control m-b">
+					<form:option value="" label=""/>
+					<form:options items="${fns:getDictList('work_full_execute_fileType')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+				</form:select>
+			<p></p>
+			<span>编制开始日期:</span>
+				<input id="startTime" name="startTime" type="text" maxlength="20" class="laydate-icondate form-control layer-date input-sm"
+					value="<fmt:formatDate value="${workFullExecute.startTime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+			<span>编制完成日期:</span>
+				<input id="endTime" name="endTime" type="text" maxlength="20" class="laydate-icondate form-control layer-date input-sm"
+					value="<fmt:formatDate value="${workFullExecute.endTime}" 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  class="sort-column index">序号</th>
+				<th  class="sort-column fileName">文件名称</th>
+				<th  class="sort-column fileType">文件类型</th>
+				<th  class="sort-column create">编制人</th>
+				<th  class="sort-column createDate">上传时间</th>
+				<th  class="sort-column status">当前状态</th>
+				<th  class="sort-column processInstanceId">流程追踪</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="workFullExecute" varStatus="index">
+			<tr>
+				<td>
+					${index.index+1}
+				</td>
+				<td>
+					<c:if test="${not empty workFullExecute.executeFile}">
+						<a href="${workFullExecute.executeFile.url}"><span title="${workFullExecute.fileName}">${fns:abbr(workFullExecute.fileName, 30)}</span></a>
+					</c:if>
+					<c:if test="${empty workFullExecute.executeFile}">
+						<span title="${workFullExecute.fileName}">${fns:abbr(workFullExecute.fileName, 30)}</span>
+					</c:if>
+				</td>
+				<td>
+					${fns:getDictLabel(workFullExecute.fileType, 'work_full_execute_fileType', '')}
+				</td>
+				<td>
+					${workFullExecute.executeFile.attachmentUser}
+				</td>
+				<td>
+					<fmt:formatDate value="${workFullExecute.executeFile.createDate}" pattern="yyyy-MM-dd"/>
+				</td>
+				<td>
+					${fns:getDictLabel(workFullExecute.status,'work_full_execute_status' ,'' )}
+				</td>
+				<td>
+					<c:if test="${! empty workFullExecute.processInstanceId}">
+						<shiro:hasPermission name="workfullexecute:workFullExecute:view">
+							<a href="javascript:void(0)" onclick="openDialogView('流程追踪', '${ctx}/workfullexecute/workFullExecute/getProcess?id=${workFullExecute.id}','80%','80%')" class="btn btn-info btn-xs" >流程追踪</a>
+						</shiro:hasPermission>
+					</c:if>
+					<c:if test="${empty workFullExecute.processInstanceId}">
+						<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('无流程信息',{icon:2})" class="btn btn-default btn-xs">流程追踪</a>
+					</c:if>
+				</td>
+				<td>
+					<shiro:hasPermission name="workfullexecute:workFullExecute:view">
+						<a href="javascript:void(0)" onclick="openDialogView('查看项目实施记录', '${ctx}/workfullexecute/workFullExecute/form?id=${workFullExecute.id}&dialog=view','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 225 - 0
src/main/webapp/webpage/modules/workfullexecute/workFullExecuteAudit.jsp

@@ -0,0 +1,225 @@
+<%@ 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;
+		$('#btnPresent').click(function () { 
+
+			$.ajax({
+	             url:"${ctx}/workfullexecute/workFullExecute/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);
+					}
+				}
+			});
+		});
+	</script>
+</head>
+
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workFullExecute"  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="${workFullExecute.act.status}" />
+			<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+				<tbody>
+				<tr>
+					<td class="width-15 active" rowspan="4"><label class="pull-right">文件信息:</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"></font>文件名:</label></td>
+					<td class="width-30">
+							${workFullExecute.fileName}
+					</td>
+					<td class="width-15 active"><label class="pull-right"></font>文件类型:</label></td>
+					<td class="width-30">
+							${fns:getDictLabel(workFullExecute.fileType,'work_full_execute_fileType','')}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">编制开始日期:</label></td>
+					<td class="width-30">
+						<fmt:formatDate value="${workFullExecute.startTime}" 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="${workFullExecute.endTime}" 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">
+						<div>
+							<div style="float:left; height: 100%; width: 100%; ">
+								<table id="listExecuteFile"  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:if test="${not empty workFullExecute.executeFile}">
+										<c:forEach items="${workFullExecute.executeFile}" var="exeFile" varStatus="varStatus">
+											<tr>
+												<%--<td>${varStatus.index+1}</td>--%>
+													<%--<td>${workFullExecute.executeFile.attachmentName}</td>--%>
+												<c:choose>
+													<c:when test="${fn:containsIgnoreCase(exeFile.attachmentName,'jpg')
+													   or fn:containsIgnoreCase(exeFile.attachmentName,'png')
+													   or fn:containsIgnoreCase(exeFile.attachmentName,'gif')
+													   or fn:containsIgnoreCase(exeFile.attachmentName,'jpeg')}">
+														<td><img src="${exeFile.url}" onclick="openDialogView(' ','${ctx}/sys/picturepreview/picturePreview?url=${exeFile.url}','860px','600px')" width="50" height="50" alt="${exeFile.attachmentName}"/></td>
+													</c:when>
+													<c:otherwise>
+														<c:choose>
+															<c:when test="${fn:containsIgnoreCase(exeFile.attachmentName,'pdf')}">
+																<td><a href="javascript:void(0)" onclick="preview('预览','${exeFile.url}','80%','80%','1')">
+																	<span title="${exeFile.attachmentName}">${fns:abbr(exeFile.attachmentName, 30)}</span>
+																</a></td>
+																<%--<td><a href="${workFullExecute.executeFile.url}"><span title="${workFullExecute.executeFile.attachmentName}">${fns:abbr(workFullExecute.executeFile.attachmentName, 14)}</span></a></td>--%>
+															</c:when>
+															<c:otherwise>
+																<td><a href="javascript:void(0)" onclick="preview('预览','${exeFile.url}','80%','80%')">
+																	<span title="${exeFile.attachmentName}">${fns:abbr(exeFile.attachmentName, 30)}</span>
+																</a></td>
+																<%--<td><a href="javascript:void(0)" onclick="openDialogViewPre('预览','${ctx}/previewController/previewUrl?fileUrl=${workFullExecute.executeFile.url}','80%','80%')"><span title="${workFullExecute.executeFile.attachmentName}">${fns:abbr(workFullExecute.executeFile.attachmentName, 14)}</span></a></td>--%>
+															</c:otherwise>
+														</c:choose>
+													</c:otherwise>
+												</c:choose>
+												<td>${exeFile.attachmentUser}</td>
+												<td><fmt:formatDate value="${exeFile.createDate}" pattern="yyyy-MM-dd"/></td>
+												<td>
+													<a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${exeFile.url}" class="btn btn-success btn-xs">下载</a>
+												</td>
+											</tr>
+										</c:forEach>
+									</c:if>
+								</table>
+							</div>
+						</div>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active" rowspan="2"><label class="pull-right">工作底稿:</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">底稿附件:</label></td>
+					<td class="width-40" colspan="3">
+						<div>
+							<div style="float:left; height: 100%; width: 100%; ">
+								<table id="listManuscriptFile"  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:if test="${not empty workFullExecute.manuscriptFile}">
+										<c:forEach items="${workFullExecute.manuscriptFile}" var="mFile" varStatus="varStatus">
+											<tr>
+												<%--<td>${varStatus.index + 1}</td>--%>
+													<%--<td>${workFullExecute.manuscriptFile.attachmentName}</td>--%>
+												<c:choose>
+													<c:when test="${fn:containsIgnoreCase(mFile.attachmentName,'jpg')
+													   or fn:containsIgnoreCase(mFile.attachmentName,'png')
+													   or fn:containsIgnoreCase(mFile.attachmentName,'gif')
+													   or fn:containsIgnoreCase(mFile.attachmentName,'jpeg')}">
+														<td><img src="${mFile.url}" onclick="openDialogView(' ','${ctx}/sys/picturepreview/picturePreview?url=${mFile.url}','860px','600px')" width="50" height="50" alt="${mFile.attachmentName}"/></td>
+													</c:when>
+													<c:otherwise>
+														<c:choose>
+															<c:when test="${fn:containsIgnoreCase(mFile.attachmentName,'pdf')}">
+																<td><a href="javascript:void(0)" onclick="preview('预览','${mFile.url}','80%','80%','1')">
+																	<span title="${mFile.attachmentName}">${fns:abbr(mFile.attachmentName, 30)}</span></a></td>
+															</c:when>
+															<c:otherwise>
+																<td><a href="javascript:void(0)" onclick="preview('预览','${mFile.url}','80%','80%')">
+																	<span title="${mFile.attachmentName}">${fns:abbr(mFile.attachmentName, 30)}</span>
+																</a></td>
+															</c:otherwise>
+														</c:choose>
+													</c:otherwise>
+												</c:choose>
+												<td>${mFile.attachmentUser}</td>
+												<td><fmt:formatDate value="${mFile.createDate}" pattern="yyyy-MM-dd"/></td>
+												<td>
+													<a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${mFile.url}" class="btn btn-success btn-xs">下载</a>
+												</td>
+											</tr>
+										</c:forEach>
+									</c:if>
+								</table>
+							</div>
+						</div>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active" rowspan="4"><label class="pull-right">项目及客户信息:</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"></font>项目编号:</label></td>
+					<td class="width-30">
+							${workFullManage.fullProjectNumber}
+					</td>
+					<td class="width-15 active"><label class="pull-right"></font>合同编号:</label></td>
+					<td class="width-30">
+							${workFullManage.contractId}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+					<td class="width-30" colspan="3">
+							${workFullManage.fullProjectName}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">业主单位:</label></td>
+					<td class="width-30" colspan="3">
+							${workFullManage.workClientInfo.name}
+					</td>
+				</tr>
+				<c:if test="${not empty status}">
+					<tr>
+						<td class="width-15 active" rowspan="2"><label class="pull-right">审批意见:</label></td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">意见:</label></td>
+						<td class="width-30" colspan="3">
+							<form:textarea path="act.comment" class="form-control " rows="3" maxlength="20"/>
+						</td>
+					</tr>
+				</c:if>
+
+				</tbody>
+			</table>
+
+
+
+		<act:flowChart procInsId="${workFullExecute.act.procInsId}"/>
+		<act:histoicFlow procInsId="${workFullExecute.act.procInsId}"/>
+	</form:form>
+</body>
+</html>

+ 130 - 0
src/main/webapp/webpage/modules/workfullexecute/workFullExecuteAuditHistory.jsp

@@ -0,0 +1,130 @@
+<%@ 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}/workfullexecute/workFullExecute/auditTodo?workFullManageId=${workFullExecute.workFullManageId}">待审核列表</a></li>--%>
+					<%--<li class="active"><a href="${ctx}/workfullexecute/workFullExecute/auditHistory?workFullManageId=${workFullExecute.workFullManageId}">已审核列表</a></li>--%>
+					<%--<li><a href="${ctx}/workfullexecute/workFullExecute/list?workFullManageId=${workFullExecute.workFullManageId}">项目实施列表</a></li>--%>
+				<%--</ul>--%>
+				<ul class="nav nav-tabs">
+					<li><a href="${ctx}/workfullexecute/workFullExecute/workfullmanageList">项目列表</a></li>
+					<li><a href="${ctx}/workfullexecute/workFullExecute/auditTodo">待审核列表</a></li>
+					<li  class="active"><a href="${ctx}/workfullexecute/workFullExecute/auditHistory">已审核列表</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;width: 10%">流程发起人</th>
+					<th style="text-align: center;width: 10%">流程名称</th>
+					<th style="text-align: center;width: 10%">流程版本</th>
+					<th style="text-align: center;width: 25%">项目实施</th>
+					<th style="text-align: center;width: 30%">所属项目</th>
+					<th style="text-align: center;width: 15%">流程发起时间</th>
+				</tr>
+				</thead>
+				<tbody>
+				<c:forEach items="${list}" var="workFullExecute">
+					<c:set var="task" value="${workFullExecute.act.task}" />
+					<c:set var="vars" value="${workFullExecute.act.vars}" />
+					<c:set var="procDef" value="${workFullExecute.act.procDef}" />
+					<c:set var="status" value="${workFullExecute.act.status}" />
+					<tr>
+						<td>${workFullExecute.act.vars.map.applyUserId}</td>
+						<td>${procDef.name}</td>
+						<td><b title='流程版本号'>V: ${procDef.version}</b></td>
+						<td>
+							<shiro:hasPermission name="workfullexecute:workFullExecute:view">
+								<a href="javascript:void(0)" onclick="openDialogView('查看项目实施', '${ctx}/workfullexecute/workFullExecute/form?id=${workFullExecute.id}&dialog=view','80%','80%')">
+									<span title="${workFullExecute.fileName}">${fns:abbr(workFullExecute.fileName, 30)}</span>
+								</a>
+							</shiro:hasPermission>
+						</td>
+						<td>
+							<a  href="javascript:void(0)" onclick="openDialogView('查看项目概况', '${ctx}/workfullmanage/workFullManage/form?id=${workFullExecute.workFullManage.id}&tabId=0','80%','80%')">
+								<span title="${workFullExecute.workFullManage.fullProjectName}">${fns:abbr(workFullExecute.workFullManage.fullProjectName, 30)}</span>
+							</a>
+						</td>
+						<td><fmt:formatDate value="${workFullExecute.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>

+ 231 - 0
src/main/webapp/webpage/modules/workfullexecute/workFullExecuteAuditTodo.jsp

@@ -0,0 +1,231 @@
+<%@ 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}/workfullexecute/workFullExecute/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}/workfullexecute/workFullExecute/auditTodo/';
+                }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中展示
+					var formId = inputForm.attr("id");
+                    if(formId){
+                        var $document = iframeWin.contentWindow.document;
+                        $document.getElementById("flag").setAttribute("value","yes");
+                        $document.getElementById(formId).setAttribute("action","${ctx}/workfullexecute/workFullExecute/saveAudit");
+                        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("flag").setAttribute("value","no");
+                        $document.getElementById(formId).setAttribute("action","${ctx}/workfullexecute/workFullExecute/saveAudit");
+                        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: false,opacity:0.1});
+                $($document.getElementById(inputForm)).ajaxSubmit({
+                    success:function(data) {
+                        top.layer.close(index);
+                        history.go(0);
+                        parent.layer.msg("审批完成!!!",{icon:6});
+                        parent.layer.close(loadingMessage);
+                    }
+                });
+            }
+        }
+	</script>
+</head>
+<body class="gray-bg">
+<div class="wrapper wrapper-content">
+	<div class="ibox">
+		<div class="ibox-title" style="height: 70px;">
+			<h5>
+				<%--<ul class="nav nav-tabs">--%>
+					<%--<li class="active"><a href="${ctx}/workfullexecute/workFullExecute/auditTodo?workFullManageId=${workFullExecute.workFullManageId}">待审核列表</a></li>--%>
+					<%--<li><a href="${ctx}/workfullexecute/workFullExecute/auditHistory?workFullManageId=${workFullExecute.workFullManageId}">已审核列表</a></li>--%>
+					<%--<li><a href="${ctx}/workfullexecute/workFullExecute/list?workFullManageId=${workFullExecute.workFullManageId}">项目实施列表</a></li>--%>
+				<%--</ul>--%>
+					<ul class="nav nav-tabs">
+						<li><a href="${ctx}/workfullexecute/workFullExecute/workfullmanageList">项目列表</a></li>
+						<li  class="active"><a href="${ctx}/workfullexecute/workFullExecute/auditTodo">待审核列表</a></li>
+						<li><a href="${ctx}/workfullexecute/workFullExecute/auditHistory">已审核列表</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}//workfullexecute/workFullExecute/auditTodo" method="get" class="form-inline">
+						<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+						<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+						<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+						<div class="form-group">
+							<label>创建时间:</label>
+							<input id="beginDate"  name="beginDate"  type="text" readonly="readonly" maxlength="20" style="width:200px;" class="laydate-icondate form-control layer-date input-sm"
+								   value="<fmt:formatDate value="${act.beginDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+							 -- 
+							<input id="endDate" name="endDate" type="text" readonly="readonly" maxlength="20" style="width:200px;" class="laydate-icondate form-control layer-date input-sm"
+								   value="<fmt:formatDate value="${act.endDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+						</div>
+					</form:form>
+					<br/>
+				</div>
+			</div>
+
+			<!-- 工具栏 -->
+			<div class="row">
+				<div class="col-sm-12">
+					<div class="pull-left">
+						<button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+					</div>
+					<div class="pull-right">
+						<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+						<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+					</div>
+				</div>
+			</div>
+			<!-- 表格 -->
+			<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+				<thead>
+				<tr>
+					<th style="text-align: center;width: 10%">流程发起人</th>
+					<th style="text-align: center;width: 10%">流程名称</th>
+					<th style="text-align: center;width: 10%">当前环节</th>
+					<th style="text-align: center;width: 10%">流程版本</th>
+					<th style="text-align: center;width: 15%">流程发起时间</th>
+					<th style="text-align: center;width: 30%">所属项目</th>
+					<th style="text-align: center;width: 10%">操作</th>
+				</tr>
+				</thead>
+				<tbody>
+				<c:forEach items="${list}" var="workFullExecute">
+					<c:set var="task" value="${workFullExecute.act.task}" />
+					<c:set var="vars" value="${workFullExecute.act.vars}" />
+					<c:set var="procDef" value="${workFullExecute.act.procDef}" />
+					<c:set var="status" value="${workFullExecute.act.status}" />
+					<tr>
+						<td>${workFullExecute.act.vars.map.applyUserId}</td>
+						<td>${procDef.name}</td>
+						<td>${task.name}</td>
+						<td><b title='流程版本号'>V: ${procDef.version}</b></td>
+						<td><fmt:formatDate value="${workFullExecute.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
+						<td>
+							<a  href="javascript:void(0)" onclick="openDialogView('查看项目概况', '${ctx}/workfullmanage/workFullManage/form?id=${workFullExecute.workFullManage.id}&tabId=0','80%','80%')">
+								<span title="${workFullExecute.workFullManage.fullProjectName}">${fns:abbr(workFullExecute.workFullManage.fullProjectName, 30)}</span>
+							</a>
+						<td>
+							<a href="javascript:void(0)" onclick="openDialogre('项目实施审核流程', '${ctx}/workfullexecute/workFullExecute/applyOnWorkFullExecute?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>
+						</td>
+					</tr>
+				</c:forEach>
+				</tbody>
+			</table>
+			<!-- 分页代码 -->
+			<table:page page="${page}"></table:page>
+			<br/>
+			<br/>
+		</div>
+	</div>
+</div>
+</body>
+</html>

+ 430 - 0
src/main/webapp/webpage/modules/workfullexecute/workFullExecuteForm.jsp

@@ -0,0 +1,430 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目实施记录管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+
+					laydate.render({
+			            elem: '#startTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+						type : 'datetime'
+			        });
+					laydate.render({
+			            elem: '#endTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+						type : 'datetime'
+			        });
+		});
+	</script>
+	<script type="text/javascript">
+		$(function () {
+            $("#execute_btn").click(function () {
+                var trLength = $("#file_attachment tr").length;
+                if(trLength>=1){
+                    top.layer.alert("项目实施文件只能上传一个,可以删除后重新上传",{icon:2});
+                    return;
+                }
+                $("#execute_file").click();
+            });
+			$("#manuscript_btn").click(function () {
+				$("#manuscript_file").click();
+            });
+        });
+
+
+        function execute_insertTitle(tValue){
+            var list = "${workFullExecute.executeFile}";
+            var size = (list.split('url')).length-1;
+            var files = $("#execute_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = $("#id").val();
+            var attachmentFlag = "2";
+            //console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workFullExecute/"+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 execute_del() {
+            $("#execute_file").val("");
+            $("#execute_title").text("");
+            $("#execute_delete").remove();
+            $("#execute_title_div").remove();
+        }
+        function manuscript_insertTitle(tValue){
+            var list = "${workFullExecute.manuscriptFile}";
+            var size = (list.split('url')).length-1;
+            var files = $("#manuscript_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = $("#id").val();
+            var attachmentFlag = "3";
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workFullExecute/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_manuscript_attachment";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+            /*$("#manuscript_title_div").remove();
+            var t1 = tValue.lastIndexOf("\\");
+            if(t1 >= 0 && t1 < tValue.length){
+                $("#manuscript_title").text(tValue.substring(t1+1));
+                $("#manuscript_title").after("<div id='manuscript_title_div' style='float: right'>&nbsp;&nbsp;<span id='execute_delete' onclick='manuscript_del()'style='color: red ; cursor: pointer;'>x</span></div>");
+            }*/
+        }
+        function manuscript_del() {
+            $("#manuscript_file").val("");
+            $("#manuscript_title").text("");
+            $("#manuscript_delete").remove();
+            $("#manuscript_title_div").remove();
+        }
+        function delFile(id,attaId,attachmentUrl,obj) {
+            var loadingMessage = parent.layer.load(0, {shade: [0.1,'#393d49']});
+            var tr = $(obj).parent().parent();
+            $.ajax({
+                type:'POST',
+                dataType:'json',
+                url:'${ctx}/workfullexecute/workFullExecute/delFile',
+                data:{"id":id,"attaId":attaId,"attachmentUrl":attachmentUrl},
+                cache:false,
+                success: function() {
+                    tr.remove();
+                    parent.layer.msg("删除成功!!!",{icon:6});
+                    parent.layer.close(loadingMessage);
+                },
+                error:function () {
+                    parent.layer.msg("删除失败!!!",{icon:3});
+                    parent.layer.close(loadingMessage);
+                }
+            });
+        }
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workFullExecute"  method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<form:hidden path="workFullManageId"/>
+		<input type="hidden" name="listpage" value="${listpage}"/>
+		<input type="hidden" value="${workFullManage.id}" id="workFullId">
+		<input type="hidden" value="${workFullManage.fullProjectStatus}" id="status">
+		<sys:message content="${message}"/>
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+			   <tr>
+				   <td class="width-15 active" rowspan="5"><label class="pull-right">文件信息:</label></td>
+			   </tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>文件名:</label></td>
+					<td class="width-30">
+						<form:input path="fileName" htmlEscape="false"    class="form-control required"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>文件类型:</label></td>
+					<td class="width-30">
+						<form:select path="fileType" class="form-control required">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getDictList('work_full_execute_fileType')}" 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-40" colspan="3">
+						<form:input path="fileTypeDeclare" 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="startTime" name="startTime" type="text" maxlength="20" class="laydate-icondate form-control layer-date "
+							value="<fmt:formatDate value="${workFullExecute.startTime}" 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="endTime" name="endTime" type="text" maxlength="20" class="laydate-icondate form-control layer-date "
+							value="<fmt:formatDate value="${workFullExecute.endTime}" 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">
+						<div>
+							<div style="float:left; height: 100%; width: 100%; ">
+								<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="execute_file" type="file" name="execute_file" style="display: none;" onChange="if(this.value)execute_insertTitle(this.value);"/>
+									<a id="execute_btn" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+									<span id="execute_title"></span>
+								</div>
+								<table id="listExecuteFile"  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:if test="${not empty workFullExecute.executeFile}">
+											<c:forEach items="${workFullExecute.executeFile}" var="exeFile" varStatus="varStatus">
+												<tr>
+													<%--<td>${varStatus.index+1}</td>--%>
+													<%--<td><span title="${exeFile.attachmentName}">${fns:abbr(exeFile.attachmentName, 20)}</span></td>--%>
+													<c:choose>
+														<c:when test="${fn:containsIgnoreCase(exeFile.attachmentName,'jpg')
+													   or fn:containsIgnoreCase(exeFile.attachmentName,'png')
+													   or fn:containsIgnoreCase(exeFile.attachmentName,'gif')
+													   or fn:containsIgnoreCase(exeFile.attachmentName,'jpeg')}">
+															<td><img src="${exeFile.url}" onclick="openDialogView(' ','${ctx}/sys/picturepreview/picturePreview?url=${exeFile.url}','860px','600px')" width="50" height="50" alt="${exeFile.attachmentName}"/></td>
+														</c:when>
+														<c:otherwise>
+															<c:choose>
+																<c:when test="${fn:containsIgnoreCase(exeFile.attachmentName,'pdf')}">
+																	<td><a href="javascript:void(0)" onclick="preview('预览','${exeFile.url}','80%','80%','1')">
+																		<span title="${exeFile.attachmentName}">${fns:abbr(exeFile.attachmentName, 30)}</span></a></td>
+																</c:when>
+																<c:otherwise>
+																	<td><a href="javascript:void(0)" onclick="preview('预览','${exeFile.url}','80%','80%')">
+																		<span title="${exeFile.attachmentName}">${fns:abbr(exeFile.attachmentName, 30)}</span>
+																	</a></td>
+																</c:otherwise>
+															</c:choose>
+														</c:otherwise>
+													</c:choose>
+													<td>${exeFile.attachmentUser}</td>
+													<td><fmt:formatDate value="${exeFile.createDate}" pattern="yyyy-MM-dd"/></td>
+													<td>
+														<a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${exeFile.url}" class="btn btn-success btn-xs">下载</a>
+														<a class="btn btn-danger btn-xs" href="javascript:void(0)" onclick="delFile('${workFullExecute.id}','${exeFile.id}','${exeFile.url}',this)">删除</a>
+													<%--<shiro:hasPermission name="workfullexecute:workFullExecute:delFile">--%>
+															<%--<a href="${ctx}/workfullexecute/workFullExecute/delFile?id=${workFullExecute.id}&attachmentFlag=2" onclick="return confirmx('确认要删除该实施文件吗?', this.href)" class="btn btn-danger btn-xs">删除</a>--%>
+														<%--</shiro:hasPermission>--%>
+													</td>
+												</tr>
+											</c:forEach>
+										</c:if>
+								</table>
+							</div>
+						</div>
+					</td>
+				</tr>
+			   <tr>
+				   <td class="width-15 active" rowspan="2"><label class="pull-right">工作底稿:</label></td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">底稿附件:</label></td>
+				   <td class="width-40" colspan="3">
+					   <div>
+						   <div style="float:left; height: 100%; width: 100%; ">
+							   <div style="display: inline-block">
+								   <div id="addFile_manuscript_attachment" style="display: none">
+									   <div>
+										   <span id="fileName_manuscript_attachment" ></span>
+										   <b><span id="baifenbi_manuscript_attachment" ></span></b>
+									   </div>
+									   <div>
+										   <div class="progress">
+											   <div id="jindutiao_manuscript_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+											   </div>
+										   </div>
+									   </div>
+								   </div>
+								   <input id="manuscript_file" type="file" name="manuscript_file" style="display: none;" onChange="if(this.value)manuscript_insertTitle(this.value);"/>
+								   <a id="manuscript_btn" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+								   <span id="manuscript_title"></span>
+							   </div>
+							   <table id="listManuscriptFile"  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_manuscript_attachment">
+									<c:if test="${not empty workFullExecute.manuscriptFile}">
+										<c:forEach items="${workFullExecute.manuscriptFile}" var="mFile" varStatus="varStatus">
+											<tr>
+												<%--<td>${varStatus.index + 1}</td>--%>
+												<%--<td><span title="${mFile.attachmentName}">${fns:abbr(mFile.attachmentName, 30)}</span></td>--%>
+												<c:choose>
+													<c:when test="${fn:containsIgnoreCase(mFile.attachmentName,'jpg')
+													   or fn:containsIgnoreCase(mFile.attachmentName,'png')
+													   or fn:containsIgnoreCase(mFile.attachmentName,'gif')
+													   or fn:containsIgnoreCase(mFile.attachmentName,'jpeg')}">
+														<td><img src="${mFile.url}" onclick="openDialogView(' ','${ctx}/sys/picturepreview/picturePreview?url=${mFile.url}','860px','600px')" width="50" height="50" alt="${mFile.attachmentName}"/></td>
+													</c:when>
+													<c:otherwise>
+														<c:choose>
+															<c:when test="${fn:containsIgnoreCase(mFile.attachmentName,'pdf')}">
+																<td><a href="javascript:void(0)" onclick="preview('预览','${mFile.url}','80%','80%','1')">
+																	<span title="${mFile.attachmentName}">${fns:abbr(mFile.attachmentName, 30)}</span></a></td>
+															</c:when>
+															<c:otherwise>
+																<td><a href="javascript:void(0)" onclick="preview('预览','${mFile.url}','80%','80%')">
+																	<span title="${mFile.attachmentName}">${fns:abbr(mFile.attachmentName, 30)}</span>
+																</a></td>
+															</c:otherwise>
+														</c:choose>
+													</c:otherwise>
+												</c:choose>
+												<td>${mFile.attachmentUser}</td>
+												<td><fmt:formatDate value="${mFile.createDate}" pattern="yyyy-MM-dd"/></td>
+												<td>
+													<a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${mFile.url}" class="btn btn-success btn-xs">下载</a>
+													<a class="btn btn-danger btn-xs" href="javascript:void(0)" onclick="delFile('${workFullExecute.id}','${mFile.id}','${mFile.url}',this)">删除</a>
+												<%--<shiro:hasPermission name="workfullexecute:workFullExecute:delFile">--%>
+														<%--<a href="${ctx}/workfullexecute/workFullExecute/delFile?id=${workFullExecute.id}&attachmentFlag=3" onclick="return confirmx('确认要删除该底稿吗?', this.href)" class="btn btn-danger btn-xs">删除</a>--%>
+													<%--</shiro:hasPermission>--%>
+												</td>
+											</tr>
+										</c:forEach>
+									</c:if>
+							   </table>
+						   </div>
+					   </div>
+				   </td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active" rowspan="5"><label class="pull-right">项目信息:</label></td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right"><font color="red">*</font>项目编号:</label></td>
+				   <td class="width-30">
+					   <input value="${workFullManage.fullProjectNumber}" htmlEscape="false"  readonly="readonly"  class="form-control required"/>
+				   </td>
+				   <td class="width-15 active"><label class="pull-right"></font>项目来源:</label></td>
+				   <td class="width-30">
+					   <input value="${fns:getDictLabel(workFullManage.fullProjectSource, 'full_project_source', '')}" htmlEscape="false" readonly="readonly"   class="form-control required"/>
+				   </td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+				   <td class="width-30" colspan="3">
+					   <input value="${workFullManage.fullProjectName}" htmlEscape="false" readonly="readonly"   class="form-control "/>
+				   </td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right"><font color="red">*</font>行业分类:</label></td>
+				   <td class="width-30">
+					   <input value="${fns:getDictLabel(workFullManage.fullIndustryType, 'full_industry_type', '')}" htmlEscape="false"  readonly="readonly"  class="form-control required"/>
+				   </td>
+				   <td class="width-15 active"><label class="pull-right"></font>结构类型:</label></td>
+				   <td class="width-30">
+					   <input value="${fns:getDictLabel(workFullManage.fullStructureType, 'full_structure_type', '')}" htmlEscape="false" readonly="readonly"   class="form-control required"/>
+				   </td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">投资额(元):</label></td>
+				   <td class="width-40">
+					   <input value="${workFullManage.fullInvestMoney}" htmlEscape="false" readonly="readonly"   class="form-control "/>
+				   </td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active" rowspan="5"><label class="pull-right">客户单位:</label></td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">业主单位:</label></td>
+				   <td class="width-30" colspan="3">
+					   <input value="${workFullManage.workClientInfo.name}" htmlEscape="false" readonly="readonly"   class="form-control "/>
+				   </td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">客户信用等级:</label></td>
+				   <td class="width-30">
+					   <input value="${workFullManage.workClientInfo.creditRank}" htmlEscape="false" readonly="readonly"   class="form-control "/>
+				   </td>
+				   <td class="width-15 active"><label class="pull-right">业主联系人:</label></td>
+				   <td class="width-30">
+					   <input value="${workFullManage.workClientInfo.workClientLinkman.name}" htmlEscape="false" readonly="readonly"   class="form-control "/>
+				   </td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">职务:</label></td>
+				   <td class="width-30">
+					   <input value="${workFullManage.workClientInfo.workClientLinkman.position}" htmlEscape="false" readonly="readonly"   class="form-control "/>
+				   </td>
+				   <td class="width-15 active"><label class="pull-right">联系方式:</label></td>
+				   <td class="width-30">
+					   <input value="${workFullManage.workClientInfo.workClientLinkman.linkPhone}" htmlEscape="false" readonly="readonly"   class="form-control "/>
+				   </td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">QQ:</label></td>
+				   <td class="width-30">
+					   <input value="${workFullManage.workClientInfo.workClientLinkman.qq}" htmlEscape="false" readonly="readonly"   class="form-control "/>
+				   </td>
+				   <td class="width-15 active"><label class="pull-right">Email:</label></td>
+				   <td class="width-30">
+					   <input value="${workFullManage.workClientInfo.workClientLinkman.email}" htmlEscape="false" readonly="readonly"   class="form-control "/>
+				   </td>
+			   </tr>
+				<tr>
+					<td class="width-15 active" rowspan="2"><label class="pull-right">部门安排:</label></td>
+				</tr>
+		   		<tr>
+					<td class="width-15 active"><label class="pull-right">主办公司/部门:</label></td>
+					<td class="width-30">
+						<input value="${workFullManage.hostCompany}" htmlEscape="false" readonly="readonly"   class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">协办公司/部门:</label></td>
+					<td class="width-30">
+						<input value="${workFullManage.followCompany}" htmlEscape="false" readonly="readonly"   class="form-control "/>
+					</td>
+				</tr>
+			   <tr>
+				   <td class="width-15 active" rowspan="3"><label class="pull-right">人员安排:</label></td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">主办公司/部门负责人:</label></td>
+				   <td class="width-30">
+					   <textarea htmlEscape="false" readonly="readonly"   class="form-control ">${workFullManage.hostMasterName}</textarea>
+				   </td>
+				   <td class="width-15 active"><label class="pull-right">主办公司/部门项目组成员:</label></td>
+				   <td class="width-30">
+					   <textarea htmlEscape="false" readonly="readonly"   class="form-control ">${workFullManage.hostMemberName}</textarea>
+				   </td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">协办公司/部门负责人:</label></td>
+				   <td class="width-30">
+					   <textarea htmlEscape="false" readonly="readonly"   class="form-control ">${workFullManage.followMasterName}</textarea>
+				   </td>
+				   <td class="width-15 active"><label class="pull-right">协办公司/部门项目组成员:</label></td>
+				   <td class="width-30">
+					   <textarea htmlEscape="false" readonly="readonly"   class="form-control ">${workFullManage.followMemberName}</textarea>
+				   </td>
+			   </tr>
+		   </tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 383 - 0
src/main/webapp/webpage/modules/workfullexecute/workFullExecuteList.jsp

@@ -0,0 +1,383 @@
+<%@ 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: '#startTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+	            event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'datetime'
+	        });
+			laydate.render({
+	            elem: '#endTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+	            event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'datetime'
+	        });
+		});
+	</script>
+	<script type="text/javascript">
+		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}/workfullexecute/workFullExecute/save?submit=submit");
+						formSubmit($document,formId,index);
+					}
+				},
+				cancel: 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}/workfullexecute/workFullExecute/save?submit=reapply");
+                        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}/workfullexecute/workFullExecute/save?submit=repeal");
+                        formSubmit($document,formId,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><a href="${ctx}/workfullexecute/workFullExecute/auditTodo?workFullManageId=${workFullExecute.workFullManageId}">待审核列表</a></li>--%>
+				<%--<li><a href="${ctx}/workfullexecute/workFullExecute/auditHistory?workFullManageId=${workFullExecute.workFullManageId}">已审核列表</a></li>--%>
+				<%--<li class="active"><a href="${ctx}/workfullexecute/workFullExecute/list?workFullManageId=${workFullExecute.workFullManageId}">项目实施列表</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 class="pull-right">
+			<c:choose>
+				<c:when test="${closeable eq 3}">
+					<a href="javascript:void(0)"  onclick="javascript:parent.layer.msg('无项目实施记录',{icon:2})" class="btn btn-default btn-rounded btn-xs">结束项目实施</a>
+				</c:when>
+				<c:otherwise>
+					<c:if test="${closeable eq 1}">
+						<a id="closeWorkFullExecute" href="${ctx}/workfullexecute/workFullExecute/closeWorkFullExecute?workFullManageId=${workFullExecute.workFullManageId}" onclick="return confirmx('确认要关闭项目实施吗?', this.href)"   class="btn btn-danger btn-rounded btn-outline btn-sm">结束项目实施</a>
+					</c:if>
+					<c:if test="${closeable eq 2}">
+						<a href="javascript:void(0)"  onclick="javascript:parent.layer.msg('项目实施已完成,无需重复关闭',{icon:2})" class="btn btn-default btn-rounded btn-xs">结束项目实施</a>
+					</c:if>
+					<c:if test="${closeable ne 1 and closeable ne 2}">
+						<a href="javascript:void(0)"  onclick="javascript:parent.layer.msg('部门负责人权限',{icon:2})" class="btn btn-default btn-rounded btn-xs">结束项目实施</a>
+					</c:if>
+				</c:otherwise>
+			</c:choose>
+			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="workFullExecute" action="${ctx}/workfullexecute/workFullExecute/list" 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}"/>
+		<input type="hidden" name="workFullManageId" value="${requestScope.workFullManageId}">
+		<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+		<div class="form-group">
+			<span>文件名:</span>
+				<form:input path="fileName" htmlEscape="false" maxlength="255"  class=" form-control input-sm"/>
+			<span>文件类型:</span>
+				<form:select path="fileType"  class="form-control m-b">
+					<form:option value="" label=""/>
+					<form:options items="${fns:getDictList('work_full_execute_fileType')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+				</form:select>
+			<p></p>
+			<span>编制开始日期:</span>
+				<input id="startTime" name="startTime" type="text" maxlength="20" class="laydate-icondate form-control layer-date input-sm"
+					value="<fmt:formatDate value="${workFullExecute.startTime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+			<span>编制完成日期:</span>
+				<input id="endTime" name="endTime" type="text" maxlength="20" class="laydate-icondate form-control layer-date input-sm"
+					value="<fmt:formatDate value="${workFullExecute.endTime}" 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">
+			<c:if test="${workFullManage.fullProjectStatus le 3 and workFullManage.fullProjectStatus ge 1}">
+				<shiro:hasPermission name="workfullexecute:workFullExecute:add">
+					<button onclick="openDialogre('新增项目实施', '${ctx}/workfullexecute/workFullExecute/form?workFullManageId=${workFullManageId}&dialog=add','80%','80%')"
+							class="btn btn-white btn-sm" title="添加"><i class="fa fa-plus">添加</i></button>
+				</shiro:hasPermission>
+			</c:if>
+	       <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: 20%"  class="sort-column a.file_name">文件名称</th>
+				<th style="text-align: center;width: 10%"  class="sort-column a.file_type">文件类型</th>
+				<th style="text-align: center;width: 10%"  class="sort-column a.create_by">编制人</th>
+				<th style="text-align: center;width: 10%"  class="sort-column a.create_date">上传时间</th>
+				<th style="text-align: center;width: 10%"  class="sort-column a.status">当前状态</th>
+				<th style="text-align: center;width: 10%">流程追踪</th>
+				<th style="text-align: center;width: 20%">操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="workFullExecute" varStatus="index">
+			<tr>
+				<td>
+					${index.index+1}
+				</td>
+				<td>
+					<c:if test="${not empty workFullExecute.exeFile}">
+						<a href="javascript:void(0)" onclick="preview('预览','${workFullExecute.exeFile.url}','80%','80%')">
+							<span title="${workFullExecute.fileName}">${fns:abbr(workFullExecute.fileName, 30)}</span>
+						</a>
+					</c:if>
+					<c:if test="${empty workFullExecute.exeFile}">
+						<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('没有实施文件',{icon:6})">
+							<span title="${workFullExecute.fileName}">${fns:abbr(workFullExecute.fileName, 30)}</span>
+						</a>
+					</c:if>
+				</td>
+				<td>
+					${fns:getDictLabel(workFullExecute.fileType, 'work_full_execute_fileType', '')}
+				</td>
+				<td>
+					${workFullExecute.exeFile.attachmentUser}
+				</td>
+				<td>
+					<fmt:formatDate value="${workFullExecute.exeFile.createDate}" pattern="yyyy-MM-dd"/>
+				</td>
+				<td>
+					${fns:getDictLabel(workFullExecute.status,'work_full_execute_status' ,'' )}
+				</td>
+				<td>
+					<div style="text-align: center">
+					<c:if test="${! empty workFullExecute.processInstanceId}">
+						<shiro:hasPermission name="workfullexecute:workFullExecute:view">
+							<a href="javascript:void(0)" onclick="openDialogView('流程追踪', '${ctx}/workfullexecute/workFullExecute/getProcess?id=${workFullExecute.id}','80%','80%')" class="btn btn-info btn-xs" >流程追踪</a>
+						</shiro:hasPermission>
+					</c:if>
+					<c:if test="${empty workFullExecute.processInstanceId}">
+						<c:choose>
+							<c:when test="${workFullExecute.status == 2}">
+								<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('项目负责人创建,无需审核',{icon:2})" class="btn btn-default btn-xs">流程追踪</a>
+							</c:when>
+							<c:otherwise>
+								<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('无流程信息',{icon:2})" class="btn btn-default btn-xs">流程追踪</a>
+							</c:otherwise>
+						</c:choose>
+					</c:if>
+					</div>
+				</td>
+				<td>
+					<div style="text-align: center">
+					<!--0暂存,1审核中,2已通过,3未通过,4已撤回-->
+					<shiro:hasPermission name="workfullexecute:workFullExecute:view">
+						<a href="javascript:void(0)" onclick="openDialogView('查看项目实施记录', '${ctx}/workfullexecute/workFullExecute/form?id=${workFullExecute.id}&dialog=view','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i>查看</a>
+					</shiro:hasPermission>
+					<!--修改:实施记录创建人权限,未通过可以修改;未通过的修改可以重新申请或撤回-->
+					<c:if test="${workFullExecute.status == 0 || workFullExecute.status == 3}">
+						<shiro:hasPermission name="workfullexecute:workFullExecute:edit">
+							<c:choose>
+								<c:when test="${fn:contains(workFullExecute.createBy.id, fns:getUser())}">
+									<c:if test="${workFullExecute.status == 0 }">
+										<a href="javascript:void(0)" onclick="openDialogre('修改项目实施', '${ctx}/workfullexecute/workFullExecute/form?id=${workFullExecute.id}&dialog=edit','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i>修改</a>
+									</c:if>
+									<c:if test="${workFullExecute.status == 3 && workFullExecute.processEnded}"><%--流程未结束是true--%>
+										<a href="javascript:void(0)" onclick="openDialogreReapply('修改项目实施', '${ctx}/workfullexecute/workFullExecute/form?id=${workFullExecute.id}&dialog=edit','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i>修改</a>
+									</c:if>
+									<c:if test="${workFullExecute.status == 3 && !workFullExecute.processEnded}"><%--已结束--%>
+										<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:if>
+								</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>
+						</shiro:hasPermission>
+					</c:if>
+					<c:if test="${workFullExecute.status ==1}">
+						<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:if>
+					<c:if test="${workFullExecute.status ==2}">
+						<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:if>
+					<c:if test="${workFullExecute.status ==4}">
+						<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:if>
+					<%-- 删除:项目创建人、项目经理权限;当项目竣工后,只有所属项目经理可删除--%>
+					<shiro:hasPermission name="workfullexecute:workFullExecute:del">
+						<c:choose>
+							<c:when test="${fn:contains(workFullManage.hostMaster, fns:getUser()) or workFullManage.createBy.id == fns:getUser()}">
+								<c:if test="${workFullManage.fullProjectStatus le 3 and workFullManage.fullProjectStatus ge 1}">
+									<a href="${ctx}/workfullexecute/workFullExecute/delete?id=${workFullExecute.id}" onclick="return confirmx('确认要删除该项目实施记录吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i>删除</a>
+								</c:if>
+								<c:if test="${workFullManage.fullProjectStatus ge 4}">
+									<c:choose>
+										<c:when test="${fn:contains(workFullManage.hostMaster, fns:getUser())}">
+											<a href="${ctx}/workfullexecute/workFullExecute/delete?id=${workFullExecute.id}" onclick="return confirmx('确认要删除该项目实施记录吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i>删除</a>
+										</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-trash"></i>删除</a>
+										</c:otherwise>
+									</c:choose>
+								</c:if>
+							</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-trash"></i>删除</a>
+							</c:otherwise>
+						</c:choose>
+					</shiro:hasPermission>
+					</div>
+				</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/workfullexecute/workFullExecuteTask.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>
+

+ 258 - 0
src/main/webapp/webpage/modules/workfullexecute/workFullExecuteView.jsp

@@ -0,0 +1,258 @@
+<%@ 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="hideScroll">
+<form:form id="inputForm" modelAttribute="workFullExecute" class="form-horizontal">
+	<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		<tbody>
+		<tr>
+			<td class="width-15 active" rowspan="5"><label class="pull-right">文件信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="pull-right"></font>文件名:</label></td>
+			<td class="width-30">
+				${workFullExecute.fileName}
+			</td>
+			<td class="width-15 active"><label class="pull-right"></font>文件类型:</label></td>
+			<td class="width-30">
+				${fns:getDictLabel(workFullExecute.fileType,'work_full_execute_fileType','')}
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="pull-right">文件类型说明:</label></td>
+			<td class="width-40" colspan="3">
+				${workFullExecute.fileTypeDeclare}
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="pull-right">编制开始日期:</label></td>
+			<td class="width-30">
+				<fmt:formatDate value="${workFullExecute.startTime}" 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="${workFullExecute.endTime}" 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">
+				<div>
+					<div style="float:left; height: 100%; width: 100%; ">
+						<table id="listExecuteFile"  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:if test="${not empty workFullExecute.executeFile}">
+									<c:forEach items="${workFullExecute.executeFile}" var="exeFile" varStatus="varStatus">
+										<tr>
+											<%--<td>${varStatus.index+1}</td>--%>
+												<%--<td>${workFullExecute.executeFile.attachmentName}</td>--%>
+											<c:choose>
+												<c:when test="${fn:containsIgnoreCase(exeFile.attachmentName,'jpg')
+													   or fn:containsIgnoreCase(exeFile.attachmentName,'png')
+													   or fn:containsIgnoreCase(exeFile.attachmentName,'gif')
+													   or fn:containsIgnoreCase(exeFile.attachmentName,'jpeg')}">
+													<td><img src="${exeFile.url}" onclick="openDialogView(' ','${ctx}/sys/picturepreview/picturePreview?url=${exeFile.url}','860px','600px')" width="50" height="50" alt="${exeFile.attachmentName}"/></td>
+												</c:when>
+												<c:otherwise>
+													<c:choose>
+														<c:when test="${fn:containsIgnoreCase(exeFile.attachmentName,'pdf')}">
+															<td><a href="javascript:void(0)" onclick="preview('预览','${exeFile.url}','80%','80%','1')">
+																<span title="${exeFile.attachmentName}">${fns:abbr(exeFile.attachmentName, 30)}</span>
+															</a></td>
+															<%--<td><a href="${workFullExecute.executeFile.url}"><span title="${workFullExecute.executeFile.attachmentName}">${fns:abbr(workFullExecute.executeFile.attachmentName, 14)}</span></a></td>--%>
+														</c:when>
+														<c:otherwise>
+															<td><a href="javascript:void(0)" onclick="preview('预览','${exeFile.url}','80%','80%')">
+																<span title="${exeFile.attachmentName}">${fns:abbr(exeFile.attachmentName, 30)}</span>
+															</a></td>
+															<%--<td><a href="javascript:void(0)" onclick="openDialogViewPre('预览','${ctx}/previewController/previewUrl?fileUrl=${workFullExecute.executeFile.url}','80%','80%')"><span title="${workFullExecute.executeFile.attachmentName}">${fns:abbr(workFullExecute.executeFile.attachmentName, 14)}</span></a></td>--%>
+														</c:otherwise>
+													</c:choose>
+												</c:otherwise>
+											</c:choose>
+											<td>${exeFile.attachmentUser}</td>
+											<td><fmt:formatDate value="${exeFile.createDate}" pattern="yyyy-MM-dd"/></td>
+											<td>
+												<a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${exeFile.url}" class="btn btn-success btn-xs">下载</a>
+											</td>
+										</tr>
+									</c:forEach>
+								</c:if>
+						</table>
+					</div>
+				</div>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active" rowspan="2"><label class="pull-right">工作底稿:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="pull-right">底稿附件:</label></td>
+			<td class="width-40" colspan="3">
+				<div>
+					<div style="float:left; height: 100%; width: 100%; ">
+						<table id="listManuscriptFile"  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:if test="${not empty workFullExecute.manuscriptFile}">
+								<c:forEach items="${workFullExecute.manuscriptFile}" var="mFile" varStatus="varStatus">
+									<tr>
+										<%--<td>${varStatus.index + 1}</td>--%>
+											<%--<td>${workFullExecute.manuscriptFile.attachmentName}</td>--%>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(mFile.attachmentName,'jpg')
+													   or fn:containsIgnoreCase(mFile.attachmentName,'png')
+													   or fn:containsIgnoreCase(mFile.attachmentName,'gif')
+													   or fn:containsIgnoreCase(mFile.attachmentName,'jpeg')}">
+												<td><img src="${mFile.url}" onclick="openDialogView(' ','${ctx}/sys/picturepreview/picturePreview?url=${mFile.url}','860px','600px')" width="50" height="50" alt="${mFile.attachmentName}"/></td>
+											</c:when>
+											<c:otherwise>
+												<c:choose>
+													<c:when test="${fn:containsIgnoreCase(mFile.attachmentName,'pdf')}">
+														<td><a href="javascript:void(0)" onclick="preview('预览','${mFile.url}','80%','80%','1')">
+															<span title="${mFile.attachmentName}">${fns:abbr(mFile.attachmentName, 30)}</span></a></td>
+													</c:when>
+													<c:otherwise>
+														<td><a href="javascript:void(0)" onclick="preview('预览','${mFile.url}','80%','80%')">
+															<span title="${mFile.attachmentName}">${fns:abbr(mFile.attachmentName, 30)}</span>
+														</a></td>
+													</c:otherwise>
+												</c:choose>
+											</c:otherwise>
+										</c:choose>
+										<td>${mFile.attachmentUser}</td>
+										<td><fmt:formatDate value="${mFile.createDate}" pattern="yyyy-MM-dd"/></td>
+										<td>
+											<a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${mFile.url}" class="btn btn-success btn-xs">下载</a>
+										</td>
+									</tr>
+								</c:forEach>
+							</c:if>
+						</table>
+					</div>
+				</div>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active" rowspan="5"><label class="pull-right">项目信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="pull-right"></font>项目编号:</label></td>
+			<td class="width-30">
+				${workFullManage.fullProjectNumber}
+			</td>
+			<td class="width-15 active"><label class="pull-right"></font>项目来源:</label></td>
+			<td class="width-30">
+					${fns:getDictLabel(workFullManage.fullProjectSource, 'full_project_source', '')}
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+			<td class="width-30" colspan="3">
+				${workFullManage.fullProjectName}
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="pull-right"></font>行业分类:</label></td>
+			<td class="width-30">
+					${fns:getDictLabel(workFullManage.fullIndustryType, 'full_industry_type', '')}
+			</td>
+			<td class="width-15 active"><label class="pull-right"></font>结构类型:</label></td>
+			<td class="width-30">
+					${fns:getDictLabel(workFullManage.fullStructureType, 'full_structure_type', '')}
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="pull-right">投资额(元):</label></td>
+			<td class="width-40">
+				${workFullManage.fullInvestMoney}
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active" rowspan="5"><label class="pull-right">客户单位:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="pull-right">业主单位:</label></td>
+			<td class="width-30" colspan="3">
+				${workFullManage.workClientInfo.name}
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="pull-right">客户信用等级:</label></td>
+			<td class="width-30">
+				${workFullManage.workClientInfo.creditRank}
+			</td>
+			<td class="width-15 active"><label class="pull-right">业主联系人:</label></td>
+			<td class="width-30">
+				${workFullManage.workClientInfo.workClientLinkman.name}
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="pull-right">职务:</label></td>
+			<td class="width-30">
+				${workFullManage.workClientInfo.workClientLinkman.position}
+			</td>
+			<td class="width-15 active"><label class="pull-right">联系方式:</label></td>
+			<td class="width-30">
+				${workFullManage.workClientInfo.workClientLinkman.linkPhone}
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="pull-right">QQ:</label></td>
+			<td class="width-30">
+				${workFullManage.workClientInfo.workClientLinkman.qq}
+			</td>
+			<td class="width-15 active"><label class="pull-right">Email:</label></td>
+			<td class="width-30">
+				${workFullManage.workClientInfo.workClientLinkman.email}
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active" rowspan="2"><label class="pull-right">部门安排:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="pull-right">主办公司/部门:</label></td>
+			<td class="width-30">
+				${workFullManage.hostCompany}
+			</td>
+			<td class="width-15 active"><label class="pull-right">协办公司/部门:</label></td>
+			<td class="width-30">
+				${workFullManage.followCompany}
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active" rowspan="3"><label class="pull-right">人员安排:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="pull-right">主办公司/部门负责人:</label></td>
+			<td class="width-30">
+				${workFullManage.hostMasterName}
+			</td>
+			<td class="width-15 active"><label class="pull-right">主办公司/部门项目组成员:</label></td>
+			<td class="width-30">
+				${workFullManage.hostMemberName}
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="pull-right">协办公司/部门负责人:</label></td>
+			<td class="width-30">
+				${workFullManage.followMasterName}
+			</td>
+			<td class="width-15 active"><label class="pull-right">协办公司/部门项目组成员:</label></td>
+			<td class="width-30">
+				${workFullManage.followMemberName}
+			</td>
+		</tr>
+		</tbody>
+	</table>
+</form:form>
+</body>
+</html>

+ 218 - 0
src/main/webapp/webpage/modules/workfullexecute/workfullmanageList.jsp

@@ -0,0 +1,218 @@
+<%@ 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">
+        $(function(){
+            $("#treeTable").treeTable({expandLevel : 2,column:1}).show();
+        });
+        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}/workfullexecute/workFullExecute/save?submit=submit");
+                        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) {
+                        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}/workfullexecute/workFullExecute/workfullmanageList">项目列表</a></li>
+				<li><a href="${ctx}/workfullexecute/workFullExecute/auditTodo">待审核列表</a></li>
+				<li><a href="${ctx}/workfullexecute/workFullExecute/auditHistory">已审核列表</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="workFullManage" action="${ctx}/workfullexecute/workFullExecute/workfullmanageList" method="post" class="form-inline">
+		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+		<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+		<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+		<a href="#" id="moresee" class="fa fa-chevron-down" style="float: right;">更多</a>
+		<div class="form-group">
+			<label>项目编号:</label>
+			<form:input path="fullProjectNumber" htmlEscape="false"    class="form-control required"/>
+			<label>项目名称:</label>
+			<form:input path="fullProjectName" htmlEscape="false"    class="form-control required"/>
+		</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="treeTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<%--<th> <input type="hidden" class="i-checks"></th>--%>
+				<th style="text-align: center;">序号</th>
+				<th style="text-align: center;"  class="sort-column fullProjectNumber">项目编号</th>
+				<th style="text-align: center;"  class="sort-column fullProjectName">项目名称</th>
+				<th style="text-align: center;"  class="sort-column ciName">客户单位</th>
+				<th style="text-align: center;">项目负责人</th>
+				<th style="text-align: center;"  class="sort-column createDate">创建日期</th>
+				<th style="text-align: center;"  class="sort-column fullProjectStatus">项目状态</th>
+				<th style="text-align: center;">项目实施</th>
+				<th style="text-align: center;">操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="workFullManage" varStatus="index">
+			<tr id="${workFullManage.id}" pId="${workFullManage.totalFullId ne '1'?workFullManage.totalFullId:'0'}">
+				<%--<td> <input type="hidden" id="${workFullManage.id}" class="i-checks"></td>--%>
+				<td>${index.index +1}</td>
+				<td>
+					<span title="${workFullManage.fullProjectNumber}">${fns:abbr(workFullManage.fullProjectNumber, 30)}</span>
+				</td>
+				<td>
+					<a  href="javascript:void(0)" onclick="openDialogView('查看项目登记', '${ctx}/workfullmanage/workFullManage/form?id=${workFullManage.id}&tabId=0','80%','80%')">
+						<span title="${workFullManage.fullProjectName}">${fns:abbr(workFullManage.fullProjectName, 30)}</span>
+					</a>
+				</td>
+				<td>
+					<span title="${workFullManage.ciName}">${fns:abbr(workFullManage.ciName, 30)}</span>
+				</td>
+				<td>
+					<span title="${workFullManage.hostMasterName}">${fns:abbr(workFullManage.hostMasterName, 30)}</span>
+				</td>
+				<td>
+					<fmt:formatDate value="${workFullManage.createDate}" pattern="yyyy-MM-dd"/>
+				</td>
+				<td>
+					${fns:getDictLabel(workFullManage.fullProjectStatus,'full_project_status' ,'' )}
+				</td>
+				<td>
+					<div style="text-align: center">
+					<c:choose>
+						<c:when test="${workFullManage.fullProjectStatus ge 1 and workFullManage.fullProjectStatus le 3}">
+							<shiro:hasPermission name="workfullexecute:workFullExecute:add">
+								<a href="javascript:void(0)" onclick="openDialogre('新增项目实施', '${ctx}/workfullexecute/workFullExecute/form?workFullManageId=${workFullManage.id}&dialog=add&listpage=workfullmanageList','80%','80%')" class="btn btn-info btn-xs" >常规实施</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">项目实施</a>
+						</c:otherwise>
+					</c:choose>
+					</div>
+				</td>
+				<td>
+					<div style="text-align: center">
+					<shiro:hasPermission name="workfullexecute:workFullExecute:list">
+						<a href="javascript:void(0)" onclick="openDialogView('项目实施列表','${ctx}/workfullexecute/workFullExecute/list?workFullManageId=${workFullManage.id}','80%','80%')" class="btn btn-info btn-xs">项目实施列表</a>
+					</shiro:hasPermission>
+					</div>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 805 - 0
src/main/webapp/webpage/modules/workfullmanage/projectPre.jsp

@@ -0,0 +1,805 @@
+<%@ 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">
+		.table{
+			margin-bottom: 0px;
+		}
+	</style>
+	<script type="text/javascript">
+		$(function(){
+            $("#attachment_btn_qiye18").click(function () {
+                $("#attachment_file_qiye18").click();
+            });
+            $("#attachment_btn_qiye19").click(function () {
+                $("#attachment_file_qiye19").click();
+            });
+            $("#attachment_btn_qiye20").click(function () {
+                $("#attachment_file_qiye20").click();
+            });
+            $("#attachment_btn_qiye21").click(function () {
+                $("#attachment_file_qiye21").click();
+            });
+            $("#attachment_btn_qiye22").click(function () {
+                $("#attachment_file_qiye22").click();
+            });
+            $("#attachment_btn_qiye23").click(function () {
+                $("#attachment_file_qiye23").click();
+            });
+            $("#attachment_btn_qiye24").click(function () {
+                $("#attachment_file_qiye24").click();
+            });
+            $("#attachment_btn_qiye25").click(function () {
+                $("#attachment_file_qiye25").click();
+            });
+            $("#attachment_btn_qiye26").click(function () {
+                $("#attachment_file_qiye26").click();
+            });
+            $("#attachment_btn_qiye27").click(function () {
+                $("#attachment_file_qiye27").click();
+            });
+            $("#attachment_btn_qiye28").click(function () {
+                $("#attachment_file_qiye28").click();
+            });
+            $("#attachment_btn_qiye29").click(function () {
+                $("#attachment_file_qiye29").click();
+            });
+            $("#attachment_btn_qiye30").click(function () {
+                $("#attachment_file_qiye30").click();
+            });
+            $("#attachment_btn_qiye31").click(function () {
+                $("#attachment_file_qiye31").click();
+            });
+            $("#attachment_btn_qiye32").click(function () {
+                $("#attachment_file_qiye32").click();
+            });
+            $("#attachment_btn_qiye33").click(function () {
+                $("#attachment_file_qiye33").click();
+            });
+            $("#attachment_btn_qiye34").click(function () {
+                $("#attachment_file_qiye34").click();
+            });
+            var oneSize = $(".oneTab").size();
+            for(var i = 0;i < oneSize;i++){
+                var hei = $(".twoTab:eq("+i+")").parent().height();
+                $(".oneTab:eq("+i+")").css("height",hei)
+                    .css("vertical-align","middle")
+                    .css("line-height",hei+"px")
+                $(".twoTab:eq("+i+")").css("height",hei);
+            }
+		})
+        function insertTitle(tValue){
+            var fileId = $(tValue).attr("id");
+            var divId = fileId.replace("attachment_file","");
+            var attachmentFlag = divId.replace("_qiye","");
+            var files = $("#attachment_file"+divId)[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "${workFullManage.id}";
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workFullManage/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,"0");}
+        }
+
+	</script>
+</head>
+<body class="hideScroll">
+<div class="wrapper wrapper-content">
+	<div class="ibox">
+		<div class="ibox-content">
+			<div class="col-sm-12">
+				<div class="col-sm-2 gray-bg text-center oneTab">
+					<label>初步设计</label>
+				</div>
+				<div class="col-sm-10 " >
+					<!-- 表格 -->
+					<table class="table table-striped table-bordered table-hover table-condensed dataTables-example twoTab">
+						<thead>
+							<tr>
+								<th>序号</th>
+								<th>文件类型</th>
+								<th>附件表</th>
+								<th>上传附件</th>
+							</tr>
+						</thead>
+						<tbody>
+							<tr>
+								<td>1</td>
+								<td>工程量清单编著</td>
+								<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=18','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+								<td>
+									<div style="display: inline-block">
+										<div id="addFile_qiye18" style="display: none">
+											<span id="fileName_qiye18" ></span>
+											<b><span id="baifenbi_qiye18" ></span></b>
+											<div class="progress">
+												<div id="jindutiao_qiye18" class="progress-bar" style="width: 0%" aria-valuenow="0">
+												</div>
+											</div>
+										</div>
+										<input id="attachment_file_qiye18" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this);"/>
+										<a id="attachment_btn_qiye18" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+										<span id="attachment_title_qiye18"></span>
+									</div>
+									<%--<div class="table-responsive">
+										<div class="kv-main">
+											<form enctype="multipart/form-data">
+												<input type="hidden" id="file_root0">
+												<input type="hidden" id="file_name0">
+												<input type="hidden" id="file_type0" value="18">
+												<div class="form-group" style="margin-left: 0; margin-right: 0;">
+													<input id="file-qiye0" name="myFile" type="file" class="file">
+												</div>
+											</form>
+										</div>
+									</div>--%>
+								</td>
+							</tr>
+							<tr>
+								<td>2</td>
+								<td>其他</td>
+								<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=19','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+								<td>
+									<div style="display: inline-block">
+										<div id="addFile_qiye19" style="display: none">
+											<span id="fileName_qiye19" ></span>
+											<b><span id="baifenbi_qiye19" ></span></b>
+											<div class="progress">
+												<div id="jindutiao_qiye19" class="progress-bar" style="width: 0%" aria-valuenow="0">
+												</div>
+											</div>
+										</div>
+										<input id="attachment_file_qiye19" type="file" name="attachment_file" style="display: none;" onChange="if(this.value)insertTitle(this);"/>
+										<a id="attachment_btn_qiye19" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+										<span id="attachment_title_qiye19"></span>
+									</div>
+									<%--<div class="table-responsive">
+										<div class="kv-main">
+											<form enctype="multipart/form-data">
+												<input type="hidden" id="file_root1">
+												<input type="hidden" id="file_name1">
+												<input type="hidden" id="file_type1" value="19">
+												<div class="form-group" style="margin-left: 0; margin-right: 0;">
+													<input id="file-qiye1" name="myFile" type="file" class="file">
+												</div>
+											</form>
+										</div>
+									</div>--%>
+								</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-striped table-bordered table-hover table-condensed dataTables-example twoTab">
+						<thead>
+						<tr>
+							<th>序号</th>
+							<th>文件类型</th>
+							<th>附件表</th>
+							<th>上传附件</th>
+						</tr>
+						</thead>
+						<tbody>
+						<tr>
+							<td>1</td>
+							<td>建设项目施工图预算</td>
+							<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=20','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+							<td>
+								<div style="display: inline-block">
+									<div id="addFile_qiye20" style="display: none">
+										<span id="fileName_qiye20" ></span>
+										<b><span id="baifenbi_qiye20" ></span></b>
+										<div class="progress">
+											<div id="jindutiao_qiye20" class="progress-bar" style="width: 0%" aria-valuenow="0">
+											</div>
+										</div>
+									</div>
+									<input id="attachment_file_qiye20" type="file" name="attachment_file" style="display: none;" onChange="if(this.value)insertTitle(this);"/>
+									<a id="attachment_btn_qiye20" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+									<span id="attachment_title_qiye20"></span>
+								</div>
+								<%--<div class="table-responsive">
+									<div class="kv-main">
+										<form enctype="multipart/form-data">
+											<input type="hidden" id="file_root2">
+											<input type="hidden" id="file_name2">
+											<input type="hidden" id="file_type2" value="20">
+											<div class="form-group" style="margin-left: 0; margin-right: 0;">
+												<input id="file-qiye2" name="myFile" type="file" class="file">
+											</div>
+										</form>
+									</div>
+								</div>--%>
+							</td>
+						</tr>
+						<tr>
+							<td>2</td>
+							<td>工程量清单编制</td>
+							<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=21','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+							<td>
+								<div style="display: inline-block">
+									<div id="addFile_qiye21" style="display: none">
+										<span id="fileName_qiye21" ></span>
+										<b><span id="baifenbi_qiye21" ></span></b>
+										<div class="progress">
+											<div id="jindutiao_qiye21" class="progress-bar" style="width: 0%" aria-valuenow="0">
+											</div>
+										</div>
+									</div>
+									<input id="attachment_file_qiye21" type="file" name="attachment_file" style="display: none;" onChange="if(this.value)insertTitle(this);"/>
+									<a id="attachment_btn_qiye21" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+									<span id="attachment_title_qiye21"></span>
+								</div>
+								<%--<div class="table-responsive">
+									<div class="kv-main">
+										<form enctype="multipart/form-data">
+											<input type="hidden" id="file_root3">
+											<input type="hidden" id="file_name3">
+											<input type="hidden" id="file_type3" value="21">
+											<div class="form-group" style="margin-left: 0; margin-right: 0;">
+												<input id="file-qiye3" name="myFile" type="file" class="file">
+											</div>
+										</form>
+									</div>
+								</div>--%>
+							</td>
+						</tr>
+						<tr>
+							<td>3</td>
+							<td>钢筋翻样</td>
+							<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=22','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+							<td>
+								<div style="display: inline-block">
+									<div id="addFile_qiye22" style="display: none">
+										<span id="fileName_qiye22" ></span>
+										<b><span id="baifenbi_qiye22" ></span></b>
+										<div class="progress">
+											<div id="jindutiao_qiye22" class="progress-bar" style="width: 0%" aria-valuenow="0">
+											</div>
+										</div>
+									</div>
+									<input id="attachment_file_qiye22" type="file" name="attachment_file" style="display: none;" onChange="if(this.value)insertTitle(this);"/>
+									<a id="attachment_btn_qiye22" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+									<span id="attachment_title_qiye22"></span>
+								</div>
+								<%--<div class="table-responsive">
+									<div class="kv-main">
+										<form enctype="multipart/form-data">
+											<input type="hidden" id="file_root4">
+											<input type="hidden" id="file_name4">
+											<input type="hidden" id="file_type4" value="22">
+											<div class="form-group" style="margin-left: 0; margin-right: 0;">
+												<input id="file-qiye4" name="myFile" type="file" class="file">
+											</div>
+										</form>
+									</div>
+								</div>--%>
+							</td>
+						</tr>
+						<tr>
+							<td>4</td>
+							<td>工程量计算</td>
+							<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=23','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+							<td>
+								<div style="display: inline-block">
+									<div id="addFile_qiye23" style="display: none">
+										<span id="fileName_qiye23" ></span>
+										<b><span id="baifenbi_qiye23" ></span></b>
+										<div class="progress">
+											<div id="jindutiao_qiye23" class="progress-bar" style="width: 0%" aria-valuenow="0">
+											</div>
+										</div>
+									</div>
+									<input id="attachment_file_qiye23" type="file" name="attachment_file" style="display: none;" onChange="if(this.value)insertTitle(this);"/>
+									<a id="attachment_btn_qiye23" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+									<span id="attachment_title_qiye23"></span>
+								</div>
+								<%--<div class="table-responsive">
+									<div class="kv-main">
+										<form enctype="multipart/form-data">
+											<input type="hidden" id="file_root5">
+											<input type="hidden" id="file_name5">
+											<input type="hidden" id="file_type5" value="23">
+											<div class="form-group" style="margin-left: 0; margin-right: 0;">
+												<input id="file-qiye5" name="myFile" type="file" class="file">
+											</div>
+										</form>
+									</div>
+								</div>--%>
+							</td>
+						</tr>
+						<tr>
+							<td>5</td>
+							<td>工程勘察招标代理</td>
+							<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=24','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+							<td>
+								<div style="display: inline-block">
+									<div id="addFile_qiye24" style="display: none">
+										<span id="fileName_qiye24" ></span>
+										<b><span id="baifenbi_qiye24" ></span></b>
+										<div class="progress">
+											<div id="jindutiao_qiye24" class="progress-bar" style="width: 0%" aria-valuenow="0">
+											</div>
+										</div>
+									</div>
+									<input id="attachment_file_qiye24" type="file" name="attachment_file" style="display: none;" onChange="if(this.value)insertTitle(this);"/>
+									<a id="attachment_btn_qiye24" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+									<span id="attachment_title_qiye24"></span>
+								</div>
+								<%--<div class="table-responsive">
+									<div class="kv-main">
+										<form enctype="multipart/form-data">
+											<input type="hidden" id="file_root6">
+											<input type="hidden" id="file_name6">
+											<input type="hidden" id="file_type6" value="24">
+											<div class="form-group" style="margin-left: 0; margin-right: 0;">
+												<input id="file-qiye6" name="myFile" type="file" class="file">
+											</div>
+										</form>
+									</div>
+								</div>--%>
+							</td>
+						</tr>
+						<tr>
+							<td>6</td>
+							<td>BIM建模碰撞检测</td>
+							<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=25','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+							<td>
+								<div style="display: inline-block">
+									<div id="addFile_qiye25" style="display: none">
+										<span id="fileName_qiye25" ></span>
+										<b><span id="baifenbi_qiye25" ></span></b>
+										<div class="progress">
+											<div id="jindutiao_qiye25" class="progress-bar" style="width: 0%" aria-valuenow="0">
+											</div>
+										</div>
+									</div>
+									<input id="attachment_file_qiye25" type="file" name="attachment_file" style="display: none;" onChange="if(this.value)insertTitle(this);"/>
+									<a id="attachment_btn_qiye25" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+									<span id="attachment_title_qiye25"></span>
+								</div>
+								<%--<div class="table-responsive">
+									<div class="kv-main">
+										<form enctype="multipart/form-data">
+											<input type="hidden" id="file_root7">
+											<input type="hidden" id="file_name7">
+											<input type="hidden" id="file_type7" value="25">
+											<div class="form-group" style="margin-left: 0; margin-right: 0;">
+												<input id="file-qiye7" name="myFile" type="file" class="file">
+											</div>
+										</form>
+									</div>
+								</div>--%>
+							</td>
+						</tr>
+						<tr>
+							<td>7</td>
+							<td>其他</td>
+							<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=26','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+							<td>
+								<div style="display: inline-block">
+									<div id="addFile_qiye26" style="display: none">
+										<span id="fileName_qiye26" ></span>
+										<b><span id="baifenbi_qiye26" ></span></b>
+										<div class="progress">
+											<div id="jindutiao_qiye26" class="progress-bar" style="width: 0%" aria-valuenow="0">
+											</div>
+										</div>
+									</div>
+									<input id="attachment_file_qiye26" type="file" name="attachment_file" style="display: none;" onChange="if(this.value)insertTitle(this);"/>
+									<a id="attachment_btn_qiye26" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+									<span id="attachment_title_qiye26"></span>
+								</div>
+								<%--<div class="table-responsive">
+									<div class="kv-main">
+										<form enctype="multipart/form-data">
+											<input type="hidden" id="file_root8">
+											<input type="hidden" id="file_name8">
+											<input type="hidden" id="file_type8" value="26">
+											<div class="form-group" style="margin-left: 0; margin-right: 0;">
+												<input id="file-qiye8" name="myFile" type="file" class="file">
+											</div>
+										</form>
+									</div>
+								</div>--%>
+							</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-striped table-bordered table-hover table-condensed dataTables-example twoTab">
+						<thead>
+							<tr>
+								<th>序号</th>
+								<th>文件类型</th>
+								<th>附件表</th>
+								<th>上传附件</th>
+							</tr>
+							</thead>
+							<tbody>
+							<tr>
+								<td>1</td>
+								<td>工程施工监理招标代理</td>
+								<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=27','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+								<td>
+									<div style="display: inline-block">
+										<div id="addFile_qiye27" style="display: none">
+											<span id="fileName_qiye27" ></span>
+											<b><span id="baifenbi_qiye27" ></span></b>
+											<div class="progress">
+												<div id="jindutiao_qiye27" class="progress-bar" style="width: 0%" aria-valuenow="0">
+												</div>
+											</div>
+										</div>
+										<input id="attachment_file_qiye27" type="file" name="attachment_file" style="display: none;" onChange="if(this.value)insertTitle(this);"/>
+										<a id="attachment_btn_qiye27" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+										<span id="attachment_title_qiye27"></span>
+									</div>
+									<%--<div class="table-responsive">
+										<div class="kv-main">
+											<form enctype="multipart/form-data">
+												<input type="hidden" id="file_root9">
+												<input type="hidden" id="file_name9">
+												<input type="hidden" id="file_type9" value="27">
+												<div class="form-group" style="margin-left: 0; margin-right: 0;">
+													<input id="file-qiye9" name="myFile" type="file" class="file">
+												</div>
+											</form>
+										</div>
+									</div>--%>
+								</td>
+							</tr>
+							<tr>
+								<td>2</td>
+								<td>工程施工招标代理</td>
+								<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=28','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+								<td>
+									<div style="display: inline-block">
+										<div id="addFile_qiye28" style="display: none">
+											<span id="fileName_qiye28" ></span>
+											<b><span id="baifenbi_qiye28" ></span></b>
+											<div class="progress">
+												<div id="jindutiao_qiye28" class="progress-bar" style="width: 0%" aria-valuenow="0">
+												</div>
+											</div>
+										</div>
+										<input id="attachment_file_qiye28" type="file" name="attachment_file" style="display: none;" onChange="if(this.value)insertTitle(this);"/>
+										<a id="attachment_btn_qiye28" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+										<span id="attachment_title_qiye28"></span>
+									</div>
+									<%--<div class="table-responsive">
+										<div class="kv-main">
+											<form enctype="multipart/form-data">
+												<input type="hidden" id="file_root10">
+												<input type="hidden" id="file_name10">
+												<input type="hidden" id="file_type10" value="28">
+												<div class="form-group" style="margin-left: 0; margin-right: 0;">
+													<input id="file-qiye10" name="myFile" type="file" class="file">
+												</div>
+											</form>
+										</div>
+									</div>--%>
+								</td>
+							</tr>
+							<tr>
+								<td>3</td>
+								<td>工程量清单编制</td>
+								<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=29','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+								<td>
+									<div style="display: inline-block">
+										<div id="addFile_qiye29" style="display: none">
+											<span id="fileName_qiye29" ></span>
+											<b><span id="baifenbi_qiye29" ></span></b>
+											<div class="progress">
+												<div id="jindutiao_qiye29" class="progress-bar" style="width: 0%" aria-valuenow="0">
+												</div>
+											</div>
+										</div>
+										<input id="attachment_file_qiye29" type="file" name="attachment_file" style="display: none;" onChange="if(this.value)insertTitle(this);"/>
+										<a id="attachment_btn_qiye29" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+										<span id="attachment_title_qiye29"></span>
+									</div>
+									<%--<div class="table-responsive">
+										<div class="kv-main">
+											<form enctype="multipart/form-data">
+												<input type="hidden" id="file_root11">
+												<input type="hidden" id="file_name11">
+												<input type="hidden" id="file_type11" value="29">
+												<div class="form-group" style="margin-left: 0; margin-right: 0;">
+													<input id="file-qiye11" name="myFile" type="file" class="file">
+												</div>
+											</form>
+										</div>
+									</div>--%>
+								</td>
+							</tr>
+							<tr>
+								<td>4</td>
+								<td>招标控制价编制</td>
+								<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=30','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+								<td>
+									<div style="display: inline-block">
+										<div id="addFile_qiye30" style="display: none">
+											<span id="fileName_qiye30" ></span>
+											<b><span id="baifenbi_qiye30" ></span></b>
+											<div class="progress">
+												<div id="jindutiao_qiye30" class="progress-bar" style="width: 0%" aria-valuenow="0">
+												</div>
+											</div>
+										</div>
+										<input id="attachment_file_qiye30" type="file" name="attachment_file" style="display: none;" onChange="if(this.value)insertTitle(this);"/>
+										<a id="attachment_btn_qiye30" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+										<span id="attachment_title_qiye30"></span>
+									</div>
+									<%--<div class="table-responsive">
+										<div class="kv-main">
+											<form enctype="multipart/form-data">
+												<input type="hidden" id="file_root12">
+												<input type="hidden" id="file_name12">
+												<input type="hidden" id="file_type12" value="30">
+												<div class="form-group" style="margin-left: 0; margin-right: 0;">
+													<input id="file-qiye12" name="myFile" type="file" class="file">
+												</div>
+											</form>
+										</div>
+									</div>--%>
+								</td>
+							</tr>
+							<tr>
+								<td>5</td>
+								<td>产业研究咨询</td>
+								<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=31','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+								<td>
+									<div style="display: inline-block">
+										<div id="addFile_qiye31" style="display: none">
+											<span id="fileName_qiye31" ></span>
+											<b><span id="baifenbi_qiye31" ></span></b>
+											<div class="progress">
+												<div id="jindutiao_qiye31" class="progress-bar" style="width: 0%" aria-valuenow="0">
+												</div>
+											</div>
+										</div>
+										<input id="attachment_file_qiye31" type="file" name="attachment_file" style="display: none;" onChange="if(this.value)insertTitle(this);"/>
+										<a id="attachment_btn_qiye31" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+										<span id="attachment_title_qiye31"></span>
+									</div>
+									<%--<div class="table-responsive">
+										<div class="kv-main">
+											<form enctype="multipart/form-data">
+												<input type="hidden" id="file_root13">
+												<input type="hidden" id="file_name13">
+												<input type="hidden" id="file_type13" value="31">
+												<div class="form-group" style="margin-left: 0; margin-right: 0;">
+													<input id="file-qiye13" name="myFile" type="file" class="file">
+												</div>
+											</form>
+										</div>
+									</div>--%>
+								</td>
+							</tr>
+							<tr>
+								<td>6</td>
+								<td>钢筋翻样</td>
+								<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=32','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+								<td>
+									<div style="display: inline-block">
+										<div id="addFile_qiye32" style="display: none">
+											<span id="fileName_qiye32" ></span>
+											<b><span id="baifenbi_qiye32" ></span></b>
+											<div class="progress">
+												<div id="jindutiao_qiye32" class="progress-bar" style="width: 0%" aria-valuenow="0">
+												</div>
+											</div>
+										</div>
+										<input id="attachment_file_qiye32" type="file" name="attachment_file" style="display: none;" onChange="if(this.value)insertTitle(this);"/>
+										<a id="attachment_btn_qiye32" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+										<span id="attachment_title_qiye32"></span>
+									</div>
+									<%--<div class="table-responsive">
+										<div class="kv-main">
+											<form enctype="multipart/form-data">
+												<input type="hidden" id="file_root14">
+												<input type="hidden" id="file_name14">
+												<input type="hidden" id="file_type14" value="32">
+												<div class="form-group" style="margin-left: 0; margin-right: 0;">
+													<input id="file-qiye14" name="myFile" type="file" class="file">
+												</div>
+											</form>
+										</div>
+									</div>--%>
+								</td>
+							</tr>
+							<tr>
+								<td>7</td>
+								<td>工程量计算</td>
+								<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=33','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+								<td>
+									<div style="display: inline-block">
+										<div id="addFile_qiye33" style="display: none">
+											<span id="fileName_qiye33" ></span>
+											<b><span id="baifenbi_qiye33" ></span></b>
+											<div class="progress">
+												<div id="jindutiao_qiye33" class="progress-bar" style="width: 0%" aria-valuenow="0">
+												</div>
+											</div>
+										</div>
+										<input id="attachment_file_qiye33" type="file" name="attachment_file" style="display: none;" onChange="if(this.value)insertTitle(this);"/>
+										<a id="attachment_btn_qiye33" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+										<span id="attachment_title_qiye33"></span>
+									</div>
+									<%--<div class="table-responsive">
+										<div class="kv-main">
+											<form enctype="multipart/form-data">
+												<input type="hidden" id="file_root15">
+												<input type="hidden" id="file_name15">
+												<input type="hidden" id="file_type15" value="33">
+												<div class="form-group" style="margin-left: 0; margin-right: 0;">
+													<input id="file-qiye15" name="myFile" type="file" class="file">
+												</div>
+											</form>
+										</div>
+									</div>--%>
+								</td>
+							</tr>
+							<tr>
+								<td>8</td>
+								<td>其他</td>
+								<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=34','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+								<td>
+									<div style="display: inline-block">
+										<div id="addFile_qiye34" style="display: none">
+											<span id="fileName_qiye34" ></span>
+											<b><span id="baifenbi_qiye34" ></span></b>
+											<div class="progress">
+												<div id="jindutiao_qiye34" class="progress-bar" style="width: 0%" aria-valuenow="0">
+												</div>
+											</div>
+										</div>
+										<input id="attachment_file_qiye34" type="file" name="attachment_file" style="display: none;" onChange="if(this.value)insertTitle(this);"/>
+										<a id="attachment_btn_qiye34" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+										<span id="attachment_title_qiye34"></span>
+									</div>
+									<%--<div class="table-responsive">
+										<div class="kv-main">
+											<form enctype="multipart/form-data">
+												<input type="hidden" id="file_root16">
+												<input type="hidden" id="file_name16">
+												<input type="hidden" id="file_type16" value="34">
+												<div class="form-group" style="margin-left: 0; margin-right: 0;">
+													<input id="file-qiye16" name="myFile" type="file" class="file">
+												</div>
+											</form>
+										</div>
+									</div>--%>
+								</td>
+							</tr>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<input type="hidden" value="${workFullManage.id}" id="workFullId">
+			<input type="hidden" value="3" id="status">
+			<script>
+                $(function(){
+                    var id = "${workFullManage.id}";
+                    for (var i = 0; i < 17 ;i++){
+                    	var indexLoad;
+                        var file_type = $("#file_type"+i).val();
+                        $("#file-qiye"+i).fileinput('refresh',
+                            {
+                                showUpload: false,
+                                uploadAsync:true,
+                                dropZoneEnabled:false,
+                                uploadUrl : '${ctx}/workfullmanage/workFullManage/uploadFile',
+                                uploadExtraData:{
+                                    "id":id,	//项目id
+                                    "file_type":file_type
+                                },
+                                showCaption: false,
+                                showPreview: false,
+                                browseIcon:'',
+                                browseClass: "none",
+                                browseLabel: "<button class='btn btn-info btn-xs'>上传附件</button>",
+                                showRemove : false,
+                                showCancel : false,
+                                allowedFileExtensions : [ 'doc', 'xls', 'jpg', 'png',
+                                    'xlsx', 'docx' ,'pdf','bmp','gif','rar','zip','ppt','pptx','txt'],
+                            }).on('filepreupload',function(){
+                                console.log("wer")
+						}).on('fileloaded', function(event, numFiles, label) {
+                            	indexLoad = parent.layer.load(0, {shade: false});
+                            	$(this).fileinput('upload');
+                        }).on('filebatchuploadsuccess',function(event, file, previewId, index, reader) {
+                            parent.layer.msg("上传成功",{icon:6});
+                            parent.layer.close(indexLoad)
+                        });
+                    }
+                    $(".kv-upload-progress").remove();
+                });
+			</script>
+			<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-striped table-bordered table-hover table-condensed dataTables-example twoTab">
+						<tbody>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">主办公司及部门:</label></td>
+							<td class="width-25">
+								<%--<sys:treeselect id="hostCompany" name="hostCompany.id" value="${workFullManage.hostCompany.id}" labelName="hostCompany.name" labelValue="${workFullManage.hostCompany.name}"--%>
+												<%--title="部门" url="/sys/office/treeData?type=2" cssClass="form-control required" allowClear="true" notAllowSelectParent="true"/>--%>
+								${workFullManage.hostCompany.name}
+							</td>
+							<td class="width-15 active"><label class="pull-right">协办公司及部门:</label></td>
+							<td class="width-25">
+								<%--<sys:treeselect id="followCompany" name="followCompany.id" value="${workFullManage.followCompany.id}" labelName="followCompany.name" labelValue="${workFullManage.followCompany.name}"--%>
+												<%--title="部门" url="/sys/office/treeData?type=2" cssClass="form-control required" allowClear="true" notAllowSelectParent="true"/>--%>
+								${workFullManage.followCompany.name}
+							</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-striped table-bordered table-hover table-condensed dataTables-example twoTab">
+						<tbody>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">主办公司负责人:</label></td>
+							<td class="width-25">
+								<%--<sys:treeselect id="hostMasterIds" name="hostMaster" value="${workFullManage.hostMaster}" labelName="hostMasterNames" labelValue="${workFullManage.hostMasterName}"--%>
+												<%--title="用户" url="/sys/office/treeData?type=3&isAll=false" cssClass="form-control required" allowClear="true" notAllowSelectParent="true" checked="true"/>--%>
+								${workFullManage.hostMasterName}
+							</td>
+							<td class="width-15 active"><label class="pull-right">协办公司负责人:</label></td>
+							<td class="width-25">
+								<%--<sys:treeselect id="followMasterIds" name="followMaster" value="${workFullManage.followMaster}" labelName="followMasterNames" labelValue="${workFullManage.followMasterName}"--%>
+												<%--title="用户" url="/sys/office/treeData?type=3&isAll=false" cssClass="form-control required" allowClear="true" notAllowSelectParent="true" checked="true"/>--%>
+								${workFullManage.followMasterName}
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">主办公司项目成员:</label></td>
+							<td class="width-25">
+								<%--<sys:treeselect id="hostMemberIds" name="hostMember" value="${workFullManage.hostMember}" labelName="hostMemberNames" labelValue="${workFullManage.hostMemberName}"--%>
+												<%--title="用户" url="/sys/office/treeData?type=3&isAll=false" cssClass="form-control required" allowClear="true" notAllowSelectParent="true" checked="true"/>--%>
+								${workFullManage.hostMemberName}
+							</td>
+							<td class="width-15 active"><label class="pull-right">协办公司项目成员:</label></td>
+							<td class="width-25">
+								<%--<sys:treeselect id="followMemberIds" name="followMember" value="${workFullManage.followMember}" labelName="followMemberNames" labelValue="${workFullManage.followMemberName}"--%>
+												<%--title="用户" url="/sys/office/treeData?type=3&isAll=false" cssClass="form-control required" allowClear="true" notAllowSelectParent="true" checked="true"/>--%>
+								${workFullManage.followMemberName}
+							</td>
+						</tr>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+</body>
+</html>

+ 237 - 0
src/main/webapp/webpage/modules/workfullmanage/projectPreDetail.jsp

@@ -0,0 +1,237 @@
+<%@ 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">
+		.table{
+			margin-bottom: 0px;
+		}
+	</style>
+	<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)
+                    .css("vertical-align","middle")
+                    .css("line-height",hei+"px")
+			}
+		})
+	</script>
+</head>
+<body class="hideScroll">
+<div class="wrapper wrapper-content">
+	<div class="ibox">
+		<div class="ibox-content">
+			<div class="col-sm-12">
+				<div class="col-sm-2 gray-bg text-center oneTab">
+					<label>初步设计</label>
+				</div>
+				<div class="col-sm-10 " >
+					<!-- 表格 -->
+					<table class="table table-striped table-bordered table-hover table-condensed dataTables-example">
+						<thead>
+							<tr>
+								<th>序号</th>
+								<th>文件类型</th>
+								<th>附件表</th>
+							</tr>
+						</thead>
+						<tbody>
+							<tr>
+								<td>1</td>
+								<td>工程量清单编著</td>
+								<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=18','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+							</tr>
+							<tr>
+								<td>2</td>
+								<td>其他</td>
+								<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=19','80%','80%')" class="btn btn-info btn-xs">查看</a></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-striped table-bordered table-hover table-condensed dataTables-example">
+						<thead>
+						<tr>
+							<th>序号</th>
+							<th>文件类型</th>
+							<th>附件表</th>
+						</tr>
+						</thead>
+						<tbody>
+						<tr>
+							<td>1</td>
+							<td>建设项目施工图预算</td>
+							<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=20','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+						</tr>
+						<tr>
+							<td>2</td>
+							<td>工程量清单编制</td>
+							<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=21','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+						</tr>
+						<tr>
+							<td>3</td>
+							<td>钢筋翻样</td>
+							<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=22','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+						</tr>
+						<tr>
+							<td>4</td>
+							<td>工程量计算</td>
+							<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=23','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+						</tr>
+						<tr>
+							<td>5</td>
+							<td>工程勘察招标代理</td>
+							<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=24','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+						</tr>
+						<tr>
+							<td>6</td>
+							<td>BIM建模碰撞检测</td>
+							<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=25','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+						</tr>
+						<tr>
+							<td>7</td>
+							<td>其他</td>
+							<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=26','80%','80%')" class="btn btn-info btn-xs">查看</a></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-striped table-bordered table-hover table-condensed dataTables-example">
+						<thead>
+							<tr>
+								<th>序号</th>
+								<th>文件类型</th>
+								<th>附件表</th>
+							</tr>
+							</thead>
+							<tbody>
+							<tr>
+								<td>1</td>
+								<td>工程施工监理招标代理</td>
+								<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=27','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+							</tr>
+							<tr>
+								<td>2</td>
+								<td>工程施工招标代理</td>
+								<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=28','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+							</tr>
+							<tr>
+								<td>3</td>
+								<td>工程量清单编制</td>
+								<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=29','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+							</tr>
+							<tr>
+								<td>4</td>
+								<td>招标控制价编制</td>
+								<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=30','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+							</tr>
+							<tr>
+								<td>5</td>
+								<td>产业研究咨询</td>
+								<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=31','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+							</tr>
+							<tr>
+								<td>6</td>
+								<td>钢筋翻样</td>
+								<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=32','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+							</tr>
+							<tr>
+								<td>7</td>
+								<td>工程量计算</td>
+								<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=33','80%','80%')" class="btn btn-info btn-xs">查看</a></td>
+							</tr>
+							<tr>
+								<td>8</td>
+								<td>其他</td>
+								<td><a href="javascript:void(0)" onclick="openDialogView('附件信息','${ctx}/workfullmanage/workFullManage/queryInfoToFile?id=${workFullManage.id}&attachment=34','80%','80%')" class="btn btn-info btn-xs">查看</a></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-striped table-bordered table-hover table-condensed dataTables-example">
+						<tbody>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">主办公司及部门:</label></td>
+							<td class="width-25">
+								<%--<sys:treeselect id="hostCompany" name="hostCompany.id" value="${workFullManage.hostCompany.id}" labelName="hostCompany.name" labelValue="${workFullManage.hostCompany.name}"--%>
+												<%--title="部门" url="/sys/office/treeData?type=2" cssClass="form-control required" allowClear="true" notAllowSelectParent="true"/>--%>
+								${workFullManage.hostCompany.name}
+							</td>
+							<td class="width-15 active"><label class="pull-right">协办公司及部门:</label></td>
+							<td class="width-25">
+								<%--<sys:treeselect id="followCompany" name="followCompany.id" value="${workFullManage.followCompany.id}" labelName="followCompany.name" labelValue="${workFullManage.followCompany.name}"--%>
+												<%--title="部门" url="/sys/office/treeData?type=2" cssClass="form-control required" allowClear="true" notAllowSelectParent="true"/>--%>
+								${workFullManage.followCompany.name}
+							</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-striped table-bordered table-hover table-condensed dataTables-example">
+						<tbody>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">主办公司负责人:</label></td>
+							<td class="width-25">
+								<%--<sys:treeselect id="hostMasterIds" name="hostMaster" value="${workFullManage.hostMaster}" labelName="hostMasterNames" labelValue="${workFullManage.hostMasterName}"--%>
+												<%--title="用户" url="/sys/office/treeData?type=3&isAll=false" cssClass="form-control required" allowClear="true" notAllowSelectParent="true" checked="true"/>--%>
+								${workFullManage.hostMasterName}
+							</td>
+							<td class="width-15 active"><label class="pull-right">协办公司负责人:</label></td>
+							<td class="width-25">
+								<%--<sys:treeselect id="followMasterIds" name="followMaster" value="${workFullManage.followMaster}" labelName="followMasterNames" labelValue="${workFullManage.followMasterName}"--%>
+												<%--title="用户" url="/sys/office/treeData?type=3&isAll=false" cssClass="form-control required" allowClear="true" notAllowSelectParent="true" checked="true"/>--%>
+								${workFullManage.followMasterName}
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">主办公司项目成员:</label></td>
+							<td class="width-25">
+								<%--<sys:treeselect id="hostMemberIds" name="hostMember" value="${workFullManage.hostMember}" labelName="hostMemberNames" labelValue="${workFullManage.hostMemberName}"--%>
+												<%--title="用户" url="/sys/office/treeData?type=3&isAll=false" cssClass="form-control required" allowClear="true" notAllowSelectParent="true" checked="true"/>--%>
+								${workFullManage.hostMemberName}
+							</td>
+							<td class="width-15 active"><label class="pull-right">协办公司项目成员:</label></td>
+							<td class="width-25">
+								<%--<sys:treeselect id="followMemberIds" name="followMember" value="${workFullManage.followMember}" labelName="followMemberNames" labelValue="${workFullManage.followMemberName}"--%>
+												<%--title="用户" url="/sys/office/treeData?type=3&isAll=false" cssClass="form-control required" allowClear="true" notAllowSelectParent="true" checked="true"/>--%>
+								${workFullManage.followMemberName}
+							</td>
+						</tr>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+</body>
+</html>

+ 0 - 0
src/main/webapp/webpage/modules/workfullmanage/projectPreList.jsp


Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff