Enford 5 سال پیش
والد
کامیت
1c3c6a21f2
100فایلهای تغییر یافته به همراه18748 افزوده شده و 0 حذف شده
  1. 217 0
      src/main/webapp/webpage/modules/sys/addUserInfo.jsp
  2. 78 0
      src/main/webapp/webpage/modules/sys/applyCompany.jsp
  3. 150 0
      src/main/webapp/webpage/modules/sys/applyOnCompany.jsp
  4. 84 0
      src/main/webapp/webpage/modules/sys/areaForm.jsp
  5. 111 0
      src/main/webapp/webpage/modules/sys/areaList.jsp
  6. 81 0
      src/main/webapp/webpage/modules/sys/areaView.jsp
  7. 509 0
      src/main/webapp/webpage/modules/sys/companyAddForm.jsp
  8. 211 0
      src/main/webapp/webpage/modules/sys/companyAddList.jsp
  9. 296 0
      src/main/webapp/webpage/modules/sys/companyForm.jsp
  10. 211 0
      src/main/webapp/webpage/modules/sys/companyList.jsp
  11. 120 0
      src/main/webapp/webpage/modules/sys/companyinfoView.jsp
  12. 86 0
      src/main/webapp/webpage/modules/sys/dictForm.jsp
  13. 135 0
      src/main/webapp/webpage/modules/sys/dictList.jsp
  14. 86 0
      src/main/webapp/webpage/modules/sys/dictView.jsp
  15. 163 0
      src/main/webapp/webpage/modules/sys/gridInvoice.jsp
  16. 168 0
      src/main/webapp/webpage/modules/sys/gridSelectRole.jsp
  17. 164 0
      src/main/webapp/webpage/modules/sys/gridSelectSingle.jsp
  18. 207 0
      src/main/webapp/webpage/modules/sys/gridSelectUser.jsp
  19. 140 0
      src/main/webapp/webpage/modules/sys/gridinvoicebidproject.jsp
  20. 141 0
      src/main/webapp/webpage/modules/sys/gridinvoiceproject.jsp
  21. 165 0
      src/main/webapp/webpage/modules/sys/gridprojectperfce.jsp
  22. 129 0
      src/main/webapp/webpage/modules/sys/gridselect.jsp
  23. 138 0
      src/main/webapp/webpage/modules/sys/gridselect1.jsp
  24. 132 0
      src/main/webapp/webpage/modules/sys/gridselectAhref.jsp
  25. 130 0
      src/main/webapp/webpage/modules/sys/gridselectCatalog.jsp
  26. 134 0
      src/main/webapp/webpage/modules/sys/gridselectCinfo.jsp
  27. 126 0
      src/main/webapp/webpage/modules/sys/gridselectClientBankinfo.jsp
  28. 130 0
      src/main/webapp/webpage/modules/sys/gridselectClientLink.jsp
  29. 115 0
      src/main/webapp/webpage/modules/sys/gridselectCommonGroup.jsp
  30. 131 0
      src/main/webapp/webpage/modules/sys/gridselectContract.jsp
  31. 165 0
      src/main/webapp/webpage/modules/sys/gridselectContractDetail.jsp
  32. 138 0
      src/main/webapp/webpage/modules/sys/gridselectInvoiceDetail.jsp
  33. 130 0
      src/main/webapp/webpage/modules/sys/gridselectItem.jsp
  34. 126 0
      src/main/webapp/webpage/modules/sys/gridselectOneItem.jsp
  35. 134 0
      src/main/webapp/webpage/modules/sys/gridselectProjbasedata.jsp
  36. 120 0
      src/main/webapp/webpage/modules/sys/gridselectProjcontent.jsp
  37. 137 0
      src/main/webapp/webpage/modules/sys/gridselectProjcontentData.jsp
  38. 112 0
      src/main/webapp/webpage/modules/sys/gridselectcallproject.jsp
  39. 132 0
      src/main/webapp/webpage/modules/sys/gridselectcalltotalproject.jsp
  40. 112 0
      src/main/webapp/webpage/modules/sys/gridselectcallwage.jsp
  41. 120 0
      src/main/webapp/webpage/modules/sys/gridselectclientinfo.jsp
  42. 124 0
      src/main/webapp/webpage/modules/sys/gridselectdetail.jsp
  43. 144 0
      src/main/webapp/webpage/modules/sys/gridselectp.jsp
  44. 135 0
      src/main/webapp/webpage/modules/sys/gridselectrecord.jsp
  45. 139 0
      src/main/webapp/webpage/modules/sys/gridselectreportrecord.jsp
  46. 137 0
      src/main/webapp/webpage/modules/sys/gridselectscrap.jsp
  47. 148 0
      src/main/webapp/webpage/modules/sys/gridselectstock.jsp
  48. 137 0
      src/main/webapp/webpage/modules/sys/gridselectstockcontract.jsp
  49. 137 0
      src/main/webapp/webpage/modules/sys/gridselectsupplier.jsp
  50. 162 0
      src/main/webapp/webpage/modules/sys/gridworkSupplier.jsp
  51. 230 0
      src/main/webapp/webpage/modules/sys/joinCompany.jsp
  52. 236 0
      src/main/webapp/webpage/modules/sys/joinOnCompany.jsp
  53. 149 0
      src/main/webapp/webpage/modules/sys/joinOnShenHeCompany.jsp
  54. 330 0
      src/main/webapp/webpage/modules/sys/judgeForm.jsp
  55. 168 0
      src/main/webapp/webpage/modules/sys/judgeList.jsp
  56. 231 0
      src/main/webapp/webpage/modules/sys/judgeView.jsp
  57. 151 0
      src/main/webapp/webpage/modules/sys/logList.jsp
  58. 171 0
      src/main/webapp/webpage/modules/sys/mainDictDetailForm.jsp
  59. 44 0
      src/main/webapp/webpage/modules/sys/mainDictDetailFormView.jsp
  60. 129 0
      src/main/webapp/webpage/modules/sys/mainDictDetailList.jsp
  61. 114 0
      src/main/webapp/webpage/modules/sys/mainDictForm.jsp
  62. 264 0
      src/main/webapp/webpage/modules/sys/mainDictFormDetail.jsp
  63. 348 0
      src/main/webapp/webpage/modules/sys/mainDictFormDetailZdy.jsp
  64. 51 0
      src/main/webapp/webpage/modules/sys/mainDictFormView.jsp
  65. 215 0
      src/main/webapp/webpage/modules/sys/mainDictList.jsp
  66. 84 0
      src/main/webapp/webpage/modules/sys/menuForm.jsp
  67. 125 0
      src/main/webapp/webpage/modules/sys/menuList.jsp
  68. 47 0
      src/main/webapp/webpage/modules/sys/menuTree.jsp
  69. 20 0
      src/main/webapp/webpage/modules/sys/menuTreeselect.jsp
  70. 261 0
      src/main/webapp/webpage/modules/sys/officeForm.jsp
  71. 102 0
      src/main/webapp/webpage/modules/sys/officeIndex.jsp
  72. 555 0
      src/main/webapp/webpage/modules/sys/officeIndex1.jsp
  73. 546 0
      src/main/webapp/webpage/modules/sys/officeIndex2.jsp
  74. 209 0
      src/main/webapp/webpage/modules/sys/officeList.jsp
  75. 162 0
      src/main/webapp/webpage/modules/sys/officeView.jsp
  76. 39 0
      src/main/webapp/webpage/modules/sys/picturePreview.jsp
  77. 120 0
      src/main/webapp/webpage/modules/sys/project_contractSelect.jsp
  78. 118 0
      src/main/webapp/webpage/modules/sys/roleAssign.jsp
  79. 90 0
      src/main/webapp/webpage/modules/sys/roleAuth.jsp
  80. 344 0
      src/main/webapp/webpage/modules/sys/roleForm.jsp
  81. 150 0
      src/main/webapp/webpage/modules/sys/roleIndex.jsp
  82. 188 0
      src/main/webapp/webpage/modules/sys/roleList.jsp
  83. 76 0
      src/main/webapp/webpage/modules/sys/roleRelation.jsp
  84. 305 0
      src/main/webapp/webpage/modules/sys/roleUserList.jsp
  85. 203 0
      src/main/webapp/webpage/modules/sys/roleView.jsp
  86. 40 0
      src/main/webapp/webpage/modules/sys/selectRole.jsp
  87. 128 0
      src/main/webapp/webpage/modules/sys/selectUserToRole.jsp
  88. 134 0
      src/main/webapp/webpage/modules/sys/selectWorkEvaluationRoom.jsp
  89. 56 0
      src/main/webapp/webpage/modules/sys/suggestionForm.jsp
  90. 118 0
      src/main/webapp/webpage/modules/sys/suggestionList.jsp
  91. 56 0
      src/main/webapp/webpage/modules/sys/suggestionView.jsp
  92. 1098 0
      src/main/webapp/webpage/modules/sys/sysHome.jsp
  93. 467 0
      src/main/webapp/webpage/modules/sys/sysIndex-ace.jsp
  94. 716 0
      src/main/webapp/webpage/modules/sys/sysIndex.jsp
  95. 1003 0
      src/main/webapp/webpage/modules/sys/sysLogin.jsp
  96. 549 0
      src/main/webapp/webpage/modules/sys/sysLogin2.jsp
  97. 146 0
      src/main/webapp/webpage/modules/sys/sysroleactivityForm.jsp
  98. 149 0
      src/main/webapp/webpage/modules/sys/sysroleactivityList.jsp
  99. 136 0
      src/main/webapp/webpage/modules/sys/sysroleactivityView.jsp
  100. 0 0
      src/main/webapp/webpage/modules/sys/systemConfig.jsp

+ 217 - 0
src/main/webapp/webpage/modules/sys/addUserInfo.jsp

@@ -0,0 +1,217 @@
+<%@ 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}/common/inspinia.js?v=3.2.0"></script>
+	<script src="${ctxStatic}/common/contabs.js"></script>
+	<script type="text/javascript">
+        var validateForm;
+        var msg;
+        function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                if (msg!= null && msg != '' && msg!= undefined ){
+                    parent.layer.msg(msg, {icon: 2});
+                    return false;
+				}
+                $("#inputForm").submit();
+                return true;
+            }
+
+            return false;
+        }
+
+        $(document).ready(function() {
+            $("#name").focus();
+            validateForm = $("#inputForm").validate({
+                /*rules: {
+                    no: {remote: "${ctx}/sys/user/checkNo?oldNo=" + encodeURIComponent($("#oldNo").val())},//设置了远程验证,在初始化时必须预先调用一次。
+                },
+                messages: {
+                    no: {remote: "重复的工号"},
+                },*/
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+        });
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+	<%--<div class="ibox-title" style="height: 70px;">
+        <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="user" action="${ctx}/sys/company/addUserToCompany" method="post" class="form-horizontal" autocomplete="off">
+			<form:hidden path="id"/>
+			<sys:message content="${message}"/>
+
+			<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 id="mobile" name="mobile" type="text" class="layui-input required form-control"/>
+						<span class="help-inline"></span>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"></label>
+					<div class="layui-input-block">
+						<span class="help-inline"></span>
+					</div>
+				</div>
+				<%--<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>工号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<input id="no" name="no" type="text" class="layui-input form-control required"/>
+							<input id="oldNo" name="oldNo" type="hidden" value="${user.no}"/>
+							<span class="help-inline"></span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>号码隐藏:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<form:select path="ishide"  class="form-control simple-select">
+								<form:option value="1" label="是"/>
+								<form:option value="0" label="否"/>
+							</form:select>
+						</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:select path="userType"  class="form-control simple-select">
+								<form:option value="" label="请选择"/>
+								<form:options items="${fns:getDictList('sys_user_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+							</form:select>
+						</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 with-icon">
+							<sys:treeselect id="office" name="office.id" value="${user.office.id}" labelName="office.name" labelValue="${user.office.name}"
+											title="部门" url="/sys/office/treeData?type=2" cssClass="form-control required layui-input" notAllowSelectParent="true"/>
+						</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 with-icon">
+							<sys:treeselectRole id="roleIds" name="roleIds" value="${user.roleIds}" labelName="roleNames" labelValue="${user.roleNames}"
+												title="选择岗位" url="/sys/office/treeDataRole?type=2&isAll=false&userId=${user.id}" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+							<label id="roleIdList-error" class="error" for="roleIdList"></label>
+						</div>
+					</div>
+				</div>
+			</div>
+
+
+
+			<%--Start 正则验证输入内容 -hfj --%>
+			<script type="text/javascript">
+                /**
+                 * 判断手机号和工号正则验证
+                 */
+                $('#mobile').blur(function (){
+                    $('#mobile').next("span").html("");
+                    if($('#mobile').val()==null||$('#mobile').val()==""){
+                        $('#mobile').next("span").hidden=true;
+                        $(this).next("span").html("手机号不能为空");
+                        msg = "手机号不能为空";
+                        return;
+                    }else{
+                        $('#mobile').next("span").hidden=true;
+                        var mobile = /^1[345789]\d{9}$/;
+                        if(!mobile.test($('#mobile').val())){
+                            $('#mobile').next("span").hidden=true;
+                            $(this).next("span").html("手机号填写不正确");
+                            msg = "手机号填写不正确";
+                            return;
+                        }else{
+                            var mobileNo = $('#mobile').val();
+                            var comId= '${fns:getUser().comId}';
+                            $.ajax({
+                                type: "post",
+                                url: "${ctx}/sys/company/registerUser",
+                                data: {mobile:mobileNo,comId:comId},
+                                dataType:"text",
+                                success: function(data) {
+                                    $('#mobile').next("span").hidden=true;
+                                    if(data=='2'){
+                                        $('#mobile').next("span").hidden=true;
+                                        $('#mobile').next("span").html("您邀请的用户不存在");
+                                        msg = "您邀请的用户不存在";
+                                        return;
+                                    }else if(data=='3'){
+                                        $('#mobile').next("span").hidden=true;
+                                        $('#mobile').next("span").html("此用户已经存在,不能重复邀请");
+                                        msg = "此用户已经存在,不能重复邀请";
+                                        return;
+                                    }else{
+                                        $('#mobile').next("span").hidden=true;
+                                        $('#mobile').next("span").html("用户已通过验证");
+                                        msg = "";
+                                    }
+                                },
+                                error: function(XMLHttpRequest, textStatus, errorThrown) {
+                                }
+                            });
+                        }
+                    }
+                });
+                /*$('#no').blur(function (){
+                    if($('#no').val()==null||$('#no').val()=="") {
+                        $('#no').next("span").html("工号不能为空");
+                        return;
+                    }else{
+                        $('#no').next("span").html("");
+                    }
+                });*/
+			</script>
+			<%--正则验证输入内容 end--%>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>
+

+ 78 - 0
src/main/webapp/webpage/modules/sys/applyCompany.jsp

@@ -0,0 +1,78 @@
+<%@ 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() {
+            $("#value").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>
+            </div>
+            <div class="ibox-content">
+                <div id="messageBox"></div>
+                <form:form id="inputForm" modelAttribute="company" action="${ctx}/sys/company/saveApplyCompany" method="post" class="form-horizontal">
+                    <table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+                        <tbody>
+                        <tr>
+                            <td class="width-15 active"><label class="pull-right"><font color="red">*</font>公司管理人:</label></td>
+                            <td class="width-35">
+                                <form:input path="name" value="${user.loginName}" htmlEscape="false" readonly="readonly" class="form-control required"/>
+                                <input type="hidden" name="master" value="${office.master}"/>
+                            </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="name" htmlEscape="false" readonly="readonly"  class="form-control required"/>
+                                <input type="hidden" name="companyId" value="${office.id}"/>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td  class="width-15 active"><label class="pull-right">申请内容:</label></td>
+                            <td class="width-35" ><form:textarea path="remarks" value="" htmlEscape="false" rows="3" maxlength="200" class="form-control"/></td>
+                        </tr>
+                        </tbody>
+                    </table>
+                </form:form>
+            </div>
+        </div>
+    </div>
+</div>
+</body>
+</html>

+ 150 - 0
src/main/webapp/webpage/modules/sys/applyOnCompany.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(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                if(obj == 1){
+                    if($("#officeId").val()==null || $("#officeId").val()==''){
+                        parent.layer.msg("请输入用户部门!", {icon: 2});
+                        return false;
+                    }
+                    if($("#roleIdsId").val()==null || $("#roleIdsId").val()==''){
+                        parent.layer.msg("请输入用户岗位!", {icon: 2});
+                        return false;
+                    }
+                    $('#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);
+                    }
+                }
+            });
+
+            laydate({
+                elem: '#startTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate({
+                elem: '#endTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+        });
+    </script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+            <form:form id="inputForm" modelAttribute="companyinfo" action="${ctx}/sys/company/saveApplyOnCompany" method="post" class="form-horizontal">
+                <form:hidden path="id"/>
+                <form:hidden path="home"/>
+                <form:hidden path="act.taskId"/>
+                <form:hidden path="act.taskName"/>
+                <form:hidden path="act.taskDefKey"/>
+                <form:hidden path="act.procInsId"/>
+                <form:hidden path="act.procDefId"/>
+                <form:hidden id="flag" path="act.flag"/>
+
+                <div class="form-group layui-row first lw6">
+                    <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="user.loginName" readonly="true" htmlEscape="false" minlength="11" maxlength="11" class="form-control layui-input required number text-muted isMobile userName"/>
+                        </div>
+                    </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="user.mobile" readonly="true" htmlEscape="false" maxlength="11" minlength="11" class="form-control layui-input text-muted number required isMobile"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label">邮箱:</label>
+                        <div class="layui-input-block">
+                            <form:input path="user.email" readonly="true" htmlEscape="false" maxlength="100" class="form-control layui-input email"/>
+                        </div>
+                    </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="user.name" readonly="true" htmlEscape="false" maxlength="50" 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="name" readonly="true" value="${office.name}" class="form-control layui-input required"/>
+                            <input type="hidden" name="companyId" value="${companyinfo.companyId}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label">审批管理员:</label>
+                        <div class="layui-input-block">
+                            <form:input path="name"  readonly="true" value="${companyinfo.masterName}" class="form-control layui-input required"/>
+                            <input type="hidden" name="master" value="${companyinfo.master}"/>
+                            <input type="hidden" name="userId" value="${companyinfo.userId}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label">归属部门:</label>
+                        <div class="layui-input-block">
+                            <div class="input-group with-icon">
+                                <sys:treeselect id="office" name="user.office.id" value="${companyinfo.user.office.id}" labelName="user.office.name" labelValue="${companyinfo.user.office.name}"
+                                                title="部门" url="/sys/office/treeData?type=2" cssClass="form-control  layui-input" notAllowSelectParent="true"/>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label">用户岗位:</label>
+                        <div class="layui-input-block with-icon">
+                            <sys:treeselectRole id="roleIds" name="user.roleIds" value="${companyinfo.user.roleIds}" labelName="user.roleNames" labelValue="${companyinfo.user.roleNames}"
+                                                title="选择岗位" url="/sys/office/treeDataRole?type=2&isAll=false&userId=${user.id}" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+                            <label id="roleIdList-error" class="error" for="roleIds"></label>
+                        </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="act.comment" class="form-control"  rows="4" maxlength="127"/>
+                        </div>
+                    </div>
+                </div>
+                <%--<div class="form-group layui-row">
+                    <div class="form-group-label"><h2>审批流程</h2></div>
+                    <div class="layui-item layui-col-xs12 form-table-container" >
+                        <act:flowChart procInsId="${companyinfo.act.procInsId}"/>
+                        <act:histoicFlow procInsId="${companyinfo.act.procInsId}"/>
+                    </div>
+                </div>--%>
+                <div class="form-group layui-row page-end"></div>
+            </form:form>
+    </div>
+</div>
+</body>
+</html>
+

+ 84 - 0
src/main/webapp/webpage/modules/sys/areaForm.jsp

@@ -0,0 +1,84 @@
+<%@ 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() {
+			$("#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>
+<div class="single-form">
+	<div class="container">
+	<form:form id="inputForm" modelAttribute="area" action="${ctx}/sys/area/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+
+		<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">上级区域:</label>
+				<div class="layui-input-block with-icon">
+					<sys:treeselect id="area" name="parent.id" value="${area.parent.id}" labelName="parent.name" labelValue="${area.parent.name}"
+									title="区域" url="/sys/area/treeData" extId="${area.id}" cssClass="form-control layui-input" allowClear="true"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">区域名称:</label>
+				<div class="layui-input-block with-icon">
+					<form:input path="name" htmlEscape="false" maxlength="50" class="form-control layui-input required"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label"><span class="require-item">*</span>区域编码:</label>
+				<div class="layui-input-block with-icon">
+					<form:input path="code" htmlEscape="false" maxlength="50" 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 with-icon">
+					<form:select path="type" class="form-control simple-select">
+					<form:options items="${fns:getDictList('sys_area_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+					</form:select>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm12 with-textarea">
+				<label class="layui-form-label">备注:</label>
+				<div class="layui-input-block">
+					<form:textarea path="remarks" htmlEscape="false" rows="4" maxlength="200" class="form-control"/>
+				</div>
+			</div>
+		</div>
+	</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 111 - 0
src/main/webapp/webpage/modules/sys/areaList.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/treetable.jsp" %>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			var tpl = $("#treeTableTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+			var data = ${fns:toJson(list)}, rootId = "0";
+			addRow("#treeTableList", tpl, data, rootId, true);
+			$("#treeTable").treeTable({expandLevel : 5});
+
+            $("a").on("click",addLinkVisied);
+		});
+		function addRow(list, tpl, data, pid, root){
+			for (var i=0; i<data.length; i++){
+				var row = data[i];
+				if ((${fns:jsGetVal('row.parentId')}) == pid){
+					$(list).append(Mustache.render(tpl, {
+						dict: {
+							type: getDictLabel(${fns:toJson(fns:getDictList('sys_area_type'))}, row.type)
+						}, pid: (root?0:pid), row: row
+					}));
+					addRow(list, tpl, data, row.id);
+				}
+			}
+		}
+
+		function refresh(){//刷新
+			
+			window.location="${ctx}/sys/area/";
+		}
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="contentShadow layui-form contentDetails">
+				<div class="nav-btns">
+					<shiro:hasPermission name="sys:area:add">
+						<table:addRow url="${ctx}/sys/area/form" title="区域"></table:addRow><!-- 增加按钮 -->
+					</shiro:hasPermission>
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+					<div style="clear: both;"></div>
+				</div>
+	
+				<table id="treeTable"  class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+					<thead>
+						<tr>
+							<th style="text-align: center;width: 20%">区域名称</th>
+							<th style="text-align: center;width: 10%">区域编码</th>
+							<th style="text-align: center;width: 10%">区域类型</th>
+							<th style="text-align: center;width: 30%">备注</th>
+							<th style="text-align: center;width: 30%">操作</th>
+						</tr>
+					</thead>
+					<tbody id="treeTableList"></tbody>
+				</table>
+				<script type="text/template" id="treeTableTpl">
+					<tr id="{{row.id}}" pId="{{pid}}">
+						<td><a class="attention-info" href="javascript:void(0)" onclick="openDialogView('查看区域', '${ctx}/sys/area/form?id={{row.id}}&view=1','95%','95%')">{{row.name}}</a></td>
+						<td>{{row.code}}</td>
+						<td>{{dict.type}}</td>
+						<td>{{row.remarks}}</td>
+						<td class="op-td text-center">
+							<div class="op-btn-box">
+								<shiro:hasPermission name="sys:area:view">
+									<a href="javascript:void(0)" onclick="openDialogView('查看区域', '${ctx}/sys/area/form?id={{row.id}}&view=1','95%','95%')" class="op-btn op-btn-view" ><i class="fa fa-search-plus"></i>  查看</a>
+								</shiro:hasPermission>
+								<shiro:hasPermission name="sys:area:edit">
+									<a href="javascript:void(0)" onclick="openDialog('修改区域', '${ctx}/sys/area/form?id={{row.id}}','95%','95%')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>
+								</shiro:hasPermission>
+								<shiro:hasPermission name="sys:area:del">
+									<a href="${ctx}/sys/area/delete?id={{row.id}}" onclick="return confirmx('要删除该区域及所有子区域项吗?', this.href)" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i> 删除</a>
+								</shiro:hasPermission>
+								<shiro:hasPermission name="sys:area:add">
+									<a href="javascript:void(0)" onclick="openDialog('添加下级区域', '${ctx}/sys/area/form?parent.id={{row.id}}','95%','95%')" class="op-btn op-btn-add" ><i class="fa fa-plus"></i> 添加下级区域</a>
+								</shiro:hasPermission>
+							</div>
+						</td>
+					</tr>
+				</script>
+			</div>
+		</div>
+	</div>
+</div>
+<script>
+    resizeListWindow3();
+    $(window).resize(function(){
+        resizeListWindow3();
+    });
+</script>
+</body>
+</html>

+ 81 - 0
src/main/webapp/webpage/modules/sys/areaView.jsp

@@ -0,0 +1,81 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>区域管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#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>
+<div class="single-form">
+	<div class="container view-form">
+	<form:form id="inputForm" modelAttribute="area" action="${ctx}/sys/area/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+
+		<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">上级区域:</label>
+				<div class="layui-input-block with-icon">
+					<input readonly="true" htmlEscape="false" class="layui-input form-control" value="${area.parent.name}" />
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">区域名称:</label>
+				<div class="layui-input-block with-icon">
+					<form:input path="name" readonly="true" htmlEscape="false" maxlength="50" class="form-control layui-input required"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label"><span class="require-item">*</span>区域编码:</label>
+				<div class="layui-input-block with-icon">
+					<form:input path="code" readonly="true" htmlEscape="false" maxlength="50" 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 with-icon">
+					<input readonly="true" htmlEscape="false" class="layui-input form-control" value="${fns:getDictLabel(area.type, 'sys_area_type', '')}" />
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm12 with-textarea">
+				<label class="layui-form-label">备注:</label>
+				<div class="layui-input-block">
+					<form:textarea path="remarks" readonly="true" htmlEscape="false" rows="4" maxlength="200" class="form-control"/>
+				</div>
+			</div>
+		</div>
+	</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 509 - 0
src/main/webapp/webpage/modules/sys/companyAddForm.jsp

@@ -0,0 +1,509 @@
+<%@ 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">
+		img{
+			/*width: 50px;*/
+			/*height: 50px;*/
+			max-width: 50px;
+			max-height: 50px;
+		}
+	</style>
+	<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;
+        String.prototype.endsWith=function(str){
+            var reg=new RegExp(str+"$");
+            return reg.test(this);
+        }
+        function submit(callback){
+		if(validateForm.form()){
+            var obj =$("#this_upload_file_1")[0].files[0];
+            var r=false;
+            if(obj != null && obj != undefined && obj != ""){
+                var fileType = obj.type;
+                r = fileType.endsWith("png")||fileType.endsWith("bmp")||fileType.endsWith("jpg")||fileType.endsWith("jpeg");
+            }
+			if(r){
+                $("#inputForm").submit();
+                callback();
+                return true;
+            }else{
+                parent.layer.msg("请上传营业执照!!!",{icon:5});
+                $("#this_upload_msg").css({"color":"red"});
+                return false;
+            }
+		}
+		return false;
+	}
+	function reset(){
+	     $('#inputForm').reset();
+	}
+	function tijiao(){
+	    submit(reset);
+	}
+	
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+//			var nameT = $("#nameT").val();
+//            if(!/[\u4e00-\u9fa5]+/.test( value )){
+//                parent.layer.msg("必须包含汉字");
+//                return false;
+//			}
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+            $.validator.addMethod("checkName",function(value,element,params){
+                var checkEmail = /[\u4e00-\u9fa5]+/i;
+                return this.optional(element)||(checkEmail.test(value));
+            },"必须包含汉字!");
+            $.validator.addMethod("checkNumber",function(value,element,params){
+                var regExp = /^[0-9A-Z]{0,18}$/;
+                return this.optional(element)||(regExp.test(value));
+            },"请输入18位数字或大写字母组合!");
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+					/*$("#messageBox").succuss("提交成功。");*/
+				},
+                rules : {
+                    name: {
+                        checkName: true,
+                        remote: "${ctx}/sys/company/validateCompany"
+                    },
+                    number:{
+                        checkNumber:true,
+                        remote: "${ctx}/sys/company/checkNumber"
+					},
+                },
+                messages: {
+                    name:{remote: "此公司名称已经被注册!", required: "公司名称不能为空."},
+                    number:{remote: "此组织机构代码已存在!", required: "组织机构代码不能为空."},
+                },
+				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 this_upload_image_button(index){
+            $("#this_upload_file_"+index).click();
+        }
+        function this_upload_show_image(index){
+            var obj =$("#this_upload_file_"+index)[0].files[0];
+            var fileType = obj.type;
+            var url ;
+            if(fileType.endsWith("png")||fileType.endsWith("bmp")||fileType.endsWith("jpg")||fileType.endsWith("jpeg")||fileType.endsWith("gif")){
+                url = window.URL.createObjectURL(obj);
+            }else {
+                $("#this_upload_msg").css({"color":"red"});
+                this_close_img(index);
+                return false ;
+            }
+            $("#this_upload_msg" + "index").removeAttr("style");
+            $("#this_upload_image_"+index).attr("src",url);
+
+            var span = '<span id="this_upload_close_'+index+'" class="pic_close glyphicon glyphicon-remove" onclick="this_close_img('+index+');"></span>';
+            $("#this_upload_image_" + index).before(span);
+        }
+
+        function this_close_img(index) {
+            $("#this_upload_div_"+index).remove();
+            this_add_div(index);
+        }
+
+        function this_add_div(index) {
+            var this_upload_div_1 =
+                '<div id="this_upload_div_'+ index + '" style="position:relative;">'+
+                '<img  id="this_upload_image_' + index + '" class="upload_ico" style="cursor:pointer;"  src="${pageContext.request.contextPath}/static/common/img/pic_add.png"  onclick="this_upload_image_button('+index+')"/>'+
+                '<input id="this_upload_file_'+ index + '" type="file" style="display:none"  name="this_upload_files"  onchange="this_upload_show_image('+index+ ')" /><br>'+
+                '</div>';
+            $("#this_upload_image_div_"+ index).html("").append(this_upload_div_1);
+        }
+    <%--function this_upload_image_button(index){--%>
+        <%--$("#this_upload_file_"+index).click();--%>
+    <%--}--%>
+    <%--function this_upload_show_image(index){--%>
+        <%--var obj =$("#this_upload_file_"+index)[0].files[0];--%>
+        <%--var fileType = obj.type;--%>
+        <%--var url ;--%>
+        <%--if(fileType.endsWith("png")||fileType.endsWith("bmp")||fileType.endsWith("jpg")||fileType.endsWith("jpeg")){--%>
+            <%--url = window.URL.createObjectURL(obj);--%>
+        <%--}else {--%>
+            <%--$("#this_upload_msg").css({"color":"red"});--%>
+            <%--this_close_img(index);--%>
+            <%--return false ;--%>
+        <%--}--%>
+        <%--$("#this_upload_msg").removeAttr("style");--%>
+        <%--$("#this_upload_image_"+index).attr("src",url);--%>
+        <%--var length = $("#this_upload_image_div :file").length;--%>
+        <%--if( index == length &&  length < 1 ){--%>
+            <%--this_upload_image_append(index);--%>
+            <%--this_add_x(index);--%>
+        <%--}else if(index == length && length ==1){--%>
+            <%--var span = '<span id="this_upload_close_'+index+'" class="close_ico" style="cursor:pointer; position: absolute;top:-1px;right: -1px; display:inline-block;z-index:1;color: red;" onclick="this_close_img('+index+');">x</span>';--%>
+            <%--$("#this_upload_image_1").before(span);--%>
+        <%--}--%>
+    <%--}--%>
+    <%--function this_upload_image_append(index){--%>
+        <%--var div1 = "<div id='this_upload_div_"+(index+1)+"' style='float:left;position:relative;width: 57px;height: 57px;'>";--%>
+        <%--var img = '<img  id="this_upload_image_'+(index+1)+'" class="upload_ico" width="50px" height="50px"  onclick="this_upload_image_button('+(index+1)+')" src = "${pageContext.request.contextPath}/static/uploadify/upload_ico.png" style="cursor:pointer;"/>';--%>
+        <%--var input = '<input id="this_upload_file_'+(index+1)+'" type="file" style="display:none;" name="this_upload_files" onChange="this_upload_show_image('+(index+1)+')" /><br>';--%>
+        <%--var div2 = "</div>";--%>
+
+        <%--$("#this_upload_image_div").append(div1+img+input+div2);--%>
+    <%--}--%>
+    <%--function this_close_img(index) {--%>
+        <%--$("#this_upload_div_"+index).remove();--%>
+        <%--var length = $("#this_upload_image_div :file").length;--%>
+        <%--if(length == 0){--%>
+            <%--this_add_div();--%>
+        <%--}else if(length == 1){--%>
+            <%--var x = $("#this_upload_image_div").find("span").text();--%>
+            <%--if("x" != x){--%>
+                <%--this_add_div();--%>
+            <%--}--%>
+        <%--}--%>
+    <%--}--%>
+    <%--function this_add_x(index) {--%>
+        <%--var span = '<span id="this_upload_close_'+index+'" class="close_ico" style="cursor:pointer; position: absolute;top:-1px;right: -1px; display:inline-block;z-index:1;color: red;" onclick="this_close_img('+index+');">x</span>';--%>
+        <%--$("#this_upload_image_div").find("img:eq(-2)").before(span);--%>
+    <%--}--%>
+    <%--function this_add_div() {--%>
+        <%--var this_upload_div_1 =--%>
+            <%--'<div id="this_upload_div_1" style="float: left;position:relative;width: 57px;height: 57px;" >'+--%>
+            <%--'<img  id="this_upload_image_1" class="upload_ico" style="cursor:pointer;"  src="${pageContext.request.contextPath}/static/uploadify/upload_ico.png"  onclick="this_upload_image_button(1)"/>'+--%>
+            <%--'<input id="this_upload_file_1" type="file" style="display:none"  name="this_upload_files"  onchange="this_upload_show_image(1)" /><br>'+--%>
+            <%--'</div>';--%>
+        <%--$("#this_upload_image_div").html("").append(this_upload_div_1);--%>
+    <%--}--%>
+
+
+    //上传公司logo
+    function next_upload_image_button(index){
+        $("#next_upload_file_"+index).click();
+    }
+
+    function next_upload_show_image(index){
+        var obj =$("#next_upload_file_"+index)[0].files[0];
+        var fileType = obj.type;
+        var url ;
+        if(fileType.endsWith("png")||fileType.endsWith("bmp")||fileType.endsWith("jpg")||fileType.endsWith("jpeg")){
+            url = window.URL.createObjectURL(obj);
+        }else {
+			$("#next_upload_msg").css({"color":"red"});
+			next_close_img(index);
+		    return false ;
+		}
+		$("#next_upload_msg").removeAttr("style");
+        $("#next_upload_image_"+index).attr("src",url);
+        var length = $("#next_upload_image_div :file").length;
+        // if( index == length &&  length < 1 ){
+        //     next_upload_image_append(index);
+        //     next_add_x(index);
+        // }else if(index == length && length ==1){
+            var span = '<span id="this_upload_close_'+index+'" class="pic_close glyphicon glyphicon-remove" onclick="next_close_img('+index+');"></span>';
+            // var span = '<span id="next_upload_close_'+index+'" class="close_ico" style="cursor:pointer; position: absolute;top:-1px;right: -1px; display:inline-block;z-index:1;color: red;" onclick="next_close_img('+index+');">x</span>';
+            $("#next_upload_image_1").before(span);
+        // }
+    }
+    <%--function next_upload_image_append(index){--%>
+        <%--var div1 = "<div id='next_upload_div_"+(index+1)+"' style='float:left;position:relative;width: 57px;height: 57px;'>";--%>
+        <%--var img = '<img  id="next_upload_image_'+(index+1)+'" class="upload_ico" width="50px" height="50px"  onclick="next_upload_image_button('+(index+1)+')" src = "${pageContext.request.contextPath}/static/uploadify/upload_ico.png" style="cursor:pointer;"/>';--%>
+        <%--var input = '<input id="next_upload_file_'+(index+1)+'" type="file" style="display:none;" name="next_upload_files" onChange="next_upload_show_image('+(index+1)+')" /><br>';--%>
+        <%--var div2 = "</div>";--%>
+
+        <%--$("#next_upload_image_div").append(div1+img+input+div2);--%>
+    <%--}--%>
+    function next_close_img(index) {
+        $("#next_upload_div_"+index).remove();
+        // var length = $("#next_upload_image_div :file").length;
+        // if(length == 0){
+            next_add_div();
+        // }else if(length == 1){
+        //     var x = $("#next_upload_image_div").find("span").text();
+        //     if("x" != x){
+        //         next_add_div();
+        //     }
+        // }
+    }
+    // function next_add_x(index) {
+    //     var span = '<span id="next_upload_close_'+index+'" class="close_ico" style="cursor:pointer; position: absolute;top:-1px;right: -1px; display:inline-block;z-index:1;color: red;" onclick="next_close_img('+index+');">x</span>';
+    //     $("#next_upload_image_div").find("img:eq(-2)").before(span);
+    // }
+    function next_add_div() {
+        var next_upload_div_1 =
+            '<div id="next_upload_div_1" style="position:relative;" >'+
+            '<img  id="next_upload_image_1" class="upload_ico" style="cursor:pointer;"  src="${pageContext.request.contextPath}/static/common/img/pic_add.png"  onclick="next_upload_image_button(1)"/>'+
+            '<input id="next_upload_file_1" type="file" style="display:none"  name="next_upload_files"  onchange="next_upload_show_image(1)" /><br>'+
+            '</div>';
+        $("#next_upload_image_div").html("").append(next_upload_div_1);
+    }
+
+	</script>
+
+	<script type="text/javascript">
+		$(function () {
+		    //检查统一社会信用代码:
+//            $("#reditcode").bind("input propertychange",function(){
+//                var defValue = this.defaultValue;
+//                var currValue = $(this).val();
+//                var  regExp = /(^[0-9A-Z]{0,18}$)/;
+//                if(! regExp.test(currValue)){
+//                    $(this).val(defValue);
+//                }else{
+//                    this.defaultValue = currValue;
+//                }
+//            });
+        })
+        String.prototype.endWith=function(str) {
+            if (str == null || str == "" || this.length == 0 || str.length > this.length) return false;
+            if (this.substring(this.length - str.length) == str) return true; else return false;
+            return true;
+        }
+	</script>
+	<c:if test="${empty company.id}">
+		<style>
+			body{
+				background-color:transparent;
+				filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+				background-color:rgba(255,255,255,0);
+				height:100%;
+			}
+		</style>
+	</c:if>
+</head>
+<body>
+
+<c:if test="${empty company.id}">
+<%--<div class="wrapper wrapper-content">--%>
+	<%--<div class="layui-row">--%>
+<%--<div class="full-width fl" id="formDiv">--%>
+<div class="single-form contentShadow fl" style="background-color: #ffffff;">
+	<div class="container1">
+</c:if>
+<c:if test="${not empty company.id}">
+	<div class="single-form">
+		<div class="container">
+</c:if>
+
+		<form:form id="inputForm" modelAttribute="company" enctype="multipart/form-data" action="${ctx}/sys/company/add" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+
+			<div class="form-group layui-row first lw12">
+				<div class="form-group-label"><h2>企业信息</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>公司名称:</label>
+					<div class="layui-input-block">
+						<c:choose>
+							<c:when test="${empty company.id}">
+								<form:input path="name" htmlEscape="false" id="nameT" class="form-control layui-input required"/>
+							</c:when>
+							<c:otherwise>
+								<input readonly="true" class="form-control layui-input required" value="${company.name}"/>
+							</c:otherwise>
+						</c:choose>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>申请人邮箱:</label>
+					<div class="layui-input-block">
+						<form:input path="email" htmlEscape="false"  value="${fns:getUser().email}"    class="form-control required email layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line"><span class="require-item">*</span>统一社会信用代码(注册号):</label>
+					<div class="layui-input-block">
+						<form:input path="number" htmlEscape="false"  maxlength="18" minlength="18" id="reditcode"   class="form-control required layui-input" placeholder="请输入18位数字或大写字母组合"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>申请人姓名:</label>
+					<div class="layui-input-block">
+						<c:choose>
+							<c:when test="${empty company.id}">
+								<form:input type="text" id="tuser" style="display:none" path="tuser.id"  value="${fns:getUser().id}" htmlEscape="false"   class="form-control layui-input" readonly="true" />
+								<form:input type="text" id="tuser" path="tuser.name"  value="${fns:getUser().name}" htmlEscape="false"   class="form-control layui-input" readonly="true" />
+							</c:when>
+							<c:otherwise>
+								<input readonly="true" class="form-control layui-input required" value="${company.tuser.name}"/>
+							</c:otherwise>
+						</c:choose>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line"><span class="require-item">*</span>法人:</label>
+					<div class="layui-input-block">
+						<c:choose>
+							<c:when test="${empty company.id}">
+								<form:input path="legalPerson" htmlEscape="false"    class="form-control required layui-input"/>
+							</c:when>
+							<c:otherwise>
+								<input readonly="true" class="form-control layui-input required" value="${company.legalPerson}"/>
+							</c:otherwise>
+						</c:choose>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line"><span class="require-item">*</span>申请人电话:</label>
+					<div class="layui-input-block">
+						<form:input path="phone" htmlEscape="false"  value="${fns:getUser().mobile}"  class="form-control required layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6" style="height:180px;">
+					<label class="layui-form-label double-line"><span class="require-item">*</span>营业执照:</label>
+					<div class="layui-input-block">
+						<c:choose>
+							<c:when test="${empty company.licences}">
+								<div class="pic_box_wrapper">
+									<div class="pic_box">
+										<div id="this_upload_image_div_1">
+											<div id="this_upload_div_1" style="position:relative;">
+												<img alt="_blank" id="this_upload_image_1" class="upload_ico" style="cursor:pointer;"   src="${pageContext.request.contextPath}/static/common/img/pic_add.png"  onclick="this_upload_image_button(1)"/>
+												<input id="this_upload_file_1" type="file" style="display:none"  name="this_upload_files"  onchange="this_upload_show_image(1)"  class="form-control required"/>
+											</div>
+										</div>
+									</div>
+								</div>
+								<span id="this_upload_msg">请上传*.png,*.bmp,*.jpg/jpeg格式的图片</span>
+								<%--<div>--%>
+									<%--<span id="this_upload_msg">请上传*.png,*.bmp,*.jpg/jpeg格式的图片</span><br>--%>
+									<%--<div id="this_upload_image_div">--%>
+										<%--<div id="this_upload_div_1" style="float: left;position:relative;width: 57px;height: 57px;">--%>
+											<%--<img alt="_blank" id="this_upload_image_1" class="upload_ico" style="cursor:pointer;"  src="${pageContext.request.contextPath}/static/uploadify/upload_ico.png"  onclick="this_upload_image_button(1)"/>--%>
+											<%--<input id="this_upload_file_1" type="file" style="display:none"  name="this_upload_files"  onchange="this_upload_show_image(1)"  class="form-control required"/><br>--%>
+										<%--</div>--%>
+									<%--</div>--%>
+								<%--</div>--%>
+							</c:when>
+							<c:otherwise>
+								<c:forTokens items="${company.licences}" delims="," var="licenceStr">
+
+										<c:if test="${empty company.licences}"></c:if>
+										<c:if test="${not empty company.licences}">
+											<c:forTokens items="${company.licences}" delims="," var="licenceStr">
+												<div class="pic_box_wrapper">
+													<div class="pic_box">
+														<div id="this_upload_image_div_1">
+															<div id="this_upload_div_1" style="position:relative;">
+																<img alt="_blank" id="this_upload_image_1" class="upload_ico" style="cursor:pointer;"  src="${licenceStr}?x-oss-process=image/resize,w_150,limit_0" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${licenceStr}','90%','90%')"/>
+															</div>
+														</div>
+													</div>
+												</div>
+
+											</c:forTokens>
+										</c:if>
+
+								</c:forTokens>
+							</c:otherwise>
+						</c:choose>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line">公司logo:</label>
+					<div class="layui-input-block">
+						<div class="pic_box_wrapper">
+							<div class="pic_box">
+								<div id="next_upload_image_div">
+									<div id="next_upload_div_1" style="position:relative;">
+										<c:choose>
+											<c:when test="${empty company.logo}">
+												<img alt="_blank" id="next_upload_image_2" class="upload_ico" style="cursor:pointer;"  src="${pageContext.request.contextPath}/static/common/img/pic_add.png"  onclick="next_upload_image_button(2)"/>
+											</c:when>
+											<c:otherwise>
+												<c:forTokens items="${company.logo}" delims="," var="logoStr">
+													<span id="this_upload_close_1" class="pic_close glyphicon glyphicon-remove" onclick="next_close_img(1)"></span>
+													<img alt="_blank" id="next_upload_image_2" class="upload_ico" style="cursor:pointer;"  src="${logoStr}?x-oss-process=image/resize,w_150,limit_0"  onclick="next_upload_image_button(2)"/>
+												</c:forTokens>
+											</c:otherwise>
+										</c:choose>
+										<input id="next_upload_file_2" type="file" style="display:none"  name="next_upload_files"  onchange="next_upload_show_image(2)" />
+									</div>
+								</div>
+							</div>
+						</div>
+						<span id="next_upload_msg">请上传*.png,*.bmp,*.jpg/jpeg格式的图片</span><br>
+
+						<%--<div id="next_upload_image_div">--%>
+							<%--<div id="next_upload_div_1" style="float: left;position:relative;width: 57px;height: 57px;">--%>
+								<%--<c:choose>--%>
+									<%--<c:when test="${empty company.logo}">--%>
+										<%--<img alt="_blank" id="next_upload_image_2" class="upload_ico" style="cursor:pointer;"  src="${pageContext.request.contextPath}/static/uploadify/upload_ico.png"  onclick="next_upload_image_button(2)"/>--%>
+									<%--</c:when>--%>
+									<%--<c:otherwise>--%>
+										<%--<c:forTokens items="${company.logo}" delims="," var="logoStr">--%>
+											<%--<img alt="_blank" id="next_upload_image_2" class="upload_ico" style="cursor:pointer;"  src="${logoStr}"  onclick="next_upload_image_button(2)"/>--%>
+										<%--</c:forTokens>--%>
+									<%--</c:otherwise>--%>
+								<%--</c:choose>--%>
+								<%--<input id="next_upload_file_2" type="file" style="display:none"  name="next_upload_files"  onchange="next_upload_show_image(2)" /><br>--%>
+							<%--</div>--%>
+						<%--</div>--%>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label double-line">备注信息:</label>
+					<div class="layui-input-block">
+						<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+					</div>
+				</div>
+			</div>
+		</form:form>
+	<c:if test="${empty company.id}">
+		<div class="layui-layer-btn">
+			<a class="layui-layer-btn0" onclick="document.getElementById('inputForm').reset()">重置</a>
+			<a class="layui-layer-btn0" onclick="tijiao()">提交</a>
+		</div>
+		</div>
+	</div>
+	<%--</div>--%>
+	<%--</div>--%>
+<%--</div>--%>
+	<script>
+        resizeFormWindow();
+        $(window).resize(function(){
+            resizeFormWindow();
+        });
+	</script>
+	</c:if>
+	<c:if test="${not empty company.id}">
+		</div>
+	</div>
+	</c:if>
+</body>
+</html>

+ 211 - 0
src/main/webapp/webpage/modules/sys/companyAddList.jsp

@@ -0,0 +1,211 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>企业信息管理</title>
+	<meta name="decorator" content="default"/>
+	<style type="text/css">
+		img {
+			/*width: 100%;*/
+			/*height: 50px;*/
+			max-width: 50px;
+			max-height: 50px;
+		}
+	</style>
+	<script type="text/javascript">
+		$(document).ready(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++;
+            //         }
+            //     })
+            // });
+            // $('#moresee').click(function(){
+            //     if($('#moresees').is(':visible'))
+            //     {
+            //         $('#moresees').slideUp(0,resizeListWindow1);
+            //         $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+            //     }else{
+            //         $('#moresees').slideDown(0,resizeListWindow1);
+            //         $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+            //     }
+            // });
+		});
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+	<div class="wrapper wrapper-content">
+		<sys:message content="${message}"/>
+		<div class="layui-row">
+			<div class="full-width fl">
+				<div class="contentShadow layui-row" id="queryDiv">
+					<shiro:hasPermission name="sys:company:list">
+					<form:form id="searchForm" modelAttribute="company" action="${ctx}/sys/company/companyAddList" 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 id="createBy" name="createBy" type="hidden" value="${fns:getUser().id}"/>
+						<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 athird fr">
+								<div class="input-group">
+									<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+									<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+								</div>
+							</div>
+							<div style="    clear:both;"></div>
+						</div>
+					</form:form>
+					</shiro:hasPermission>
+				</div>
+			</div>
+			<div class="full-width fl">
+				<div class="contentShadow layui-form contentDetails">
+					<div class="nav-btns">
+						<%--<c:if test="${manager}">
+							<a href="javascript:void(0)" onclick="openDialog('邀请加入企业', '${ctx}/sys/company/addUserInfo','95%','95%')" class="nav-btn nav-btn-add" ><i class="fa fa-edit"></i> 邀请</a>
+						</c:if>--%>
+						<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="with-profile">
+						<table class="oa-table layui-table" id="contentTable"></table>
+
+						<!-- 分页代码 -->
+						<table:page page="${page}"></table:page>
+					</div>
+					<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',  width:40,title: '序号'}
+                    ,{field:'name',align:'center', title: '公司名称', minWidth:150,templet:function(d){
+                            var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看企业', '${ctx}/sys/company/form?id="+ d.id +"&readAttr=disabled','95%','95%')\">" +
+                                "<span title=" + d.name + ">" + d.name + "</span></a>";
+                            return xml;
+                        }}
+                    ,{align:'center', title: '营业执照', width:66,templet:function(d){
+                            var xml="";
+                            if(d.licences != undefined)
+                                xml = "<img src=\"" + d.licences + "?x-oss-process=image/resize,w_50,limit_0\" onclick=\"openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=" + d.licences + "','95%','95%')\"/>";
+                            return xml;
+                        }}
+                    ,{field:'number',align:'center', title: '统一社会信用代码(注册号)', width:160,templet:function(d){
+                            return "<span title='"+ d.number +"'>" + d.number + "</span>";
+                        }}
+                    ,{field:'legalPerson', align:'center',title: '法人', width:80,templet:function(d){
+                            return "<span title='"+ d.legalPerson +"'>" + d.legalPerson + "</span>";
+                        }}
+                    ,{field:'tuser',align:'center', title: '申请人编号|姓名', width:110,templet:function(d){
+                            return "<span title='"+ d.tuser +"'>" + d.tuser + "</span>";
+                        }}
+
+                    ,{field:'phone', align:'center',title: '申请人电话', width:90,templet:function(d){
+                            return "<span title='"+ d.phone +"'>" + d.phone + "</span>";
+                        }}
+                    ,{field:'email', align:'center',title: '申请人邮箱',width:130,templet:function(d){
+                            return "<span title='"+ d.email +"'>" + d.email + "</span>";
+                        }}
+                    ,{field:'usableStatus',align:'center', title: '是否启用', width:70,templet:function(d){
+                            return "<span title='"+ d.usableStatus +"'>" + d.usableStatus + "</span>";
+                        }}
+                    ,{field:'usable',align:'center', title: '状态', width:70,templet:function(d){
+                            return "<span title='"+ d.usable +"'>" + d.usable + "</span>";
+                        }}
+                    ,{field:'op',align:'center',title:"操作",width:175,templet:function(d){
+                            ////对操作进行初始化
+                            var xml = "";
+							if(d.candelete1 != undefined && d.candelete1 == "1"){
+                                if(d.canview != undefined && d.canview == "1")
+                                /*xml += "<a href=\"javascript:void(0)\" onclick=\"openDialogView('查看企业信息', '${ctx}/sys/company/form?id="+ d.id +"&readAttr=disabled','95%','95%')\" class=\"op-btn op-btn-view\" ><i class=\"fa fa-search-plus\"></i> 查看</a>";
+                            	xml += "<a href=\"javascript:void(0)\" onclick=\"openDialog('修改企业信息', '${ctx}/sys/company/addForm?id=" + d.id + "','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+                                */xml +="<a href=\"javascript:void(0)\" onclick=\"openDialog('邀请加入企业', '${ctx}/sys/company/addUserInfo?company="+d.companyId+"','75%','400px;')\" class=\"op-btn op-btn-add\" ><i class=\"fa fa-search-plus\"></i> 邀请</a>";}
+                            if(d.candelete != undefined && d.candelete == "1")
+                                xml +="<a href=\"${ctx}/sys/company/deletes?companyId=" + d.companyId + "\" 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="company" varStatus="index">
+                    <c:if test="${index.index != 0}">,</c:if>
+                    {
+                        "index":"${index.index+1}"
+                        ,"id":"${company.id}"
+                        ,"name":"${company.name}"
+                        ,"companyId":"${company.companyId}"
+                        <c:if test="${not empty company.licences}"><c:forTokens items="${company.licences}" delims="," var="licenceStr">
+                        ,"licences":"${licenceStr}"</c:forTokens></c:if>
+                        ,"number":"${company.number}"
+                        ,"legalPerson":"${company.legalPerson}"
+                        ,"tuser":"${company.tuser.name}"
+                        ,"phone":"${company.phone}"
+                        ,"email":"${company.email}"
+                        <c:choose>
+							<c:when test="${not empty company.useableStatus}">,"usableStatus":"${fns:getDictLabel(company.useableStatus, 'office_useable', '')}"
+							</c:when>
+							<c:otherwise>,"usableStatus":"启用"</c:otherwise>
+						</c:choose>
+                        ,"usable":"${fns:getDictLabel(company.USEABLE, 'useable', '')}"
+                        ,"canview":"1"
+                        ,"candelete":"1"
+                        <c:if test="${not empty company.master && company.master > 0}">
+                        ,"candelete1":"1"
+                        </c:if>
+                    }
+                    </c:forEach>
+                    </c:if>
+                ]
+                // ,even: true
+                // ,height: 315
+            });
+
+        })
+
+        resizeListTable(175);
+	</script>
+	<script>
+        resizeListWindow1();
+        $(window).resize(function(){
+            resizeListWindow1();
+        });
+	</script>
+</body>
+</html>

+ 296 - 0
src/main/webapp/webpage/modules/sys/companyForm.jsp

@@ -0,0 +1,296 @@
+<%@ 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">--%>
+        <%--img {width: 50px; height: 50px;}--%>
+    <%--</style>--%>
+    <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++;
+//                    }
+//                })
+//            });
+//        })
+
+        //上传营业执照
+        function this_upload_image_button(index){
+            $("#this_upload_file_"+index).click();
+        }
+        function this_upload_show_image(index){
+            var image =$("#this_upload_file_"+index)[0].files[0];
+            var url = window.URL.createObjectURL(image);
+            $("#this_upload_image_"+index).attr("src",url);
+            var length = $("#this_upload_image_div :file").length;
+            if( index == length &&  length < 1 ){
+                this_upload_image_append(index);
+                this_add_x(index);
+            }else if(index == length && length ==1){
+                var span = '<span id="this_upload_close_'+index+'" class="close_ico" style="cursor:pointer; position: absolute;top:-1px;right: -1px; display:inline-block;z-index:1;color: red;" onclick="this_close_img('+index+');">x</span>';
+                $("#this_upload_image_1").before(span);
+            }
+        }
+        function this_upload_image_append(index){
+            var div1 = "<div id='this_upload_div_"+(index+1)+"' style='float:left;position:relative;width: 57px;height: 57px;'>";
+            var img = '<img  id="this_upload_image_'+(index+1)+'" class="upload_ico" width="50px" height="50px"  onclick="this_upload_image_button('+(index+1)+')" src = "${pageContext.request.contextPath}/static/uploadify/upload_ico.png" style="cursor:pointer;"/>';
+            var input = '<input id="this_upload_file_'+(index+1)+'" type="file" style="display:none;" name="this_upload_files" onChange="this_upload_show_image('+(index+1)+')" /><br>';
+            var div2 = "</div>";
+
+            $("#this_upload_image_div").append(div1+img+input+div2);
+        }
+        function this_close_img(index) {
+            $("#this_upload_div_"+index).remove();
+            var length = $("#this_upload_image_div :file").length;
+            if(length == 0){
+                this_add_div();
+            }else if(length == 1){
+                var x = $("#this_upload_image_div").find("span").text();
+                if("x" != x){
+                    this_add_div();
+                }
+            }
+        }
+        function this_add_x(index) {
+            var span = '<span id="this_upload_close_'+index+'" class="close_ico" style="cursor:pointer; position: absolute;top:-1px;right: -1px; display:inline-block;z-index:1;color: red;" onclick="this_close_img('+index+');">x</span>';
+            $("#this_upload_image_div").find("img:eq(-2)").before(span);
+        }
+        function this_add_div() {
+            var this_upload_div_1 =
+                '<div id="this_upload_div_1" style="float: left;position:relative;width: 57px;height: 57px;" >'+
+                '<img  id="this_upload_image_1" class="upload_ico" style="cursor:pointer;"  src="${pageContext.request.contextPath}/static/uploadify/upload_ico.png"  onclick="this_upload_image_button(1)"/>'+
+                '<input id="this_upload_file_1" type="file" style="display:none"  name="this_upload_files"  onchange="this_upload_show_image(1)" /><br>'+
+                '</div>';
+            $("#this_upload_image_div").html("").append(this_upload_div_1);
+        }
+
+
+        //上传公司logo
+        function next_upload_image_button(index){
+            $("#next_upload_file_"+index).click();
+        }
+        function next_upload_show_image(index){
+            var image =$("#next_upload_file_"+index)[0].files[0];
+            var url = window.URL.createObjectURL(image);
+            $("#next_upload_image_"+index).attr("src",url);
+            var length = $("#next_upload_image_div :file").length;
+            if( index == length &&  length < 1 ){
+                next_upload_image_append(index);
+                next_add_x(index);
+            }else if(index == length && length ==1){
+                var span = '<span id="next_upload_close_'+index+'" class="close_ico" style="cursor:pointer; position: absolute;top:-1px;right: -1px; display:inline-block;z-index:1;color: red;" onclick="next_close_img('+index+');">x</span>';
+                $("#next_upload_image_1").before(span);
+            }
+        }
+        function next_upload_image_append(index){
+            var div1 = "<div id='next_upload_div_"+(index+1)+"' style='float:left;position:relative;width: 57px;height: 57px;'>";
+            var img = '<img  id="next_upload_image_'+(index+1)+'" class="upload_ico" width="50px" height="50px"  onclick="next_upload_image_button('+(index+1)+')" src = "${pageContext.request.contextPath}/static/uploadify/upload_ico.png" style="cursor:pointer;"/>';
+            var input = '<input id="next_upload_file_'+(index+1)+'" type="file" style="display:none;" name="next_upload_files" onChange="next_upload_show_image('+(index+1)+')" /><br>';
+            var div2 = "</div>";
+
+            $("#next_upload_image_div").append(div1+img+input+div2);
+        }
+        function next_close_img(index) {
+            $("#next_upload_div_"+index).remove();
+            var length = $("#next_upload_image_div :file").length;
+            if(length == 0){
+                next_add_div();
+            }else if(length == 1){
+                var x = $("#next_upload_image_div").find("span").text();
+                if("x" != x){
+                    next_add_div();
+                }
+            }
+        }
+        function next_add_x(index) {
+            var span = '<span id="next_upload_close_'+index+'" class="close_ico" style="cursor:pointer; position: absolute;top:-1px;right: -1px; display:inline-block;z-index:1;color: red;" onclick="next_close_img('+index+');">x</span>';
+            $("#next_upload_image_div").find("img:eq(-2)").before(span);
+        }
+        function next_add_div() {
+            var next_upload_div_1 =
+                '<div id="next_upload_div_1" style="float: left;position:relative;width: 57px;height: 57px;" >'+
+                '<img  id="next_upload_image_1" class="upload_ico" style="cursor:pointer;"  src="${pageContext.request.contextPath}/static/uploadify/upload_ico.png"  onclick="next_upload_image_button(1)"/>'+
+                '<input id="next_upload_file_1" type="file" style="display:none"  name="next_upload_files"  onchange="next_upload_show_image(1)" /><br>'+
+                '</div>';
+            $("#next_upload_image_div").html("").append(next_upload_div_1);
+        }
+    </script>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+		      var id = $("#id").val();
+		      var home = $("#home").val();
+              if(obj == 1){
+                  $("#inputForm").attr("action","${ctx}/sys/company/approve?id="+id+"&home="+home);
+              }else if(obj == 2){
+                  $("#inputForm").attr("action","${ctx}/sys/company/refuse?id="+id+"&home="+home);
+              }else{
+                  $("#inputForm").attr("action","${ctx}/sys/company/save");
+
+              }
+			  $("#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,textarea,select').attr('disabled',<%=request.getAttribute("disabled")%>);
+
+		});
+	</script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+		<form:form id="inputForm" modelAttribute="company" enctype="multipart/form-data"  method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<form:hidden path="home"/>
+
+            <div class="form-group layui-row first lw12">
+                <div class="form-group-label"><h2>企业信息</h2></div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">公司名称:</label>
+                    <div class="layui-input-block">
+                        <input desabled="true" class="form-control layui-input required" value="${company.name}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">申请人邮箱:</label>
+                    <div class="layui-input-block">
+                        <input desabled="true" class="form-control layui-input required" value="${company.email}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line">统一社会信用代码(注册号):</label>
+                    <div class="layui-input-block">
+                        <input desabled="true" class="form-control layui-input required" value="${company.number}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">申请人姓名:</label>
+                    <div class="layui-input-block">
+                        <input desabled="true" class="form-control layui-input required" value="${company.tuser.name}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">法人:</label>
+                    <div class="layui-input-block">
+                        <input desabled="true" class="form-control layui-input required" value="${company.legalPerson}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">申请人电话:</label>
+                    <div class="layui-input-block">
+                        <input desabled="true" class="form-control layui-input required" value="${company.phone}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6" style="height:160px;">
+                    <label class="layui-form-label double-line">营业执照:</label>
+                    <div class="layui-input-block">
+                        <c:choose>
+                            <c:when test="${requestScope.disabled}">
+                                <div>
+                                    <c:if test="${empty company.licences}">暂无</c:if>
+                                    <c:if test="${not empty company.licences}">
+                                        <c:forTokens items="${company.licences}" delims="," var="licenceStr">
+                                            <div class="pic_box_wrapper">
+                                                <div class="pic_box">
+                                                    <div>
+                                                        <div style="position:relative;">
+                                                            <img alt="_blank" class="upload_ico" style="cursor:pointer;"  src="${licenceStr}?x-oss-process=image/resize,w_130,limit_0" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${licenceStr}','90%','90%')"/>
+                                                        </div>
+                                                    </div>
+                                                </div>
+                                            </div>
+                                        </c:forTokens>
+                                    </c:if>
+
+                            </c:when>
+                            <c:otherwise>
+                                <span id="this_upload_msg">点击已上传图片可更换</span><br>
+                                <div id="this_upload_image_div">
+                                    <div id="this_upload_div_1" style="float: left;position:relative;width: 57px;height: 57px;">
+                                        <img alt="_blank" id="this_upload_image_1" class="upload_ico" style="cursor:pointer;"  src="${pageContext.request.contextPath}/static/uploadify/upload_ico.png"  onclick="this_upload_image_button(1)"/>
+                                        <input id="this_upload_file_1" type="file" style="display:none"  name="this_upload_files"  onchange="this_upload_show_image(1)" /><br>
+                                    </div>
+                                </div>
+                            </c:otherwise>
+                        </c:choose>
+                    </div>
+                </div>
+                </div>
+                <div class="layui-item layui-col-sm6" style="height:160px;">
+                    <label class="layui-form-label double-line">公司logo:</label>
+                    <div class="layui-input-block">
+                        <c:choose>
+                            <c:when test="${requestScope.disabled}">
+                                <div class="pic_box_wrapper">
+                                    <div class="pic_box">
+                                        <c:if test="${empty company.logo}">暂无</c:if>
+                                        <c:if test="${not empty company.logo}">
+                                        <c:forTokens items="${company.logo}" delims="," var="logoStr">
+                                            <div>
+                                                <div style="position:relative;">
+                                                    <img alt="_blank" class="upload_ico" style="cursor:pointer;"  src="${logoStr}?x-oss-process=image/resize,w_130,limit_0" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${logoStr}','90%','90%')"/>
+                                                </div>
+                                            </div>
+                                        </c:forTokens>
+                                        </c:if>
+                                    </div>
+                                </div>
+                            </c:when>
+                            <c:otherwise>
+                                <span id="next_upload_msg">点击已上传图片可更换</span><br>
+                                <div id="next_upload_image_div">
+                                    <div id="next_upload_div_1" style="float: left;position:relative;width: 57px;height: 57px;">
+                                        <img alt="_blank" id="next_upload_image_1" class="upload_ico" style="cursor:pointer;"  src="${pageContext.request.contextPath}/static/uploadify/upload_ico.png"  onclick="next_upload_image_button(1)"/>
+                                        <input id="next_upload_file_1" type="file" style="display:none"  name="next_upload_files"  onchange="next_upload_show_image(1)" /><br>
+                                    </div>
+                                </div>
+                            </c:otherwise>
+                        </c:choose>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 with-textarea">
+                    <label class="layui-form-label double-line">备注信息:</label>
+                    <div class="layui-input-block">
+                        <textarea htmlEscape="false" rows="4" class="form-control ">${company.remarks}</textarea>
+                    </div>
+                </div>
+            </div>
+	    </form:form>
+    </div>
+    </div>
+</div>
+</body>
+</html>

+ 211 - 0
src/main/webapp/webpage/modules/sys/companyList.jsp

@@ -0,0 +1,211 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>企业信息管理</title>
+	<meta name="decorator" content="default"/>
+	<style type="text/css">
+		img {
+			/*width: 50px;*/
+			/*height: 50px;*/
+			max-width: 50px;
+			max-height: 50px;
+		}
+	</style>
+	<%--<script type="text/javascript">--%>
+		<%--$(document).ready(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>--%>
+	<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">
+				<shiro:hasPermission name="sys:company:list">
+				<form:form id="searchForm" modelAttribute="company" action="${ctx}/sys/company/" 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 athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+				</shiro:hasPermission>
+			</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="with-profile">
+				<table class="oa-table layui-table" id="contentTable"></table>
+
+					<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				</div>
+				<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',  width:40,title: '序号'}
+                ,{field:'name',align:'center', title: '公司名称', minWidth:120,templet:function(d){
+                        return "<span title='"+ d.name +"'>" + d.name + "</span>";
+                    }}
+                ,{field:'name',align:'center', title: '公司名称', minWidth:150,templet:function(d){
+                        var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看企业信息', '${ctx}/sys/company/form?id=" + d.id + "&readAttr=disabled','95%','95%')\">" +
+                            "<span title=" + d.name + ">" + d.name + "</span></a>";
+                        return xml;
+                    }}
+                ,{align:'center', title: '营业执照', width:66,templet:function(d){
+                        var xml="";
+                        if(d.licences != undefined)
+                        	xml = "<img src=\"" + d.licences + "?x-oss-process=image/resize,w_50,limit_0\" onclick=\"openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=" + d.licences + "','95%','95%')\"/>";
+                        return xml;
+                    }}
+                ,{field:'number',align:'center', title: '统一社会信用代码(注册号)', width:160,templet:function(d){
+                        return "<span title='"+ d.number +"'>" + d.number + "</span>";
+                    }}
+                ,{field:'legalPerson', align:'center',title: '法人', width:80,templet:function(d){
+                        return "<span title='"+ d.legalPerson +"'>" + d.legalPerson + "</span>";
+                    }}
+                ,{field:'tuser',align:'center', title: '申请人编号|姓名', width:110,templet:function(d){
+                        return "<span title='"+ d.tuser +"'>" + d.tuser + "</span>";
+                    }}
+
+                ,{field:'phone', align:'center',title: '申请人电话', width:90,templet:function(d){
+                        return "<span title='"+ d.phone +"'>" + d.phone + "</span>";
+                    }}
+                ,{field:'email', align:'center',title: '申请人邮箱',width:110,templet:function(d){
+                        return "<span title='"+ d.email +"'>" + d.email + "</span>";
+                    }}
+                ,{field:'usableStatus',align:'center', title: '是否启用', width:70,templet:function(d){
+                        return "<span title='"+ d.usableStatus +"'>" + d.usableStatus + "</span>";
+                    }}
+                ,{field:'usable',align:'center', title: '状态', width:70,templet:function(d){
+                        return "<span title='"+ d.usable +"'>" + d.usable + "</span>";
+                    }}
+                ,{field:'op',align:'center',title:"操作",width:240,templet:function(d){
+                        ////对操作进行初始化
+                        var xml = "";
+                        if(d.candelete2 != undefined && d.candelete2 == "1"){
+                            xml +="<a href=\"${ctx}/sys/company/companyStatus?id=" + d.id  + "&status=2\" onclick=\"return confirmx('确认要禁用该企业吗?', this.href)\"   class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 禁用</a>";
+                        }
+                        if(d.candelete2 != undefined && d.candelete2 == "2"){
+                            xml +="<a href=\"${ctx}/sys/company/companyStatus?id=" + d.id  + "&status=1\" onclick=\"return confirmx('确认要启用该企业吗?', this.href)\"   class=\"op-btn op-btn-pass\"><i class=\"fa fa-check\"></i> 启用</a>";
+                        }
+                        if(d.canpass != undefined && d.canpass == "1")
+                            xml +="<a href=\"${ctx}/sys/company/approve?id=" + d.id + "\" onclick=\"return confirmx('确认要审批通过该企业吗?', this.href)\"   class=\"op-btn op-btn-pass\"><i class=\"fa fa-check\"></i> 通过</a>";
+                        if(d.canreject != undefined && d.canreject == "1")
+                            xml +="<a href=\"${ctx}/sys/company/refuse?id=" + d.id + "\" onclick=\"return confirmx('确认要驳回该企业吗?', this.href)\"   class=\"op-btn op-btn-reject\"><i class=\"fa fa-close\"></i> 拒绝</a>";
+                        if(d.candelete != undefined && d.candelete == "1")
+                            xml +="<a href=\"${ctx}/sys/company/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="company" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${company.id}"
+                    ,"name":"${company.name}"
+                    <c:if test="${not empty company.licences}"><c:forTokens items="${company.licences}" delims="," var="licenceStr">
+                    ,"licences":"${licenceStr}"</c:forTokens></c:if>
+                    ,"number":"${company.number}"
+                    ,"legalPerson":"${company.legalPerson}"
+                    ,"tuser":"${company.tuser.name}"
+                    ,"phone":"${company.phone}"
+                    ,"email":"${company.email}"
+                    <c:choose>
+                    <c:when test="${not empty company.useableStatus}">,"usableStatus":"${fns:getDictLabel(company.useableStatus, 'office_useable', '')}"
+                    </c:when>
+                    <c:otherwise>,"usableStatus":"启用"</c:otherwise>
+                    </c:choose>
+                    ,"usable":"${fns:getDictLabel(company.USEABLE, 'useable', '')}"
+                    <shiro:hasPermission name="sys:company:view">,"canview":"1"</shiro:hasPermission>
+                    <shiro:hasPermission name="sys:company:del">,"candelete":"1"</shiro:hasPermission>
+					<shiro:hasPermission name="sys:company:approve"><c:if test="${company.USEABLE eq '0'}">,"canpass":"1"</c:if></shiro:hasPermission>
+					<shiro:hasPermission name="sys:company:refuse"><c:if test="${company.USEABLE eq '0'}">,"canreject":"1"</c:if></shiro:hasPermission>
+                    <c:if test="${fns:getUser().loginName eq 'admin'}">
+						<c:choose>
+							<c:when test="${not empty company.useableStatus && company.useableStatus eq '2' && company.USEABLE eq '1'}">,"candelete2":"2"
+							</c:when>
+							<c:when test="${(empty company.useableStatus || company.useableStatus eq '1') && company.USEABLE eq '1'}">,"candelete2":"1"
+							</c:when>
+						</c:choose>
+
+                    </c:if>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+            // ,even: true
+            // ,height: 315
+        });
+
+    })
+
+    resizeListTable(226);
+</script>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 120 - 0
src/main/webapp/webpage/modules/sys/companyinfoView.jsp

@@ -0,0 +1,120 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>加入的企业信息查看</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		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);
+					}
+				}
+			});
+            //只做查看时,禁用掉以下标签
+            $('input,textarea,select').attr('disabled',<%=request.getAttribute("disabled")%>);
+		});
+	</script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container view-form">
+		<form:form id="inputForm" modelAttribute="companyinfo" action="${ctx}/sys/company/companyinfoView" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+
+            <div class="form-group layui-row first lw12">
+                <div class="form-group-label"><h2>详细信息</h2></div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">公司名称:</label>
+                    <div class="layui-input-block">
+                        <c:choose>
+                            <c:when test="${!disabled}">
+                                <form:input path="companyId" htmlEscape="false" value="${office.name}" class="form-control layui-input "/>
+                            </c:when>
+                            <c:otherwise>
+                                <input readonly="true" class="form-control layui-input required" value="${office.name}"/>
+                            </c:otherwise>
+                        </c:choose>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">用户名称:</label>
+                    <div class="layui-input-block">
+                        <c:choose>
+                            <c:when test="${!disabled}">
+                                <form:input path="joinUserId" htmlEscape="false"  value="${user.name}"   class="form-control layui-input"/>
+                            </c:when>
+                            <c:otherwise>
+                                <input readonly="true" class="form-control layui-input required" value="${user.name}"/>
+                            </c:otherwise>
+                        </c:choose>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">公司管理员:</label>
+                    <div class="layui-input-block">
+                        <c:choose>
+                            <c:when test="${!disabled}">
+                                <form:input path="masterName" htmlEscape="false" class="form-control layui-input"/>
+                            </c:when>
+                            <c:otherwise>
+                                <input readonly="true" class="form-control layui-input required" value="${companyinfo.masterName}"/>
+                            </c:otherwise>
+                        </c:choose>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">加入状态:</label>
+                    <div class="layui-input-block">
+                        <c:choose>
+                            <c:when test="${!disabled}">
+                                <form:input path="status" htmlEscape="false"  value="${fns:getDictLabel(companyinfo.status, 'companyStatus', '')}"  class="form-control layui-input" />
+                            </c:when>
+                            <c:otherwise>
+                                <input readonly="true" class="form-control layui-input required" value="${fns:getDictLabel(companyinfo.status, 'companyStatus', '')}"/>
+                            </c:otherwise>
+                        </c:choose>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 with-textarea">
+                    <label class="layui-form-label">备注信息:</label>
+                    <div class="layui-input-block">
+                        <c:choose>
+                            <c:when test="${!disabled}">
+                                <form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+                            </c:when>
+                            <c:otherwise>
+                                <textarea htmlEscape="false" rows="4" readonly="true" class="form-control ">
+                                        ${companyinfo.remarks}
+                                </textarea>
+                            </c:otherwise>
+                        </c:choose>
+                    </div>
+                </div>
+
+            </div>
+	    </form:form>
+    </div>
+</div>
+</body>
+</html>

+ 86 - 0
src/main/webapp/webpage/modules/sys/dictForm.jsp

@@ -0,0 +1,86 @@
+<%@ 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() {
+			$("#value").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>
+<div class="single-form">
+	<div class="container">
+	<form:form id="inputForm" modelAttribute="dict" action="${ctx}/sys/dict/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+		<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">键值:</label>
+				<div class="layui-input-block">
+					<form:input path="value" htmlEscape="false" maxlength="50" 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="label" htmlEscape="false" maxlength="50" 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="type" htmlEscape="false" maxlength="50" class="form-control layui-input required abc"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">描述:</label>
+				<div class="layui-input-block">
+					<form:input path="description" htmlEscape="false" maxlength="50" class="form-control layui-input required"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm12">
+				<label class="layui-form-label">排序:</label>
+				<div class="layui-input-block">
+					<form:input path="sort" htmlEscape="false" maxlength="11" class="form-control required layui-input digits"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm12 with-textarea">
+				<label class="layui-form-label">备注:</label>
+				<div class="layui-input-block">
+					<form:textarea path="remarks" htmlEscape="false" rows="4" maxlength="200" class="form-control "/>
+				</div>
+			</div>
+		</div>
+	</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 135 - 0
src/main/webapp/webpage/modules/sys/dictList.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"/>
+	<script type="text/javascript">
+		function page(n,s){
+			$("#pageNo").val(n);
+			$("#pageSize").val(s);
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</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="dict" action="${ctx}/sys/dict/" method="post" class="form-inline">
+				<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+				<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+				<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+
+				<div class="commonQuery">
+					<div class="layui-item query athird">
+						<label class="layui-form-label">类型:</label>
+						<div class="layui-input-block with-icon">
+							<form:select id="type" path="type" class="form-control simple-select"><form:option value="" label=""/><form:options items="${typeList}" htmlEscape="false"/></form:select>
+						</div>
+					</div>
+					<div class="layui-item query athird">
+						<label class="layui-form-label">描述:</label>
+						<div class="layui-input-block">
+							<form:input path="description" htmlEscape="false" maxlength="50" class="form-control"/>
+						</div>
+					</div>
+					<div class="layui-item athird">
+						<div class="input-group">
+							<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+							<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+						</div>
+					</div>
+					<div style="    clear:both;"></div>
+				</div>
+			</form:form>
+			</div>
+		</div>
+
+		<div class="full-width fl">
+			<div class="contentShadow layui-form contentDetails">
+				<div class="nav-btns">
+					<shiro:hasPermission name="sys:dict:add">
+						<table:addRow url="${ctx}/sys/dict/form" title="字典"></table:addRow><!-- 增加按钮 -->
+					</shiro:hasPermission>
+					<shiro:hasPermission name="sys:dict:edit">
+						<table:editRow url="${ctx}/sys/dict/form" id="contentTable"  title="字典"></table:editRow><!-- 编辑按钮 -->
+					</shiro:hasPermission>
+					<shiro:hasPermission name="sys:dict:del">
+						<table:delRow url="${ctx}/sys/dict/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+					</shiro:hasPermission>
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+					<div style="clear: both;"></div>
+				</div>
+	
+
+	
+				<table id="contentTable" class="table table-striped table-bordered  table-hover table-condensed  dataTables-example dataTable no-footer">
+					<thead>
+						<tr>
+							<th width="40" > <input type="checkbox" class="i-checks"></th>
+							<th width="100" style="text-align: center;" class="sort-column value">键值</th>
+							<th style="text-align: center;">标签</th>
+							<th style="text-align: center;" class="sort-column type">类型</th>
+							<th style="text-align: center;" class="sort-column description">描述</th>
+							<th width="100" style="text-align: center;" class="sort-column sort">排序</th>
+							<th width="250" style="text-align: center;">操作</th>
+						</tr>
+					</thead>
+					<tbody>
+					<c:forEach items="${page.list}" var="dict">
+						<tr>
+							<td> <input type="checkbox" id="${dict.id}" class="i-checks"></td>
+							<td>${dict.value}</td>
+							<td><a class="attention-info" href="javascript:void(0)" onclick="openDialogView('查看字典', '${ctx}/sys/dict/form?id=${dict.id}&view=1','95%','95%')">${dict.label}</a></td>
+							<td><a href="javascript:" onclick="$('#type').val('${dict.type}');$('#searchForm').submit();return false;">${dict.type}</a></td>
+							<td>${dict.description}</td>
+							<td>${dict.sort}</td>
+							<td class="op-td text-center">
+								<div class="op-btn-box">
+								<shiro:hasPermission name="sys:dict:view">
+									<a href="javascript:void(0)" onclick="openDialogView('查看字典', '${ctx}/sys/dict/form?id=${dict.id}&view=1','95%','95%')" class="op-btn op-btn-view" ><i class="fa fa-search-plus"></i> 查看</a>
+								</shiro:hasPermission>
+								<shiro:hasPermission name="sys:dict:edit">
+									<a href="javascript:void(0)" onclick="openDialog('修改字典', '${ctx}/sys/dict/form?id=${dict.id}','95%','95%')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>
+								</shiro:hasPermission>
+								<shiro:hasPermission name="sys:dict:del">
+									<a href="${ctx}/sys/dict/delete?id=${dict.id}&type=${dict.type}" onclick="return confirmx('确认要删除该字典吗?', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
+								</shiro:hasPermission>
+								<shiro:hasPermission name="sys:dict:add">
+									<a href="javascript:void(0)" onclick="openDialog('添加键值', '<c:url value='${fns:getAdminPath()}/sys/dict/form?type=${dict.type}&sort=${dict.sort+10}'><c:param name='description' value='${dict.description}'/></c:url>','95%','95%')" class="op-btn op-btn-revert" ><i class="fa fa-plus"></i> 添加键值</a>
+								</shiro:hasPermission>
+								</div>
+							</td>
+						</tr>
+					</c:forEach>
+					</tbody>
+				</table>
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+</div>
+<script>
+    $("a").on("click",addLinkVisied);
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 86 - 0
src/main/webapp/webpage/modules/sys/dictView.jsp

@@ -0,0 +1,86 @@
+<%@ 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() {
+			$("#value").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>
+<div class="single-form">
+	<div class="container view-form">
+	<form:form id="inputForm" modelAttribute="dict" action="${ctx}/sys/dict/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+		<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">键值:</label>
+				<div class="layui-input-block">
+					<form:input path="value" readonly="true" htmlEscape="false" maxlength="50" 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="label" readonly="true" htmlEscape="false" maxlength="50" 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="type" readonly="true" htmlEscape="false" maxlength="50" class="form-control layui-input required abc"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">描述:</label>
+				<div class="layui-input-block">
+					<form:input path="description" readonly="true" htmlEscape="false" maxlength="50" class="form-control layui-input required"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm12">
+				<label class="layui-form-label">排序:</label>
+				<div class="layui-input-block">
+					<form:input path="sort" readonly="true" htmlEscape="false" maxlength="11" class="form-control required layui-input digits"/>
+				</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" readonly="true" htmlEscape="false" rows="4" maxlength="200" class="form-control "/>
+				</div>
+			</div>
+		</div>
+	</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 163 - 0
src/main/webapp/webpage/modules/sys/gridInvoice.jsp

@@ -0,0 +1,163 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+        $(document).ready(function() {
+
+
+
+            $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+                $('#contentTable tbody tr td input.i-checks').iCheck('check');
+            });
+
+            $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+                $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+            });
+
+
+        });
+
+        function getSelectedItem(){
+
+            var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+            if(size == 0 ){
+                top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+                return "-1";
+            }
+
+            if(size > 1 ){
+                top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+                return "-1";
+            }
+            var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+
+            var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel").html();
+            return id+"_item_"+label;
+        }
+        function page(n,s){
+            if(n) $("#pageNo").val(n);
+            if(s) $("#pageSize").val(s);
+            $("#searchForm").attr("action","${url}");
+            $("#searchForm").submit();
+            return false;
+        }
+        function doreset(){
+            reset();
+		}
+	</script>
+	<style>
+		body{
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<input type="hidden" name="searchLabel1" value="${searchLabel1}"/>
+					<input type="hidden" name="searchKey1" value="${searchKey1}"/>
+					<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">
+							<span class="layui-form-label">客户名称:</span>
+							<div class="layui-input-block">
+								<form:input path="${searchKey}" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" style="margin-right: 0px;" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-item layui-col-xs12 form-table-container">
+			<table id="contentTable" class="table details table-bordered table-condensed">
+				<thead>
+				<tr>
+					<th  width="50px"></th>
+					<c:forEach items="${labelNames}" var="name"  varStatus="status">
+						<th>客户名称</th>
+						<th>客户性质</th>
+						<th>客户行业</th>
+						<th>统一社会信用代码</th>
+					</c:forEach>
+				</tr>
+				</thead>
+				<tbody>
+				<c:choose>
+					<c:when test="${not empty page.list}">
+						<c:forEach items="${page.list}" var="obj">
+							<tr>
+								<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+								<td class="codelabel">${obj.name}</td>
+									<%--<c:forEach items="${labelValues}" var="value"  varStatus="status">
+                                        <c:if test="${status.first==true}">
+                                            <td class="codelabel">${fns:getValue(obj, value)}</td>
+                                        </c:if>
+
+                                        &lt;%&ndash;<c:if test="${status.first!=true}">
+                                            <td>${fns:getValue(obj, value)}</td>
+                                        </c:if>&ndash;%&gt;
+                                    </c:forEach>--%>
+								<td class="codelabel">${fns:getMainDictLabel(obj.companyType, 'company_type', '')}</td>
+								<td class="codelabel">${fns:getMainDictLabel(obj.companyIndustry, 'company_industry', '')}</td>
+								<td class="codelabel">${obj.uscCode}</td>
+							</tr>
+						</c:forEach>
+					</c:when>
+					<c:otherwise>
+						<tr>
+							<td colspan="5" align="center">
+								暂无数据
+							</td>
+						</tr>
+					</c:otherwise>
+				</c:choose>
+
+
+
+				<%--<c:forEach items="${page.list}" var="obj">
+                    <tr>
+                        <td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+
+                        <c:forEach items="${labelValues}" var="value"  varStatus="status">
+                            <c:if test="${status.first==true}">
+                                <td><a href="javascript:void(0)" class="codelabel" onclick="openDialogView('查看客户管理', '${ctx}/workclientinfo/workClientInfo/detail?id=${fns:getValue(obj, 'id')}','80%','80%')">${fns:getValue(obj, value)}</a></td>
+                            </c:if>
+
+                            <c:if test="${status.first!=true}">
+                                <td>${fns:getValue(obj, value)}</td>
+                            </c:if>
+                        </c:forEach>
+
+                    </tr>
+                </c:forEach>--%>
+				</tbody>
+			</table>
+			<table:page page="${page}"></table:page>
+			</div>
+		</div>
+		<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 168 - 0
src/main/webapp/webpage/modules/sys/gridSelectRole.jsp

@@ -0,0 +1,168 @@
+<%@ 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="sysRoleActivity" action="${ctx}/sys/office/treeDataRoleActivitys" 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">
+								<form:input path="name" htmlEscape="false" maxlength="20"  class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">角色类型:</label>
+							<div class="layui-input-block with-icon">
+								<form:select path="type" class="form-control required simple-select">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('sys_role_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</div>
+						</div>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+								<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+					<div id="moresees" style="clear:both;display:none;">
+						<div 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">
+					<thead>
+					<tr>
+						<th width="40" style="text-align: center"><input type="checkbox" class="i-checks"></th>
+						<th width="40%" style="text-align: center">角色名称</th>
+						<th style="text-align: center">角色类型</th>
+						<th style="text-align: center">备注</th>
+					</tr>
+					</thead>
+					<tbody>
+					<c:forEach items="${roleList}" var="sysRoleActivity" varStatus="index">
+						<tr id="${index.index}">
+							<td style="text-align:center;"> <input type="checkbox" id="${sysRoleActivity.id}" class="i-checks"></td>
+							<td class="codelabe0">${sysRoleActivity.name}</td>
+							<td class="codelabe1">${fns:getDictLabel(sysRoleActivity.type, 'sys_role_type', '')}</td>
+							<td class="codelabe2" style="display: none">${sysRoleActivity.type}</td>
+							<td class="codelabe3" >${sysRoleActivity.remarks}</td>
+						</tr>
+					</c:forEach>
+
+					</tbody>
+				</table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+</div>
+<script>
+</script>
+<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: '#beginDate',
+            event: 'focus',
+            type : 'date'
+        });
+        laydate.render({
+            elem: '#endDate',
+            event: 'focus',
+            type : 'date'
+        });
+        $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+            $('#contentTable tbody tr td input.i-checks').iCheck('check');
+        });
+        $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+            $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+        });
+    });
+
+    function getSelectedItem(){
+        var isSingle=${isSingle};
+        var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+        if(size == 0 ){
+            top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+            return "-1";
+        }
+        if(isSingle){//单选
+            if(size >1 ){
+                top.layer.alert('请选择一条数据!', {icon: 0, title:'警告'});
+                return "-1";
+            }
+            var id =  $("#contentTable tbody tr td input.i-checks:checked").attr("id");
+            var name = $("#contentTable tbody tr td input.i-checks:checked").parent().parent().parent().find(".codelabe0").html();
+            var typeName = $("#contentTable tbody tr td input.i-checks:checked").parent().parent().parent().find(".codelabel").html();
+            var type = $("#contentTable tbody tr td input.i-checks:checked").parent().parent().parent().find(".codelabe2").html();
+            var remarks = $("#contentTable tbody tr td input.i-checks:checked").parent().parent().parent().find(".codelabe3").html();
+            var data = {'id':id,'name':name,'typeName':typeName,'type':type,'remarks':remarks};
+            return data;
+		}else{
+            var arr=new Array();
+            $("#contentTable tbody tr td input.i-checks:checked").each(function () {
+                var id =  $(this).attr("id");
+                var name = $(this).parent().parent().parent().find(".codelabe0").html();
+                var typeName = $(this).parent().parent().parent().find(".codelabe1").html();
+                var type = $(this).parent().parent().parent().find(".codelabe2").html();
+                var remarks = $(this).parent().parent().parent().find(".codelabe3").html();
+                var data = {'id':id,'name':name,'typeName':typeName,'type':type,'remarks':remarks};
+                arr.push(data);
+            })
+            return arr;
+		}
+    }
+</script>
+</body>
+</html>

+ 164 - 0
src/main/webapp/webpage/modules/sys/gridSelectSingle.jsp

@@ -0,0 +1,164 @@
+<%@ 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="workExampleIndices" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="indexId" value="${indexId}"/>
+					<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="20"  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 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">
+					<thead>
+					<tr>
+						<th width="40" style="text-align: center"><input type="checkbox" class="i-checks"></th>
+						<th width="15%" style="text-align: center">名称</th>
+						<th style="text-align: center">项单位</th>
+						<th style="text-align: center">小数位数</th>
+					</tr>
+					</thead>
+					<tbody>
+					<c:forEach items="${page.list}" var="workExampleIndices" varStatus="index">
+						<tr id="t${index.index}">
+							<td style="text-align:center;"> <input type="checkbox" id="${workExampleIndices.id}" class="i-checks"></td>
+							<td class="codelabel">${workExampleIndices.name}</td>
+							<td class="codelabe2">${fns:getMainDictLabel(workExampleIndices.itemUnit, 'unit_type','')}</td>
+							<td class="codelabe4">${workExampleIndices.decimalCount}</td>
+						</tr>
+					</c:forEach>
+
+					</tbody>
+				</table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+</div>
+<script>
+</script>
+<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: '#beginDate',
+            event: 'focus',
+            type : 'date'
+        });
+        laydate.render({
+            elem: '#endDate',
+            event: 'focus',
+            type : 'date'
+        });
+        $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+            $('#contentTable tbody tr td input.i-checks').iCheck('check');
+        });
+        $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+            $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+        });
+    });
+
+    function getSelectedItem(){
+        var isSingle=false;
+        var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+        if(size == 0 ){
+            top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+            return "-1";
+        }
+        if(isSingle){//单选
+            if(size >1 ){
+                top.layer.alert('请选择一条数据!', {icon: 0, title:'警告'});
+                return "-1";
+            }
+            var id =  $("#contentTable tbody tr td input.i-checks:checked").attr("id");
+            //var userId = $("#contentTable tbody tr td input.i-checks:checked").parent().parent().parent().find(".codelabe0").html();
+            var data = {'id':id};
+            return data;
+		}else{
+            var arr=new Array();
+            $("#contentTable tbody tr td input.i-checks:checked").each(function () {
+                var id =  $(this).attr("id");
+                var data = {'id':id};
+                arr.push(data);
+            })
+            return arr;
+		}
+    }
+    function page(n,s){
+        if(n) $("#pageNo").val(n);
+        if(s) $("#pageSize").val(s);
+        $("#searchForm").attr("action","${url}");
+        $("#searchForm").submit();
+        return false;
+    }
+</script>
+</body>
+</html>

+ 207 - 0
src/main/webapp/webpage/modules/sys/gridSelectUser.jsp

@@ -0,0 +1,207 @@
+<%@ 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="workStaffBasicInfo" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="type" value="${type}"/>
+					<input type="hidden" name="isAll" value="${isAll}"/>
+					<input type="hidden" name="isSingle" value="${isSingle}"/>
+					<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="20"  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="officeId" name="office.id" value="${workStaffBasicInfo.office.id}" labelName="office.name" labelValue="${workStaffBasicInfo.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" style="clear:both;display:none;">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">工号:</label>
+							<div class="layui-input-block">
+								<form:input path="no" htmlEscape="false" maxlength="20"  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="gender" class="form-control simple-select">
+									<form:option value="" label=""/>
+									<form:option value="1" label="男"/>
+									<form:option value="2" label="女"/>
+								</form:select>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">职级:</label>
+							<div class="layui-input-block  with-icon">
+								<sys:treeselectJob id="jobGrade" name="jobGrade.id" value="${workStaffBasicInfo.jobGrade.id}" labelName="jobGrade.name" labelValue="${workStaffBasicInfo.jobGrade.name}"
+														title="职级类型" url="/workjobgrade/workJobGrade/treeData"  cssClass="form-control layui-input required" allowClear="true" notAllowSelectParent="true"/>
+							</div>
+						</div>
+
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+
+		<div class="full-width fl">
+			<div class="contentShadow layui-form contentDetails">
+
+				<table class="oa-table layui-table" id="contentTable">
+					<thead>
+					<tr>
+						<th width="40" style="text-align: center"> <c:if test="${isSingle eq false}"><input type="checkbox" class="i-checks"></c:if></th>
+						<th width="15%" style="text-align: center">工号</th>
+						<th style="text-align: center">姓名</th>
+						<th style="text-align: center">性别</th>
+						<th width="30%" style="text-align: center">机构全称</th>
+						<th  style="text-align: center">职级</th>
+					</tr>
+					</thead>
+					<tbody>
+					<c:forEach items="${page.list}" var="workStaffBasicInfo" varStatus="index">
+						<tr id="t${index.index}">
+							<td style="text-align:center;"> <input type="checkbox" id="${workStaffBasicInfo.id}" class="i-checks"></td>
+							<td class="codelabe0" style="display: none">${workStaffBasicInfo.userId}</td>
+							<td class="codelabel">${workStaffBasicInfo.no}</td>
+							<td class="codelabe2">${workStaffBasicInfo.name}</td>
+							<td class="codelabe3"><c:if test="${workStaffBasicInfo.gender==1}">男</c:if><c:if test="${workStaffBasicInfo.gender==2}">女</c:if></td>
+							<td class="codelabe4">${workStaffBasicInfo.office.topCompany}</td>
+							<td class="codelabe5">${workStaffBasicInfo.jobGrade.name}</td>
+						</tr>
+					</c:forEach>
+
+					</tbody>
+				</table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+</div>
+<script>
+</script>
+<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: '#beginDate',
+            event: 'focus',
+            type : 'date'
+        });
+        laydate.render({
+            elem: '#endDate',
+            event: 'focus',
+            type : 'date'
+        });
+        $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+            $('#contentTable tbody tr td input.i-checks').iCheck('check');
+        });
+        $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+            $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+        });
+    });
+
+    function getSelectedItem(){
+        var isSingle=${isSingle};
+        var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+        if(size == 0 ){
+            top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+            return "-1";
+        }
+        if(isSingle){//单选
+            if(size >1 ){
+                top.layer.alert('请选择一条数据!', {icon: 0, title:'警告'});
+                return "-1";
+            }
+            var id =  $("#contentTable tbody tr td input.i-checks:checked").attr("id");
+            var userId = $("#contentTable tbody tr td input.i-checks:checked").parent().parent().parent().find(".codelabe0").html();
+            var no = $("#contentTable tbody tr td input.i-checks:checked").parent().parent().parent().find(".codelabel").html();
+            var name = $("#contentTable tbody tr td input.i-checks:checked").parent().parent().parent().find(".codelabe2").html();
+            var officeName = $("#contentTable tbody tr td input.i-checks:checked").parent().parent().parent().find(".codelabe4").html();
+            var data = {'id':id,'no':no,'name':name,'userId':userId,'officeName':officeName};
+            return data;
+		}else{
+            var arr=new Array();
+            $("#contentTable tbody tr td input.i-checks:checked").each(function () {
+                var id =  $(this).attr("id");
+                var userId = $(this).parent().parent().parent().find(".codelabe0").html();
+                var no = $(this).parent().parent().parent().find(".codelabel").html();
+                var name = $(this).parent().parent().parent().find(".codelabe2").html();
+                var data = {'id':id,'no':no,'name':name,'userId':userId};
+                arr.push(data);
+            })
+            return arr;
+		}
+    }
+    function page(n,s){
+        if(n) $("#pageNo").val(n);
+        if(s) $("#pageSize").val(s);
+        $("#searchForm").attr("action","${url}");
+        $("#searchForm").submit();
+        return false;
+    }
+</script>
+</body>
+</html>

+ 140 - 0
src/main/webapp/webpage/modules/sys/gridinvoicebidproject.jsp

@@ -0,0 +1,140 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+
+            <%--var val = "<%=request.getAttribute("state")%>";--%>
+            <%--if(val!=null){--%>
+                <%--alert("++++++++++");--%>
+			<%--};--%>
+
+            $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+			    
+			
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			    var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+			    
+				var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel").html();
+				return id+"_item_"+label;
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="isTotal" value="${isTotal}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<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();"/><!-- 支持排序 -->
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl form-group first">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+						<tr>
+							<th width="50px"></th>
+							<c:forEach items="${labelNames}" var="projectName"  varStatus="status">
+								<th>投标名称</th>
+								<th>投标编号</th>
+								<th>工程分类</th>
+								<th>项目来源</th>
+							</c:forEach>
+						</tr>
+					</thead>
+					<tbody>
+					<c:choose>
+						<c:when test="${not empty page.list}">
+							<c:forEach items="${page.list}" var="obj">
+								<tr>
+									<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+									<td class="codelabel">${obj.projectName}</td>
+									<td class="codelabel">${obj.projectNumber}</td>
+									<td class="codelabel">${fns:getMainDictLabel(obj.projectType, 'contract_type', '')}</td>
+									<td class="codelabel">${fns:getMainDictLabel(obj.projectSource, 'bidProjectSource', '')}</td>
+								</tr>
+							</c:forEach>
+						</c:when>
+						<c:otherwise>
+							<tr>
+								<td colspan="5" align="center">
+									暂无数据
+								</td>
+							</tr>
+						</c:otherwise>
+					</c:choose>
+
+					<%--<c:choose>
+						<c:when test="${not empty page.list}">
+					<c:forEach items="${page.list}" var="obj">
+						<tr>
+							<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+
+							<c:forEach items="${labelValues}" var="value"  varStatus="status">
+								<c:if test="${status.first==true}">
+									<td class="codelabel">${fns:getValue(obj, value)}</td>
+								</c:if>
+
+								<c:if test="${status.first!=true}">
+									<td>${fns:getValue(obj, value)}</td>
+								</c:if>
+							</c:forEach>
+
+						</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>
+	</div>
+</div>
+	</div>
+</div>
+</body>
+</html>

+ 141 - 0
src/main/webapp/webpage/modules/sys/gridinvoiceproject.jsp

@@ -0,0 +1,141 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+
+            <%--var val = "<%=request.getAttribute("state")%>";--%>
+            <%--if(val!=null){--%>
+                <%--alert("++++++++++");--%>
+			<%--};--%>
+
+            $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+			    
+			
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			    var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+			    
+				var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel").html();
+				return id+"_item_"+label;
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="isTotal" value="${isTotal}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<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();"/><!-- 支持排序 -->
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl form-group first">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+						<tr>
+							<th width="50px"></th>
+							<c:forEach items="${labelNames}" var="projectName"  varStatus="status">
+								<th>项目名称</th>
+								<th>项目编号</th>
+								<th>负责人</th>
+								<th>主委托方</th>
+							</c:forEach>
+						</tr>
+					</thead>
+					<tbody>
+					<c:choose>
+						<c:when test="${not empty page.list}">
+							<c:forEach items="${page.list}" var="obj">
+								<tr>
+									<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+									<td class="codelabel">${obj.projectName}</td>
+									<td class="codelabel">${obj.projectId}</td>
+									<td class="codelabel">${obj.leaderNameStr}</td>
+									<td class="codelabel">${obj.workContractInfo.client.name}</td>
+								</tr>
+							</c:forEach>
+						</c:when>
+						<c:otherwise>
+							<tr>
+								<td colspan="5" align="center">
+								暂无数据
+								</td>
+							</tr>
+						</c:otherwise>
+					</c:choose>
+
+
+					<%--<c:choose>
+						<c:when test="${not empty page.list}">
+					<c:forEach items="${page.list}" var="obj">
+						<tr>
+							<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+
+							<c:forEach items="${labelValues}" var="value"  varStatus="status">
+								<c:if test="${status.first==true}">
+									<td class="codelabel">${fns:getValue(obj, value)}</td>
+								</c:if>
+
+								<c:if test="${status.first!=true}">
+									<td>${fns:getValue(obj, value)}</td>
+								</c:if>
+							</c:forEach>
+
+						</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>
+	</div>
+</div>
+	</div>
+</div>
+</body>
+</html>

+ 165 - 0
src/main/webapp/webpage/modules/sys/gridprojectperfce.jsp

@@ -0,0 +1,165 @@
+<%@ 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>
+	<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");
+                }
+            });
+
+            $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+		});
+
+		function getSelectedItem(){
+            var isSingle=${isSingle};
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+            if(isSingle){//单选
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			    var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+			    
+				var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel").html();
+			  	var data = {'id':id};
+				return data;
+            }else{
+                var arr=new Array();
+                $("#contentTable tbody tr td input.i-checks:checked").each(function () {
+                    var id =  $(this).attr("id");
+                    var data = {'id':id};
+                    arr.push(data);
+                })
+                return arr;
+            }
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="type" value="${type}"/>
+					<input type="hidden" name="isAll" value="${isAll}"/>
+					<input type="hidden" name="isSingle" value="${isSingle}"/>
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+
+					<div class="commonQuery ">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">项目名称:</label>
+							<div class="layui-input-block">
+								<form:input path="projectName" htmlEscape="false" maxlength="20"  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="projectId" htmlEscape="false" maxlength="20"  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 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">
+					<thead>
+					<tr>
+						<th width="40" style="text-align: center"><input type="checkbox" class="i-checks"></th>
+						<th width="15%" style="text-align: center">项目名称</th>
+						<th style="text-align: center">项目编号</th>
+						<th style="text-align: center">负责人</th>
+						<th width="30%" style="text-align: center">主委托方</th>
+					</tr>
+					</thead>
+					<tbody>
+					<c:forEach items="${page.list}" var="obj" varStatus="index">
+						<tr id="t${index.index}">
+							<td style="text-align:center;"> <input type="checkbox" id="${obj.id}" class="i-checks"></td>
+							<td class="codelabel">${obj.projectName}</td>
+							<td class="codelabel">${obj.projectId}</td>
+							<td class="codelabel">${obj.leaderNameStr}</td>
+							<td class="codelabel">${obj.workContractInfo.client.name}</td>
+						</tr>
+					</c:forEach>
+
+					</tbody>
+				</table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+</div>
+</body>
+</html>

+ 129 - 0
src/main/webapp/webpage/modules/sys/gridselect.jsp

@@ -0,0 +1,129 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			
+		
+
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+			    
+			
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			    var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+			    
+				var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel").html();
+				return id+"_item_"+label;
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="">
+    <div class="ibox-content">
+		<!-- 查询条件 -->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+		<input type="hidden" name="url" value="${url}"/>
+		<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+		<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+		<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+		<input type="hidden" name="searchKey" value="${searchKey}"/>
+		<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="${searchKey}" htmlEscape="false" maxlength="50" class=" form-control input-sm"/>
+		
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<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>
+				<c:forEach items="${labelNames}" var="name"  varStatus="status">
+					<th>客户名称</th>
+				</c:forEach>
+			</tr>
+		</thead>
+		<tbody>
+		<c:choose>
+		<c:when test="${not empty page.list}">
+		<c:forEach items="${page.list}" var="obj">
+			<tr>
+				<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+				
+				<c:forEach items="${labelValues}" var="value"  varStatus="status">
+					<c:if test="${status.first==true}">
+						<td class="codelabel">${fns:getValue(obj, value)}</td>
+					</c:if>
+					
+					<c:if test="${status.first!=true}">
+						<td>${fns:getValue(obj, value)}</td>
+					</c:if>
+				</c:forEach>
+			
+			</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>
+</body>
+</html>

+ 138 - 0
src/main/webapp/webpage/modules/sys/gridselect1.jsp

@@ -0,0 +1,138 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			 /* if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }*/
+            var arr=new Array();
+            $("#contentTable tbody tr td input.i-checks:checkbox:checked").each(function () {
+                var id =  $(this).attr("id");
+                var label = $(this).parent().parent().parent().find(".codelabel").html();
+                var label1 = $(this).parent().parent().parent().find(".codelabel1").html();
+                var label2 = $(this).parent().parent().parent().find(".codelabel2").html();
+                var label3 = $(this).parent().parent().parent().find(".codelabel3").html();
+                var label4 = $(this).parent().parent().parent().find(".codelabel4").html();
+                var data= {'id':id,'name':label,'linkPhone':label1,'linkMobile':label2,'clientId':{'id':label4,'name':label3}};
+                arr.push(data);
+			})
+            return arr;
+		}
+
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body class="gray-bg">
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<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">
+							<span class="layui-form-label">联系人:</span>
+							<div class="layui-input-block">
+								<form:input path="${searchKey}" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" style="margin-right: 0px;" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+						<tr>
+							<th width="50"><input type="checkbox" class="i-checks"></th>
+								<th style="display:none">委托方编号</th>
+								<th>委托方</th>
+								<th width="25%">联系人</th>
+								<th width="25%">联系电话</th>
+								<th width="25%">手机号</th>
+						</tr>
+					</thead>
+					<tbody>
+					<c:choose>
+					<c:when test="${not empty page.list}">
+					<c:forEach items="${page.list}" var="obj">
+						<tr>
+							<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+							<td title="${obj.clientId.id}" class="codelabel4" style="display:none">${obj.clientId.id}</td>
+							<td title="${obj.clientId.name}" class="codelabel3">${obj.clientId.name}</td>
+							<c:forEach items="${labelValues}" var="value"  varStatus="status">
+								<c:if test="${status.first==true}">
+									<td title="${fns:getValue(obj, value)}" class="codelabel">${fns:getValue(obj, value)}</td>
+								</c:if>
+
+								<c:if test="${status.first!=true}">
+									<td title="${fns:getValue(obj, value)}">${fns:getValue(obj, value)}</td>
+								</c:if>
+								<td class="codelabel1">${fns:getValue(obj, 'linkPhone')}</td>
+								<td class="codelabel2">${fns:getValue(obj, 'linkMobile')}</td>
+							</c:forEach>
+
+						</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>
+			</div>
+		</div>
+	<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 132 - 0
src/main/webapp/webpage/modules/sys/gridselectAhref.jsp

@@ -0,0 +1,132 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			    var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+			    
+				var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel").html();
+				return id+"_item_"+label;
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body >
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<input type="hidden" name="searchLabel1" value="${searchLabel1}"/>
+					<input type="hidden" name="searchKey1" value="${searchKey1}"/>
+					<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">
+							<span class="layui-form-label">客户名称:</span>
+							<div class="layui-input-block">
+								<form:input path="${searchKey}" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" style="margin-right: 0px;" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+					<tr>
+						<th  width="50px"></th>
+						<c:forEach items="${labelNames}" var="name"  varStatus="status">
+						<th>客户名称</th>
+						<th>客户性质</th>
+						<th>客户行业</th>
+						<th>统一社会信用代码</th>
+						</c:forEach>
+
+					</tr>
+				</thead>
+				<tbody>
+				<c:choose>
+					<c:when test="${not empty page.list}">
+						<c:forEach items="${page.list}" var="obj">
+							<tr>
+								<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+								<td class="codelabel">${obj.name}</td>
+								<%--<c:forEach items="${labelValues}" var="value"  varStatus="status">
+									<c:if test="${status.first==true}">
+										<td class="codelabel">${fns:getValue(obj, value)}</td>
+									</c:if>
+
+									&lt;%&ndash;<c:if test="${status.first!=true}">
+										<td>${fns:getValue(obj, value)}</td>
+									</c:if>&ndash;%&gt;
+								</c:forEach>--%>
+								<td class="codelabel">${fns:getMainDictLabel(obj.companyType, 'company_type', '')}</td>
+								<td class="codelabel">${fns:getMainDictLabel(obj.companyIndustry, 'company_industry', '')}</td>
+								<td class="codelabel">${obj.uscCode}</td>
+							</tr>
+						</c:forEach>
+					</c:when>
+					<c:otherwise>
+						<tr>
+							<td colspan="5" align="center">
+								暂无数据
+							</td>
+						</tr>
+					</c:otherwise>
+				</c:choose>
+				</tbody>
+				</table>
+				<table:page page="${page}"></table:page>
+			</div>
+		</div>
+		<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 130 - 0
src/main/webapp/webpage/modules/sys/gridselectCatalog.jsp

@@ -0,0 +1,130 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			  /*if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }*/
+            var arr=new Array();
+            $("#contentTable tbody tr td input.i-checks:checkbox:checked").each(function () {
+                var id =  $(this).attr("id");
+                var itemName = $(this).parent().parent().parent().find(".codelabe2").html();
+                var itemNumber = $(this).parent().parent().parent().find(".codelabe3").html();
+                var type = $(this).parent().parent().parent().find(".codelabe4").html();
+                var model = $(this).parent().parent().parent().find(".codelabe5").html();
+                var primaryUnit = $(this).parent().parent().parent().find(".codelabe6").html();
+                var isAssets = $(this).parent().parent().parent().find(".codelabe7").html();
+                var data= {'id':id,'name':itemName,'number':itemNumber,'type':type,'model':model,'primaryUnit':primaryUnit,'isAssets':isAssets};
+                arr.push(data);
+			})
+            return arr;
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<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">
+							<span class="layui-form-label">物品名称:</span>
+							<div class="layui-input-block">
+								<form:input path="name" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" style="margin-right: 0px;" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+						<tr>
+							<th width="40"><input type="checkbox" class="i-checks"></th>
+								<th>物品名称</th>
+							<th>物品编号</th>
+								<th>物品分类</th>
+							<th>规格型号</th>
+								<th>计量单位</th>
+							<th>是否固定资产</th>
+						</tr>
+					</thead>
+					<tbody>
+					<c:choose>
+						<c:when test="${not empty page.list}">
+							<c:forEach items="${page.list}" var="obj">
+								<tr>
+									<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+									<td class="codelabe2">${obj.name}</td>
+									<td class="codelabe3">${obj.number}</td>
+									<td class="codelabe4">${fns:getMainDictLabel(obj.type, 'item_type', '')}</td>
+									<td class="codelabe5">${obj.model}</td>
+									<td class="codelabe6">${fns:getMainDictLabel(obj.primaryUnit, 'full_count_unit', '')}</td>
+									<td class="codelabe7"><c:if test="${obj.isAssets eq '0'}">否</c:if><c:if test="${obj.isAssets !='0'}">是</c:if></td>
+								</tr>
+							</c:forEach>
+						</c:when>
+						<c:otherwise>
+							<tr>
+								<td colspan="6" align="center">
+									暂无数据
+								</td>
+							</tr>
+						</c:otherwise>
+					</c:choose>
+
+					</tbody>
+				</table>
+				<table:page page="${page}"></table:page>
+			</div>
+		</div>
+		<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 134 - 0
src/main/webapp/webpage/modules/sys/gridselectCinfo.jsp

@@ -0,0 +1,134 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+            if(size >1 ){
+                top.layer.alert('请选择一条数据!', {icon: 0, title:'警告'});
+                return "-1";
+            }
+          /*  var arr=new Array();
+            $("#contentTable tbody tr td input.i-checks:checkbox:checked").each(function () {
+                var id =  $(this).attr("id");
+                var companyType = $(this).parent().parent().parent().find(".codelabe2").html();
+                var companyIndustry = $(this).parent().parent().parent().find(".codelabe3").html();
+                var name = $(this).parent().parent().parent().find(".codelabe6").html();
+                var area = $(this).parent().parent().parent().find(".codelabe5").html();
+                var data= {'id':id,'companyType':companyType,'companyIndustry':companyIndustry,'name':name,'area':area};
+                arr.push(data);
+            })
+
+            return arr;*/
+			    var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+			    
+				var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel").html();
+				return id+"_item_"+label;
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body >
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<input type="hidden" name="searchLabel1" value="${searchLabel1}"/>
+					<input type="hidden" name="searchKey1" value="${searchKey1}"/>
+					<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">
+							<span class="layui-form-label">客户名称:</span>
+							<div class="layui-input-block">
+								<form:input path="${searchKey}" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" style="margin-right: 0px;" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+					<tr>
+						<th  width="50px"></th>
+						<c:forEach items="${labelNames}" var="name"  varStatus="status">
+						<th>客户名称</th>
+						<th>客户性质</th>
+						<th>客户行业</th>
+						<th>统一社会信用代码</th>
+						</c:forEach>
+
+					</tr>
+				</thead>
+				<tbody>
+				<c:choose>
+					<c:when test="${not empty page.list}">
+						<c:forEach items="${page.list}" var="obj">
+							<tr>
+								<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+								<td class="codelabe1">${obj.name}</td>
+								<td class="codelabe1">${fns:getMainDictLabel(obj.companyType, 'company_type', '')}</td>
+								<td class="codelabe1">${fns:getMainDictLabel(obj.companyIndustry, 'company_industry', '')}</td>
+								<td class="codelabe1">${obj.uscCode}</td>
+							</tr>
+						</c:forEach>
+					</c:when>
+					<c:otherwise>
+						<tr>
+							<td colspan="5" align="center">
+								暂无数据
+							</td>
+						</tr>
+					</c:otherwise>
+				</c:choose>
+				</tbody>
+				</table>
+				<table:page page="${page}"></table:page>
+			</div>
+		</div>
+		<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 126 - 0
src/main/webapp/webpage/modules/sys/gridselectClientBankinfo.jsp

@@ -0,0 +1,126 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			
+		
+
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+			    
+			
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			    var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+			    
+				var label1 = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel1").html();
+				var label3 = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel3").html();
+				var label4 = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel4").html();
+				return {'bankNum':label1,'clientId':{'id':label4,'name':label3}};
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body class="gray-bg">
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<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">
+							<span class="layui-form-label">客户名称:</span>
+							<div class="layui-input-block">
+								<form:input path="clientId.name" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" style="margin-right: 0px;" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+						<tr>
+							<th width="50"></th>
+								<th style="display:none">委托方编号</th>
+								<th>客户名称</th>
+								<th width="30%">开户银行</th>
+								<th width="30%">银行账号</th>
+						</tr>
+					</thead>
+					<tbody>
+					<c:choose>
+					<c:when test="${not empty page.list}">
+					<c:forEach items="${page.list}" var="obj">
+						<tr>
+							<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+							<td title="${obj.clientId.id}" class="codelabel4" style="display:none">${obj.clientId.id}</td>
+							<td title="${obj.clientId.name}" class="codelabel3">${obj.clientId.name}</td>
+                            <td title="${obj.ourBank}" class="codelabel">${obj.ourBank}</td>
+                            <td title="${obj.bankNumber}" class="codelabel1">${obj.bankNumber}</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>
+			</div>
+		</div>
+	<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 130 - 0
src/main/webapp/webpage/modules/sys/gridselectClientLink.jsp

@@ -0,0 +1,130 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+		});
+
+		function getSelectedItem(){
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			/*  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }*/
+            var arr=new Array();
+            $("#contentTable tbody tr td input.i-checks:checkbox:checked").each(function () {
+                var id =  $(this).attr("id");
+                var label = $(this).parent().parent().parent().find(".codelabel").html();
+                var label1 = $(this).parent().parent().parent().find(".codelabel1").html();
+                var label2 = $(this).parent().parent().parent().find(".codelabel2").html();
+                var label3 = $(this).parent().parent().parent().find(".codelabel3").html();
+                var label4 = $(this).parent().parent().parent().find(".codelabel4").html();
+                var data=  {'clientId':{'id':label,'name':label4},'id':id,'name':label1,'linkPhone':label2,'linkMobile':label3};
+                arr.push(data);
+			})
+            return arr;
+
+}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<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 lw9">
+							<span class="layui-form-label">${searchLabel}:</span>
+							<div class="layui-input-block">
+								<form:input path="${searchKey}" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" style="margin-right: 0px;" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+					<tr>
+						<th width="50"><input type="checkbox" class="i-checks"></th>
+						<th style="display:none">施工方编号</th>
+						<th>施工方名称</th>
+						<th width="25%">联系人</th>
+						<th width="25%">联系电话</th>
+						<th width="25%">手机号</th>
+					</tr>
+				</thead>
+				<tbody>
+				<c:choose>
+				<c:when test="${not empty page.list}">
+				<c:forEach items="${page.list}" var="obj">
+					<c:forEach items="${obj.workClientLinkmanList}" var="linkman">
+						<tr>
+							<td> <input type="checkbox" id="${fns:getValue(linkman, 'id')}" class="i-checks"></td>
+							<td title="${fns:getValue(obj, 'id')}" class="codelabel" style="display:none">${fns:getValue(obj, 'id')}</td>
+								<td title="${fns:getValue(obj, 'name')}" class="codelabel4">${fns:getValue(obj, 'name')}</td>
+								<td title="${fns:getValue(linkman, 'name')}" class="codelabel1">${fns:getValue(linkman, 'name')}</td>
+								<td class="codelabel2">${fns:getValue(linkman, 'linkPhone')}</td>
+								<td class="codelabel3">${fns:getValue(linkman, 'linkMobile')}</td>
+
+						</tr>
+					</c:forEach>
+				</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>
+		</div>
+	</div>
+	<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 115 - 0
src/main/webapp/webpage/modules/sys/gridselectCommonGroup.jsp

@@ -0,0 +1,115 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			
+		
+
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+			    
+			
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			    var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+
+            var num = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel2").html();
+            var name = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel1").html();
+            return {'id':id,'name':name,'num':num};
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+    <div class="layui-row">
+        <div class="full-width fl">
+            <div class="layui-row" id="queryDiv">
+            <form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+                <input type="hidden" name="url" value="${url}"/>
+                <input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+                <input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+                <input type="hidden" name="searchKey" value="${searchKey}"/>
+                <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 lw9">
+                        <span class="layui-form-label">${searchLabel}:</span>
+                        <div class="layui-input-block">
+                            <form:input path="name" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+                        </div>
+                    </div>
+                    <div class="layui-item athird fr">
+                        <div class="input-group">
+                            <button id="searchReset" class="fixed-btn searchReset fr" style="margin-right: 0px;" 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>
+	
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th></th>
+                <th>常用组名称</th>
+                <th>常用组编号</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:choose>
+		<c:when test="${not empty page.list}">
+		<c:forEach items="${page.list}" var="obj2">
+				<tr>
+					<td style="text-align:center;"> <input type="checkbox" id="${fns:getValue(obj2, 'id')}" class="i-checks"></td>
+                    <td style="text-align:center;" class="codelabel1">${fns:getValue(obj2, 'name')}</td>
+                    <td style="text-align:center;" class="codelabel2">${fns:getValue(obj2, 'num')}</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>
+</div>
+</div>
+</body>
+</html>

+ 131 - 0
src/main/webapp/webpage/modules/sys/gridselectContract.jsp

@@ -0,0 +1,131 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+        $(document).ready(function() {
+
+
+
+            $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+                $('#contentTable tbody tr td input.i-checks').iCheck('check');
+            });
+
+            $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+                $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+            });
+
+
+        });
+
+        function getSelectedItem(){
+
+            var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+            if(size == 0 ){
+                top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+                return "-1";
+            }
+
+            if(size > 1 ){
+                top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+                return "-1";
+            }
+            var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+
+            var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel").html();
+            return id+"_item_"+label;
+        }
+        function page(n,s){
+            if(n) $("#pageNo").val(n);
+            if(s) $("#pageSize").val(s);
+            $("#searchForm").attr("action","${url}");
+            $("#searchForm").submit();
+            return false;
+        }
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<input type="hidden" name="isTotal" value="${isTotal}"/>
+					<input type="hidden" name="type" value="${type}"/>
+					<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">
+							<span class="layui-form-label">合同名称:</span>
+							<div class="layui-input-block">
+								<form:input path="${searchKey}" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" style="margin-right: 0px;" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+					<tr>
+						<th width="50px"></th>
+						<%--<c:forEach items="${labelNames}" var="name"  varStatus="status">
+							<th>${name}</th>
+						</c:forEach>--%>
+						<th>合同名称</th>
+						<th >合同编号</th>
+						<th >工程分类</th>
+						<th >主委托方</th>
+						<th >签订日期</th>
+					</tr>
+					</thead>
+					<tbody>
+					<c:choose>
+						<c:when test="${not empty page.list}">
+							<c:forEach items="${page.list}" var="obj">
+								<tr>
+									<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+									<td class="codelabel">${obj.name}</td>
+									<td class="codelabel">${obj.contractNum}</td>
+									<td class="codelabel">${fns:getMainDictLabel(obj.contractType, 'contract_type', '')}</td>
+									<td class="codelabel">${obj.client.name} </td>
+									<td class="codelabel"><fmt:formatDate value="${obj.contractDate}" pattern="yyyy-MM-dd"/></td>
+								</tr>
+							</c:forEach>
+						</c:when>
+						<c:otherwise>
+							<tr>
+								<td colspan="6" align="center">
+									暂无数据
+								</td>
+							</tr>
+						</c:otherwise>
+					</c:choose>
+
+					</tbody>
+				</table>
+				<table:page page="${page}"></table:page>
+			</div>
+		</div>
+		<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 165 - 0
src/main/webapp/webpage/modules/sys/gridselectContractDetail.jsp

@@ -0,0 +1,165 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<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");
+                }
+            });
+
+            $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+                $('#contentTable tbody tr td input.i-checks').iCheck('check');
+            });
+
+            $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+                $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+            });
+
+
+        });
+
+        function getSelectedItem(){
+
+            var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+            if(size == 0 ){
+                top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+                return "-1";
+            }
+
+            if(size > 1 ){
+                top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+                return "-1";
+            }
+            var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+
+            var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel").html();
+            return id+"_item_"+label;
+        }
+        function page(n,s){
+            if(n) $("#pageNo").val(n);
+            if(s) $("#pageSize").val(s);
+            $("#searchForm").attr("action","${url}");
+            $("#searchForm").submit();
+            return false;
+        }
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<input type="hidden" name="isTotal" value="${isTotal}"/>
+					<input type="hidden" name="type" value="${type}"/>
+					<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">
+							<span class="layui-form-label">合同编号:</span>
+							<div class="layui-input-block">
+								<form:input path="contractNum" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<span class="layui-form-label">合同名称:</span>
+							<div class="layui-input-block">
+								<form:input path="${searchKey}" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird fr">
+							<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 id="moresees" style="clear:both;display:none;">
+							<div class="layui-item query athird">
+								<label class="layui-form-label">客户名称:</label>
+								<div class="layui-input-block with-icon">
+									<form:input path="client.name" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+								</div>
+							</div>
+						</div>
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+					<tr>
+						<th width="50"></th>
+						<%--<c:forEach items="${labelNames}" var="name"  varStatus="status">
+							<th>${name}</th>
+						</c:forEach>--%>
+						<th width="20%">合同编号</th>
+						<th width="20%">合同名称</th>
+						<th width="15%">工程分类</th>
+						<th width="20%">委托方</th>
+						<th width="15%">创建时间</th>
+						<th width="80">创建人</th>
+					</tr>
+					</thead>
+					<tbody>
+					<c:choose>
+						<c:when test="${not empty page.list}">
+							<c:forEach items="${page.list}" var="obj">
+								<tr>
+									<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+									<td title="${obj.contractNum}" class="codelabel">${obj.contractNum}</td>
+									<c:forEach items="${labelValues}" var="value"  varStatus="status">
+										<c:if test="${status.first==true}">
+											<td title="${fns:getValue(obj, value)}" class="codelabel">${fns:getValue(obj, value)}</td>
+										</c:if>
+
+										<%--<c:if test="${status.first!=true}">
+											<td>${fns:getValue(obj, value)}</td>
+										</c:if>--%>
+									</c:forEach>
+									<td title="${fns:getMainDictLabel(obj.contractType, 'contract_type', '')}" class="codelabel">${fns:getMainDictLabel(obj.contractType, 'contract_type', '')}</td>
+									<td title="${obj.client.name}" class="codelabel">${obj.client.name}</td>
+									<td class="codelabel"><fmt:formatDate value="${obj.createDate}" pattern="yyyy-MM-dd"/></td>
+									<td title="${obj.createBy.name}" class="codelabel">${obj.createBy.name}</td>
+								</tr>
+							</c:forEach>
+						</c:when>
+						<c:otherwise>
+							<tr>
+								<td colspan="7" align="center">
+									暂无数据
+								</td>
+							</tr>
+						</c:otherwise>
+					</c:choose>
+
+					</tbody>
+				</table>
+				<table:page page="${page}"></table:page>
+			</div>
+		</div>
+		<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 138 - 0
src/main/webapp/webpage/modules/sys/gridselectInvoiceDetail.jsp

@@ -0,0 +1,138 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+        $(document).ready(function() {
+
+
+
+            $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+                $('#contentTable tbody tr td input.i-checks').iCheck('check');
+            });
+
+            $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+                $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+            });
+
+
+        });
+
+        function getSelectedItem(){
+
+            var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+            if(size == 0 ){
+                top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+                return "-1";
+            }
+
+            if(size > 1 ){
+                top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+                return "-1";
+            }
+            var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+
+            var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel").html();
+            var label1 = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel1").html();
+            var label2 = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel2").html();
+            var label3 = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel3").html();
+            return {'id':id,'number':label,'invoiceDate':label1,'invoiceAmt':label2,'incomeMoney':label3};
+        }
+        function page(n,s){
+            if(n) $("#pageNo").val(n);
+            if(s) $("#pageSize").val(s);
+            $("#searchForm").attr("action","${url}");
+            $("#searchForm").submit();
+            return false;
+        }
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+    <div class="layui-row">
+        <div class="full-width fl">
+            <div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<input type="hidden" name="isTotal" value="${isTotal}"/>
+					<input type="hidden" name="type" value="${type}"/>
+					<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 lw9">
+                            <span class="layui-form-label">发票编号:</span>
+                            <div class="layui-input-block">
+                                <form:input path="number" htmlEscape="false" maxlength="50" class=" form-control input-sm"/>
+                            </div>
+                        </div>
+						<%--<span>开票日期:</span>
+						<form:input path="${searchKey}" htmlEscape="false" maxlength="50" class=" form-control input-sm"/>
+						<span style="margin-top: 15px">客户名称: </span><div class="form-group shows">
+						<sys:gridselectcallproject url="${ctx}/workcontractinfo/workContractInfo/selectclient" id="client" name="client"  value="${workContractInfo.client.id}"  title="选择客户ID" labelName="client.name"
+												   labelValue="${workContractInfo.client.name}"  cssClass="form-control required" fieldLabels="客户名称" fieldKeys="name" searchLabel="客户名称" searchKey="name" ></sys:gridselectcallproject>--%>
+                        <div class="layui-item athird fr">
+                            <div class="input-group">
+                                <button id="searchReset" class="fixed-btn searchReset fr" style="margin-right: 0px;" onclick="resetSearch()">重置</button>
+                                <button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+                            </div>
+                        </div>
+                        <div style="    clear:both;"></div>
+                    </div>
+				</form:form>
+				<br/>
+			</div>
+		</div>
+
+        <div class="full-width fl">
+            <div class="layui-item layui-col-xs12 form-table-container">
+                <table id="contentTable" class="table details table-bordered table-condensed">
+			<thead>
+			<tr>
+				<th width="50"></th>
+				<%--<c:forEach items="${labelNames}" var="name"  varStatus="status">
+					<th>${name}</th>
+				</c:forEach>--%>
+				<th>发票编号</th>
+				<th>发票金额</th>
+				<th>累计登记金额</th>
+				<th>开票日期</th>
+			</tr>
+			</thead>
+			<tbody>
+			<c:choose>
+				<c:when test="${not empty page.list}">
+					<c:forEach items="${page.list}" var="obj">
+						<tr>
+							<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+							<td class="codelabel">${obj.number}</td>
+							<td class="codelabel2">${obj.totalMoney}</td>
+							<td class="codelabel3">${obj.incomeMoney}</td>
+							<td class="codelabel1"><fmt:formatDate value="${obj.date}" pattern="yyyy-MM-dd"/></td>
+						</tr>
+					</c:forEach>
+				</c:when>
+				<c:otherwise>
+					<tr>
+						<td colspan="5" align="center">
+							暂无数据
+						</td>
+					</tr>
+				</c:otherwise>
+			</c:choose>
+
+			</tbody>
+		</table>
+                <table:page page="${page}"></table:page>
+            </div>
+        </div>
+        <div class="form-group layui-row page-end"></div>
+    </div>
+</div>
+</body>
+</html>

+ 130 - 0
src/main/webapp/webpage/modules/sys/gridselectItem.jsp

@@ -0,0 +1,130 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+		});
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			/*  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }*/
+            var arr=new Array();
+            $("#contentTable tbody tr td input.i-checks:checkbox:checked").each(function () {
+                var id =  $(this).attr("id");
+                var itemName = $(this).parent().parent().parent().find(".codelabe2").html();
+                var itemNumber = $(this).parent().parent().parent().find(".codelabe3").html();
+                var type = $(this).parent().parent().parent().find(".codelabe4").html();
+                var model = $(this).parent().parent().parent().find(".codelabe5").html();
+                var primaryUnit = $(this).parent().parent().parent().find(".codelabe6").html();
+                var number = $(this).parent().parent().parent().find(".codelabe7").html();
+                var data= {'id':id,'itemName':itemName,'itemNumber':itemNumber,'type':type,'model':model,'primaryUnit':primaryUnit,'number':number};
+                arr.push(data);
+            })
+            return arr;
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<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">
+							<span class="layui-form-label">物品名称:</span>
+							<div class="layui-input-block">
+								<form:input path="itemName" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" style="margin-right: 0px;" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+						<tr>
+							<th width="40"><input type="checkbox" class="i-checks"></th>
+								<th>物品名称</th>
+							<th>物品编号</th>
+								<th>物品分类</th>
+							<th>规格型号</th>
+								<th>计量单位</th>
+							<th>固定资产编号</th>
+						</tr>
+					</thead>
+					<tbody>
+					<c:choose>
+						<c:when test="${not empty page.list}">
+							<c:forEach items="${page.list}" var="obj">
+								<tr>
+									<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+									<td class="codelabe2">${obj.itemName}</td>
+									<td class="codelabe3">${obj.workCatalogueItem.number}</td>
+									<td class="codelabe4">${fns:getMainDictLabel(obj.workCatalogueItem.type, 'item_type', '')}</td>
+									<td class="codelabe5">${obj.workCatalogueItem.model}</td>
+									<td class="codelabe6">${fns:getMainDictLabel(obj.workCatalogueItem.primaryUnit, 'full_count_unit', '')}</td>
+									<td class="codelabe7">${obj.number}</td>
+								</tr>
+							</c:forEach>
+						</c:when>
+						<c:otherwise>
+							<tr>
+								<td colspan="7" align="center">
+									暂无数据
+								</td>
+							</tr>
+						</c:otherwise>
+					</c:choose>
+
+					</tbody>
+				</table>
+				<table:page page="${page}"></table:page>
+			</div>
+		</div>
+		<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 126 - 0
src/main/webapp/webpage/modules/sys/gridselectOneItem.jsp

@@ -0,0 +1,126 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+		});
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+                var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+                var itemName = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabe2").html();
+                var itemNumber = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabe3").html();
+                var type = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabe4").html();
+                var model = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabe5").html();
+                var primaryUnit = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabe6").html();
+                var number = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabe7").html();
+                return {'id':id,'itemName':itemName,'itemNumber':itemNumber,'type':type,'model':model,'primaryUnit':primaryUnit,'number':number};
+
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<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">
+							<span class="layui-form-label">物品名称:</span>
+							<div class="layui-input-block">
+								<form:input path="itemName" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" style="margin-right: 0px;" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+						<tr>
+							<th width="40"></th>
+								<th>物品名称</th>
+							<th>物品编号</th>
+								<th>物品分类</th>
+							<th>规格型号</th>
+								<th>计量单位</th>
+							<th>固定资产编号</th>
+						</tr>
+					</thead>
+					<tbody>
+					<c:choose>
+						<c:when test="${not empty page.list}">
+							<c:forEach items="${page.list}" var="obj">
+								<tr>
+									<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+									<td class="codelabe2">${obj.itemName}</td>
+									<td class="codelabe3">${obj.workCatalogueItem.number}</td>
+									<td class="codelabe4">${fns:getMainDictLabel(obj.workCatalogueItem.type, 'item_type', '')}</td>
+									<td class="codelabe5">${obj.workCatalogueItem.model}</td>
+									<td class="codelabe6">${fns:getMainDictLabel(obj.workCatalogueItem.primaryUnit, 'full_count_unit', '')}</td>
+									<td class="codelabe7">${obj.number}</td>
+								</tr>
+							</c:forEach>
+						</c:when>
+						<c:otherwise>
+							<tr>
+								<td colspan="7" align="center">
+									暂无数据
+								</td>
+							</tr>
+						</c:otherwise>
+					</c:choose>
+
+					</tbody>
+				</table>
+				<table:page page="${page}"></table:page>
+			</div>
+		</div>
+		<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 134 - 0
src/main/webapp/webpage/modules/sys/gridselectProjbasedata.jsp

@@ -0,0 +1,134 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			 /* if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }*/
+            var arr=new Array();
+            $("#contentTable tbody tr td input.i-checks:checkbox:checked").each(function () {
+                var id =  $(this).attr("id");
+                var number = $(this).parent().parent().parent().find(".codelabel1").html();
+                var name = $(this).parent().parent().parent().find(".codelabel2").html();
+                var typeLabel = $(this).parent().parent().parent().find(".codelabel3").html();
+                var username = $(this).parent().parent().parent().find(".codelabel4").html();
+                var uploadDate = $(this).parent().parent().parent().find(".codelabel5").html();
+                var userId = $(this).parent().parent().parent().find(".codelabel6").html();
+                var type = $(this).parent().parent().parent().find(".codelabel7").html();
+                var data= {'id':id,'name':name,'number':number,'uploadUser':{'name':username,'id':userId},'type':type,'uploadDate':uploadDate,'typeLabel':typeLabel};
+                arr.push(data);
+            })
+            return arr;
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<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 lw12">
+						<div class="layui-item query athird">
+							<span class="layui-form-label">${searchLabel}:</span>
+							<div class="layui-input-block">
+								<form:input path="name" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" style="margin-right: 0px;" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-hover table-condensed">
+					<thead>
+						<tr>
+							<th width="50"><input type="checkbox" class="i-checks"></th>
+								<th>资料编号</th>
+								<th>资料名称</th>
+								<th>资料类别</th>
+								<th>上传人</th>
+								<th>上传日期</th>
+								<th style="display: none"></th>
+								<th style="display: none"></th>
+						</tr>
+					</thead>
+					<tbody>
+					<c:choose>
+					<c:when test="${not empty page.list}">
+					<c:forEach items="${page.list}" var="obj2">
+							<tr>
+								<td style="text-align:center;"> <input type="checkbox" id="${fns:getValue(obj2, 'id')}" class="i-checks"></td>
+								<td style="text-align:center;" class="codelabel1">${fns:getValue(obj2, 'number')}</td>
+								<td style="text-align:center;" class="codelabel2">${fns:getValue(obj2, 'name')}</td>
+								<td style="text-align:center;" class="codelabel3">${fns:getDictLabel(obj2.type, 'project_document_type', '')}</td>
+								<td style="text-align:center;" class="codelabel4">${obj2.uploadUser.name}</td>
+								<td style="text-align:center;" class="codelabel5"><fmt:formatDate value="${obj2.uploadDate}" pattern="yyyy-MM-dd"/></td>
+								<td style="text-align:center;display: none" class="codelabel6">${obj2.uploadUser.id}</td>
+								<td style="text-align:center;display: none" class="codelabel7">${obj2.type}</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>
+			</div>
+		</div>
+		<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 120 - 0
src/main/webapp/webpage/modules/sys/gridselectProjcontent.jsp

@@ -0,0 +1,120 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			
+		
+
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+			    
+			
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			    var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+
+                var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel").html();
+                return id+"_item_"+label;
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="">
+    <div class="ibox-content">
+		<!-- 查询条件 -->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+		<input type="hidden" name="url" value="${url}"/>
+		<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+		<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+		<input type="hidden" name="searchKey" value="${searchKey}"/>
+		<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>${searchLabel}:</span>
+				<form:input path="name" htmlEscape="false" maxlength="50" class=" form-control input-sm"/>
+		
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " style="margin-right:10px;border:none;background:#0f92fb;border-radius: 0;color:#fff;width:40px" onclick="search()" >查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " style="margin-right:30px;border:none;background:#34bf49;border-radius: 0;color:#fff;width:40px" onclick="reset()" >重置</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>
+			</tr>
+		</thead>
+		<tbody>
+		<c:choose>
+		<c:when test="${not empty page.list}">
+		<c:forEach items="${page.list}" var="obj2">
+				<tr>
+					<td style="text-align:center;"> <input type="checkbox" id="${fns:getValue(obj2, 'id')}" class="i-checks"></td>
+					<td style="text-align:center;" class="codelabel">${fns:getValue(obj2, 'name')}</td>
+                    <td style="text-align:center;" class="codelabel4">${fns:getValue(obj2, 'number')}</td>
+                    <td style="text-align:center;" class="codelabel3">${obj2.master.name}</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>
+</body>
+</html>

+ 137 - 0
src/main/webapp/webpage/modules/sys/gridselectProjcontentData.jsp

@@ -0,0 +1,137 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			
+		
+
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+			    
+			
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			    var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+
+				var number = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel1").html();
+				var name = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel2").html();
+				var typeName = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel3").html();
+				var masterName = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel4").html();
+				var createDate = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel5").html();
+				var masterId = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel6").html();
+				var type = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel7").html();
+            return {'id':id,'name':name,'number':number,'master':{'name':masterName,'id':masterId},'typeName':typeName,'type':type,'createDate':createDate};
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+			<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+				<input type="hidden" name="url" value="${url}"/>
+				<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+				<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+				<input type="hidden" name="searchKey" value="${searchKey}"/>
+				<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 lw12">
+					<div class="layui-item query athird">
+						<span class="layui-form-label">${searchLabel}:</span>
+						<div class="layui-input-block">
+							<form:input path="name" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+						</div>
+					</div>
+					<div class="layui-item athird fr">
+						<div class="input-group">
+							<button id="searchReset" class="fixed-btn searchReset fr" style="margin-right: 0px;" onclick="resetSearch()">重置</button>
+							<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+						</div>
+					</div>
+					<div style="    clear:both;"></div>
+				</div>
+			</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+						<tr>
+							<th width="40"><input type="checkbox" class="i-checks"></th>
+							<th  >工作内容编号</th>
+							<th >工作内容名称</th>
+							<th >工作内容类型</th>
+							<th>负责人</th>
+							<th  >创建时间</th>
+							<th style="display: none"></th>
+							<th style="display: none"></th>
+						</tr>
+					</thead>
+					<tbody>
+					<c:choose>
+					<c:when test="${not empty page.list}">
+					<c:forEach items="${page.list}" var="obj2">
+							<tr>
+								<td style="text-align:center;"> <input type="checkbox" id="${fns:getValue(obj2, 'id')}" class="i-checks"></td>
+								<td style="text-align:center;" class="codelabel1">${fns:getValue(obj2, 'number')}</td>
+								<td style="text-align:center;" class="codelabel2">${fns:getValue(obj2, 'name')}</td>
+								<td style="text-align:center;" class="codelabel3">${fns:getContentTypeName(obj2.type,"")}</td>
+								<td style="text-align:center;" class="codelabel4">${obj2.master.name}</td>
+								<td style="text-align:center;" class="codelabel5">
+									<fmt:formatDate value="${obj2.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+								</td>
+								<td style="text-align:center;display: none" class="codelabel6">${obj2.master.id}</td>
+								<td style="text-align:center;display: none" class="codelabel7">${obj2.type}</td>
+							</tr>
+					</c:forEach>
+					</c:when>
+						<c:otherwise>
+							<tr>
+								<td colspan="6" align="center">
+									暂无数据
+								</td>
+							</tr>
+						</c:otherwise>
+					</c:choose>
+
+					</tbody>
+				</table>
+				<table:page page="${page}"></table:page>
+			</div>
+		</div>
+		<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 112 - 0
src/main/webapp/webpage/modules/sys/gridselectcallproject.jsp

@@ -0,0 +1,112 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+
+            <%--var val = "<%=request.getAttribute("state")%>";--%>
+            <%--if(val!=null){--%>
+                <%--alert("++++++++++");--%>
+			<%--};--%>
+
+            $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+			    
+			
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			    var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+			    
+				var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel").html();
+				return id+"_item_"+label;
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="isTotal" value="${isTotal}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<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();"/><!-- 支持排序 -->
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl form-group first">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+					<tr>
+						<th width="50px"></th>
+						<c:forEach items="${labelNames}" var="projectName"  varStatus="status">
+							<th>项目名称</th>
+							<th>项目编号</th>
+							<th>合同名称</th>
+							<th>主委托方</th>
+						</c:forEach>
+					</tr>
+					</thead>
+					<tbody>
+					<c:choose>
+						<c:when test="${not empty page.list}">
+					<c:forEach items="${page.list}" var="obj">
+						<tr>
+							<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+							<td class="codelabel">${obj.projectName}</td>
+							<td class="codelabel">${obj.projectId}</td>
+							<td class="codelabel">${obj.workContractInfo.name}</td>
+							<td class="codelabel">${obj.workContractInfo.client.name}</td>
+						</tr>
+					</c:forEach>
+					</c:when>
+					<c:otherwise>
+						<tr>
+							<td colspan="5" align="center">
+								暂无数据
+							</td>
+						</tr>
+					</c:otherwise>
+					</c:choose>
+					</tbody>
+				</table>
+				<table:page page="${page}"></table:page>
+	</div>
+</div>
+	</div>
+</div>
+</body>
+</html>

+ 132 - 0
src/main/webapp/webpage/modules/sys/gridselectcalltotalproject.jsp

@@ -0,0 +1,132 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+
+            <%--var val = "<%=request.getAttribute("state")%>";--%>
+            <%--if(val!=null){--%>
+                <%--alert("++++++++++");--%>
+			<%--};--%>
+
+            $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+			    
+			
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			    var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+			    
+				var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel").html();
+				return id+"_item_"+label;
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="">
+    <div class="ibox-content">
+		<!-- 查询条件 -->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+		<input type="hidden" name="url" value="${url}"/>
+		<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+		<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+		<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+		<input type="hidden" name="isTotal" value="${isTotal}"/>
+		<input type="hidden" name="searchKey" value="${searchKey}"/>
+		<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="${searchKey}" htmlEscape="false" maxlength="50" class=" form-control input-sm"/>
+		
+		 </div>	--%>
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<%--<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<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>
+				<c:forEach items="${labelNames}" var="name"  varStatus="status">
+					<th>项目名称</th>
+				</c:forEach>
+			</tr>
+		</thead>
+		<tbody>
+		<c:choose>
+			<c:when test="${not empty page.list}">
+		<c:forEach items="${page.list}" var="obj">
+			<tr>
+				<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+				
+				<c:forEach items="${labelValues}" var="value"  varStatus="status">
+					<c:if test="${status.first==true}">
+						<td class="codelabel">${fns:getValue(obj, value)}</td>
+					</c:if>
+					
+					<c:if test="${status.first!=true}">
+						<td>${fns:getValue(obj, value)}</td>
+					</c:if>
+				</c:forEach>
+			
+			</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>
+</body>
+</html>

+ 112 - 0
src/main/webapp/webpage/modules/sys/gridselectcallwage.jsp

@@ -0,0 +1,112 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+
+            <%--var val = "<%=request.getAttribute("state")%>";--%>
+            <%--if(val!=null){--%>
+                <%--alert("++++++++++");--%>
+			<%--};--%>
+
+            $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+			    
+			
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			    var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+			    
+				var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabelname").html();
+				return id+"_item_"+label;
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="isTotal" value="${isTotal}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<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();"/><!-- 支持排序 -->
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl form-group first">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+					<tr>
+						<th width="50px"></th>
+						<c:forEach items="${labelNames}" var="projectName"  varStatus="status">
+							<th>工资项编号</th>
+							<th>工资项名称</th>
+							<th>工资项类型</th>
+							<th>设置方式</th>
+						</c:forEach>
+					</tr>
+					</thead>
+					<tbody>
+					<c:choose>
+						<c:when test="${not empty page.list}">
+					<c:forEach items="${page.list}" var="obj">
+						<tr>
+							<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+							<td class="codelabel">${obj.num}</td>
+							<td class="codelabelname">${obj.name}</td>
+							<td class="codelabel">${fns:getDictLabel(obj.type, 'salaryItem_type', '')}</td>
+							<td class="codelabel">${fns:getDictLabel(obj.setMethod, 'salaryItem_setMethod', '')}</td>
+						</tr>
+					</c:forEach>
+					</c:when>
+					<c:otherwise>
+						<tr>
+							<td colspan="5" align="center">
+								暂无数据
+							</td>
+						</tr>
+					</c:otherwise>
+					</c:choose>
+					</tbody>
+				</table>
+				<table:page page="${page}"></table:page>
+	</div>
+</div>
+	</div>
+</div>
+</body>
+</html>

+ 120 - 0
src/main/webapp/webpage/modules/sys/gridselectclientinfo.jsp

@@ -0,0 +1,120 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+        $(document).ready(function() {
+
+
+
+            $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+                $('#contentTable tbody tr td input.i-checks').iCheck('check');
+            });
+
+            $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+                $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+            });
+
+
+        });
+
+        function getSelectedItem(){
+
+            var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+            if(size == 0 ){
+                top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+                return "-1";
+            }
+
+            if(size > 1 ){
+                top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+                return "-1";
+            }
+            var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+
+            var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel").html();
+            return id+"_item_"+label;
+        }
+        function page(n,s){
+            if(n) $("#pageNo").val(n);
+            if(s) $("#pageSize").val(s);
+            $("#searchForm").attr("action","${url}");
+            $("#searchForm").submit();
+            return false;
+        }
+	</script>
+</head>
+<body class="gray-bg">
+<div class="">
+	<div class="ibox-content">
+		<!-- 查询条件 -->
+		<div class="row">
+			<div class="col-sm-12">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<input type="hidden" name="searchLabel1" value="${searchLabel1}"/>
+					<input type="hidden" name="searchKey1" value="${searchKey1}"/>
+					<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="${searchKey}" htmlEscape="false" maxlength="50" class=" form-control input-sm"/>
+						<%--<span>联系人:</span>
+						<form:input path="${searchKey1}" htmlEscape="false" maxlength="50" class=" form-control input-sm"/>--%>
+					</div>
+				</form:form>
+				<br/>
+			</div>
+		</div>
+
+		<!-- 工具栏 -->
+		<div class="row">
+			<div class="col-sm-12">
+				<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>
+				<c:forEach items="${labelNames}" var="name"  varStatus="status">
+					<th>客户名称</th>
+				</c:forEach>
+			</tr>
+			</thead>
+			<tbody>
+			<c:forEach items="${page.list}" var="obj">
+				<tr>
+					<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+
+					<c:forEach items="${labelValues}" var="value"  varStatus="status">
+						<c:if test="${status.first==true}">
+							<td><a href="javascript:void(0)" class="codelabel" onclick="openDialogView('查看客户管理', '${ctx}/workclientinfo/workClientInfo/detail?id=${fns:getValue(obj, 'id')}','80%','80%')">${fns:getValue(obj, value)}</a></td>
+						</c:if>
+
+						<c:if test="${status.first!=true}">
+							<td>${fns:getValue(obj, value)}</td>
+						</c:if>
+					</c:forEach>
+
+				</tr>
+			</c:forEach>
+			</tbody>
+		</table>
+		<table:page page="${page}"></table:page>
+		<br/>
+		<br/>
+	</div>
+</div>
+</body>
+</html>

+ 124 - 0
src/main/webapp/webpage/modules/sys/gridselectdetail.jsp

@@ -0,0 +1,124 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			
+		
+
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+			    
+			
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			    var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+			    
+				var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel").html();
+				return id+"_item_"+label;
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body class="gray-bg">
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<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">
+							<span class="layui-form-label">发票编号:</span>
+							<div class="layui-input-block">
+								<form:input path="number" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" style="margin-right: 0px;" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+						<tr>
+							<th  width="50px"></th>
+							<th>发票编号</th>
+							<th>发票金额</th>
+							<th>累计登记金额</th>
+							<th width="100px">开票日期</th>
+						</tr>
+					</thead>
+					<tbody>
+					<c:choose>
+						<c:when test="${not empty page.list}">
+							<c:forEach items="${page.list}" var="obj">
+								<tr>
+									<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+									<td class="codelabel">${obj.number}</td>
+									<td class="codelabel2">${obj.totalMoney}</td>
+									<td class="codelabel3">${obj.incomeMoney}</td>
+									<td class="codelabel1"><fmt:formatDate value="${obj.createDate}" pattern="yyyy-MM-dd"/></td>
+								</tr>
+							</c:forEach>
+						</c:when>
+						<c:otherwise>
+							<tr>
+								<td colspan="5" align="center">
+									暂无数据
+								</td>
+							</tr>
+						</c:otherwise>
+					</c:choose>
+
+					</tbody>
+				</table>
+				<table:page page="${page}"></table:page>
+			</div>
+		</div>
+		<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 144 - 0
src/main/webapp/webpage/modules/sys/gridselectp.jsp

@@ -0,0 +1,144 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			
+		
+
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+			    
+			
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			    var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+			    
+				var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel").html();
+				return id+"_item_"+label;
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+
+					<input type="hidden" name="numberLabel" value="${numberLabel}"/>
+					<input type="hidden" name="numberKey" value="${numberKey}"/>
+					<input type="hidden" name="sortLabel" value="${sortLabel}"/>
+					<input type="hidden" name="sortKey" value="${sortKey}"/>
+					<input type="hidden" name="createDateLabel" value="${createDateLabel}"/>
+					<input type="hidden" name="createDateKey" value="${createDateKey}"/>
+
+					<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">
+							<span class="layui-form-label">项目名称:</span>
+							<div class="layui-input-block">
+								<form:input path="${searchKey}" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" style="margin-right: 0px;" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+					<tr>
+						<th  width="50px"><input type="checkbox" class="i-checks"></th>
+						<c:forEach items="${labelNames}" var="name"  varStatus="status">
+							<th>项目名称</th>
+							<th>项目编号</th>
+							<th>项目分类</th>
+							<%--<th>登记时间</th>--%>
+						</c:forEach>
+					</tr>
+					</thead>
+					<tbody>
+					<c:choose>
+						<c:when test="${not empty page.list}">
+							<c:forEach items="${page.list}" var="obj">
+								<tr>
+									<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+
+									<c:forEach items="${labelValues}" var="value"  varStatus="status">
+										<c:if test="${status.first==true}">
+											<td class="codelabel">${fns:getValue(obj, value)}</td>
+										</c:if>
+
+										<c:if test="${status.first!=true}">
+											<td>${fns:getValue(obj, value)}</td>
+										</c:if>
+									</c:forEach>
+									<td>${fns:getValue(obj, 'number')}</td>
+									<td>${fns:getValue(obj, 'sort')}</td>
+										<%--<td>${fns:getValue(obj, 'creatDate')}</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>
+			</div>
+		</div>
+		<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 135 - 0
src/main/webapp/webpage/modules/sys/gridselectrecord.jsp

@@ -0,0 +1,135 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			
+		
+
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+			    
+			
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			    var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+			    
+				var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel").html();
+				return id+"_item_"+label;
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<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">
+							<span class="layui-form-label">合同名称:</span>
+							<div class="layui-input-block">
+								<form:input path="${searchKey}" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" style="margin-right: 0px;" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+						<tr>
+							<th width="70px"></th>
+							<c:forEach items="${labelNames}" var="name"  varStatus="status">
+								<th>合同名称</th>
+								<th>客户名称</th>
+								<th>工程分类</th>
+								<th>合同金额(元)</th>
+							</c:forEach>
+						</tr>
+					</thead>
+					<tbody>
+					<c:choose>
+						<c:when test="${not empty page.list}">
+							<c:forEach items="${page.list}" var="obj">
+								<tr>
+									<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+									<td class="codelabel">${obj.name}</td>
+										<%--<c:forEach items="${labelValues}" var="value"  varStatus="status">
+                                            <c:if test="${status.first==true}">
+                                                <td class="codelabel">${fns:getValue(obj, value)}</td>
+                                            </c:if>
+
+                                            &lt;%&ndash;<c:if test="${status.first!=true}">
+                                                <td>${fns:getValue(obj, value)}</td>
+                                            </c:if>&ndash;%&gt;
+                                        </c:forEach>--%>
+									<td class="codelabel">${obj.client.name}</td>
+									<td class="codelabel">${fns:getMainDictLabel(obj.contractType, 'contract_type', '')}</td>
+									<td class="codelabel"><fmt:formatNumber value="${obj.contractPrice}" pattern="#,#00.00"/></td>
+								</tr>
+							</c:forEach>
+						</c:when>
+						<c:otherwise>
+							<tr>
+								<td colspan="5" align="center">
+									暂无数据
+								</td>
+							</tr>
+						</c:otherwise>
+					</c:choose>
+
+					</tbody>
+				</table>
+				<table:page page="${page}"></table:page>
+			</div>
+		</div>
+		<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 139 - 0
src/main/webapp/webpage/modules/sys/gridselectreportrecord.jsp

@@ -0,0 +1,139 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			
+		
+
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+			    
+			
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			 var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+            var number = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel1").html();
+            var name = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel2").html();
+            var reportDate = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel3").html();
+            var contractNum = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel4").html();
+            var contractName = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel5").html();
+            var clientName = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel6").html();
+            var projectName = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel7").html();
+            var projectNum = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel8").html();
+            return {'id':id,'name':name,'number':number,'reportDate':reportDate,'contractNum':contractNum,
+				'contractName':contractName,'clientName':clientName,'projectName':projectName,'projectNum':projectNum};
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body class="gray-bg">
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+	<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+		<input type="hidden" name="url" value="${url}"/>
+		<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+		<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+		<input type="hidden" name="searchKey" value="${searchKey}"/>
+		<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">
+				<span class="layui-form-label">${searchLabel}:</span>
+				<%--<span class="layui-form-label">${fns:urlDecode(searchLabel)}:</span>--%>
+				<div class="layui-input-block">
+					<form:input path="name" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+				</div>
+			</div>
+			<div class="layui-item athird fr">
+				<div class="input-group">
+					<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+					<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+				</div>
+			</div>
+		</div>
+	</form:form>
+	<br/>
+	</div>
+	</div>
+		<div class="full-width fl">
+			<div class="layui-item layui-col-xs12 form-table-container">
+
+			<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th><input type="checkbox" class="i-checks"></th>
+					<th>报告编号</th>
+					<th>报告名称</th>
+					<th>报告日期</th>
+					<th>合同编号</th>
+					<th>合同名称</th>
+					<th>主委托方</th>
+					<th>项目名称</th>
+					<th>项目编号</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:choose>
+		<c:when test="${not empty page.list}">
+		<c:forEach items="${page.list}" var="obj2">
+				<tr>
+					<td style="text-align:center;"> <input type="checkbox" id="${fns:getValue(obj2, 'id')}" class="i-checks"></td>
+                    <td style="text-align:center;" class="codelabel1">${fns:getValue(obj2, 'number')}</td>
+                    <td style="text-align:center;" class="codelabel2">${fns:getValue(obj2, 'name')}</td>
+					<td style="text-align:center;" class="codelabel3"><fmt:formatDate value="${obj2.reportDate}" pattern="yyyy-MM-dd"/></td>
+					<td style="text-align:center;" class="codelabel4">${obj2.contractNum}</td>
+                    <td style="text-align:center;" class="codelabel5">${obj2.contractName}</td>
+                    <td style="text-align:center;" class="codelabel6">${obj2.clientName}</td>
+					<td style="text-align:center;" class="codelabel7">${obj2.projectName}</td>
+					<td style="text-align:center;" class="codelabel8">${obj2.projectNum}</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>
+			</div>
+		</div>
+		<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 137 - 0
src/main/webapp/webpage/modules/sys/gridselectscrap.jsp

@@ -0,0 +1,137 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			
+		
+
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+			    
+			
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			    var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+			    
+				var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel2").html();
+				return id+"_item_"+label;
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body >
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<input type="hidden" name="searchLabel1" value="${searchLabel1}"/>
+					<input type="hidden" name="searchKey1" value="${searchKey1}"/>
+					<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">
+							<span class="layui-form-label">物品名称:</span>
+							<div class="layui-input-block">
+								<form:input path="${searchKey}" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" style="margin-right: 0px;" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+					<tr>
+						<th  width="50px"></th>
+						<c:forEach items="${labelNames}" var="name"  varStatus="status">
+						<th>物品名称</th>
+						<th>固定资产编号</th>
+						<th>物品编号</th>
+						<th>物品分类</th>
+						</c:forEach>
+					</tr>
+				</thead>
+				<tbody>
+				<c:choose>
+					<c:when test="${not empty page.list}">
+						<c:forEach items="${page.list}" var="obj">
+							<tr>
+								<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+								<td class="codelabel">${obj.itemName}</td>
+								<%--<c:forEach items="${labelValues}" var="value"  varStatus="status">
+									<c:if test="${status.first==true}">
+										<td class="codelabel">${fns:getValue(obj, value)}</td>
+									</c:if>
+
+									&lt;%&ndash;<c:if test="${status.first!=true}">
+										<td>${fns:getValue(obj, value)}</td>
+									</c:if>&ndash;%&gt;
+								</c:forEach>--%>
+								<td class="codelabel2">${obj.number}</td>
+								<td class="codelabel">${obj.workCatalogueItem.number}</td>
+								<td class="codelabel">${fns:getMainDictLabel(obj.workCatalogueItem.type, 'item_type', '')}</td>
+								<%--<td class="codelabel">${fns:getMainDictLabel(obj.workCatalogueItem.type, 'company_industry', '')}</td>--%>
+							</tr>
+						</c:forEach>
+					</c:when>
+					<c:otherwise>
+						<tr>
+							<td colspan="5" align="center">
+								暂无数据
+							</td>
+						</tr>
+					</c:otherwise>
+				</c:choose>
+				</tbody>
+				</table>
+				<table:page page="${page}"></table:page>
+			</div>
+		</div>
+		<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 148 - 0
src/main/webapp/webpage/modules/sys/gridselectstock.jsp

@@ -0,0 +1,148 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			
+		
+
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+			    
+			
+		});
+
+		function getSelectedItem(){
+            var isSingle=${isSingle};
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+            if(isSingle) {//单选
+                if (size > 1) {
+                    top.layer.alert('只能选择一条数据!', {icon: 0, title: '警告'});
+                    return "-1";
+                }
+                var id = $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+                var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel2").html();
+                return id + "_item_" + label;
+            }else{
+			  	console.log("----------多选");
+                var arr=new Array();
+                $("#contentTable tbody tr td input.i-checks:checked").each(function () {
+                    var id =  $(this).attr("id");
+                    var name = $(this).parent().parent().parent().find(".codelabe2").html();
+                    var data = {'id':id};
+                    arr.push(data);
+                })
+                return arr;
+			}
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body >
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="isSingle" value="${isSingle}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<input type="hidden" name="searchLabel1" value="${searchLabel1}"/>
+					<input type="hidden" name="searchKey1" value="${searchKey1}"/>
+					<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">
+							<span class="layui-form-label">物品名称:</span>
+							<div class="layui-input-block">
+								<form:input path="${searchKey}" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" style="margin-right: 0px;" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+					<tr>
+						<th  width="50px"></th>
+						<c:forEach items="${labelNames}" var="name"  varStatus="status">
+						<th>物品名称</th>
+							<th>物品编号</th>
+							<th>物品分类</th>
+							<th>规格型号</th>
+						</c:forEach>
+					</tr>
+				</thead>
+				<tbody>
+				<c:choose>
+					<c:when test="${not empty page.list}">
+						<c:forEach items="${page.list}" var="obj">
+							<tr>
+								<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+								<td class="codelabel">${obj.name}</td>
+								<%--<c:forEach items="${labelValues}" var="value"  varStatus="status">
+									<c:if test="${status.first==true}">
+										<td class="codelabel">${fns:getValue(obj, value)}</td>
+									</c:if>
+
+									&lt;%&ndash;<c:if test="${status.first!=true}">
+										<td>${fns:getValue(obj, value)}</td>
+									</c:if>&ndash;%&gt;
+								</c:forEach>--%>
+								<td class="codelabel2">${obj.number}</td>
+								<td class="codelabel">${fns:getMainDictLabel(obj.type, 'item_type', '')}</td>
+								<td class="codelabel">${obj.model}</td>
+								<%--<td class="codelabel">${fns:getMainDictLabel(obj.workCatalogueItem.type, 'company_industry', '')}</td>--%>
+							</tr>
+						</c:forEach>
+					</c:when>
+					<c:otherwise>
+						<tr>
+							<td colspan="5" align="center">
+								暂无数据
+							</td>
+						</tr>
+					</c:otherwise>
+				</c:choose>
+				</tbody>
+				</table>
+				<table:page page="${page}"></table:page>
+			</div>
+		</div>
+		<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 137 - 0
src/main/webapp/webpage/modules/sys/gridselectstockcontract.jsp

@@ -0,0 +1,137 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			
+		
+
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+			    
+			
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			    var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+			    
+				var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel").html();
+				return id+"_item_"+label;
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body >
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<input type="hidden" name="searchLabel1" value="${searchLabel1}"/>
+					<input type="hidden" name="searchKey1" value="${searchKey1}"/>
+					<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">
+							<span class="layui-form-label">合同名称:</span>
+							<div class="layui-input-block">
+								<form:input path="${searchKey}" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" style="margin-right: 0px;" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+					<tr>
+						<th  width="50px"></th>
+						<c:forEach items="${labelNames}" var="name"  varStatus="status">
+						<th>合同名称</th>
+						<th>合同编号</th>
+						<th>联系人名称</th>
+						<th>供应商</th>
+						</c:forEach>
+
+					</tr>
+				</thead>
+				<tbody>
+				<c:choose>
+					<c:when test="${not empty page.list}">
+						<c:forEach items="${page.list}" var="obj">
+							<tr>
+								<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+								<td class="codelabel">${obj.name}</td>
+								<%--<c:forEach items="${labelValues}" var="value"  varStatus="status">
+									<c:if test="${status.first==true}">
+										<td class="codelabel">${fns:getValue(obj, value)}</td>
+									</c:if>
+
+									&lt;%&ndash;<c:if test="${status.first!=true}">
+										<td>${fns:getValue(obj, value)}</td>
+									</c:if>&ndash;%&gt;
+								</c:forEach>--%>
+								<td class="codelabel">${obj.number}</td>
+								<td class="codelabel">${obj.linkName}</td>
+								<td class="codelabel">${obj.supplierName}</td>
+							</tr>
+						</c:forEach>
+					</c:when>
+					<c:otherwise>
+						<tr>
+							<td colspan="5" align="center">
+								暂无数据
+							</td>
+						</tr>
+					</c:otherwise>
+				</c:choose>
+				</tbody>
+				</table>
+				<table:page page="${page}"></table:page>
+			</div>
+		</div>
+		<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 137 - 0
src/main/webapp/webpage/modules/sys/gridselectsupplier.jsp

@@ -0,0 +1,137 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			
+		
+
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+			    
+			
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			    var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+			    
+				var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel").html();
+				return id+"_item_"+label;
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body >
+<div class="wrapper wrapper-content">
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+					<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+					<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+					<input type="hidden" name="searchKey" value="${searchKey}"/>
+					<input type="hidden" name="searchLabel1" value="${searchLabel1}"/>
+					<input type="hidden" name="searchKey1" value="${searchKey1}"/>
+					<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">
+							<span class="layui-form-label">供应商名称:</span>
+							<div class="layui-input-block">
+								<form:input path="${searchKey}" htmlEscape="false" maxlength="50" class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" style="margin-right: 0px;" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-item layui-col-xs12 form-table-container">
+				<table id="contentTable" class="table details table-bordered table-condensed">
+					<thead>
+					<tr>
+						<th  width="50px"></th>
+						<c:forEach items="${labelNames}" var="name"  varStatus="status">
+						<th>供应商名称</th>
+						<th>法人代表</th>
+						<th>统一社会信用代码</th>
+						<th>联系人姓名</th>
+						</c:forEach>
+
+					</tr>
+				</thead>
+				<tbody>
+				<c:choose>
+					<c:when test="${not empty page.list}">
+						<c:forEach items="${page.list}" var="obj">
+							<tr>
+								<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+								<td class="codelabel">${obj.name}</td>
+								<%--<c:forEach items="${labelValues}" var="value"  varStatus="status">
+									<c:if test="${status.first==true}">
+										<td class="codelabel">${fns:getValue(obj, value)}</td>
+									</c:if>
+
+									&lt;%&ndash;<c:if test="${status.first!=true}">
+										<td>${fns:getValue(obj, value)}</td>
+									</c:if>&ndash;%&gt;
+								</c:forEach>--%>
+								<td class="codelabel">${obj.deputy}</td>
+								<td class="codelabel">${obj.uscCode}</td>
+								<td class="codelabel">${obj.linkName}</td>
+							</tr>
+						</c:forEach>
+					</c:when>
+					<c:otherwise>
+						<tr>
+							<td colspan="5" align="center">
+								暂无数据
+							</td>
+						</tr>
+					</c:otherwise>
+				</c:choose>
+				</tbody>
+				</table>
+				<table:page page="${page}"></table:page>
+			</div>
+		</div>
+		<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 162 - 0
src/main/webapp/webpage/modules/sys/gridworkSupplier.jsp

@@ -0,0 +1,162 @@
+<%@ 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="workSupplier" action="${url}" method="post" class="form-inline">
+					<input type="hidden" name="url" value="${url}"/>
+					<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:select path="falt" class="form-control simple-select">
+									<form:option value="2" label="客户"/>
+									<form:option value="1" label="供应商"/>
+								</form:select>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">名称:</label>
+							<div class="layui-input-block">
+								<form:input path="name" htmlEscape="false" maxlength="20"  class=" form-control layui-input"/>
+							</div>
+						</div>
+
+						<div class="layui-item athird">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+
+		<div class="full-width fl">
+			<div class="contentShadow layui-form contentDetails">
+
+				<table class="oa-table layui-table" id="contentTable">
+					<thead>
+					<tr>
+						<th width="40" style="text-align: center"><input type="checkbox" class="i-checks"></th>
+						<th style="text-align: center">开户银行</th>
+						<th style="text-align: center">开户账号</th>
+						<th width="15%" style="text-align: center">客户/供应商名称</th>
+						<th style="text-align: center">统一社会信用代码</th>
+					</tr>
+					</thead>
+					<tbody>
+					<c:forEach items="${page.list}" var="workSupplier" varStatus="index">
+						<tr id="t${index.index}">
+							<td style="text-align:center;"> <input type="checkbox" id="${workSupplier.id}" class="i-checks"></td>
+							<td class="codelabe2">${workSupplier.bank}</td>
+							<td class="codelabe3">${workSupplier.bankNumber}</td>
+							<td class="codelabe0" >${workSupplier.name}</td>
+							<td class="codelabel">${workSupplier.uscCode}</td>
+						</tr>
+					</c:forEach>
+
+					</tbody>
+				</table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+</div>
+<script>
+</script>
+<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: '#beginDate',
+            event: 'focus',
+            type : 'date'
+        });
+        laydate.render({
+            elem: '#endDate',
+            event: 'focus',
+            type : 'date'
+        });
+        $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+            $('#contentTable tbody tr td input.i-checks').iCheck('check');
+        });
+        $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
+            $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+        });
+    });
+
+    function getSelectedItem(){
+        var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+        if(size == 0 ){
+            top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+            return "-1";
+        }
+        if(size >1 ){
+            top.layer.alert('请选择一条数据!', {icon: 0, title:'警告'});
+            return "-1";
+        }
+            var id =  $("#contentTable tbody tr td input.i-checks:checked").attr("id");
+            var name = $("#contentTable tbody tr td input.i-checks:checked").parent().parent().parent().find(".codelabe0").html();
+            var uscCode = $("#contentTable tbody tr td input.i-checks:checked").parent().parent().parent().find(".codelabel").html();
+            var bank = $("#contentTable tbody tr td input.i-checks:checked").parent().parent().parent().find(".codelabe2").html();
+            var bankNumber = $("#contentTable tbody tr td input.i-checks:checked").parent().parent().parent().find(".codelabe3").html();
+            var data = {'id':id,'name':name,'uscCode':uscCode,'bank':bank,'bankNumber':bankNumber};
+            return data;
+    }
+    function page(n,s){
+        if(n) $("#pageNo").val(n);
+        if(s) $("#pageSize").val(s);
+        $("#searchForm").attr("action","${url}");
+        $("#searchForm").submit();
+        return false;
+    }
+</script>
+</body>
+</html>

+ 230 - 0
src/main/webapp/webpage/modules/sys/joinCompany.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 claim(taskId) {
+            $.get('${ctx}/act/task/claim' ,{taskId: taskId}, function(data) {
+                if (data == 'true'){
+                    top.$.jBox.tip('签收完成');
+                    location = '${ctx}/sys/company/joinOnCompany/';
+                }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,
+                skin: 'three-btns',
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                btn: ['同意','驳回','关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        //top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                    return false;
+                },
+                btn3: function(index){
+                }
+            });
+        }
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body class="gray-bg">
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="contentShadow layui-row" id="queryDiv">
+
+				<shiro:hasPermission name="sys:company:companyList">
+				<form:form id="searchForm" modelAttribute="companyinfo" action="${ctx}/sys/company/joinCompany" 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 id="createBy" name="createBy" type="hidden" value="${fns:getUser().id}"/>
+					<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 with-icon">
+								<sys:treeselect id="office" name="office.id" value="${companyinfo.office.id}" labelName="office.name" labelValue="${companyinfo.office.name}"
+												title="部门" url="/sys/office/treeDataAll?type=2" cssClass=" form-control input-sm" allowClear="true" notAllowSelectParent="true"/>
+							</div>
+						</div>
+
+						<div class="layui-item athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+				</shiro:hasPermission>
+			</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',  width:40,title: '序号'}
+                ,{field:'name',align:'center', title: '公司名称', minWidth:150,templet:function(d){
+                        return "<span title='"+ d.name +"'>" + d.name + "</span>";
+                    }}
+                ,{field:'date',align:'center', title: '创建时间', width:80}
+                ,{field:'user',align:'center', title: '用户名称', width:80,templet:function(d){
+                        return "<span title='"+ d.user +"'>" + d.user + "</span>";
+                    }}
+                ,{field:'office', align:'center',title: '所属部门', width:150,templet:function(d){
+                        return "<span title='"+ d.office +"'>" + d.office + "</span>";
+                    }}
+                ,{field:'remarks', align:'center',title: '备注信息', minWidth:100,templet:function(d){
+                        return "<span title='"+ d.remarks +"'>" + d.remarks + "</span>";
+                    }}
+                ,{field:'master', align:'center',title: '审批管理员',width:80,templet:function(d){
+                        return "<span title='"+ d.master +"'>" + d.master + "</span>";
+                    }}
+                ,{field:'status',align:'center', title: '加入状态', width:80,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.canview != undefined && d.canview == "1")
+                            xml += "<a href=\"javascript:void(0)\" onclick=\"openDialogView('查看企业信息', '${ctx}/sys/company/companyinfoView?id="+ d.id + "&readAttr=disabled','95%','95%')\" class=\"op-btn op-btn-view\" ><i class=\"fa fa-search-plus\"></i> 查看</a>";
+                        if(d.cancancel != undefined && d.cancancel == "1")
+                            xml +="<a href=\"${ctx}/sys/company/deletes?id="+ d.id +"\" onclick=\"return confirmx('确认要退出企业吗?', this.href)\"   class=\"op-btn op-btn-delete\"><%--<i class=\"fa fa-trash\"></i>--%> 退出</a>";
+                        if(d.candelete != undefined && d.candelete == "1")
+                            xml +="<a href=\"${ctx}/sys/company/deletes?id=" + d.id + "\" onclick=\"return confirmx('确认要删除员工吗?', this.href)\"   class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 删除</a>";
+                        if(d.canedit != undefined && d.canedit == "1")
+                            xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogre('审核', '${ctx}/sys/company/applyOnCompany?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="companyinfo" varStatus="index">
+                <c:set var="status" value="${companyinfo.status }" />
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${companyinfo.id}"
+                    ,"name":"${companyinfo.name}"
+                    ,"date":"<fmt:formatDate value="${companyinfo.createDate}" pattern="yyyy-MM-dd"/>"
+                    ,"user":"${companyinfo.name1}"
+                    ,"office":"${companyinfo.office.name}"
+                    ,"remarks":"${companyinfo.remarks}"
+                    ,"master":"${companyinfo.masterName}"
+                    ,"status":"${fns:getDictLabel(companyinfo.status, 'companyStatus', '')}"
+					<shiro:hasPermission name="sys:company:view">,"canview":"1"</shiro:hasPermission>
+                    <shiro:hasPermission name="sys:company:del">
+					<c:if test="${companyinfo.status=='3' && fns:getUser().id eq companyinfo.userId}" >,"cancancel":"1"</c:if>
+					<c:if test="${companyinfo.status=='3' && fns:getUser().id ne companyinfo.userId}" >,"candelete":"1"</c:if>
+					</shiro:hasPermission>
+					<c:if test="${not empty status && (status == 1 || status == 6) && gly}">,"canedit":"1"</c:if>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+            // ,even: true
+            // ,height: 315
+        });
+
+    })
+
+    resizeListTable();
+</script>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 236 - 0
src/main/webapp/webpage/modules/sys/joinOnCompany.jsp

@@ -0,0 +1,236 @@
+<%@ 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: 'date'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+                ,type: 'date'
+            });
+        });
+        function page(n,s){
+            location = '${ctx}/sys/company/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}/sys/company/joinOnCompany/';
+                }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,
+                skin: 'three-btns',
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                btn: ['同意','驳回','关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        //top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                    return false;
+                },
+                btn3: function(index){
+                }
+            });
+        }
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body class="gray-bg">
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="contentShadow layui-row" id="queryDiv">
+					<form:form id="searchForm" modelAttribute="act" action="${ctx}/sys/company/joinOnCompany" 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="commonQuery">
+							<div class="layui-item query athird">
+								<label class="layui-form-label">创建时间:</label>
+								<div class="layui-input-block">
+									<input id="beginDate"  name="beginDate"  type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon"
+										   value="<fmt:formatDate value="${act.beginDate}" pattern="yyyy-MM-dd"/>"/>
+								</div>
+							</div>
+							<div class="layui-item query athird">
+								<label class="layui-form-label">——&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label>
+								<div class="layui-input-block">
+									<input id="endDate"  name="endDate"  type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon"
+										   value="<fmt:formatDate value="${act.endDate}" pattern="yyyy-MM-dd"/>"/>
+								</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 id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+					<thead>
+					<tr>
+						<th style="text-align: center;">流程发起人</th>
+						<th style="text-align: center;">内容</th>
+						<th style="text-align: center;">当前环节</th>
+					<%--<th>任务内容</th>--%>
+						<th style="text-align: center;">公司名称</th>
+						<th style="text-align: center;">审批管理员</th>
+						<th style="text-align: center;">加入状态</th>
+						<th style="text-align: center;">流程名称</th>
+						<th style="text-align: center;">流程版本</th>
+						<th style="text-align: center;">创建时间</th>
+						<th style="text-align: center;">操作</th>
+					</tr>
+					</thead>
+					<tbody>
+					<c:choose>
+						<c:when test="${not empty list}">
+							<c:forEach items="${list}" var="companyinfo">
+								<c:set var="task" value="${companyinfo.act.task}" />
+								<c:set var="vars" value="${companyinfo.act.vars}" />
+								<c:set var="procDef" value="${companyinfo.act.procDef}" /><%--
+						<c:set var="procExecUrl" value="${act.procExecUrl}" /> --%>
+								<c:set var="status" value="${companyinfo.act.status}" />
+								<tr>
+									<td>${companyinfo.act.vars.map.applyUserId}</td>
+									<td>
+										<c:if test="${empty task.assignee}">
+											<a href="javascript:claim('${task.id}');">签收任务</a>
+										</c:if>
+										<c:if test="${not empty task.assignee}">
+											<a href="${ctx}/sys/company/applyOnCompany?taskId=${task.id}&taskName=${fns:urlEncode(task.name)}&taskDefKey=${task.taskDefinitionKey}&procInsId=${task.processInstanceId}&procDefId=${task.processDefinitionId}&status=${status}">${fns:abbr(not empty vars.map.title ? vars.map.title : task.id, 60)}</a>
+										</c:if>
+									</td>
+									<td>
+											${task.name}
+									</td>
+										<%--<td>${task.description}</td>--%>
+									<td>
+										<a  href="javascript:void(0)" onclick="openDialogView('查看企业信息', '${ctx}/sys/company/companyinfoView?id=${companyinfo.id}&readAttr=disabled','80%','80%')">
+												${companyinfo.name}
+										</a>
+									</td>
+									<td>
+											${companyinfo.masterName}
+									</td>
+									<td>
+											${fns:getDictLabel(companyinfo.status, 'companyStatus', '')}
+									</td>
+									<td>${procDef.name}</td>
+									<td><b title='流程版本号'>V: ${procDef.version}</b></td>
+									<td><fmt:formatDate value="${task.createTime}" type="both"/></td>
+									<td>
+										<div style="text-align: center">
+											<%--<c:if test="${empty task.assignee}">--%>
+											<%--<a href="javascript:claim('${task.id}');" class="btn btn-success btn-xs">签收任务</a>--%>
+											<%--</c:if>--%>
+											<%--<c:if test="${not empty task.assignee}">&lt;%&ndash;--%>
+											<%--<a href="${ctx}${procExecUrl}/exec/${task.taskDefinitionKey}?procInsId=${task.processInstanceId}&act.taskId=${task.id}">办理</a> --%>
+										<%--<a href="${ctx}/sys/company/applyOnCompany?taskId=${task.id}&taskName=${fns:urlEncode(task.name)}&taskDefKey=${task.taskDefinitionKey}&procInsId=${task.processInstanceId}&procDefId=${task.processDefinitionId}&status=${status}" class="btn btn-success btn-xs">任务办理</a>
+										--%>		<a href="javascript:void(0)" onclick="openDialogre('审核', '${ctx}/sys/company/applyOnCompany?taskId=${task.id}&taskName=${fns:urlEncode(task.name)}&taskDefKey=${task.taskDefinitionKey}&procInsId=${task.processInstanceId}&procDefId=${task.processDefinitionId}&status=${status}','95%','95%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 任务办理</a>
+
+											<%--</c:if>--%>
+										</div>
+									</td>
+								</tr>
+							</c:forEach>
+						</c:when>
+						<c:otherwise>
+							<tr>
+								<td colspan="10" 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>

+ 149 - 0
src/main/webapp/webpage/modules/sys/joinOnShenHeCompany.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"/>
+	<script type="text/javascript">
+        $(document).ready(function() {
+            laydate.render({
+                elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+                ,type: 'date'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+                ,type: 'date'
+            });
+        });
+	</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="act" action="${ctx}/sys/company/joinOnShenHeCompany" 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="commonQuery">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">创建时间:</label>
+							<div class="layui-input-block">
+								<input id="beginDate"  name="beginDate"  type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon"
+									   value="<fmt:formatDate value="${act.beginDate}" pattern="yyyy-MM-dd"/>"/>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">——&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label>
+							<div class="layui-input-block">
+								<input id="endDate" name="endDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon"
+									   value="<fmt:formatDate value="${act.endDate}" pattern="yyyy-MM-dd"/>"/>
+							</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 id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+					<thead>
+					<tr>
+						<%--<th>当前环节</th>
+						<th>任务内容</th>--%>
+						<th style="text-align: center;">流程发起人</th>
+						<th style="text-align: center;">内容</th>
+						<th style="text-align: center;">流程名称</th>
+						<th style="text-align: center;">公司名称</th>
+						<th style="text-align: center;">公司管理员</th>
+						<th style="text-align: center;">加入状态</th>
+						<th style="text-align: center;">流程版本</th>
+						<th style="text-align: center;">创建时间</th>
+						<%--<th>创建时间</th>--%>
+						<th style="text-align: center;">操作</th>
+					</tr>
+					</thead>
+					<tbody>
+					<c:choose>
+						<c:when test="${not empty list}">
+							<c:forEach items="${list}" var="companyinfo">
+								<c:set var="task" value="${companyinfo.act.task}" />
+								<c:set var="vars" value="${companyinfo.act.vars}" />
+								<c:set var="procDef" value="${companyinfo.act.procDef}" />
+								<c:set var="status" value="${companyinfo.act.status}" />
+								<tr>
+									<td>${companyinfo.act.vars.map.applyUserId}</td>
+									<td>${companyinfo.remarks}</td>
+									<td>${procDef.name}</td>
+									<td>
+										<a  href="javascript:void(0)" onclick="openDialogView('查看企业信息', '${ctx}/sys/company/companyinfoView?id=${companyinfo.id}&readAttr=disabled','80%','80%')">
+												${companyinfo.name}
+										</a>
+									</td>
+									<td>
+											${companyinfo.masterName}
+									</td>
+									<td>
+											${fns:getDictLabel(companyinfo.status, 'companyStatus', '')}
+									</td>
+									<td><b title='流程版本号'>V: ${procDef.version}</b></td>
+									<td>
+											${companyinfo.time}
+									</td>
+									<td>
+									</td>
+								</tr>
+							</c:forEach>
+						</c:when>
+						<c:otherwise>
+							<tr>
+								<td colspan="9" 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>

+ 330 - 0
src/main/webapp/webpage/modules/sys/judgeForm.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">
+		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: '#birthday', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#createDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+		});
+	</script>
+	<script type="text/javascript">
+        var currentTime;
+        $(function () {
+            currentTime = new Date().getTime();
+            $("#currentTime").val(currentTime);
+			$(".file_input").hide();
+        })
+        function clickFileBtn() {
+            $("#fileUploadInput").click();
+        }
+        function insertTitle(tValue) {
+            var list = "${judgeAttachmentList}";
+            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 = "65";
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/judgeAttachment/"+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 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}/sys/judge/delFile',
+				data:{"id":id,"attaId":attaId,"attachmentUrl":attachmentUrl},
+				cache:false,
+                success: function() {
+				    //先修改序号,再删除
+                    $(tr).nextAll().each(function (i,n) {
+                        var num = $(n).find("td:first").text().trim();
+                        $(n).find("td:first").text(parseInt(num)-1);
+                    });
+                    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="judge" action="${ctx}/sys/judge/save"  method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<input type="hidden" id="currentTime" name="currentTime"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+			   <tr>
+				   <td class="width-15 active" rowspan="11"><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="name" htmlEscape="false"    class="form-control required"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>性别:</label></td>
+					<td class="width-30">
+						<form:select path="gender" class="form-control required">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getDictList('sex')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">编号:</label></td>
+					<td class="width-30">
+						<form:input path="number" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">出生年月:</label></td>
+					<td class="width-30">
+						<input id="birthday" name="birthday" type="text" maxlength="20" class="laydate-icondate form-control layer-date "
+							   value="<fmt:formatDate value="${judge.birthday}" pattern="yyyy-MM-dd"/>"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">联系电话:</label></td>
+					<td class="width-30">
+						<form:input path="mobile" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">qq:</label></td>
+					<td class="width-30">
+						<form:input path="qq" htmlEscape="false"    class="form-control  number"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">身份证号:</label></td>
+					<td class="width-30">
+						<form:input path="idcard" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">email:</label></td>
+					<td class="width-30">
+						<form:input path="email" htmlEscape="false"    class="form-control  email"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">家庭住址:</label></td>
+					<td class="width-30" colspan="3">
+						<form:input path="address" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">工作单位:</label></td>
+					<td class="width-30" colspan="3">
+						<form:input path="companyName" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">注册资格:</label></td>
+					<td class="width-30">
+						<form:input path="registrationQualification" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">职称:</label></td>
+					<td class="width-30">
+						<form:select path="titleLevel" class="form-control ">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getDictList('title_level')}" 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-30">
+						<form:select path="consultType" class="form-control required">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getDictList('consult_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</td>
+					<td class="width-15 active"><label class="pull-right">咨询专业:</label></td>
+					<td class="width-30">
+						<form:select path="consultProfession" class="form-control ">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getDictList('consult_profession')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">入库日期:</label></td>
+					<td class="width-30">
+						<c:if test="${empty judge.id}">
+							${fns:getDate("yyyy-MM-dd")}
+						</c:if>
+						<c:if test="${not empty judge}">
+							<fmt:formatDate value="${judge.createDate}" pattern="yyyy-MM-dd"/>
+						</c:if>
+					</td>
+					<td class="width-15 active"><label class="pull-right">是否退休:</label></td>
+					<td class="width-30">
+						<form:select path="isRetire" class="form-control ">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getDictList('is_retire')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">工作业绩:</label></td>
+					<td class="width-30" colspan="3">
+						<form:textarea path="performance" htmlEscape="false" rows="2"    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" colspan="3">
+
+						<form:checkboxes path="qualificationCredentials" items="${fns:getDictList('qualification_credentials')}" itemLabel="label" itemValue="value" htmlEscape="false" class="i-checks "/>
+						<script type="text/javascript">
+							$(function () {
+                                var qs = [${judge.qualificationCredentials}];
+                                $("input[name='qualificationCredentials']").each(function () {
+                                    var q = parseInt($(this).val());
+                                    if($.inArray(q,qs) != -1){
+                                        $(this).parent("div").addClass("checked");
+                                    }
+                                });
+                            })
+						</script>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">其他执业资格说明:</label></td>
+					<td class="width-30" colspan="3">
+						<form:textarea path="qualificationCredentialsMore" htmlEscape="false" rows="2"    class="form-control "/>
+					</td>
+				</tr>
+			   <tr>
+				   <td class="width-15 active" rowspan="2"><label class="pull-right">附件管理:</label></td>
+			   </tr>
+			   <tr>
+				   <td class="width-30" colspan="4">
+					   <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>
+						   </div>
+                           <input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+						   <a id="attachment_btn" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+						   <span id="attachment_title"></span>
+					   </div>
+					   <table  style="text-align: center;width: 100%;margin-top:10px;"  class="table table-striped table-bordered table-condensed" >
+					   <thead>
+					   	<%--<td>序号</td>--%><td>文件名</td><td>上传人</td><td>上传时间</td><td>操作</td>
+					   </thead>
+					   <tbody id="file_attachment" >
+					   <c:forEach items="${judgeAttachmentList}" var="attachment" varStatus="varStatus">
+						   <tr>
+							  <%-- <td>${varStatus.index + 1 }</td>--%>
+							   <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')}">
+										   <img src="${attachment.url}" onclick="openDialogView(' ','${ctx}/sys/picturepreview/picturePreview?url=${attachment.url}','860px','600px')" width="50" height="50" alt="${attachment.attachmentName}"/>
+									   </c:when>
+									   <c:otherwise>
+										   <c:choose>
+											   <c:when test="${fn:containsIgnoreCase(attachment.attachmentName,'pdf')}">
+												   <a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%','1')">
+													   <span title="${attachment.attachmentName}">${fns:abbr(attachment.attachmentName, 30)}</span></a>
+											   </c:when>
+											   <c:otherwise>
+												   <a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%')">
+													   <span title="${attachment.attachmentName}">${fns:abbr(attachment.attachmentName, 30)}</span>
+												   </a>
+											   </c:otherwise>
+										   </c:choose>
+									   </c:otherwise>
+								   </c:choose>
+							   </td>
+							   <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:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${attachment.url}');" class="btn btn-success btn-xs">下载</a>
+								   <a class="delFile btn btn-danger btn-xs" href="javascript:void(0)" onclick="delFile('${judge.id}','${attachment.id}','${attachment.url}',this)">删除</a>
+								   <%--href="${ctx}/sys/judge/delFile?id=${judge.id}&attId=${attachment.id}&attachmentUrl=${attachment.url}"--%>
+							   </td>
+						   </tr>
+					   </c:forEach>
+					   </tbody>
+				   </table>
+				   </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" colspan="3">
+						<form:textarea path="remarks" htmlEscape="false" rows="2"    class="form-control "/>
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 168 - 0
src/main/webapp/webpage/modules/sys/judgeList.jsp

@@ -0,0 +1,168 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>评委管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<%--<div class="ibox-title">
+		<h5>评委列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>--%>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="judge" action="${ctx}/sys/judge/" method="post" class="form-inline">
+		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+		<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+		<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+		<a href="#" id="moresee" class="fa fa-chevron-down" style="float: right;">更多</a>
+		<div class="form-group">
+			<span>姓名:</span>
+				<form:input path="name" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+			<span>联系电话:</span>
+				<form:input path="mobile" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<%--<c:if test="${addBtn !='addBtn'}">
+				<shiro:hasPermission name="sys:judge:add">--%>
+					<table:addRow url="${ctx}/sys/judge/form" title="评委"></table:addRow><!-- 增加按钮 -->
+			<%--	</shiro:hasPermission>
+			</c:if>--%>
+			<%--<shiro:hasPermission name="sys:judge:edit">--%>
+			    <%--<table:editRow url="${ctx}/sys/judge/form" title="评委" id="contentTable"></table:editRow><!-- 编辑按钮 -->--%>
+			<%--</shiro:hasPermission>--%>
+			<%--<shiro:hasPermission name="sys:judge:del">--%>
+				<%--<table:delRow url="${ctx}/sys/judge/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->--%>
+			<%--</shiro:hasPermission>--%>
+
+		<%--	<shiro:hasPermission name="sys:judge:import">--%>
+				<table:importExcel url="${ctx}/sys/judge/import"></table:importExcel><!-- 导入按钮 -->
+		<%--	</shiro:hasPermission>
+			<shiro:hasPermission name="sys:judge:export">--%>
+	       		<table:exportExcel url="${ctx}/sys/judge/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%" class=""> 序号</th>
+				<th style="text-align: center;width: 10%"  class="sort-column a.name">姓名</th>
+				<th style="text-align: center;width: 10%"  class="sort-column a.number">编号</th>
+				<th style="text-align: center;width: 5%"  class="sort-column a.gender">性别</th>
+				<th style="text-align: center;width: 10%"  class="sort-column a.birthday">出生年月</th>
+				<th style="text-align: center;width: 10%"  class="sort-column a.title_level">职称</th>
+				<th style="text-align: center;width: 10%"  class="sort-column a.mobile">联系电话</th>
+				<th style="text-align: center;width: 10%"  class="sort-column a.consult_type">咨询类型</th>
+				<th style="text-align: center;width: 10%"  class="sort-column a.consult_profession">咨询专业</th>
+				<th style="text-align: center;width: 20%">操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="judge" varStatus="varStatus">
+			<tr>
+				<td> ${varStatus.index+1}</td>
+				<td>
+					${judge.name}
+				</td>
+				<td>
+					${judge.number}
+				</td>
+				<td>
+					${fns:getDictLabel(judge.gender, 'sex', '')}
+				</td>
+				<td>
+					<fmt:formatDate value="${judge.birthday}" pattern="yyyy-MM-dd"/>
+				</td>
+				<td>
+					${fns:getDictLabel(judge.titleLevel, 'title_level', '')}
+				</td>
+				<td>
+					${judge.mobile}
+				</td>
+				<td>
+					${fns:getDictLabel(judge.consultType, 'consult_type', '')}
+				</td>
+				<td>
+					${fns:getDictLabel(judge.consultProfession, 'consult_profession', '')}
+				</td>
+				<td>
+					<div style="text-align: center">
+				<%--	<shiro:hasPermission name="sys:judge:view">--%>
+						<a href="javascript:void(0)" onclick="openDialogView('查看评委', '${ctx}/sys/judge/form?id=${judge.id}&view=view','900px', '600px')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+				<%--	</shiro:hasPermission>
+					<shiro:hasPermission name="sys:judge:edit">--%>
+    					<a href="javascript:void(0)" onclick="openDialog('修改评委', '${ctx}/sys/judge/form?id=${judge.id}&view=edit','900px', '600px')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				<%--</shiro:hasPermission>
+    				<shiro:hasPermission name="sys:judge:del">--%>
+						<c:choose>
+							<c:when test="${fn:containsIgnoreCase(peopleMaster, fns:getUser())}">
+								<a href="${ctx}/sys/judge/delete?id=${judge.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>
+					<%--</shiro:hasPermission>--%>
+					</div>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 231 - 0
src/main/webapp/webpage/modules/sys/judgeView.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">
+		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: '#birthday', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+            laydate.render({
+                elem: '#createDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+            });
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="judge"  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" rowspan="11"><label class="pull-right">评委信息:</label></td>
+			   </tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">姓名:</label></td>
+					<td class="width-30">
+						${judge.name}
+					</td>
+					<td class="width-15 active"><label class="pull-right">性别:</label></td>
+					<td class="width-30">
+						${fns:getDictLabel(judge.gender,'sex' ,'' )}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">编号:</label></td>
+					<td class="width-30">
+						${judge.number}
+					</td>
+					<td class="width-15 active"><label class="pull-right">出生年月:</label></td>
+					<td class="width-30">
+						<fmt:formatDate value="${judge.birthday}" pattern="yyyy-MM-dd"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">联系电话:</label></td>
+					<td class="width-30">
+						${judge.mobile}
+					</td>
+					<td class="width-15 active"><label class="pull-right">qq:</label></td>
+					<td class="width-30">
+						${judge.qq}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">身份证号:</label></td>
+					<td class="width-30">
+						${judge.idcard}
+					</td>
+					<td class="width-15 active"><label class="pull-right">email:</label></td>
+					<td class="width-30">
+						${judge.email}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">家庭住址:</label></td>
+					<td class="width-30" colspan="3">
+						${judge.address}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">工作单位:</label></td>
+					<td class="width-30" colspan="3">
+						${judge.companyName}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">注册资格:</label></td>
+					<td class="width-30">
+						${judge.registrationQualification}
+					</td>
+					<td class="width-15 active"><label class="pull-right">职称:</label></td>
+					<td class="width-30">
+						${fns:getDictLabel(judge.titleLevel, 'title_level','' )}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">咨询类型:</label></td>
+					<td class="width-30">
+						${fns:getDictLabel(judge.consultType,'consult_type' ,'' )}
+					</td>
+					<td class="width-15 active"><label class="pull-right">咨询专业:</label></td>
+					<td class="width-30">
+						${fns:getDictLabel(judge.consultProfession,'consult_profession' ,'' )}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">入库日期:</label></td>
+					<td class="width-30">
+						<fmt:formatDate value="${judge.createDate}" pattern="yyyy-MM-dd"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">是否退休:</label></td>
+					<td class="width-30">
+						${fns:getDictLabel(judge.isRetire,'is_retire' ,'' )}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">工作业绩:</label></td>
+					<td class="width-30" colspan="3">
+						${judge.performance}
+					</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" colspan="3">
+
+						<form:checkboxes path="qualificationCredentials" items="${fns:getDictList('qualification_credentials')}" itemLabel="label" itemValue="value" htmlEscape="false" class="i-checks "/>
+						<script type="text/javascript">
+							$(function () {
+                                var qs = [${judge.qualificationCredentials}];
+                                $("input[name='qualificationCredentials']").each(function () {
+                                    var q = parseInt($(this).val());
+                                    if($.inArray(q,qs) != -1){
+                                        $(this).parent("div").addClass("checked");
+                                    }
+                                    $(this).enable(false);
+                                });
+                            })
+						</script>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">其他执业资格说明:</label></td>
+					<td class="width-30" colspan="3">
+						${judge.qualificationCredentialsMore}
+					</td>
+				</tr>
+			   <tr>
+				   <td class="width-15 active" rowspan="2"><label class="pull-right">附件管理:</label></td>
+			   </tr>
+			   <tr>
+				   <td class="width-30" colspan="4">
+					   <table  style="text-align: center;width: 100%;margin-top:10px;"  class="table table-striped table-bordered table-condensed" >
+						   <thead>
+						   <tr><%--<td>序号</td>--%><td>附件名称</td><td>上传日期</td><td>操作</td></tr>
+						   </thead>
+						   <tbody id="listFile" >
+						   <c:forEach items="${judgeAttachmentList}" var="attachment" varStatus="varStatus">
+							   <tr><%--
+								   --%><td>${varStatus.index + 1 }</td>
+								   <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')}">
+											   <img src="${attachment.url}" onclick="openDialogView(' ','${ctx}/sys/picturepreview/picturePreview?url=${attachment.url}','860px','600px')" width="50" height="50" alt="${attachment.attachmentName}"/>
+										   </c:when>
+										   <c:otherwise>
+											   <c:choose>
+												   <c:when test="${fn:containsIgnoreCase(attachment.attachmentName,'pdf')}">
+													   <a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%','1')">
+														   <span title="${attachment.attachmentName}">${fns:abbr(attachment.attachmentName, 30)}</span></a>
+												   </c:when>
+												   <c:otherwise>
+													   <a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%')">
+														   <span title="${attachment.attachmentName}">${fns:abbr(attachment.attachmentName, 30)}</span>
+													   </a>
+												   </c:otherwise>
+											   </c:choose>
+										   </c:otherwise>
+									   </c:choose>
+								   </td>
+								   <td><fmt:formatDate value="${attachment.createDate}" pattern="yyyy-MM-dd"/> </td>
+								   <td>
+									   <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${attachment.url}');" class="btn btn-success btn-xs">下载</a>
+
+									   <%--<a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>--%>
+								   </td>
+							   </tr>
+						   </c:forEach>
+						   </tbody>
+					   </table>
+				   </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" colspan="3">
+						${judge.remarks}
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 151 - 0
src/main/webapp/webpage/modules/sys/logList.jsp

@@ -0,0 +1,151 @@
+<%@ 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 page(n,s){
+			$("#pageNo").val(n);
+			$("#pageSize").val(s);
+			$("#searchForm").submit();
+	    	return false;
+	    }
+		$(document).ready(function() {
+	        //外部js调用
+	        laydate.render({
+	            elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+	            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+	        });
+	        laydate.render({
+	            elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+	            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+	        });
+
+            //搜索框收放
+            $('#moresee').click(function(){
+                if($('#moresees').is(':visible'))
+                {
+                    $('#moresees').slideUp('slow');
+                    $(this).text("更多").removeClass("fa fa-chevron-up").addClass("fa fa-chevron-down");
+                    //document.getElementById("moresees").style.visibility = "hidden";
+                }else{
+                    $('#moresees').slideDown('slow');
+                    $(this).text("收起").removeClass("fa fa-chevron-down").addClass("fa fa-chevron-up");
+                    //document.getElementById("moresees").style.visibility = "visible";
+                }
+            });
+	    })
+	</script>
+</head>
+<body class="gray-bg">
+<div class="wrapper wrapper-content">
+<div class="ibox">
+<%--<div class="ibox-title">
+		<h5>日志列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="form_basic.html#">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>--%>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!-- 查询条件 -->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" action="${ctx}/sys/log/" 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>
+				<input id="title" name="title" type="text" maxlength="50" class="form-control input-sm" value="${log.title}"/>
+			<span>用户ID:</span>
+				<input id="createBy.id" name="createBy.id" type="text" maxlength="50" class="form-control input-sm" value="${log.createBy.id}"/>
+			<span>URI:</span>
+				<input id="requestUri" name="requestUri" type="text" maxlength="50"  class="form-control input-sm" value="${log.requestUri}"/>
+
+		 </div>
+		<div style="display:none;margin-top: 15px" id="moresees">
+			<span>日期范围:&nbsp;</span>
+			<input id="beginDate" name="beginDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date input-sm"
+				   value="<fmt:formatDate value="${log.beginDate}" pattern="yyyy-MM-dd"/>"/>
+			<label>&nbsp;--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label><input id="endDate" name="endDate" type="text" maxlength="20" class=" laydate-icondate form-control layer-date input-sm"
+																		value="<fmt:formatDate value="${log.endDate}" pattern="yyyy-MM-dd"/>" />&nbsp;&nbsp;
+			&nbsp;<label for="exception"><input id="exception" name="exception" class="i-checks" type="checkbox"${log.exception eq '1'?' checked':''} value="1"/>只查询异常信息</label>
+		</div>
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	
+		<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="sys:log:del">
+				<table:delRow url="${ctx}/sys/log/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+				<button class="btn btn-white btn-sm "  onclick="confirmx('确认要清空日志吗?','${ctx}/sys/log/empty')"  title="清空"><i class="fa fa-trash"></i> 清空</button>
+			</shiro:hasPermission>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead><tr>	<th> <input type="checkbox" class="i-checks"></th><th>操作菜单</th><th>操作用户</th><th>所在公司</th><th>所在部门</th><th>URI</th><th>提交方式</th><th>操作者IP</th><th>操作时间</th></thead>
+		<tbody><%request.setAttribute("strEnter", "\n");request.setAttribute("strTab", "\t");%>
+		<c:forEach items="${page.list}" var="log">
+			<tr>
+				<td> <input type="checkbox" id="${log.id}" class="i-checks"></td>
+				<td>${log.title}</td>
+				<td>${log.createBy.name}</td>
+				<td>${log.createBy.company.name}</td>
+				<td>${log.createBy.office.name}</td>
+				<td><strong>${log.requestUri}</strong></td>
+				<td>${log.method}</td>
+				<td>${log.remoteAddr}</td>
+				<td><fmt:formatDate value="${log.createDate}" type="both"/></td>
+			</tr>
+			<c:if test="${not empty log.exception}"><tr>
+				<td colspan="8" style="word-wrap:break-word;word-break:break-all;">
+<%-- 					用户代理: ${log.userAgent}<br/> --%>
+<%-- 					提交参数: ${fns:escapeHtml(log.params)} <br/> --%>
+					异常信息: <br/>
+					${fn:replace(fn:replace(fns:escapeHtml(log.exception), strEnter, '<br/>'), strTab, '&nbsp; &nbsp; ')}</td>
+			</tr></c:if>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+	<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 171 - 0
src/main/webapp/webpage/modules/sys/mainDictDetailForm.jsp

@@ -0,0 +1,171 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>字典明细管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		   var detailName=$("#detailName").val();
+		   if(detailName==null||detailName==""){
+               top.layer.msg('名称不能为空!', {icon: 0});
+               return false;
+		   }
+            var detailKey=$("#detailKey").val();
+            if(detailKey==null||detailKey==""){
+                top.layer.msg('键值不能为空!', {icon: 0});
+                return false;
+            }
+            var state=false;
+            var branchOffice=$("#branchOffice").val();
+            $.ajax({
+                url:"${ctx}/sys/mainDictDetail/detailKey",
+                data:{
+                    "detailKey":detailKey,
+                    "typeId":'${mainDict.id}',
+                    "id":"${mainDictDetail.id}",
+					"branchOffice":branchOffice
+                },
+                async:false,
+                type:"post",
+                success:function (result) {
+                    if(result.success && !result.body.isUsed){
+                        state=true;
+                    }else {
+                        state=false;
+
+                    }
+                }
+            });
+            if(state){
+
+			}else{
+                top.layer.msg('该键值已存在,键值不能重复!', {icon: 0});
+                return false;
+			}
+            var sort=$("#sort").val();
+            if(sort==null||sort==""){
+                top.layer.msg('排序不能为空!', {icon: 0});
+                return false;
+            }
+            if(isNaN(sort)){
+                top.layer.msg('请输入有效数字!', {icon: 0});
+                return false;
+			}
+		  return true;
+		}
+        var validateForm;
+		$(document).ready(function() {
+		    if( $("#id").val()!=null&& $("#id").val()!=''){
+                $("#detailKey").attr("readonly",true);
+			}
+			validateForm = $("#inputFormAdd").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);
+					}
+				}
+			});
+            /*jQuery.validator.addMethod("detailKey", function(value, element) {
+                var flag = true;
+                $.ajax({
+                    url:"${ctx}/sys/mainDictDetail/detailKey",
+                    data:{
+                        "detailKey":value,
+                        "typeId":'${mainDict.id}',
+						"id":"${mainDictDetail.id}"
+                    },
+                    async:false,
+                    type:"post",
+                    success:function (result) {
+                        if(result.success && !result.body.isUsed){
+                            flag=true;
+                        }else {
+                            flag=false;
+                        }
+                    },
+                    error:function (result) {
+                        top.layer.msg('异步键值异常!请稍后重试', {icon: 0});
+                        flag=false;
+                    }
+                })
+                return flag;
+            }, "该键值已存在,键值不能重复!");*/
+		});
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container view-form">
+		<form:form id="inputFormAdd" modelAttribute="mainDictDetail" action="${ctx}/sys/mainDictDetail/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<form:hidden path="branchOffice"/>
+		<sys:message content="${message}"/>
+
+			<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="detailName" htmlEscape="false" id="detailName"   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="detailKey" htmlEscape="false" id="detailKey"   class="form-control detailKey layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">父节点:</label>
+					<div class="layui-input-block with-icon">
+						<sys:treeselecdict id="parentId" name="parentId" value="${mainDictDetail.parentId}" labelName="parentName" labelValue="${mainDictDetail.parentName}"
+										   title="字典明细" url="/sys/mainDictDetail/treeData?typeId=1&company=${mainDictDetail.branchOffice}" isAll="true" typeName="${mainDict.typeName}" cssClass="form-control layui-input" notAllowSelectParent="false"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">类型名称:</label>
+					<div class="layui-input-block">
+						<input type="hidden" name="typeId" value="${mainDict.id}">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input required" value="${mainDict.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">所属类型:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input required" value="${mainDict.typeName}"/>
+					</div>
+				</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="sort" htmlEscape="false"  id="sort"  class="form-control number layui-input required"/>
+					</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 required" value="<c:choose><c:when test="${mainDictDetail.endFlag == '0'}">否</c:when><c:otherwise>是</c:otherwise></c:choose>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label">描述:</label>
+					<div class="layui-input-block">
+						<form:textarea path="remarks" htmlEscape="false" rows="4" class="form-control "/>
+					</div>
+				</div>
+			</div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 44 - 0
src/main/webapp/webpage/modules/sys/mainDictDetailFormView.jsp

@@ -0,0 +1,44 @@
+<%@ 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="mainDictDetail" action="${ctx}/sys/mainDictDetail/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">
+						${mainDictDetail.detailName}
+					</td>
+					<td class="width-15 active"><label class="pull-right">键值:</label></td>
+					<td class="width-35">
+						${mainDictDetail.mainDict.typeName}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">父节点:</label></td>
+					<td class="width-35">
+						${mainDictDetail.parentName}
+					</td>
+					<td class="width-15 active"><label class="pull-right">末级标记:</label></td>
+					<td class="width-35">
+						${mainDictDetail.endFlag}
+					</td>
+				</tr>
+			    <tr>
+				    <td class="width-15 active"><label class="pull-right">描述:</label></td>
+				    <td class="width-35" colspan="3">
+						${mainDictDetail.remarks}
+				    </td>
+			    </tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 129 - 0
src/main/webapp/webpage/modules/sys/mainDictDetailList.jsp

@@ -0,0 +1,129 @@
+<%@ 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="mainDictDetail" action="${ctx}/sys/mainDictDetail/" 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="sys:mainDictDetail:add">
+				<table:addRow url="${ctx}/sys/mainDictDetail/form" title="字典明细"></table:addRow><!-- 增加按钮 -->
+			</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 mainDict.typeName">字典类型</th>
+				<th  class="sort-column detailName">名称</th>
+				<th  class="sort-column detailAllName">全称</th>
+				<th  class="sort-column parentId">父节点</th>
+				<th  class="sort-column endFlag">末级标记</th>
+				<th  class="sort-column remarks">描述</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="mainDictDetail">
+			<tr>
+				<td> <input type="checkbox" id="${mainDictDetail.id}" class="i-checks"></td>
+				<td>
+					${mainDictDetail.mainDict.typeName}
+				</td>
+				<td>
+					<a  href="#" onclick="openDialogView('查看字典明细', '${ctx}/sys/mainDictDetail/form?id=${mainDictDetail.id}&view=','800px', '500px')">
+					${mainDictDetail.detailName}
+					</a>
+				</td>
+				<td>
+					${mainDictDetail.parentNames}
+				</td>
+				<td>
+					${mainDictDetail.parentName}
+				</td>
+				<td>
+					${mainDictDetail.endFlag}
+				</td>
+				<td>
+					${mainDictDetail.remarks}
+				</td>
+				<td>
+					<shiro:hasPermission name="sys:mainDictDetail:edit">
+    					<a href="#" onclick="openDialog('修改字典明细', '${ctx}/sys/mainDictDetail/form?id=${mainDictDetail.id}','800px', '500px')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="sys:mainDictDetail:del">
+						<a href="${ctx}/sys/mainDictDetail/delete?id=${mainDictDetail.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>

+ 114 - 0
src/main/webapp/webpage/modules/sys/mainDictForm.jsp

@@ -0,0 +1,114 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>字典管理</title>
+	<meta name="decorator" content="default"/>
+	<style>
+		#remarks-error{
+			left:0;
+			top:80px;
+		}
+	</style>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+            jQuery.validator.addMethod("typeName", function(value, element) {
+                var flag = true;
+                $.ajax({
+                    url:"${ctx}/sys/mainDict/typeName",
+                    data:{
+                        "typeName":value,
+                        "id":'${mainDict.id}'
+                    },
+                    async:false,
+                    type:"post",
+                    success:function (result) {
+                        console.info(result);
+                        if(result.success && !result.body.isUsed){
+                            flag=true;
+                        }else {
+                            flag=false;
+                        }
+                    },
+                    error:function (result) {
+                        top.layer.msg('异步类型异常!请稍后重试', {icon: 0});
+                        flag=false;
+                    }
+                })
+                return flag;
+            }, "类型已存在");
+		});
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="mainDict" action="${ctx}/sys/mainDict/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+			<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"><span class="require-item">*</span>类型:</label>
+					<div class="layui-input-block">
+						<input id="oldTypeName" name="oldTypeName" type="hidden" value="${mainDict.typeName}"/>
+						<form:input path="typeName" htmlEscape="false"    class="form-control typeName layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label"><span class="require-item">*</span>类型名称:</label>
+					<div class="layui-input-block">
+						<form:input path="name" htmlEscape="false"    class="form-control 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="typeSort" htmlEscape="false"    class="form-control number layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>定义方式:</label>
+					<div class="layui-input-block">
+						<form:select path="dictType"  class="form-control required simple-select">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getDictList('main_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label"><span class="require-item">*</span>类型描述:</label>
+					<div class="layui-input-block">
+						<form:textarea path="remarks" htmlEscape="false" rows="4" class="form-control required"/>
+					</div>
+				</div>
+			</div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 264 - 0
src/main/webapp/webpage/modules/sys/mainDictFormDetail.jsp

@@ -0,0 +1,264 @@
+<%@ page import="com.jeeplus.modules.sys.utils.UserUtils" %>
+<%@ page import="com.jeeplus.modules.sys.entity.Role" %>
+<%@ page import="java.util.List" %>
+<%@ page import="com.jeeplus.modules.sys.entity.User" %>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<%
+	boolean admin = UserUtils.getUser().isAdmin();
+%>
+<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>
+	<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);
+					}
+				}
+			});
+            getDictDetail()
+		});
+
+        function openDialogDict(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 $document = iframeWin.contentWindow.document;
+                    var index1 = parent.layer.load(0, {shade: [0.1, 'tranparent']});
+					formSubmit($document,"inputForm",index,index1);
+                },
+                cancel: function(index){
+                }
+            });
+
+        }
+        function formSubmit($document,inputForm,index,index1){
+            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()){
+                $($document.getElementById(inputForm)).ajaxSubmit({
+                    success:function(data) {
+                        getDictDetail()
+                        top.layer.close(index);
+                        parent.layer.msg("操作成功",{icon:1})
+						parent.layer.close(index1)
+                    },error:function(){
+                        parent.layer.msg("操作失败",{icon:2})
+                        parent.layer.close(index1)
+					}
+                });
+            }else {
+                parent.layer.msg("信息未填写完整!", {icon: 5});
+            }
+        }
+        /**
+		 * 获取明细数据
+         */
+		function getDictDetail(){
+            var company=$("#company").val();
+            var index = parent.layer.load(0, {shade: [0.1, 'tranparent']});
+		    $.ajax({
+				type:'post',
+				url:'${ctx}/sys/mainDictDetail/getDictDetailDefalt',
+				data:{
+					"dictId":"${mainDict.id}",
+					"company":company
+				},
+				success:function(data){
+
+                    $("#treeTable tbody").empty();
+                    var list=data.list;
+                    console.info(list);
+                    var rows="";
+                    for(var i=0;i<list.length;i++){
+                        rows+="<tr id="+list[i].id+" pid="+list[i].parentId +">"
+                        rows+="<td>"+list[i].detailName +"</td>"
+                        rows+="<td style=\"text-align: center\">"+list[i].detailKey +"</td>"
+                        rows+="<td style=\"text-align: center\">"+list[i].remarks +"</td>"
+                        rows+= "<td style=\"text-align: center\">"+list[i].sort +"</td>"
+                        rows+= "<td style=\"text-align: center\">"
+                        if(list[i].delFlags==0){
+                            rows+="正常";
+                        }else{
+                            rows+="已移除";
+                        }
+                        rows+=	"</td>"
+                    }
+                    $("#treeTable").append(rows);
+                    $('#treeTable').treeTable({expandLevel : 2},{ expandable: true });
+                    parent.layer.close(index);
+				},
+                error:function(){
+                    parent.layer.close(index)
+                }
+			})
+		}
+        /**
+         * 删除数据
+         */
+        function updateDelFlag(id,delflag,endFlag){
+			if(endFlag == 0){
+			    parent.layer.msg("该节点有子节点,不能移除",{icon:2});
+			    return;
+			}
+            var index = parent.layer.load(0, {shade: [0.1, 'tranparent']});
+            $.ajax({
+                type:'post',
+                url:'${ctx}/sys/mainDictDetail/updateDelFlag',
+                data:{
+                    "dictDetailId":id,
+					"delflag":delflag
+                },
+                success:function(data){
+					if(data.flag){
+                        getDictDetail();
+                        parent.layer.msg("操作成功",{icon:1});
+					}else{
+                        parent.layer.msg("操作失败",{icon:2});
+					}
+					parent.layer.close(index)
+                },
+				error:function(){
+                    parent.layer.close(index)
+				}
+            })
+        }
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container view-form">
+		<form:form id="inputForm" modelAttribute="mainDict" action="${ctx}/sys/mainDict/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+			<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">类型名称:</label>
+					<div class="layui-input-block">
+						<input readonly="true" htmlEscape="false" class="form-control layui-input" value="${mainDict.typeName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">类型:</label>
+					<div class="layui-input-block">
+						<input readonly="true" htmlEscape="false" class="form-control layui-input" value="${mainDict.typeName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">类型排序:</label>
+					<div class="layui-input-block">
+						<input readonly="true" htmlEscape="false" class="form-control layui-input" value="${mainDict.typeSort}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">定义方式:</label>
+					<div class="layui-input-block">
+						<input readonly="true" htmlEscape="false" class="form-control layui-input" value="${fns:getDictLabel(mainDict.dictType, 'main_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">所属公司:</label>
+					<div class="layui-input-block">
+						<input readonly="true" id="company" htmlEscape="false" class="hidden layui-input" value="${mainDict.office.id}"/>
+						<input readonly="true" htmlEscape="false" class="form-control layui-input" value="${mainDict.office.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label">类型描述:</label>
+					<div class="layui-input-block">
+						<textarea readonly="true" htmlEscape="false" rows="4" class="form-control ">${mainDict.remarks}</textarea>
+					</div>
+				</div>
+			</div>
+		</form:form>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>详细信息</h2></div>
+				<c:if test="'<%=admin%>' == 'true'">
+					<div class="layui-item nav-btns">
+						<button class="nav-btn nav-btn-add"  onclick="openDialogDict('字典明细新增','${ctx}/sys/mainDictDetail/form?dictId=${mainDict.id}','90%', '90%');" title="添加"><i class="fa fa-plus"></i> 添加</button>
+					</div>
+				</c:if>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="treeTable" class="table table-bordered table-hover list-table">
+						<thead>
+						<tr>
+							<th  width="40%">名称</th>
+							<th  >键值</th>
+							<th >描述</th>
+							<th >排序</th>
+							<th width="10%">删除标记</th>
+						</tr>
+						</thead>
+
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+	</div>
+</div>
+</body>
+</html>

+ 348 - 0
src/main/webapp/webpage/modules/sys/mainDictFormDetailZdy.jsp

@@ -0,0 +1,348 @@
+<%@ page import="com.jeeplus.modules.sys.utils.UserUtils" %>
+<%@ page import="com.jeeplus.modules.sys.entity.Role" %>
+<%@ page import="java.util.List" %>
+<%@ page import="com.jeeplus.modules.sys.entity.User" %>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<%
+	boolean admin = UserUtils.getUser().isAdmin();
+%>
+<html>
+<head>
+	<title>字典管理</title>
+	<meta name="decorator" content="default"/>
+	<%@include file="/webpage/include/treetable.jsp" %>
+	<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);
+					}
+				}
+			});
+            getDictDetail()
+
+		});
+
+        function openDialogDict(title,url,width,height,target){
+            var company=$("#company").val();
+            url=url+"&company="+company;
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                skin:"two-btns",
+                btn: ['提交', '关闭'],
+                yes: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputFormAdd');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					var $document = iframeWin.contentWindow.document;
+                    if(iframeWin.contentWindow.doSubmit() ){
+
+                    }else{
+                        return false;
+                    }
+                    var index1 = parent.layer.load(0, {shade: [0.1, 'tranparent']});
+					formSubmit($document,"inputFormAdd",index,index1);
+                },
+                cancel: function(index){
+                }
+            });
+
+        }
+
+        function openDialogDictAdd(title,url,width,height,target){
+            var company=$("#company").val();
+            url=url+"&company="+company;
+            /*$.ajax({
+                type:'post',
+                url:'${ctx}/sys/mainDictDetail/selectFlag',
+                data:{
+                    "dictId":"${mainDict.id}"
+                },
+                success:function(data){
+                    if(data){
+                    }else{
+                        top.layer.alert("该字典是否在业务中已用到?如果已启用请先同步默认字典,不然会造成数据混乱!",{icon:0,title:'系统提示'});
+                    }
+                },
+                error:function(){
+                    parent.layer.close(index)
+                }
+            })*/
+
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                skin:"two-btns",
+                btn: ['提交', '关闭'],
+                yes: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputFormAdd');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    var $document = iframeWin.contentWindow.document;
+                    if(iframeWin.contentWindow.doSubmit() ){
+
+                    }else{
+                        return false;
+					}
+                    var index1 = parent.layer.load(0, {shade: [0.1, 'tranparent']});
+                    formSubmit($document,"inputFormAdd",index,index1);
+                },
+                cancel: function(index){
+                }
+            });
+
+        }
+        function formSubmit($document,inputForm,index,index1){
+            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()){
+                $($document.getElementById(inputForm)).ajaxSubmit({
+                    success:function(data) {
+                        getDictDetail()
+                        top.layer.close(index);
+                        parent.layer.msg("操作成功",{icon:1})
+						parent.layer.close(index1)
+                    },error:function(){
+                        parent.layer.msg("操作失败",{icon:2})
+                        parent.layer.close(index1)
+					}
+                });
+            }else {
+                parent.layer.msg("信息未填写完整!", {icon: 5});
+            }
+        }
+        /**
+		 * 获取明细数据
+         */
+		function getDictDetail(){
+            var company=$("#company").val();
+           var index = parent.layer.load(0, {shade: [0.1, 'tranparent']});
+		    $.ajax({
+				type:'post',
+				url:'${ctx}/sys/mainDictDetail/getDictDetail',
+				data:{
+					"dictId":"${mainDict.id}",
+					"company":company
+				},
+				success:function(data){
+                    $("#treeTable tbody").empty();
+				    var list=data.list;
+                    var rows="";
+                    for(var i=0;i<list.length;i++){
+                        rows+="<tr id="+list[i].id+" pid="+list[i].parentId +">"
+                        rows+="<td>"+list[i].detailName +"</td>"
+                        rows+="<td style=\"text-align: center\">"+list[i].detailKey +"</td>"
+                        rows+="<td style=\"text-align: center\">"+list[i].remarks +"</td>"
+                        rows+= "<td style=\"text-align: center\">"+list[i].sort +"</td>"
+                        rows+= "<td style=\"text-align: center\">"
+						if(list[i].delFlags==0){
+                            rows+='<a href="javascript:void(0);" onclick="openDialogDict(\'修改字典明细\', \'${ctx}/sys/mainDictDetail/form?dictId=${mainDict.id}&id='+list[i].id+'\',\'90%\', \'90%\')"  style="color: #ffffff" class="op-btn op-btn-edit"><i class="fa fa-edit"></i>修改</a>'
+                            rows+=  '<a href="javascript:updateDelFlag(\''+list[i].id+'\',\'1\',\''+list[i].endFlag+'\')" onclick="return confirmx(\'确认要移除该字典明细吗?\', this.href)"  style="color: #ffffff"  class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 移除</a>'
+						}else{
+                            rows+='<a href="javascript:void(0);" onclick="openDialogDict(\'修改字典明细\', \'${ctx}/sys/mainDictDetail/form?dictId=${mainDict.id}&id='+list[i].id+'\',\'90%\', \'90%\')" style="color: #ffffff" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>'
+                            rows+='<a href="javascript:updateDelFlag(\''+list[i].id+'\',\'0\',\''+list[i].endFlag+'\')" onclick="return confirmx(\'确认要恢复该字典明细吗?\', this.href)"  style="color: #ffffff" class="op-btn op-btn-revert"><i class="fa fa-reply"></i> 恢复</a>'
+						}
+                        rows+=	"</td>"
+					}
+                    $("#treeTable").append(rows);
+                    //以下为初始化表格样式
+                    $('#treeTable').treeTable({expandLevel : 2},{ expandable: true });
+                  parent.layer.close(index);
+				},
+                error:function(){
+                    parent.layer.close(index)
+                }
+			})
+		}
+        /**
+         * 删除数据
+         */
+        function updateDelFlag(id,delflag,endFlag){
+			if(endFlag == 0){
+			    parent.layer.msg("该节点有子节点,不能移除",{icon:2});
+			    return;
+			}
+            var index = parent.layer.load(0, {shade: [0.1, 'tranparent']});
+            $.ajax({
+                type:'post',
+                url:'${ctx}/sys/mainDictDetail/updateDelFlag',
+                data:{
+                    "dictDetailId":id,
+					"delflag":delflag
+                },
+                success:function(data){
+					if(data.flag){
+                        getDictDetail();
+                        parent.layer.msg("操作成功",{icon:1});
+					}else{
+                        parent.layer.msg("操作失败",{icon:2});
+					}
+					parent.layer.close(index)
+                },
+				error:function(){
+                    parent.layer.close(index)
+				}
+            })
+
+        }
+        function syncDict(){
+            var company=$("#company").val();
+            $.ajax({
+				type:'post',
+				url:'${ctx}/sys/mainDictDetail/syncDict',
+				data:{
+                    "dictId":"${mainDict.id}",
+                    "company":company
+				},
+				success:function(data){
+				    if(data.flag){
+                        getDictDetail();
+				        parent.layer.msg("同步成功",{icon:1});
+					}else{
+						parent.layer.msg("同步失败或者已经同步",{icon:1});
+					}
+                }
+			})
+		}
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container view-form">
+		<form:form id="inputForm" modelAttribute="mainDict" action="${ctx}/sys/mainDict/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+
+			<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">类型名称:</label>
+					<div class="layui-input-block">
+						<input readonly="true" htmlEscape="false" class="form-control layui-input" value="${mainDict.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">类型:</label>
+					<div class="layui-input-block">
+						<input readonly="true" htmlEscape="false" class="form-control layui-input" value="${mainDict.typeName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">类型排序:</label>
+					<div class="layui-input-block">
+						<input readonly="true" htmlEscape="false" class="form-control layui-input" value="${mainDict.typeSort}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">定义方式:</label>
+					<div class="layui-input-block">
+						<input readonly="true" htmlEscape="false" class="form-control layui-input" value="${fns:getDictLabel(mainDict.dictType, 'main_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">所属公司:</label>
+					<div class="layui-input-block">
+						<input readonly="true" id="company" htmlEscape="false" class="hidden layui-input" value="${mainDict.office.id}"/>
+						<input readonly="true" htmlEscape="false" class="form-control layui-input" value="${mainDict.office.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label">类型描述:</label>
+					<div class="layui-input-block">
+						<textarea readonly="true" htmlEscape="false" rows="4" class="form-control ">${mainDict.remarks}</textarea>
+					</div>
+				</div>
+			</div>
+	    </form:form>
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>详细信息</h2></div>
+                <div class="layui-item nav-btns">
+                    <button class="nav-btn nav-btn-add"  onclick="openDialogDictAdd('字典明细新增','${ctx}/sys/mainDictDetail/form?dictId=${mainDict.id}','90%', '90%');" title="添加"><i class="fa fa-plus"></i> 添加</button>
+                    <a class="nav-btn nav-btn-export"  onclick="syncDict()" title="同步默认字典"><i class="fa fa-share"></i> 同步默认字典</a>
+                </div>
+                <div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="treeTable" class="table table-bordered table-hover list-table">
+						<thead>
+						<tr>
+							<th  width="40%">名称</th>
+							<th  >键值</th>
+							<th >描述</th>
+							<th >排序</th>
+							<th width="20%">操作</th>
+						</tr>
+						</thead>
+
+					</table>
+	            </div>
+            </div>
+    </div>
+</div>
+</body>
+</html>

+ 51 - 0
src/main/webapp/webpage/modules/sys/mainDictFormView.jsp

@@ -0,0 +1,51 @@
+<%@ 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="mainDict" action="${ctx}/sys/mainDict/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+			<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"><span class="require-item">*</span>类型:</label>
+					<div class="layui-input-block">
+						<form:input path="typeName" htmlEscape="false" readonly="true"  value="${mainDict.typeName}"  class="form-control layui-input "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label">类型名称:</label>
+					<div class="layui-input-block">
+						<input readonly="true" htmlEscape="false" class="form-control layui-input" value="${mainDict.typeName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">类型排序:</label>
+					<div class="layui-input-block">
+						<input readonly="true" htmlEscape="false" class="form-control layui-input" value="${mainDict.typeSort}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">定义方式:</label>
+					<div class="layui-input-block">
+						<input readonly="true" htmlEscape="false" class="form-control layui-input" value="${fns:getDictLabel(mainDict.dictType, 'main_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label">类型描述:</label>
+					<div class="layui-input-block">
+						<textarea readonly="true" htmlEscape="false" rows="4" class="form-control ">${mainDict.remarks}</textarea>
+					</div>
+				</div>
+			</div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 215 - 0
src/main/webapp/webpage/modules/sys/mainDictList.jsp

@@ -0,0 +1,215 @@
+<%@ page import="com.jeeplus.modules.sys.utils.UserUtils" %>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<%
+	boolean admin = UserUtils.getUser().isAdmin();
+%>
+<html>
+<head>
+	<title>字典管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		    var company="${mainDict.company}";
+		    if(company!=null&&''!=company){
+                $("#company").val(company);
+			}
+            //搜索框收放
+            $('#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 openDialogView(title,url,width,height){
+            var company=$("#company").val();
+            if(company==null||''==company){
+                top.layer.msg("非管理员用户不能自定义!", {icon: 5});
+                return false;
+			}
+            url=url+"&company="+company;
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            top.layer.open({
+                type: 2,
+                skin: 'one-btn',
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                btn: ['关闭'],
+                cancel: function(index){
+                }
+            });
+
+        }
+        function getChange(value){
+            window.location="${ctx}/sys/mainDict/list?company="+value;
+
+        }
+	</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="mainDict" action="${ctx}/sys/mainDict/" 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">
+							<select id="company" name="company" onchange="getChange(this.value)" class=" form-control  simple-select">
+							<c:if test="${ not empty list}">
+								<c:forEach items="${list}" var="role" varStatus="index">
+									<option value="${role.office.id}"/>${role.office.name}</option>
+								</c:forEach>
+							</c:if>
+							</select>
+						</div>
+					</div>
+				<%--	<div class="layui-item query athird ">
+						<label class="layui-form-label">定义方式:</label>
+						<div class="layui-input-block">
+							<form:select path="dictType" class=" form-control  simple-select">
+								<form:option value="" label=""/>
+								<form:options items="${fns:getDictList('main_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+							</form:select>
+						</div>
+					</div>--%>
+					<div class="layui-item query athird">
+						<label class="layui-form-label">类型名称:</label>
+						<div class="layui-input-block">
+							<form:input path="name" htmlEscape="false"    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">
+							<form:input path="typeName" htmlEscape="false"    class="form-control layui-input"/>
+						</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">
+					<c:if test="<%=admin%>">
+							<table:addRow url="${ctx}/sys/mainDict/form" title="字典类型"></table:addRow><!-- 增加按钮 -->
+					</c:if>
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+					<div style="clear: both;"></div>
+				</div>
+				<!-- 表格 -->
+				<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+					<thead>
+						<tr>
+							<th width="40"> <input type="checkbox" class="i-checks"></th>
+							<th  class="sort-column typeName">类型</th>
+							<th  class="sort-column name">类型名称</th>
+							<th  class=" mainType">定义方式</th>
+							<th  class="sort-column typeSort">类型排序</th>
+							<th  class="sort-column remarks">类型描述</th>
+							<th width="270">操作</th>
+						</tr>
+					</thead>
+					<tbody>
+					<c:forEach items="${page.list}" var="mainDict">
+						<tr>
+							<td> <input type="checkbox" id="${mainDict.id}" class="i-checks"></td>
+
+							<td>
+								<a class="attention-info" href="#" onclick="openDialogView('查看字典', '${ctx}/sys/mainDict/form?id=${mainDict.id}&view=view','95%', '95%')">
+								${mainDict.typeName}
+							</td>
+							<td>
+
+								${mainDict.name}
+								</a>
+							</td>
+							<td>
+								${fns:getDictLabel(mainDict.dictType, 'main_type', '')}
+							</td>
+							<td>
+								${mainDict.typeSort}
+							</td>
+							<td>
+								${mainDict.remarks}
+							</td>
+							<td class="op-td text-center">
+								<div class="op-btn-box">
+								<a href="#" onclick="openDialogView('字典明细', '${ctx}/sys/mainDict/form?id=${mainDict.id}&view=2','95%', '95%')"   class="op-btn op-btn-submit"><i class="fa fa-edit"></i> 自定义</a>
+									<c:if test="<%=admin%>">
+										<shiro:hasPermission name="sys:mainDict:edit">
+											<a href="#" onclick="openDialog('修改字典', '${ctx}/sys/mainDict/form?id=${mainDict.id}','95%', '95%')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>
+										</shiro:hasPermission>
+										<shiro:hasPermission name="sys:mainDict:del">
+											<a href="${ctx}/sys/mainDict/delete?id=${mainDict.id}" onclick="return confirmx('确认要删除该字典吗?', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
+										</shiro:hasPermission>
+									</c:if>
+								<shiro:hasPermission name="sys:mainDict:view">
+									<a href="#" onclick="openDialogView('默认字典', '${ctx}/sys/mainDict/form?id=${mainDict.id}&view=1','95%', '95%')" class="op-btn op-btn-revert" ><i class="fa fa-search-plus"></i> 默认字典</a>
+								</shiro:hasPermission>
+								</div>
+							</td>
+						</tr>
+					</c:forEach>
+					</tbody>
+				</table>
+
+					<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+</div>
+<script>
+    $("a").on("click",addLinkVisied);
+
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 84 - 0
src/main/webapp/webpage/modules/sys/menuForm.jsp

@@ -0,0 +1,84 @@
+<%@ 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() {
+			$("#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="hideScroll">
+	<form:form id="inputForm" modelAttribute="menu" action="${ctx}/sys/menu/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" ><sys:treeselect id="menu" name="parent.id" value="${menu.parent.id}" labelName="parent.name" labelValue="${menu.parent.name}"
+					title="菜单" url="/sys/menu/treeData" extId="${menu.id}" cssClass="form-control required"/></td>
+		         <td  class="width-15 active"><label class="pull-right"><font color="red">*</font> 名称:</label></td>
+		         <td  class="width-35" ><form:input path="name" htmlEscape="false" maxlength="50" class="required form-control "/></td>
+		      </tr>
+		      <tr>
+		         <td  class="width-15 active"><label class="pull-right">链接:</label></td>
+		         <td class="width-35" ><form:input path="href" htmlEscape="false" maxlength="2000" class="form-control "/>
+					<span class="help-inline">点击菜单跳转的页面</span></td>
+		         <td  class="width-15 active"><label class="pull-right">目标:</label></td>
+		         <td  class="width-35" ><form:input path="target" htmlEscape="false" maxlength="10" class="form-control "/>
+					<span class="help-inline">链接打开的目标窗口,默认:mainFrame</span></td>
+		      </tr>
+		      <tr>
+		         <td  class="width-15 active"><label class="pull-right">图标:</label></td>
+		         <td class="width-35" ><sys:iconselect id="icon" name="icon" value="${menu.icon}"/></td>
+		         <td  class="width-15 active"><label class="pull-right">排序:</label></td>
+		         <td  class="width-35" ><form:input path="sort" htmlEscape="false" maxlength="50" class="required digits form-control "/>
+					<span class="help-inline">排列顺序,升序。</span></td>
+		      </tr>
+		      <tr>
+		         <td  class="width-15 active"><label class="pull-right">可见:</label></td>
+		         <td class="width-35" ><form:radiobuttons path="isShow" items="${fns:getDictList('show_hide')}" itemLabel="label" itemValue="value" htmlEscape="false" class="required i-checks "/>
+					<span class="help-inline">该菜单或操作是否显示到系统菜单中</span></td>
+		         <td  class="width-15 active"><label class="pull-right">权限标识:</label></td>
+		         <td  class="width-35" ><form:input path="permission" htmlEscape="false" maxlength="100" class="form-control "/>
+					<span class="help-inline">控制器中定义的权限标识,如:@RequiresPermissions("权限标识")</span></td>
+		      </tr>
+		      <tr>
+		         <td  class="width-15 active"><label class="pull-right">备注:</label></td>
+		         <td class="width-35" ><form:textarea path="remarks" htmlEscape="false" rows="3" maxlength="200" class="form-control "/></td>
+		         <td  class="width-15 active"><label class="pull-right"></label></td>
+		         <td  class="width-35" ></td>
+		      </tr>
+		    </tbody>
+		  </table>
+	</form:form>
+</body>
+</html>

+ 125 - 0
src/main/webapp/webpage/modules/sys/menuList.jsp

@@ -0,0 +1,125 @@
+<%@ 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 : 1,column:1}).show();
+		});
+    	function updateSort() {
+			loading('正在提交,请稍等...');
+	    	$("#listForm").attr("action", "${ctx}/sys/menu/updateSort");
+	    	$("#listForm").submit();
+    	}
+		function refresh(){//刷新
+
+			window.location="${ctx}/sys/menu/";
+		}
+	</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="form_basic.html#">
+					<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">
+		<div class="pull-left">
+			<shiro:hasPermission name="sys:menu:add">
+				<table:addRow url="${ctx}/sys/menu/form" title="菜单"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="sys:menu:edit">
+			    <table:editRow url="${ctx}/sys/menu/form" id="treeTable"  title="菜单"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="sys:menu:del">
+				<table:delRow url="${ctx}/sys/menu/deleteAll" id="treeTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="sys:menu:updateSort">
+				<button id="btnSubmit" class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="updateSort()" title="保存排序"><i class="fa fa-save"></i> 保存排序</button>
+			</shiro:hasPermission>
+				<button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="refresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+		</div>
+	</div>
+	</div>
+	<form id="listForm" method="post">
+		<table id="treeTable" 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: 10%">名称</th>
+					<th style="text-align: center;width: 20%">链接</th>
+					<th style="text-align: center;width: 5%">排序</th>
+					<th style="text-align: center;width: 8%">可见</th>
+					<th style="text-align: center;width: 18%">权限标识</th>
+					<shiro:hasPermission name="sys:menu:edit">
+					<th style="text-align: center;width: 30%">操作</th>
+					</shiro:hasPermission>
+				</tr>
+			</thead>
+			<tbody><c:forEach items="${list}" var="menu">
+				<tr id="${menu.id}" pId="${menu.parent.id ne '1'?menu.parent.id:'0'}">
+					<td> <input type="checkbox" id="${menu.id}" class="i-checks"></td>
+					<td nowrap><i class="icon-${not empty menu.icon?menu.icon:' hide'}"></i><a  href="javascript:void(0)" onclick="openDialogView('查看菜单', '${ctx}/sys/menu/form?id=${menu.id}','80%','80%')">${menu.name}</a></td>
+					<td title="${menu.href}">${fns:abbr(menu.href,30)}</td>
+					<td style="text-align:center;">
+						<shiro:hasPermission name="sys:menu:updateSort">
+							<input type="hidden" name="ids" value="${menu.id}"/>
+							<input name="sorts" type="text" value="${menu.sort}" class="form-control" style="width:70px;margin:0;padding:0;text-align:center;">
+						</shiro:hasPermission><shiro:lacksPermission name="sys:menu:updateSort">
+							${menu.sort}
+						</shiro:lacksPermission>
+					</td>
+					<td>${menu.isShow eq '1'?'显示':'隐藏'}</td>
+					<td title="${menu.permission}">${fns:abbr(menu.permission,30)}</td>
+					<td nowrap>
+						<div style="text-align: center">
+						<shiro:hasPermission name="sys:menu:view">
+							<a href="javascript:void(0)" onclick="openDialogView('查看菜单', '${ctx}/sys/menu/form?id=${menu.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+						</shiro:hasPermission>
+						<shiro:hasPermission name="sys:menu:edit">
+	    					<a href="javascript:void(0)" onclick="openDialog('修改菜单', '${ctx}/sys/menu/form?id=${menu.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+	    				</shiro:hasPermission>
+	    				<shiro:hasPermission name="sys:menu:del">
+							<a href="${ctx}/sys/menu/delete?id=${menu.id}" onclick="return confirmx('要删除该菜单及所有子菜单项吗?', this.href)" class="btn btn-danger btn-xs" ><i class="fa fa-trash"></i> 删除</a>
+						</shiro:hasPermission>
+						<shiro:hasPermission name="sys:menu:add">
+							<a href="javascript:void(0)" onclick="openDialog('添加下级菜单', '${ctx}/sys/menu/form?parent.id=${menu.id}','80%','80%')" class="btn btn-primary btn-xs" ><i class="fa fa-plus"></i> 添加下级菜单</a>
+						</shiro:hasPermission>
+						</div>
+					</td>
+				</tr>
+			</c:forEach></tbody>
+		</table>
+	 </form>
+	 </div>
+	</div>
+	</div>
+</body>
+</html>

+ 47 - 0
src/main/webapp/webpage/modules/sys/menuTree.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="blank"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			$(".accordion-heading a").click(function(){
+				$('.accordion-toggle i').removeClass('icon-chevron-down');
+				$('.accordion-toggle i').addClass('icon-chevron-right');
+				if(!$($(this).attr('href')).hasClass('in')){
+					$(this).children('i').removeClass('icon-chevron-right');
+					$(this).children('i').addClass('icon-chevron-down');
+				}
+			});
+			$(".accordion-body a").click(function(){
+				$("#menu-${param.parentId} li").removeClass("active");
+				$("#menu-${param.parentId} li i").removeClass("icon-white");
+				$(this).parent().addClass("active");
+				$(this).children("i").addClass("icon-white");
+				//loading('正在执行,请稍等...');
+			});
+			//$(".accordion-body a:first i").click();
+			//$(".accordion-body li:first li:first a:first i").click();
+		});
+	</script>
+</head>
+<body> --%>
+	<div class="accordion" id="menu-${param.parentId}"><c:set var="menuList" value="${fns:getMenuList()}"/><c:set var="firstMenu" value="true"/><c:forEach items="${menuList}" var="menu" varStatus="idxStatus"><c:if test="${menu.parent.id eq (not empty param.parentId ? param.parentId:1)&&menu.isShow eq '1'}">
+		<div class="accordion-group">
+		    <div class="accordion-heading">
+		    	<a class="accordion-toggle" data-toggle="collapse" data-parent="#menu-${param.parentId}" data-href="#collapse-${menu.id}" href="#collapse-${menu.id}" title="${menu.remarks}"><i class="icon-chevron-${not empty firstMenu && firstMenu ? 'down' : 'right'}"></i>&nbsp;${menu.name}</a>
+		    </div>
+		    <div id="collapse-${menu.id}" class="accordion-body collapse ${not empty firstMenu && firstMenu ? 'in' : ''}">
+				<div class="accordion-inner">
+					<ul class="nav nav-list"><c:forEach items="${menuList}" var="menu2"><c:if test="${menu2.parent.id eq menu.id&&menu2.isShow eq '1'}">
+						<li><a data-href=".menu3-${menu2.id}" href="${fn:indexOf(menu2.href, '://') eq -1 ? ctx : ''}${not empty menu2.href ? menu2.href : '/404'}" target="${not empty menu2.target ? menu2.target : 'mainFrame'}" ><i class="icon-${not empty menu2.icon ? menu2.icon : 'circle-arrow-right'}"></i>&nbsp;${menu2.name}</a>
+							<ul class="nav nav-list hide" style="margin:0;padding-right:0;"><c:forEach items="${menuList}" var="menu3"><c:if test="${menu3.parent.id eq menu2.id&&menu3.isShow eq '1'}">
+								<li class="menu3-${menu2.id} hide"><a href="${fn:indexOf(menu3.href, '://') eq -1 ? ctx : ''}${not empty menu3.href ? menu3.href : '/404'}" target="${not empty menu3.target ? menu3.target : 'mainFrame'}" ><i class="icon-${not empty menu3.icon ? menu3.icon : 'circle-arrow-right'}"></i>&nbsp;${menu3.name}</a></li></c:if>
+							</c:forEach></ul></li><c:set var="firstMenu" value="false"/></c:if></c:forEach></ul>
+				</div>
+		    </div>
+		</div>
+	</c:if></c:forEach></div><%--
+</body>
+</html> --%>

+ 20 - 0
src/main/webapp/webpage/modules/sys/menuTreeselect.jsp

@@ -0,0 +1,20 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<%@include file="/webpage/include/treeview.jsp" %>
+<div id="menuTreeselect" class="ztree" style="margin:15px;"></div>
+<script type="text/javascript"> 
+	var menuTreeselectSetting = {view:{selectedMulti:false,dblClickExpand:false,nameIsHTML:true,showIcon:false,showTitle:false}, data:{simpleData:{enable:true}},
+			callback:{onClick:function(event, treeId, treeNode){menuTreeselect.expandNode(treeNode);if (!treeNode.isParent){cookie('menuId', treeNode.id, {path:'/'});}}}};
+	var menuTreeselectNodes=[
+			<c:forEach items="${fns:getMenuList()}" var="menu"><c:if test="${menu.isShow eq '1'}">{id:"${menu.id}", pId:"${not empty menu.parent.id ? menu.parent.id : 0}", name:"<i class=\"icon-${not empty menu.icon ? menu.icon : 'file'}\"></i>&nbsp;${not empty menu.parent.id ? menu.name : ''}", url:"${not empty menu.href && fn:indexOf(menu.href, '://') eq -1 ? ctx : ''}${not empty menu.href ? menu.href : 'javascript:'}", target:"${not empty menu.target ? menu.target:'_self'}"},
+			</c:if></c:forEach>{id:new Date().getTime(), pId:"0", name:"<i class=\"icon-home\"></i>&nbsp;进入主页", url:"${ctx}", target:"_self"},
+			{id:new Date().getTime(), pId:"0", name:"<i class=\"icon-share\"></i>&nbsp;退出登录", url:"${ctx}/logout", target:"_self"}];
+	var menuTreeselect = $.fn.zTree.init($("#menuTreeselect"), menuTreeselectSetting, menuTreeselectNodes);//<c:if test="${empty parentId}">
+	var menuTreeselectNodes = menuTreeselect.getNodesByParam("level", 1);
+	for(var i=0; i<menuTreeselectNodes.length; i++) {
+		menuTreeselect.expandNode(menuTreeselectNodes[i], true, false, false);
+	}//</c:if>
+	var menuTreeselectNode = menuTreeselect.getNodeByParam("id", '${parentId != '' ? parentId : cookie.menuId.value}');
+	menuTreeselect.selectNode(menuTreeselectNode, true);
+	menuTreeselect.expandNode(menuTreeselectNode, true, false, false);
+</script>

+ 261 - 0
src/main/webapp/webpage/modules/sys/officeForm.jsp

@@ -0,0 +1,261 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>机构管理</title>
+	<meta name="decorator" content="default"/>
+	<style>
+		label.error{
+			left:0;
+			top:40px;
+		}
+	</style>
+	<script type="text/javascript">
+        var validateForm;
+        function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                $("#inputForm").submit();
+                return true;
+            }
+
+            return false;
+        }
+		$(document).ready(function() {
+            jQuery.validator.addMethod("isMobile", function(value, element) {
+                var length = value.length;
+                var mobile = /^(13[0-9]{9})|(18[0-9]{9})|(19[0-9]{9})|(14[0-9]{9})|(17[0-9]{9})|(15[0-9]{9})$/;
+                return (length==0 || (length == 11 && mobile.test(value)));
+            }, "请正确填写您的手机号码");
+			$("#name").focus();
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+                /*rules: {
+                    name:{remote: "${ctx}/sys/company/validateCompany?oldName=" + encodeURIComponent("${office.name}")}
+                },
+                messages: {
+                    name:{remote: "此公司名称已经被注册!", required: "公司名称不能为空."}
+                },*/
+				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('${sessionScope.state}' =='disabled'){
+                $('select').attr('disabled','<%=session.getAttribute("state")%>');
+            }else if('${sessionScope.state}' !='disabled'){
+                $('select').removeAttr('disabled');
+            }*/
+            setCompInfo($("#officeId").val());
+            dispSimpleName('${office.type}');
+		});
+
+        function setCompInfo(comId) {
+            $.ajax({
+                type:'post',
+                url:'${ctx}/sys/office/compInfo',
+                data:{
+                    "id":comId
+                },
+                success:function(data){
+                    if(data.type=="2"){
+                        $("#type option[value='1']").hide();
+                        $("#type option[value='2']").show();
+                        $("#type option[value='3']").hide();
+                    }else if(data.type=="3"){
+                        $("#type option[value='1']").hide();
+                        $("#type option[value='2']").show();
+                        $("#type option[value='3']").show();
+                    }else {
+                        $("#type option[value='1']").hide();
+                        $("#type option[value='2']").show();
+                        $("#type option[value='3']").show();
+                    }
+                }
+            })
+        }
+        function dispSimpleName(val) {
+            /*if(val=='1'){
+                $(".simpleName").show();
+            }else {
+                $(".simpleName").hide();
+            }*/
+        }
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+	<form:form id="inputForm" modelAttribute="office" action="${ctx}/sys/office/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+		<input type="hidden" id = "sign"/>
+		<c:set var="officedis" scope="session" value='<%=session.getAttribute("state")%>' />
+		<c:set var="cnmae" scope="session" value='<%=session.getAttribute("cname")%>' />
+
+		<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 with-icon">
+					<c:choose>
+						<c:when test="${not empty office.id}">
+							<input htmlEscape="false"  readonly="true"  class="form-control layui-input" value="${office.parent.name}"/>
+						</c:when>
+						<c:otherwise>
+							<sys:treeselectComp id="parentId" name="parent.id" value="${office.parent.id}" labelName="parent.name" labelValue="${office.parent.name}"
+																			title="机构" url="/sys/office/treeData" extId="${office.id}"  cssClass="form-control layui-input required" allowClear="${office.currentUser.admin}"/>
+						</c:otherwise>
+					</c:choose>
+				</div>
+			</div>
+			<%--<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">归属区域:</label>
+				<div class="layui-input-block with-icon">
+					<sys:treeselectt id="area" name="area.id" value="${office.area.id}" labelName="area.name" labelValue="${office.area.name}"
+									 title="区域" url="/sys/area/treeData" cssClass="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">
+					<c:choose>
+						<c:when test="${cname == 'no'}">
+							<td class="width-35">
+								<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${office.name}"/>
+							</td>
+						</c:when>
+						<c:otherwise>
+							<td class="width-35">
+								<input id="oldName" name="oldName" type="hidden" value="${office.name}">
+								<form:input path="name" htmlEscape="false" maxlength="50" class="form-control layui-input required"/>
+						</c:otherwise>
+					</c:choose>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label"><span class="require-item">*</span>机构全称:</label>
+				<div class="layui-input-block">
+					<form:input path="topCompany" htmlEscape="false" maxlength="64"  cssClass="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="code" htmlEscape="false" maxlength="50" class="form-control number 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">
+					<c:choose>
+						<c:when test="${not empty office.id}">
+							<input htmlEscape="false" maxlength="50" readonly="ture" class="form-control layui-input" value="${fns:getDictLabel(office.type, 'sys_office_type', '')}"/>
+						</c:when>
+						<c:otherwise>
+							<form:select path="type" class="form-control required simple-select" onchange="dispSimpleName(this.value);">
+								<form:option value="" label=""/>
+								<form:options items="${fns:getDictList('sys_office_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+							</form:select>
+						</c:otherwise>
+					</c:choose>
+				</div>
+			</div>
+				<%--
+
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">邮箱:</label>
+                    <div class="layui-input-block">
+                        <form:input path="email" htmlEscape="false" maxlength="50" cssClass="form-control layui-input email" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">联系地址:</label>
+                    <div class="layui-input-block">
+                        <form:input path="address" htmlEscape="false" maxlength="50" cssClass="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="zipCode" htmlEscape="false" minlength="6" maxlength="6" cssClass="form-control number layui-input digits" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">传真:</label>
+                    <div class="layui-input-block">
+                        <form:input path="fax" htmlEscape="false" maxlength="50" cssClass="form-control isTel 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="phone" htmlEscape="false" maxlength="50" cssClass="form-control text-muted number isMobile layui-input" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 simpleName">
+                    <label class="layui-form-label">公司简称:</label>
+                    <div class="layui-input-block">
+                        <form:input path="simpleName" htmlEscape="false" maxlength="10" cssClass="form-control layui-input" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 simpleName">
+                    <label class="layui-form-label">分公司简称:</label>
+                    <div class="layui-input-block">
+                        <form:input path="branchSimpleName" htmlEscape="false" maxlength="10" cssClass="form-control layui-input" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 simpleName">
+                    <label class="layui-form-label"><span class="require-item">*</span>分公司编号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="branchNo" htmlEscape="false" maxlength="3" minlength="3" cssClass="form-control layui-input digits required" />
+                    </div>
+                </div>--%>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">机构状态:</label>
+				<div class="layui-input-block with-icon">
+					<c:choose>
+						<c:when test="${not empty office.id}">
+							<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getDictLabel(office.useable, 'office_useable', '')}"/>
+						</c:when>
+						<c:otherwise>
+							<form:select path="useable" class="form-control required simple-select" onchange="dispSimpleName(this.value);">
+								<form:option value="" label=""/>
+								<form:options items="${fns:getDictList('office_useable')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+							</form:select>
+						</c:otherwise>
+					</c:choose>
+				</div>
+			</div>
+			<%--<div class="layui-item layui-col-sm6 simpleName">
+				<label class="layui-form-label"><span class="require-item">*</span>负责人:</label>
+				<div class="layui-input-block with-icon">
+					<sys:treeselectt id="master" name="master" value="${office.master}" labelName="office.masterName" labelValue="${office.masterName}"
+									 title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+				</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="200" class="form-control"/>
+				</div>
+			</div>
+		</div>
+
+		</form:form>
+	</div>
+</div>
+</body>
+<%
+	session.removeAttribute("state");
+	session.removeAttribute("cname");
+%>
+</html>

+ 102 - 0
src/main/webapp/webpage/modules/sys/officeIndex.jsp

@@ -0,0 +1,102 @@
+<%@ 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}/sys/office/";
+		}
+	</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="officeContent" name="officeContent" src="${ctx}/sys/office/list?id=&parentIds=" 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;
+/*
+					var id = treeNode.pId == '0' ? '' :treeNode.pId;
+*/
+					/*alert(id+"============="+treeNode.pIds);*/
+					$('#officeContent').attr("src","${ctx}/sys/office/list?id="+id+"&parentIds="+treeNode.pIds);
+				}
+			},view:{
+                showLine: false,
+                showIcon: false,
+                addDiyDom: addDiyDom
+            }
+		};
+		
+		function refreshTree(){
+			$.getJSON("${ctx}/sys/office/treeData",function(data){
+				$.fn.zTree.init($("#ztree"), setting, data).expandAll(true);
+			});
+		}
+		refreshTree();
+
+        // var width = $('#divId').width();
+        // var leftWidth =  width*0.1; // 左侧窗口大小
+		// var htmlObj = $("html"), mainObj = $("#main");
+		// var frameObj = $("#left, #openClose, #right, #right iframe");
+		// function wSize(){
+		// 	var strs = getWindowSize().toString().split(",");
+		// 	htmlObj.css({"overflow-x":"hidden", "overflow-y":"hidden"});
+		// 	mainObj.css("width","auto");
+		// 	frameObj.height(strs[0] - 120);
+		// 	/*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>

+ 555 - 0
src/main/webapp/webpage/modules/sys/officeIndex1.jsp

@@ -0,0 +1,555 @@
+<%@ 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}/sys/office/";
+		}
+	</script>
+	<style>
+		body{
+			height:100%;
+		}
+
+		.check-container{
+
+		}
+		.check-container,
+		.check-container .left-panel-container,
+		.check-container .middle-panel,
+		.check-container .right-panel-container,
+		.check-container .left-panel-container .left-panel,
+		.check-container .right-panel-container .right-panel{
+			height:100%;
+		}
+
+		.check-container .left-panel-container .left-panel{
+			width:250px;
+			border-right: solid 2px #f1f1f1;
+		}
+		.check-container .left-panel-container .left-panel.closed{
+			display: none;
+		}
+		.left-close{
+			text-align: center;
+			height:40px;
+			line-height: 40px;
+			width:35px;
+			position: absolute;
+			top:8px;
+			left:215px;
+		}
+		.left-close.closed{
+			left:0px;
+		}
+		.left-panel ul{
+			padding: 8px 8px 0 8px;
+			-moz-box-sizing: border-box;
+			-webkit-box-sizing: border-box;
+			box-sizing: border-box;
+		}
+		.left-panel ul li{
+
+		}
+		.left-panel ul li a{
+			height:40px;
+			line-height: 40px;
+			padding-top: 0px;
+			padding-bottom: 0px;
+		}
+		.check-container a.right-close:hover,
+		.check-container a.left-close:hover{
+			color: #0c0c0c;
+		}
+
+		.check-container .right-panel-container .right-panel{
+			width:400px;
+			border-left: solid 2px #f1f1f1;
+		}
+		.check-container .right-panel-container .right-panel.closed{
+			display: none;
+		}
+		.right-close{
+			text-align: center;
+			height:40px;
+			line-height: 40px;
+			width:35px;
+			position: absolute;
+			top:8px;
+			right:0px;
+		}
+		.right-close.closed{
+
+		}
+		.right-panel .title{
+			height:40px;
+			line-height: 40px;
+			padding-top: 8px;
+			padding-left: 8px;
+			border-bottom: solid 1px #333333;
+		}
+
+		.check-tabs{
+			margin-top: 8px;
+			height:40px;
+			line-height: 40px;
+			border-bottom: solid 1px #333333;
+		}
+		.check-tabs .content-title{
+			margin-left: 35px;
+			float:left;
+		}
+
+		.ztreeBox {
+			height:calc(100% - 50px - 34px);
+			width:250px;
+		}
+
+		.ztreeContainer{
+			max-height: 100%;
+		}
+		.ztreeBox .ztreeContainer .ztree{
+			min-width: calc( 250px - 34px);
+		}
+
+
+		.check-tabs .tab-container{
+			position: relative;
+			width:calc(100% - 105px);
+			float: right;
+			overflow: hidden;
+		}
+		.check-tabs .tab-container .roll-nav{
+			height:40px;
+			line-height: 40px;
+			width:40px;
+			color: #999;
+			text-align: center;
+			position: absolute;
+			-moz-box-sizing: border-box;
+			-webkit-box-sizing: border-box;
+			box-sizing: border-box;
+		}
+		.check-tabs .tab-container .roll-left{
+			left: 0px;
+		}
+		.check-tabs .tab-container .roll-right{
+			right: 0px;
+			top: 0px;
+		}
+		.check-page-tabs-content{
+			float: left;
+		}
+		.check-contents{
+			height:calc(100% - 52px);
+			width:100%;
+		}
+	</style>
+
+</head>
+<body style="height:100%;">
+	<div class="check-container">
+		<div class="left-panel-container fl">
+			<div class="left-panel">
+				<ul class="nav nav-tabs">
+					<li class="active"><a href="javascript:void(0)">项目报告</a></li>
+					<li><a href="/jeeplus/a/sys/officetest/list2">项目资料</a></li>
+				</ul>
+				<div class="ztreeBox">
+					<div class="ztreeContainer">
+						<div id="ztree" class="ztree leftBox-content">
+
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+		<div class="middle-panel fl">
+			<div class="check-tabs">
+					<span class="content-title">相关内容:</span>
+			<div class="tab-container">
+				<button class="roll-nav roll-left content_tabLeft"><i class="fa fa-backward"></i>
+				</button>
+				<nav class="page-tabs check_menuTabs">
+					<div class="check-page-tabs-content">
+						<%--<a href="javascript:;" class="active check_menuTab" data-id="${ctx}/home">首页</a>--%>
+					</div>
+				</nav>
+				<button class="roll-nav roll-right content_tabRight"><i class="fa fa-forward"></i>
+				</button>
+			</div>
+			</div>
+			<div id="check-contents" class="check-contents">
+			</div>
+		</div>
+		<div class="right-panel-container fr">
+			<div class="right-panel">
+				<div class="title">质量复核内容</div>
+				<div style="margin-top: 16px;">
+					<div class="layui-item layui-col-xs12 form-table-container" >
+						<table id="contentTable" class="table table-bordered table-condensed can-edit no-bottom-margin">
+							<thead>
+							<tr>
+								<th width="50px">序号</th>
+								<th width="300px">符合内容及评分标准</th>
+								<th width="50px">操作</th>
+							</tr>
+							</thead>
+						</table>
+					</div>
+				</div>
+			</div>
+		</div>
+		<a class="left-close"><i class="glyphicon glyphicon-chevron-left"></i></a>
+		<a class="right-close"><i class="glyphicon glyphicon-chevron-right"></i></a>
+	</div>
+	<script>
+    $(function () {
+   	 	$('.check_menuTabs').on('click', '.check_menuTab', activeCheckTab);
+        $('.check_menuTabs').on('click', '.check_menuTab i', closeCheckTab);
+        // 左移按扭
+        $('.content_tabLeft').on('click', scrollCheckTabLeft);
+
+        // 右移按扭
+        $('.content_tabRight').on('click', scrollCheckTabRight);
+    });
+    function calCheckSumWidth(elements) {
+        var width = 0;
+        $(elements).each(function () {
+            width += $(this).outerWidth(true);
+        });
+        return width;
+    }
+    function activeCheckTab() {
+        if (!$(this).hasClass('active')) {
+            var currentId = $(this).data('id');
+            // 显示tab对应的内容区
+            $('.check-contents .check_iframe').each(function () {
+                if ($(this).data('id') == currentId) {
+                    $(this).show().siblings('.check_iframe').hide();
+                    return false;
+                }
+            });
+
+            $(this).addClass('active').siblings('.check_menuTab').removeClass('active');
+            scrollToCheckTab(this);
+        }
+    }
+    //滚动到指定选项卡
+    function scrollToCheckTab(element) {
+        var marginLeftVal = calCheckSumWidth($(element).prevAll()), marginRightVal = calCheckSumWidth($(element).nextAll());
+        // 可视区域非tab宽度
+        var tabOuterWidth = calCheckSumWidth($(".tab-container").children().not(".check_menuTabs"));
+        //可视区域tab宽度
+        var visibleWidth = $(".tab-container").outerWidth(true) - tabOuterWidth;
+        //实际滚动宽度
+        var scrollVal = 0;
+        if ($(".check-page-tabs-content").outerWidth() < visibleWidth) {
+            scrollVal = 0;
+        } else if (marginRightVal <= (visibleWidth - $(element).outerWidth(true) - $(element).next().outerWidth(true))) {
+            if ((visibleWidth - $(element).next().outerWidth(true)) > marginRightVal) {
+                scrollVal = marginLeftVal;
+                var tabElement = element;
+                while ((scrollVal - $(tabElement).outerWidth()) > ($(".check-page-tabs-content").outerWidth() - visibleWidth)) {
+                    scrollVal -= $(tabElement).prev().outerWidth();
+                    tabElement = $(tabElement).prev();
+                }
+            }
+        } else if (marginLeftVal > (visibleWidth - $(element).outerWidth(true) - $(element).prev().outerWidth(true))) {
+            scrollVal = marginLeftVal - $(element).prev().outerWidth(true);
+        }
+        $('.check-page-tabs-content').animate({
+            marginLeft: 0 - scrollVal + 'px'
+        }, "fast");
+    }
+    //查看左侧隐藏的选项卡
+    function scrollCheckTabLeft() {
+        var marginLeftVal = Math.abs(parseInt($('.check-page-tabs-content').css('margin-left')));
+        // 可视区域非tab宽度
+        var tabOuterWidth = calCheckSumWidth($(".tab-container").children().not(".check_menuTabs"));
+        //可视区域tab宽度
+        var visibleWidth = $(".tab-container").outerWidth(true) - tabOuterWidth;
+        //实际滚动宽度
+        var scrollVal = 0;
+        if ($(".check-page-tabs-content").width() < visibleWidth) {
+            return false;
+        } else {
+            var tabElement = $(".check_menuTab:first");
+            var offsetVal = 0;
+            while ((offsetVal + $(tabElement).outerWidth(true)) <= marginLeftVal) {//找到离当前tab最近的元素
+                offsetVal += $(tabElement).outerWidth(true);
+                tabElement = $(tabElement).next();
+            }
+            offsetVal = 0;
+            if (calCheckSumWidth($(tabElement).prevAll()) > visibleWidth) {
+                while ((offsetVal + $(tabElement).outerWidth(true)) < (visibleWidth) && tabElement.length > 0) {
+                    offsetVal += $(tabElement).outerWidth(true);
+                    tabElement = $(tabElement).prev();
+                }
+                scrollVal = calCheckSumWidth($(tabElement).prevAll());
+            }
+        }
+        $('.check-page-tabs-content').animate({
+            marginLeft: 0 - scrollVal + 'px'
+        }, "fast");
+    }
+
+    //查看右侧隐藏的选项卡
+    function scrollCheckTabRight() {
+        var marginLeftVal = Math.abs(parseInt($('.check-page-tabs-content').css('margin-left')));
+        // 可视区域非tab宽度
+        var tabOuterWidth = calCheckSumWidth($(".tab-container").children().not(".check_menuTabs"));
+        //可视区域tab宽度
+        var visibleWidth = $(".tab-container").outerWidth(true) - tabOuterWidth;
+        //实际滚动宽度
+        var scrollVal = 0;
+        if ($(".check-page-tabs-content").width() < visibleWidth) {
+            return false;
+        } else {
+            var tabElement = $(".check_menuTab:first");
+            var offsetVal = 0;
+            while ((offsetVal + $(tabElement).outerWidth(true)) <= marginLeftVal) {//找到离当前tab最近的元素
+                offsetVal += $(tabElement).outerWidth(true);
+                tabElement = $(tabElement).next();
+            }
+            offsetVal = 0;
+            while ((offsetVal + $(tabElement).outerWidth(true)) < (visibleWidth) && tabElement.length > 0) {
+                offsetVal += $(tabElement).outerWidth(true);
+                tabElement = $(tabElement).next();
+            }
+            scrollVal = calCheckSumWidth($(tabElement).prevAll());
+            if (scrollVal > 0) {
+                $('.check-page-tabs-content').animate({
+                    marginLeft: 0 - scrollVal + 'px'
+                }, "fast");
+            }
+        }
+    }
+    function closeCheckTab() {
+        var closeTabId = $(this).parents('.check_menuTab').data('id');
+        var currentWidth = $(this).parents('.check_menuTab').width();
+
+        // 当前元素处于活动状态
+        if ($(this).parents('.check_menuTab').hasClass('active')) {
+
+            // 当前元素后面有同辈元素,使后面的一个元素处于活动状态
+            if ($(this).parents('.check_menuTab').next('.check_menuTab').size()) {
+
+                var activeId = $(this).parents('.check_menuTab').next('.check_menuTab:eq(0)').data('id');
+                $(this).parents('.check_menuTab').next('.check_menuTab:eq(0)').addClass('active');
+
+                $('.check-contents .check_iframe').each(function () {
+                    if ($(this).data('id') == activeId) {
+                        $(this).show().siblings('.check_iframe').hide();
+                        return false;
+                    }
+                });
+
+                var marginLeftVal = parseInt($('.check-page-tabs-content').css('margin-left'));
+                if (marginLeftVal < 0) {
+                    $('.check-page-tabs-content').animate({
+                        marginLeft: (marginLeftVal + currentWidth) + 'px'
+                    }, "fast");
+                }
+
+                //  移除当前选项卡
+                $(this).parents('.check_menuTab').remove();
+
+                // 移除tab对应的内容区
+                $('.check-contents .check_iframe').each(function () {
+                    if ($(this).data('id') == closeTabId) {
+                        $(this).remove();
+                        return false;
+                    }
+                });
+
+                changeLeftNavActive(activeId);
+            }
+
+            // 当前元素后面没有同辈元素,使当前元素的上一个元素处于活动状态
+            if ($(this).parents('.check_menuTab').prev('.check_menuTab').size()) {
+                var activeId = $(this).parents('.check_menuTab').prev('.check_menuTab:last').data('id');
+                $(this).parents('.check_menuTab').prev('.check_menuTab:last').addClass('active');
+                $('.check-contents .check_iframe').each(function () {
+                    if ($(this).data('id') == activeId) {
+                        $(this).show().siblings('.check_iframe').hide();
+                        return false;
+                    }
+                });
+
+                //  移除当前选项卡
+                $(this).parents('.check_menuTab').remove();
+
+                // 移除tab对应的内容区
+                $('.check-contents .check_iframe').each(function () {
+                    if ($(this).data('id') == closeTabId) {
+                        $(this).remove();
+                        return false;
+                    }
+                });
+                changeLeftNavActive(activeId);
+            }
+        }
+        // 当前元素不处于活动状态
+        else {
+            //  移除当前选项卡
+            $(this).parents('.check_menuTab').remove();
+
+            // 移除相应tab对应的内容区
+            $('.check-contents .check_iframe').each(function () {
+                if ($(this).data('id') == closeTabId) {
+                    $(this).remove();
+                    return false;
+                }
+            });
+            scrollToCheckTab($('.check_menuTab.active'));
+        }
+        return false;
+    }
+	function openContent(url,name)
+	{
+		var flag = true;
+        // 选项卡菜单已存在
+        $('.check_menuTab').each(function () {
+            if ($(this).data('id') == url) {
+                if (!$(this).hasClass('active')) {
+                    $(this).addClass('active').siblings('.check_menuTab').removeClass('active');
+                    scrollToCheckTab(this);
+                    // 显示tab对应的内容区
+                    $('#check-contents .check_iframe').each(function () {
+                        if ($(this).data('id') == dataUrl) {
+                            $(this).show().siblings('.check_iframe').hide();
+                            return false;
+                        }
+                    });
+                }
+                flag = false;
+                return false;
+            }
+        });
+
+		if(flag)
+		{
+            var str = '<a href="javascript:;" class="active check_menuTab" data-id="' + url + '">' + name + ' <i class="fa fa-times-circle"></i></a>';
+            $('.check_menuTab').removeClass('active');
+
+            // 添加选项卡对应的iframe
+            var str1 = '<iframe class="check_iframe"  width="100%" height="100%" src="' + url + '" frameborder="0" data-id="' + url + '" seamless></iframe>';
+            $('#check-contents').find('iframe.check_iframe').hide();
+            $('#check-contents').append(str1);
+
+            // //显示loading提示
+            var loading = layer.load();
+
+            $('.check-contents iframe:visible').load(function () {
+                //iframe加载完成后隐藏loading提示
+                layer.close(loading);
+                resizeWindow();
+            });
+            // 添加选项卡
+            $('.check_menuTabs .check-page-tabs-content').append(str);
+            scrollToCheckTab($('.check_menuTab.active'));
+		}
+		return false;
+	}
+</script>
+	<script>
+        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 url = "${ctx}/sys/user/list?office.id="+id+"&office.name="+treeNode.name;
+
+                    openContent(url, treeNode.name);
+                    <%--var id = treeNode.id == '0' ? '' :treeNode.id;--%>
+                    <%--$('#userContent').attr("src","${ctx}/sys/user/list?office.id="+id+"&office.name="+treeNode.name);--%>
+                }
+            }
+            ,view:{
+                showLine: false,
+                showIcon: false,
+                addDiyDom: addDiyDom
+            }
+        };
+
+        function refreshTree(){
+            $.getJSON("${ctx}/sys/office/treeData",function(data){
+                $.fn.zTree.init($("#ztree"), setting, data).expandAll(true);
+            });
+        }
+        refreshTree();
+	</script>
+	<script>
+		function resizeWindow()
+		{
+
+            // $(".ztreeBox").css('height',(document.body.scrollHeight - 50 -34) +"px");
+            // $(".ztreeBox").css('width',"250px");
+            // $(".ztreeContainer").css('max-height',(document.body.scrollHeight - 50 -34) +"px");
+            // $(".ztreeBox .ztreeContainer .ztree").css('min-width',( 250 -34) +"px");
+
+            $(".middle-panel").addClass("hide");
+            var wa=document.body.scrollWidth;
+
+			var wl = $(".left-panel-container").width();
+			var wr = $(".right-panel-container").width();
+			$(".middle-panel").css('width',(wa - wl - wr) +'px');//这里的div,选择你的那个div
+            $(".middle-panel").removeClass("hide");
+		}
+
+		resizeWindow();
+	$(window).resize(function(){
+		resizeWindow();
+	});
+    </script>
+	<script>
+        $(".left-close").click(function(){
+            if($('.left-panel').is(':visible'))
+            {
+                $(this).children(":first").attr("class","glyphicon glyphicon-chevron-right");
+            }
+            else
+            {
+                $(this).children(":first").attr("class","glyphicon glyphicon-chevron-left");
+            }
+            $(this).toggleClass("closed");
+            $(".left-panel").toggleClass("closed");
+            resizeWindow()
+        })
+        $(".right-close").click(function(){
+            if($('.right-panel').is(':visible'))
+            {
+                $(this).children(":first").attr("class","glyphicon glyphicon-chevron-left");
+            }
+            else
+            {
+                $(this).children(":first").attr("class","glyphicon glyphicon-chevron-right");
+            }
+            $(this).toggleClass("closed");
+            $(".right-panel").toggleClass("closed");
+            resizeWindow()
+        })
+
+	</script>
+</body>
+</html>

+ 546 - 0
src/main/webapp/webpage/modules/sys/officeIndex2.jsp

@@ -0,0 +1,546 @@
+<%@ 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}/sys/office/";
+		}
+	</script>
+	<style>
+		body{
+			height:100%;
+		}
+
+		.check-container{
+
+		}
+		.check-container,
+		.check-container .left-panel-container,
+		.check-container .middle-panel,
+		.check-container .right-panel-container,
+		.check-container .left-panel-container .left-panel,
+		.check-container .right-panel-container .right-panel{
+			height:100%;
+		}
+
+		.check-container .left-panel-container .left-panel{
+			width:250px;
+			border-right: solid 2px #f1f1f1;
+		}
+		.check-container .left-panel-container .left-panel.closed{
+			display: none;
+		}
+		.left-close{
+			text-align: center;
+			height:40px;
+			line-height: 40px;
+			width:35px;
+			position: absolute;
+			top:8px;
+			left:215px;
+		}
+		.left-close.closed{
+			left:0px;
+		}
+		.left-panel ul{
+			padding: 8px 8px 0 8px;
+			-moz-box-sizing: border-box;
+			-webkit-box-sizing: border-box;
+			box-sizing: border-box;
+		}
+		.left-panel ul li{
+
+		}
+		.left-panel ul li a{
+			height:40px;
+			line-height: 40px;
+			padding-top: 0px;
+			padding-bottom: 0px;
+		}
+		.check-container a.right-close:hover,
+		.check-container a.left-close:hover{
+			color: #0c0c0c;
+		}
+
+		.check-container .right-panel-container .right-panel{
+			width:400px;
+			border-left: solid 2px #f1f1f1;
+		}
+		.check-container .right-panel-container .right-panel.closed{
+			display: none;
+		}
+		.right-close{
+			text-align: center;
+			height:40px;
+			line-height: 40px;
+			width:35px;
+			position: absolute;
+			top:8px;
+			right:0px;
+		}
+		.right-close.closed{
+
+		}
+		.right-panel .title{
+			height:40px;
+			line-height: 40px;
+			padding-top: 8px;
+			padding-left: 8px;
+			border-bottom: solid 1px #333333;
+		}
+
+		.check-tabs{
+			margin-top: 8px;
+			height:40px;
+			line-height: 40px;
+			border-bottom: solid 1px #333333;
+		}
+		.check-tabs .content-title{
+			margin-left: 35px;
+			float:left;
+		}
+
+		.ztreeBox {
+			height:calc(100% - 50px - 34px);
+			width:250px;
+		}
+
+		.ztreeContainer{
+			max-height: 100%;
+		}
+		.ztreeBox .ztreeContainer .ztree{
+			min-width: calc( 250px - 34px);
+		}
+
+
+		.check-tabs .tab-container{
+			position: relative;
+			width:calc(100% - 105px);
+			float: right;
+			overflow: hidden;
+		}
+		.check-tabs .tab-container .roll-nav{
+			height:40px;
+			line-height: 40px;
+			width:40px;
+			color: #999;
+			text-align: center;
+			position: absolute;
+			-moz-box-sizing: border-box;
+			-webkit-box-sizing: border-box;
+			box-sizing: border-box;
+		}
+		.check-tabs .tab-container .roll-left{
+			left: 0px;
+		}
+		.check-tabs .tab-container .roll-right{
+			right: 0px;
+			top: 0px;
+		}
+		.check-page-tabs-content{
+			float: left;
+		}
+		.check-contents{
+			height:calc(100% - 52px);
+			width:100%;
+		}
+	</style>
+
+</head>
+<body style="height:100%;">
+	<div class="check-container">
+		<div class="left-panel-container fl">
+			<div class="left-panel">
+				<ul class="nav nav-tabs">
+					<li><a href="/jeeplus/a/sys/officetest">项目报告</a></li>
+					<li class="active"><a href="javascript:void(0)">项目资料</a></li>
+				</ul>
+				<div class="ztreeBox">
+					<div class="ztreeContainer">
+						<div id="ztree" class="ztree leftBox-content">
+
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+		<div class="middle-panel fl">
+			<div class="check-tabs">
+					<span class="content-title">相关内容:</span>
+			<div class="tab-container">
+				<button class="roll-nav roll-left content_tabLeft"><i class="fa fa-backward"></i>
+				</button>
+				<nav class="page-tabs check_menuTabs">
+					<div class="check-page-tabs-content">
+						<%--<a href="javascript:;" class="active check_menuTab" data-id="${ctx}/home">首页</a>--%>
+					</div>
+				</nav>
+				<button class="roll-nav roll-right content_tabRight"><i class="fa fa-forward"></i>
+				</button>
+			</div>
+			</div>
+			<div id="check-contents" class="check-contents">
+			</div>
+		</div>
+		<%--<div class="right-panel-container fr">--%>
+			<%--<div class="right-panel">--%>
+				<%--<div class="title">质量复核内容</div>--%>
+				<%--<div>--%>
+				<%--</div>--%>
+			<%--</div>--%>
+		<%--</div>--%>
+		<a class="left-close"><i class="glyphicon glyphicon-chevron-left"></i></a>
+		<%--<a class="right-close"><i class="glyphicon glyphicon-chevron-right"></i></a>--%>
+	</div>
+	<script>
+    $(function () {
+   	 	$('.check_menuTabs').on('click', '.check_menuTab', activeCheckTab);
+        $('.check_menuTabs').on('click', '.check_menuTab i', closeCheckTab);
+        // 左移按扭
+        $('.content_tabLeft').on('click', scrollCheckTabLeft);
+
+        // 右移按扭
+        $('.content_tabRight').on('click', scrollCheckTabRight);
+    });
+    function calCheckSumWidth(elements) {
+        var width = 0;
+        $(elements).each(function () {
+            width += $(this).outerWidth(true);
+        });
+        return width;
+    }
+    function activeCheckTab() {
+        if (!$(this).hasClass('active')) {
+            var currentId = $(this).data('id');
+            // 显示tab对应的内容区
+            $('.check-contents .check_iframe').each(function () {
+                if ($(this).data('id') == currentId) {
+                    $(this).show().siblings('.check_iframe').hide();
+                    return false;
+                }
+            });
+
+            $(this).addClass('active').siblings('.check_menuTab').removeClass('active');
+            scrollToCheckTab(this);
+        }
+    }
+    //滚动到指定选项卡
+    function scrollToCheckTab(element) {
+        var marginLeftVal = calCheckSumWidth($(element).prevAll()), marginRightVal = calCheckSumWidth($(element).nextAll());
+        // 可视区域非tab宽度
+        var tabOuterWidth = calCheckSumWidth($(".tab-container").children().not(".check_menuTabs"));
+        //可视区域tab宽度
+        var visibleWidth = $(".tab-container").outerWidth(true) - tabOuterWidth;
+        //实际滚动宽度
+        var scrollVal = 0;
+        if ($(".check-page-tabs-content").outerWidth() < visibleWidth) {
+            scrollVal = 0;
+        } else if (marginRightVal <= (visibleWidth - $(element).outerWidth(true) - $(element).next().outerWidth(true))) {
+            if ((visibleWidth - $(element).next().outerWidth(true)) > marginRightVal) {
+                scrollVal = marginLeftVal;
+                var tabElement = element;
+                while ((scrollVal - $(tabElement).outerWidth()) > ($(".check-page-tabs-content").outerWidth() - visibleWidth)) {
+                    scrollVal -= $(tabElement).prev().outerWidth();
+                    tabElement = $(tabElement).prev();
+                }
+            }
+        } else if (marginLeftVal > (visibleWidth - $(element).outerWidth(true) - $(element).prev().outerWidth(true))) {
+            scrollVal = marginLeftVal - $(element).prev().outerWidth(true);
+        }
+        $('.check-page-tabs-content').animate({
+            marginLeft: 0 - scrollVal + 'px'
+        }, "fast");
+    }
+    //查看左侧隐藏的选项卡
+    function scrollCheckTabLeft() {
+        var marginLeftVal = Math.abs(parseInt($('.check-page-tabs-content').css('margin-left')));
+        // 可视区域非tab宽度
+        var tabOuterWidth = calCheckSumWidth($(".tab-container").children().not(".check_menuTabs"));
+        //可视区域tab宽度
+        var visibleWidth = $(".tab-container").outerWidth(true) - tabOuterWidth;
+        //实际滚动宽度
+        var scrollVal = 0;
+        if ($(".check-page-tabs-content").width() < visibleWidth) {
+            return false;
+        } else {
+            var tabElement = $(".check_menuTab:first");
+            var offsetVal = 0;
+            while ((offsetVal + $(tabElement).outerWidth(true)) <= marginLeftVal) {//找到离当前tab最近的元素
+                offsetVal += $(tabElement).outerWidth(true);
+                tabElement = $(tabElement).next();
+            }
+            offsetVal = 0;
+            if (calCheckSumWidth($(tabElement).prevAll()) > visibleWidth) {
+                while ((offsetVal + $(tabElement).outerWidth(true)) < (visibleWidth) && tabElement.length > 0) {
+                    offsetVal += $(tabElement).outerWidth(true);
+                    tabElement = $(tabElement).prev();
+                }
+                scrollVal = calCheckSumWidth($(tabElement).prevAll());
+            }
+        }
+        $('.check-page-tabs-content').animate({
+            marginLeft: 0 - scrollVal + 'px'
+        }, "fast");
+    }
+
+    //查看右侧隐藏的选项卡
+    function scrollCheckTabRight() {
+        var marginLeftVal = Math.abs(parseInt($('.check-page-tabs-content').css('margin-left')));
+        // 可视区域非tab宽度
+        var tabOuterWidth = calCheckSumWidth($(".tab-container").children().not(".check_menuTabs"));
+        //可视区域tab宽度
+        var visibleWidth = $(".tab-container").outerWidth(true) - tabOuterWidth;
+        //实际滚动宽度
+        var scrollVal = 0;
+        if ($(".check-page-tabs-content").width() < visibleWidth) {
+            return false;
+        } else {
+            var tabElement = $(".check_menuTab:first");
+            var offsetVal = 0;
+            while ((offsetVal + $(tabElement).outerWidth(true)) <= marginLeftVal) {//找到离当前tab最近的元素
+                offsetVal += $(tabElement).outerWidth(true);
+                tabElement = $(tabElement).next();
+            }
+            offsetVal = 0;
+            while ((offsetVal + $(tabElement).outerWidth(true)) < (visibleWidth) && tabElement.length > 0) {
+                offsetVal += $(tabElement).outerWidth(true);
+                tabElement = $(tabElement).next();
+            }
+            scrollVal = calCheckSumWidth($(tabElement).prevAll());
+            if (scrollVal > 0) {
+                $('.check-page-tabs-content').animate({
+                    marginLeft: 0 - scrollVal + 'px'
+                }, "fast");
+            }
+        }
+    }
+    function closeCheckTab() {
+        var closeTabId = $(this).parents('.check_menuTab').data('id');
+        var currentWidth = $(this).parents('.check_menuTab').width();
+
+        // 当前元素处于活动状态
+        if ($(this).parents('.check_menuTab').hasClass('active')) {
+
+            // 当前元素后面有同辈元素,使后面的一个元素处于活动状态
+            if ($(this).parents('.check_menuTab').next('.check_menuTab').size()) {
+
+                var activeId = $(this).parents('.check_menuTab').next('.check_menuTab:eq(0)').data('id');
+                $(this).parents('.check_menuTab').next('.check_menuTab:eq(0)').addClass('active');
+
+                $('.check-contents .check_iframe').each(function () {
+                    if ($(this).data('id') == activeId) {
+                        $(this).show().siblings('.check_iframe').hide();
+                        return false;
+                    }
+                });
+
+                var marginLeftVal = parseInt($('.check-page-tabs-content').css('margin-left'));
+                if (marginLeftVal < 0) {
+                    $('.check-page-tabs-content').animate({
+                        marginLeft: (marginLeftVal + currentWidth) + 'px'
+                    }, "fast");
+                }
+
+                //  移除当前选项卡
+                $(this).parents('.check_menuTab').remove();
+
+                // 移除tab对应的内容区
+                $('.check-contents .check_iframe').each(function () {
+                    if ($(this).data('id') == closeTabId) {
+                        $(this).remove();
+                        return false;
+                    }
+                });
+
+                changeLeftNavActive(activeId);
+            }
+
+            // 当前元素后面没有同辈元素,使当前元素的上一个元素处于活动状态
+            if ($(this).parents('.check_menuTab').prev('.check_menuTab').size()) {
+                var activeId = $(this).parents('.check_menuTab').prev('.check_menuTab:last').data('id');
+                $(this).parents('.check_menuTab').prev('.check_menuTab:last').addClass('active');
+                $('.check-contents .check_iframe').each(function () {
+                    if ($(this).data('id') == activeId) {
+                        $(this).show().siblings('.check_iframe').hide();
+                        return false;
+                    }
+                });
+
+                //  移除当前选项卡
+                $(this).parents('.check_menuTab').remove();
+
+                // 移除tab对应的内容区
+                $('.check-contents .check_iframe').each(function () {
+                    if ($(this).data('id') == closeTabId) {
+                        $(this).remove();
+                        return false;
+                    }
+                });
+                changeLeftNavActive(activeId);
+            }
+        }
+        // 当前元素不处于活动状态
+        else {
+            //  移除当前选项卡
+            $(this).parents('.check_menuTab').remove();
+
+            // 移除相应tab对应的内容区
+            $('.check-contents .check_iframe').each(function () {
+                if ($(this).data('id') == closeTabId) {
+                    $(this).remove();
+                    return false;
+                }
+            });
+            scrollToCheckTab($('.check_menuTab.active'));
+        }
+        return false;
+    }
+	function openContent(url,name)
+	{
+		var flag = true;
+        // 选项卡菜单已存在
+        $('.check_menuTab').each(function () {
+            if ($(this).data('id') == url) {
+                if (!$(this).hasClass('active')) {
+                    $(this).addClass('active').siblings('.check_menuTab').removeClass('active');
+                    scrollToCheckTab(this);
+                    // 显示tab对应的内容区
+                    $('#check-contents .check_iframe').each(function () {
+                        if ($(this).data('id') == dataUrl) {
+                            $(this).show().siblings('.check_iframe').hide();
+                            return false;
+                        }
+                    });
+                }
+                flag = false;
+                return false;
+            }
+        });
+
+		if(flag)
+		{
+            var str = '<a href="javascript:;" class="active check_menuTab" data-id="' + url + '">' + name + ' <i class="fa fa-times-circle"></i></a>';
+            $('.check_menuTab').removeClass('active');
+
+            // 添加选项卡对应的iframe
+            var str1 = '<iframe class="check_iframe"  width="100%" height="100%" src="' + url + '" frameborder="0" data-id="' + url + '" seamless></iframe>';
+            $('#check-contents').find('iframe.check_iframe').hide();
+            $('#check-contents').append(str1);
+
+            // //显示loading提示
+            var loading = layer.load();
+
+            $('.check-contents iframe:visible').load(function () {
+                //iframe加载完成后隐藏loading提示
+                layer.close(loading);
+                resizeWindow();
+            });
+            // 添加选项卡
+            $('.check_menuTabs .check-page-tabs-content').append(str);
+            scrollToCheckTab($('.check_menuTab.active'));
+		}
+		return false;
+	}
+</script>
+	<script>
+        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 url = "${ctx}/sys/user/list?office.id="+id+"&office.name="+treeNode.name;
+
+                    openContent(url, treeNode.name);
+                    <%--var id = treeNode.id == '0' ? '' :treeNode.id;--%>
+                    <%--$('#userContent').attr("src","${ctx}/sys/user/list?office.id="+id+"&office.name="+treeNode.name);--%>
+                }
+            }
+            ,view:{
+                showLine: false,
+                showIcon: false,
+                addDiyDom: addDiyDom
+            }
+        };
+
+        function refreshTree(){
+            $.getJSON("${ctx}/sys/office/treeData",function(data){
+                $.fn.zTree.init($("#ztree"), setting, data).expandAll(true);
+            });
+        }
+        refreshTree();
+	</script>
+	<script>
+		function resizeWindow()
+		{
+
+            // $(".ztreeBox").css('height',(document.body.scrollHeight - 50 -34) +"px");
+            // $(".ztreeBox").css('width',"250px");
+            // $(".ztreeContainer").css('max-height',(document.body.scrollHeight - 50 -34) +"px");
+            // $(".ztreeBox .ztreeContainer .ztree").css('min-width',( 250 -34) +"px");
+
+            $(".middle-panel").addClass("hide");
+            var wa=document.body.scrollWidth;
+
+			var wl = $(".left-panel-container").width();
+			var wr = $(".right-panel-container").width();
+			if(wr == undefined)
+			    wr = 0;
+			$(".middle-panel").css('width',(wa - wl - wr) +'px');//这里的div,选择你的那个div
+            $(".middle-panel").removeClass("hide");
+		}
+
+		resizeWindow();
+	$(window).resize(function(){
+		resizeWindow();
+	});
+    </script>
+	<script>
+        $(".left-close").click(function(){
+            if($('.left-panel').is(':visible'))
+            {
+                $(this).children(":first").attr("class","glyphicon glyphicon-chevron-right");
+            }
+            else
+            {
+                $(this).children(":first").attr("class","glyphicon glyphicon-chevron-left");
+            }
+            $(this).toggleClass("closed");
+            $(".left-panel").toggleClass("closed");
+            resizeWindow()
+        })
+        $(".right-close").click(function(){
+            if($('.right-panel').is(':visible'))
+            {
+                $(this).children(":first").attr("class","glyphicon glyphicon-chevron-left");
+            }
+            else
+            {
+                $(this).children(":first").attr("class","glyphicon glyphicon-chevron-right");
+            }
+            $(this).toggleClass("closed");
+            $(".right-panel").toggleClass("closed");
+            resizeWindow()
+        })
+
+	</script>
+</body>
+</html>

+ 209 - 0
src/main/webapp/webpage/modules/sys/officeList.jsp

@@ -0,0 +1,209 @@
+<%@ 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() {
+            $("th").css('text-align','center');
+			var tpl = $("#treeTableTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+			var data = ${fns:toJson(list)}, rootId = "${not empty office.id ? office.id : '0'}";
+            //console.log(data+"-----"+rootId);
+            addRow("#treeTableList", tpl, data, rootId, true);
+            $("#treeTable").treeTable({expandLevel : 2});
+
+            $("a").on("click",addLinkVisied);
+            stateBtn("#treeTableList")
+
+        });
+		function stateBtn(list) {
+            //隐藏对应状态按钮
+            var tableLists = $(list).context.getElementById('treeTableList').getElementsByTagName('tr');
+            var arr = [];
+            for (var i = 0, length = tableLists.length; i < length; i++) {
+                arr.push(tableLists[i]);
+                var organizStateText = $(arr[i]).children('td').eq(3).text();
+                if(organizStateText=='启用'){
+                    $(arr[i]).children('td').eq(4).find('a').eq(1).hide();
+                }else if(organizStateText=='禁用'){
+                    $(arr[i]).children('td').eq(4).find('a').eq(2).hide();
+				}
+            }
+
+        }
+
+        function addRow(list, tpl, data, pid, root){
+            /*console.log(list+"---List--");
+            console.log(data+"---data--");
+            console.log(pid+"---pid--");
+            console.log(root+"---root--");*/
+            for (var i=0; i<data.length; i++){
+				var row = data[i];
+                if ((${fns:jsGetVal('row.parentId')}) == pid){
+                    //console.log(pid+"***********");
+					$(list).append(Mustache.render(tpl, {
+						dict: {
+							type: getDictLabel(${fns:toJson(fns:getDictList('sys_office_type'))}, row.type),
+                            useable: getDictLabel(${fns:toJson(fns:getDictList('office_useable'))}, row.useable)
+						}, pid: (root?0:pid), row: row
+					}));
+                    //console.log(row.id+"+++++++++++");
+					addRow(list, tpl, data, row.id);
+				}
+			}
+		}
+        function openDialogres(title,url,width,height,target){
+
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                skin: 'three-btns',
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                btn: ['提交','关闭'],
+                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(1) ){
+                        //top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                no: function(index){
+                }
+            });
+        }
+		function refresh(){//刷新或者排序,页码不清零
+    		
+			window.location="${ctx}/sys/office/list";
+    	}
+	</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="office" action="${ctx}/sys/office/" 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">
+								<form:input path="topCompany" htmlEscape="false" class=" form-control layui-input"></form:input>
+							</div>
+						</div>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<button id="searchReset" style="margin-right: 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="contentShadow shadowT full-width fl" style="margin-top: 0px;">
+			<div class="layui-form contentDetails">
+				<div class="nav-btns">
+					<%--<shiro:hasPermission name="sys:office:add">
+						<table:addRow url="${ctx}/sys/office/form?parent.id=${office.id}" title="机构" target=""></table:addRow><!-- 增加按钮 -->
+					</shiro:hasPermission>--%>
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+					<div style="clear: both;"></div>
+				</div>
+
+				<table id="treeTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+					<thead><tr><th>机构名称</th><th>机构全称</th><th>机构类型</th><th>机构状态</th><shiro:hasPermission name="sys:office:edit"><th width="330">操作</th></shiro:hasPermission></tr></thead>
+					<tbody id="treeTableList"></tbody>
+				</table>
+				<script type="text/template" id="treeTableTpl">
+					<tr id="{{row.id}}" pId="{{pid}}">
+						<td><a  class="attention-info" href="javascript:void(0)" onclick="openDialogView('查看机构', '${ctx}/sys/office/form?id={{row.id}}&&view=view','95%','95%')">{{row.name}}</a></td>
+						<td>{{row.topCompany}}</td>
+						<td>{{dict.type}}</td>
+						<td>{{dict.useable}}</td>
+						<%--<td>禁用</td>--%>
+						<td class="op-td text-center">
+							<div class="op-btn-box">
+							<%--<shiro:hasPermission name="sys:office:view">
+								<a href="javascript:void(0)" onclick="openDialogView('查看机构', '${ctx}/sys/office/form?id={{row.id}}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+							</shiro:hasPermission>--%>
+								<shiro:hasPermission name="sys:office:edit">
+								<a href="javascript:void(0)" onclick="openDialogres('修改机构', '${ctx}/sys/office/form?id={{row.id}}','95%','95%', '')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>
+								<a href="${ctx}/sys/office/deleteUseable?id={{row.id}}&useable=1" onclick="return confirmx('要启用该机构及所有子机构项吗?', this.href)" class="op-btn op-btn-edit"><i class="fa fa-plus"></i> 启用</a>
+							</shiro:hasPermission>
+							<shiro:hasPermission name="sys:office:del">
+								<a href="${ctx}/sys/office/deleteUseable?id={{row.id}}&useable=2" onclick="return confirmx('要禁用该机构及所有子机构项吗?', this.href)" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 禁用</a>
+								<a href="${ctx}/sys/office/delete?id={{row.id}}" onclick="return confirmx('要删除该机构及所有子机构项吗?', this.href)" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
+							</shiro:hasPermission>
+							<shiro:hasPermission name="sys:office:add">
+								<a href="javascript:void(0)" onclick="addSonNode('{{row.id}}');" class="op-btn  op-btn-add"><i class="fa fa-plus"></i> 添加下级机构</a>
+							</shiro:hasPermission>
+							</div>
+						</td>
+					</tr>
+				</script>
+			</div>
+		</div>
+	</div>
+</div>
+<script>
+
+    resizeListWindow3();
+    $(window).resize(function(){
+        resizeListWindow3();
+    });
+
+    function addSonNode(rowId) {
+        $.ajax({
+            url:"${ctx}/sys/office/validate",
+            data:{
+                "id":rowId
+            },
+            success:function (result) {
+                // if(result.success&&!result.body.inUse){
+                    openDialogres('添加下级机构', '${ctx}/sys/office/form?parent.id='+rowId,'95%','95%', '');
+                    return;
+                // }
+                // top.layer.msg("该机构下已经存在用户或者合同信息,不能添加下级机构",{icon:0});
+            }
+        })
+
+    }
+</script>
+</body>
+</html>

+ 162 - 0
src/main/webapp/webpage/modules/sys/officeView.jsp

@@ -0,0 +1,162 @@
+<%@ 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() {
+			$("#name").focus();
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+                rules : {
+                    name: {
+                        remote: "${ctx}/sys/company/validateCompany",
+                    }
+                },
+                messages: {
+                    name:{remote: "此公司名称已经被注册!", required: "公司名称不能为空."},
+                },
+				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('${sessionScope.state}' =='disabled'){
+                $('select').attr('disabled','<%=session.getAttribute("state")%>');
+            }else if('${sessionScope.state}' !='disabled'){
+                $('select').removeAttr('disabled');
+            }
+			//设置非必填
+            $("#type").change(function(){
+                if($("#type").val() == 1){
+                    $("#masterId").attr("class","form-control required");
+                    $("#masterName").attr("class","form-control required");
+                }else{
+                    $("#masterId").attr("class","form-control");
+                    $("#masterName").attr("class","form-control");
+				}
+            });
+		});
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container view-form">
+	<form:form id="inputForm" modelAttribute="office" action="${ctx}/sys/office/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<c:set var="officedis" scope="session" value='<%=session.getAttribute("state")%>' />
+		<sys:message content="${message}"/>
+
+		<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">上级机构:</label>
+				<div class="layui-input-block with-icon">
+					<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${office.parent.name}"/>
+				</div>
+			</div>
+			<%--<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">归属区域:</label>
+				<div class="layui-input-block with-icon">
+					<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${office.parent.name}"/>
+				</div>
+			</div>--%>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label"><span class="require-item">*</span>机构名称:</label>
+				<div class="layui-input-block with-icon">
+					<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${office.name}"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label"><span class="require-item">*</span>机构全称:</label>
+				<div class="layui-input-block with-icon">
+					<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${office.topCompany}"/>
+				</div>
+			</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 htmlEscape="false" readonly="true" class="form-control layui-input" value="${office.code}"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">机构类型:</label>
+				<div class="layui-input-block with-icon">
+					<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getDictLabel(office.type, 'sys_office_type', '')}"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">机构状态:</label>
+				<div class="layui-input-block with-icon">
+					<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getDictLabel(office.useable, 'office_useable', '')}"/>
+				</div>
+			</div>
+
+		<%--<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">负责人:</label>
+				<div class="layui-input-block with-icon">
+					<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${office.masterName}"/>
+				</div>
+			</div>
+			<input type="hidden" name="useable" value="1">
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">邮箱:</label>
+				<div class="layui-input-block with-icon">
+					<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${office.email}"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">联系地址:</label>
+				<div class="layui-input-block with-icon">
+					<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${office.address}"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">传真:</label>
+				<div class="layui-input-block with-icon">
+					<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${office.fax}"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">电话:</label>
+				<div class="layui-input-block with-icon">
+					<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${office.phone}"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">公司简称:</label>
+				<div class="layui-input-block with-icon">
+					<input htmlEscape="false" readonly="true" class="form-control layui-input" value="${office.simpleName}"/>
+				</div>
+			</div>--%>
+			<div class="layui-item layui-col-sm12">
+				<label class="layui-form-label">备注:</label>
+				<div class="layui-input-block with-icon">
+					<textarea readonly="true" htmlEscape="false" rows="4" maxlength="200" class="form-control">${office.remarks}</textarea>
+				</div>
+			</div>
+		</div>
+	</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 39 - 0
src/main/webapp/webpage/modules/sys/picturePreview.jsp

@@ -0,0 +1,39 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <script type="text/javascript">
+        function AutoResizeImage(maxWidth,maxHeight,objImg){
+            var img = new Image();
+            img.src = objImg.src;
+            var hRatio;
+            var wRatio;
+            var Ratio = 1;
+            var w = img.width;
+            var h = img.height;
+            wRatio = maxWidth / w;
+            hRatio = maxHeight / h;
+            if (maxWidth ==0 && maxHeight==0){
+                Ratio = 1;
+            }else if (maxWidth==0){//
+                if (hRatio<1) Ratio = hRatio;
+            }else if (maxHeight==0){
+                if (wRatio<1) Ratio = wRatio;
+            }else if (wRatio<1 || hRatio<1){
+                Ratio = (wRatio<=hRatio?wRatio:hRatio);
+            }
+            if (Ratio<1){
+                w = w * Ratio;
+                h = h * Ratio;
+            }
+            objImg.height = h;
+            objImg.width = w;
+        }
+    </script>
+</head>
+<body class="hideScroll">
+<center style="margin-top: 40px;">
+    <img src="${url}" onload="AutoResizeImage(800,550,this)">
+</center>
+</body>
+</html>

+ 120 - 0
src/main/webapp/webpage/modules/sys/project_contractSelect.jsp

@@ -0,0 +1,120 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+
+	</script>
+	<script type="text/javascript">
+		$(document).ready(function() {
+
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+
+		});
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			    var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+			    
+				var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel").html();
+
+				$.post("${ctx}/project/project/getSelectedContractInfoById",{"contractInfoId":id});
+
+				return id+"_item_"+label;
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="">
+    <div class="ibox-content">
+		<!-- 查询条件 -->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+		<input type="hidden" name="url" value="${url}"/>
+		<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+		<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+		<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+		<input type="hidden" name="searchKey" value="${searchKey}"/>
+		<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="${searchKey}" htmlEscape="false" maxlength="50" class=" form-control input-sm"/>
+		
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<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>
+				<c:forEach items="${labelNames}" var="name"  varStatus="status">
+					<th>合同名称</th>
+				</c:forEach>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="obj">
+			<tr>
+				<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+				
+				<c:forEach items="${labelValues}" var="value"  varStatus="status">
+					<c:if test="${status.first==true}">
+						<td class="codelabel">${fns:getValue(obj, value)}</td>
+					</c:if>
+
+					<c:if test="${status.first!=true}">
+						<td>${fns:getValue(obj, value)}</td>
+					</c:if>
+				</c:forEach>
+			
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+</div>
+</body>
+</html>

+ 118 - 0
src/main/webapp/webpage/modules/sys/roleAssign.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"/>
+</head>
+<body>
+<div class="single-form">
+	<sys:message content="${message}"/>
+	<div class="container">
+		<div class="form-group layui-row first">
+			<div class="form-group-label"><h2>基本信息</h2></div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">岗位名称:</label>
+				<div class="layui-input-block">
+					<input readonly="true" htmlEscape="false" class="layui-input form-control" value="${role.name}" />
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">归属机构:</label>
+				<div class="layui-input-block">
+					<input readonly="true" htmlEscape="false" class="layui-input form-control" value="${role.office.name}" />
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">英文名称:</label>
+				<div class="layui-input-block">
+					<input readonly="true" htmlEscape="false" class="layui-input form-control" value="${role.enname}" />
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">岗位类型:</label>
+				<div class="layui-input-block">
+					<input readonly="true" htmlEscape="false" class="layui-input form-control" value="${role.roleType}" />
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">数据范围:</label>
+				<div class="layui-input-block">
+					<c:set var="dictvalue" value="${role.dataScope}" scope="page" />
+					<input readonly="true" htmlEscape="false" class="layui-input form-control" value="${fns:getDictLabel(dictvalue, 'sys_data_scope', '')}" />
+				</div>
+			</div>
+		</div>
+		<div class="form-group layui-row">
+			<div class="form-group-label"><h2>人员信息</h2></div>
+			<form id="assignRoleForm" action="${ctx}/sys/role/assignrole" method="post" class="hide">
+				<input type="hidden" name="id" value="${role.id}"/>
+				<input type="hidden" name="office.id" value="${role.office.id}"/>
+				<input id="idsArr" type="hidden" name="idsArr" value=""/>
+			</form>
+			<div class="layui-item nav-btns">
+				<a href="javascript:void(0);" id="assignButton" class="nav-btn nav-btn-add" title="添加人员"><i class="fa fa-plus"></i>&nbsp;新增</a>
+			</div>
+			<div class="layui-item layui-col-xs12 form-table-container" >
+				<table id="contentTable" class="table table-bordered table-condensed details">
+					<thead><tr><th>归属公司</th><th>归属部门</th><th>登录名</th><th>姓名</th><th>电话</th><th>手机</th><shiro:hasPermission name="sys:user:edit"><th width="80">操作</th></shiro:hasPermission></tr></thead>
+					<tbody>
+					<c:forEach items="${userList}" var="user">
+						<tr>
+							<td>${user.company.name}</td>
+							<td>${user.office.name}</td>
+							<td><a href="${ctx}/sys/user/form?id=${user.id}">${user.loginName}</a></td>
+							<td>${user.name}</td>
+							<td>${user.phone}</td>
+							<td>${user.mobile}</td>
+							<shiro:hasPermission name="sys:role:edit"><td class="op-td">
+								<a href="${ctx}/sys/role/outrole?userId=${user.id}&roleId=${role.id}&office=${role.office.id}"
+									onclick="return confirmx('确认要将用户<b>[${user.name}]</b>从<b>[${role.name}]</b>岗位中移除吗?', this.href)" class="op-btn op-btn-add"><i class="glyphicon glyphicon-remove"></i> 移除</a>
+							</td></shiro:hasPermission>
+						</tr>
+					</c:forEach>
+					</tbody>
+				</table>
+			</div>
+		</div>
+	</div>
+</div>
+<script type="text/javascript">
+	$("#assignButton").click(function(){
+
+		top.layer.open({
+			type: 2,
+			area: ['90%','90%'],
+			title:"选择用户",
+			skin:"two-btns",
+			maxmin: true, //开启最大化最小化按钮
+			content: "${ctx}/sys/role/usertorole?id=${role.id}&office.id=${role.office.id}" ,
+			btn: ['确定', '关闭'],
+			yes: function(index, layero){
+				var pre_ids = layero.find("iframe")[0].contentWindow.pre_ids;
+				var ids = layero.find("iframe")[0].contentWindow.ids;
+				if(ids[0]==''){
+					ids.shift();
+					pre_ids.shift();
+				}
+				if(pre_ids.sort().toString() == ids.sort().toString()){
+					top.$.jBox.tip("未给岗位【${role.name}】分配新成员!", 'info');
+					return false;
+				};
+				// 执行保存
+				loading('正在提交,请稍等...');
+				var idsArr = "";
+				for (var i = 0; i<ids.length; i++) {
+					idsArr = (idsArr + ids[i]) + (((i + 1)== ids.length) ? '':',');
+				}
+				$('#idsArr').val(idsArr);
+				$('#assignRoleForm').submit();
+				top.layer.close(index);
+			},
+			cancel: function(index){
+			}
+		});
+	});
+</script>
+</body>
+</html>

+ 90 - 0
src/main/webapp/webpage/modules/sys/roleAuth.jsp

@@ -0,0 +1,90 @@
+<%@ 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" %>
+	<script type="text/javascript">
+
+	  	var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+
+		  return false;
+		}
+			
+		$(document).ready(function(){
+			$("#name").focus();
+			validateForm = $("#inputForm").validate({
+			
+				submitHandler: function(form){
+					var ids = [], nodes = tree.getCheckedNodes(true);
+					for(var i=0; i<nodes.length; i++) {
+						ids.push(nodes[i].id);
+					}
+					console.log("----ids:"+ids);
+					$("#menuIds").val(ids);
+					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);
+					}
+				}
+			});
+
+			var setting = {check:{enable:true,nocheckInherit:true},view:{selectedMulti:false},
+					data:{simpleData:{enable:true}},callback:{beforeClick:function(id, node){
+						tree.checkNode(node, !node.checked, true, true);
+						return false;
+					}}};
+			
+			// 用户-菜单
+			var zNodes=[
+					<c:forEach items="${menuList}" var="menu">{id:"${menu.id}", pId:"${not empty menu.parent.id?menu.parent.id:0}", name:"${not empty menu.parent.id?menu.name:'权限列表'}"},
+		            </c:forEach>];
+			// 初始化树结构
+			var tree = $.fn.zTree.init($("#menuTree"), setting, zNodes);
+			// 不选择父节点
+			tree.setting.check.chkboxType = { "Y" : "ps", "N" : "s" };
+			// 默认选择节点
+			var ids = "${role.menuIds}".split(",");
+			for(var i=0; i<ids.length; i++) {
+				var node = tree.getNodeByParam("id", ids[i]);
+				try{tree.checkNode(node, true, false);}catch(e){}
+			}
+			// 默认展开全部节点
+			tree.expandAll(tree);
+		
+		});
+		
+	</script>
+</head>
+<body>
+	<form:form id="inputForm" modelAttribute="role" action="${ctx}/sys/role/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<input  name="office.id" type="hidden" value="${role.office.id}">
+		<input  name="office.name" type="hidden" value="${role.office.name}">
+		<input  name="name" type="hidden" value="${role.name}">
+		<input  name="oldName" type="hidden" value="${role.name}">
+		<input  name="enname" type="hidden" value="${role.enname}">
+		<input  name="oldEnname" type="hidden" value="${role.enname}">
+		<input  name="roleType" type="hidden" value="${role.roleType}">
+		<input  name="sysData" type="hidden" value="${role.sysData}">
+		<input  name="useable" type="hidden" value="${role.useable}">
+		<input  name="dataScope" type="hidden" value="${role.dataScope}">
+		<input  name="remarks" type="hidden" value="${role.remarks}">
+		<div id="menuTree" class="ztree" style="margin-top:3px;float:left;"></div>
+					<form:hidden path="menuIds"/>
+	</form:form>
+</body>
+</html>

+ 344 - 0
src/main/webapp/webpage/modules/sys/roleForm.jsp

@@ -0,0 +1,344 @@
+<%@ 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>
+        .form-horizontal{
+            width: 60%;
+        }
+        .form-group{
+            margin-left: 10%;
+            padding-top:18px;
+        }
+        .lw9 .layui-item .layui-form-label{
+            width: 80px;
+        }
+    </style>
+    <script type="text/javascript">
+        var validateForm;
+        function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                loading('正在提交,请稍等...');
+                $("#inputForm").submit();
+                return true;
+            }
+
+            return false;
+        }
+        $(document).ready(function(){
+            $("#name").focus();
+
+            validateForm= $("#inputForm").validate({
+                rules: {
+                    enname: {remote: "${ctx}/sys/role/checkEnname?oldEnname=" + encodeURIComponent("${role.enname}")}
+                },
+                messages: {
+                    enname: {remote: "英文名已存在"}
+                },
+                submitHandler: function(form){
+                    var ids = [], nodes = tree.getCheckedNodes(true);
+                    for(var i=0; i<nodes.length; i++) {
+                        ids.push(nodes[i].id);
+                    }
+                    console.log("----ids:"+ids);
+                    $("#menuIds").val(ids);
+                    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);
+                    }
+                }
+            });
+
+            //在ready函数中预先调用一次远程校验函数,是一个无奈的回避案。(刘高峰)
+            //否则打开修改对话框,不做任何更改直接submit,这时再触发远程校验,耗时较长,
+            //submit函数在等待远程校验结果然后再提交,而layer对话框不会阻塞会直接关闭同时会销毁表单,因此submit没有提交就被销毁了导致提交表单失败。
+            /*$("#inputForm").validate().element($("#name"));
+            $("#inputForm").validate().element($("#enname"));
+
+            var setting = {check:{enable:true,nocheckInherit:true},view:{selectedMulti:false},
+                data:{simpleData:{enable:true}},callback:{beforeClick:function(id, node){
+                        tree.checkNode(node, !node.checked, true, true);
+                        return false;
+                    }}};
+
+
+            // 用户-机构
+            var zNodes2=[
+                    <c:forEach items="${officeList}" var="office">{id:"${office.id}", pId:"${not empty office.parent?office.parent.id:0}", name:"${office.name}"},
+                </c:forEach>];
+            // 初始化树结构
+            var tree2 = $.fn.zTree.init($("#officeTree"), setting, zNodes2);
+            // 不选择父节点
+            tree2.setting.check.chkboxType = { "Y" : "ps", "N" : "s" };
+            // 默认选择节点
+            var ids2 = "${role.office}";
+            var node = tree2.getNodeByParam("id", ids2);
+            try{tree2.checkNode(node, true, false);}catch(e){}
+            // 默认展开全部节点
+            tree2.expandAll(true);
+            // 刷新(显示/隐藏)机构
+            refreshOfficeTree();
+            $("#dataScope").change(function(){
+                refreshOfficeTree();
+            });*/
+
+            var setting = {check:{enable:true,nocheckInherit:true},view:{selectedMulti:false},
+                data:{simpleData:{enable:true}},callback:{beforeClick:function(id, node){
+                        tree.checkNode(node, !node.checked, true, true);
+                        return false;
+                    }}};
+
+            // 用户-菜单
+            var zNodes=[
+                    <c:forEach items="${menuList}" var="menu">{id:"${menu.id}", pId:"${not empty menu.parent.id?menu.parent.id:0}", name:"${not empty menu.parent.id?menu.name:'权限列表'}"},
+                </c:forEach>];
+            // 初始化树结构
+            var tree = $.fn.zTree.init($("#menuTree"), setting, zNodes);
+            // 不选择父节点
+            tree.setting.check.chkboxType = { "Y" : "ps", "N" : "s" };
+            // 默认选择节点
+            var ids = "${role.menuIds}".split(",");
+            for(var i=0; i<ids.length; i++) {
+                var node = tree.getNodeByParam("id", ids[i]);
+                try{tree.checkNode(node, true, false);}catch(e){}
+            }
+            // 默认展开全部节点
+            tree.expandAll(false);
+        });
+
+        function changeRole(obj) {
+            var count = 0;
+            var total = obj.length;
+            var trlen = $("#roleActivityList tr").length;
+            for(var i=0;i<obj.length;i++){
+                trlen = trlen+i;
+                var str = "";
+                var id = obj[i].id;
+                var tr = $("#"+id);
+                if(tr.length>0){
+                    $("#"+id).show();
+                    count++;
+                }else {
+                    var name = obj[i].name;
+                    var type = obj[i].type;
+                    var typeName = obj[i].typeName;
+                    var remarks = obj[i].remarks;
+                    str += '<tr id="'+id+'">' +
+                        '<td>' +
+                        '<input id="roleActivityList'+trlen+'_id" name="roleActivityList['+trlen+'].id" type="hidden" value="'+id+'"/>'+
+                         '<input id="roleActivityList'+trlen+'_delFlag" name="roleActivityList['+trlen+'].delFlag" type="hidden" value="0"/>'+
+                        name +
+                        '</td>' +
+                        '<td>' +
+                        typeName +
+                        '</td>' +
+                        '<td>' +
+                        remarks +
+                        '</td>' +
+                        '<td>' +
+                        '<a href="javascript:void(0)" onclick="delRowData(this,\'#roleActivityList['+trlen+']\',\''+id+'\')"   class="btn btn-danger btn-xs"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</a>' +
+                        '</td>' +
+                        '</tr>';
+                    $("#roleActivityList").append(str);
+                    count++;
+                }
+            }
+        }
+
+        function delRowData(obj,prefix, id){
+            var roleId = $("#id").val();
+            $("#"+id).hide();
+            var delFlag = $(prefix+"_delFlag");
+            delFlag.val("1");
+            /*$.ajax({
+                type:"post",
+                url:'${ctx}/sys/role/deleteRoleActivity',
+                data:{"roleActivityIds":id,"roleId":roleId},
+                dataType:"json",
+                success:function(data){
+                    if(data.success) {
+                        parent.layer.msg("删除岗位关联的角色成功!",{icon:1});
+                        $(obj).parent().parent().remove();
+                    }else {
+                        parent.layer.msg("删除岗位关联的角色失败!",{icon:2});
+                    }
+                }
+            })*/
+            return;
+        }
+        function refreshOfficeTree(){
+            if($("#dataScope").val()==9){
+                $("#officeTree").show();
+            }else{
+                $("#officeTree").hide();
+            }
+        }
+
+        $(function(){
+            $('#menuTree_1_switch').removeClass('root_close').addClass('root_open');
+            $('#menuTree_1_ul').css('display','block');
+            $('#menuTree_1_switch').click(function () {
+                $('#menuTree_1_switch').toggleClass('root_open').toggleClass('root_close');
+                if($('#menuTree_1_switch').is('.root_open')){
+                    $('#menuTree_1_ul').css('display','block');
+                }else{
+                    $('#menuTree_1_ul').css('display','none');
+                }
+            })
+        })
+    </script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container" style="display:flex;width:90%;margin-left:10%;">
+        <form:form id="inputForm" modelAttribute="role" autocomplete="off" action="${ctx}/sys/role/save" method="post" class="form-horizontal" >
+            <form:hidden path="id"/>
+            <sys:message content="${message}"/>
+
+            <div class="form-group layui-row first lw9">
+                <div class="form-group-label"><h2>岗位信息</h2></div>
+                <div class="layui-item layui-col-sm6" style="display: none">
+                    <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 role.company.id}">
+                                <input readonly="true" name="company.name" htmlEscape="false" class="layui-input form-control" value="${role.company.name}" />
+                                <input readonly="true" type="hidden" name="company.id" htmlEscape="false" class="layui-input form-control" value="${role.company.id}" />
+                            </c:when>
+                            <c:otherwise>
+                                <sys:treeselect id="company" name="company.id" value="${role.company.id}" labelName="company.name" labelValue="${role.company.name}"
+                                                title="公司" url="/sys/office/treeData?type=1" cssClass="form-control required layui-input"/>
+                            </c:otherwise>
+                        </c:choose>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>岗位编号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="number" htmlEscape="false" maxlength="2" class="form-control required number 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 with-icon">
+                        <sys:treeselect id="office" name="office.id" value="${role.office.id}" labelName="office.name" labelValue="${role.office.topCompany}"
+                                        title="机构" url="/sys/office/treeData" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label"><span class="require-item">*</span>岗位名称:</label>
+                    <div class="layui-input-block">
+                        <input id="oldName" name="oldName" type="hidden" value="${role.name}">
+                        <form:input path="name" htmlEscape="false" maxlength="50" 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 with-icon">
+                        <form:select path="dataScope" class="form-control required simple-select">
+                            <form:option value="" label=""/>
+                            <form:options items="${fns:getDictList('sys_data_scope')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <input id="oldEnname" name="oldEnname" type="hidden" value="${role.enname}">
+               <%-- <div class="layui-item layui-col-sm12">
+                    <label class="layui-form-label">岗位类型:</label>
+                    <div class="layui-input-block with-icon">
+                        <form:select path="roleType" class="form-control required simple-select">
+                            <form:option value="assignment">任务分配</form:option>
+                            <form:option value="security-role">管理岗位</form:option>
+                            <form:option value="user">普通岗位</form:option>
+                        </form:select>
+                        <span class="help-inline" title="activiti有3种预定义的组类型:security-role、assignment、user 如果使用Activiti Explorer,需要security-role才能看到manage页签,需要assignment才能claim任务">
+						工作流组用户组类型(任务分配:assignment、管理岗位:security-role、普通岗位:user)</span>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12">
+                    <label class="layui-form-label">是否系统数据:</label>
+                    <div class="layui-input-block with-icon">
+                        <form:select path="sysData" class="form-control simple-select">
+                            <form:options items="${fns:getDictList('yes_no')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                        <span class="help-inline">“是”代表此数据只有超级管理员能进行修改,“否”则表示拥有岗位修改人员的权限都能进行修改</span>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12">
+                    <label class="layui-form-label">是否可用:</label>
+                    <div class="layui-input-block with-icon">
+                        <form:select path="useable" class="form-control simple-select">
+                            <form:options items="${fns:getDictList('yes_no')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                        <span class="help-inline">“是”代表此数据可用,“否”则表示此数据不可用</span>
+                    </div>
+                </div>--%>
+                <div class="layui-item layui-col-sm12 with-textarea">
+                    <label class="layui-form-label">备注:</label>
+                    <div class="layui-input-block">
+                        <form:textarea style="resize:none;" path="remarks" htmlEscape="false" rows="4" maxlength="200" 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-sm12">
+                    <div class="layui-input-block with-icon" style="margin-left:0">
+                        <sys:treeselectroles id="roleActivityIds" name="roleActivityIds" value="${role.roleActivityIds}" labelName="roleActivityNames" labelValue="${role.roleActivityNames}"
+                                             title="选择角色" url="sys/office/treeDataRoleActivitys" checked="true" cssClass="form-control required" allowClear="true" notAllowSelectParent="true"/>
+                        <table id="contentTable" class="table details table-bordered table-condensed">
+                            <thead>
+                            <tr>
+                                <th  class="sort-column name">角色名称</th>
+                                <th  class="sort-column type">角色类型</th>
+                                <th  class="sort-column remarks">备注信息</th>
+                                <th width="100">操作</th>
+                            </tr>
+                            </thead>
+                            <tbody id="roleActivityList">
+                            <c:forEach items="${role.roleActivityList}" var="roleActivity" varStatus="index">
+                                <tr id="${roleActivity.id}">
+                                    <td >
+                                        <input id="roleActivityList${index.index}_id" name="roleActivityList[${index.index}].id" type="hidden" value="${roleActivity.id}"/>
+                                        <input id="roleActivityList${index.index}_delFlag" name="roleActivityList[${index.index}].delFlag" type="hidden" value="0"/>
+                                            ${roleActivity.name}
+                                    </td>
+                                    <td>
+                                            ${fns:getDictLabel(roleActivity.type, 'sys_role_type', '')}
+                                    </td>
+                                    <td>
+                                            ${roleActivity.remarks}
+                                    </td>
+                                    <td>
+                                        <a href="javascript:void(0)" onclick="delRowData(this, '#roleActivityList${index.index}','${roleActivity.id}')"   class="btn btn-danger btn-xs"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</a>
+                                    </td>
+                                </tr>
+                            </c:forEach>
+                            </tbody>
+                        </table>
+                    <%-- <sys:treeselectRole id="roleActivityIds" name="roleActivityIds" value="${role.roleActivityIds}" labelName="roleActivityNames" labelValue="${role.roleActivityNames}"
+                                            title="选择角色" url="/sys/office/treeDataRoleActivity?type=3&isAll=false&role=${role.id}" cssClass="form-control layui-input" notAllowSelectParent="true" checked="true"/>
+                        <label id="roleIdList-error" class="error" for="roleActivityList"></label>--%>
+                    </div>
+                </div>
+            </div>
+
+            <form:hidden path="menuIds"/>
+        </form:form>
+        <div class="form-group layui-row ">
+            <div class="form-group-label"><h2>关联菜单</h2></div>
+            <div id="menuTree" class="ztree" style="margin-top:3px;float:left;"></div>
+        </div>
+    </div>
+</div>
+</body>
+</html>

+ 150 - 0
src/main/webapp/webpage/modules/sys/roleIndex.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"/>
+	<%@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}/sys/role/";
+        }
+	</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}/sys/role/list" 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;
+                var look = treeNode.look;
+                $('#userContent').attr("src","${ctx}/sys/role/list?office.id="+id+"&look="+look+"&office.name="+ encodeURI(treeNode.name));
+            }
+            }
+            ,view:{
+                showLine: false,
+                showIcon: false,
+                addDiyDom: addDiyDom
+            }
+        };
+
+        function refreshTree(){
+            $.getJSON("${ctx}/sys/office/treeDataRole?"+ Math.random(),function(data){
+                $.fn.zTree.init($("#ztree"), setting, data).expandAll(true);
+                closeSubChilds();
+            });
+        }
+        refreshTree();
+
+        function closeSubChilds() {
+            var secondLevel = $('#ztree').children().children().eq(1).children();
+            var slists = secondLevel.find('a.level1').find('.level1');
+            var arr = [];
+            for (var i = 0, length = slists.length; i < length; i++) {
+                arr.push(slists[i]);
+                $(arr[i].parentNode.nextSibling).css('display','none');
+                arr[i].click(function(){
+                    arr[i].removeClass("noline_close").addClass('noline_open');
+                })
+            }
+            secondLevel.find('a.level1').children().eq(1).removeClass("noline_open").addClass('noline_close');
+        }
+        /*window.onload = function() {
+            <%--$.getJSON("${ctx}/sys/office/treeDataRole?"+ Math.random(),function(data){--%>
+                <%--$.fn.zTree.init($("#ztree"), setting, data).expandAll(true);--%>
+            <%--});--%>
+
+            var navg = window.navigator.userAgent;
+            if(navg.indexOf('MSIE')!==-1){
+                // var isFlag = true;
+                // function ref(isFlag) {
+					// isFlag = false;
+                //     window.refresh();
+                //     return isFlag;
+                // }
+                // ref(isFlag);
+                // (function (){
+                //     window.refresh();
+                //     console.log('fre')
+                // })()
+            }
+            var secondLevel = $('#ztree').children().children().eq(1).children();
+            var slists = secondLevel.find('a.level1').find('.level1');
+            var arr = [];
+            for (var i = 0, length = slists.length; i < length; i++) {
+                arr.push(slists[i]);
+                $(arr[i].parentNode.nextSibling).css('display','none');
+                arr[i].click(function(){
+                    arr[i].removeClass("noline_close").addClass('noline_open');
+                })
+            }
+            secondLevel.find('a.level1').children().eq(1).removeClass("noline_open").addClass('noline_close');
+
+        }*/
+
+
+
+        // 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>

+ 188 - 0
src/main/webapp/webpage/modules/sys/roleList.jsp

@@ -0,0 +1,188 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>岗位管理</title>
+	<meta name="decorator" content="default"/>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+
+	</style>
+	<script type="text/javascript">
+        // 确认对话框
+        function confirmx(mess, href){
+            top.layer.confirm(mess, {icon: 3, title:'系统提示'}, function(index){
+                //do something
+                if (typeof href == 'function') {
+                    href();
+                }else{
+                    resetTip(); //loading();
+                    $.ajax({
+                        url:href,
+                        data:$('#loginForm').serialize(),
+                        type:"post",
+                        success:function(data){
+                            if(data.success){
+                                parent.layer.msg(data.msg,{icon:1});
+                            }else {
+                                parent.layer.msg(data.msg,{icon:2});
+                            }
+                            parent.refreshTree();
+                            location = "${ctx}/sys/role/list";
+                        }
+                    });
+                }
+                top.layer.close(index);
+            });
+            return false;
+        }
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="contentShadow shadowB layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="role" action="${ctx}/sys/role/list" method="post" class="form-inline">
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+
+					<div class="commonQuery">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">岗位名称:</label>
+							<div class="layui-input-block with-icon">
+								<form:input path="name" value="${role.name}"  htmlEscape="false" maxlength="64"  class=" form-control layui-input"/>
+							</div>
+						</div>
+
+						<div class="layui-item athird fr">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+
+		<div class="contentShadow shadowT full-width fl">
+			<div class="layui-form contentDetails">
+				<div class="nav-btns">
+					<shiro:hasPermission name="sys:role:add">
+						<table:addRow url="${ctx}/sys/role/form?office=" title="岗位"></table:addRow><!-- 增加按钮 -->
+					</shiro:hasPermission>
+					<%--<shiro:hasPermission name="sys:role:edit">
+						<table:editRow url="${ctx}/sys/role/form" id="contentTable"  title="岗位"></table:editRow><!-- 编辑按钮 -->
+					</shiro:hasPermission>--%>
+					<%--<shiro:hasPermission name="sys:role:del">
+						<table:delRow url="${ctx}/sys/role/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+					</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>
+<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',  width:40,title: '序号'}
+                ,{field:'number',align:'center', title: '岗位编码', width:80,templet:function(d){
+                        var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看岗位', '${ctx}/sys/role/form?id=" + d.id + "&office.id=" + d.officeId + "&office.name=" + encodeURI(d.office) + "&view=view','95%','95%')\">" +
+                            "<span title=" + d.number + ">" + d.number + "</span></a>";
+                        return xml;
+                    }}
+                ,{field:'name',align:'center', title: '岗位名称', minWidth:100,templet:function(d){
+                        return "<span title='"+ d.name +"'>" + d.name + "</span>";
+                    }}
+                ,{field:'company', align:'center',title: '归属公司', minWidth :80,templet:function(d){
+                        return "<span title='"+ d.company +"'>" + d.company + "</span>";
+                    }}
+                ,{field:'office', align:'center',title: '归属部门', minWidth:80,templet:function(d){
+                        return "<span title='"+ d.office +"'>" + d.office + "</span>";
+                    }}
+                ,{field:'dataScope', align:'center',title: '数据范围',width:160}
+                ,{field:'op',align:'center',title:"操作",width:200,templet:function(d){
+                        ////对操作进行初始化
+                        var xml = "";
+                        if(d.candelete1 != undefined && d.candelete1 == "1")
+                            xml +="<a href=\"javascript:void(0)\" onclick=\"openDialog('修改岗位', '${ctx}/sys/role/form?id="+ d.id + "&office="+ d.officeId+"','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+                        if(d.candelete2 != undefined && d.candelete2 == "1")
+                            xml +="<a href=\"${ctx}/sys/role/deleteAlls?ids=" + d.id + "\" onclick=\"return confirmx('确认要删除该岗位吗?', this.href)\"   class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 删除</a>";
+                        if(d.candelete3 != undefined && d.candelete3 == "1")
+                            /*xml +="<a href=\"javascript:void(0)\" onclick=\"openDialog('权限设置', '${ctx}/sys/role/auth?id="+ d.id + "&office="+ d.officeId+"','350px','500px')\" class=\"op-btn op-btn-submit\" ><i class=\"fa fa-edit\"></i> 权限设置</a>";
+                            xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogView('分配用户', '${ctx}/sys/role/assign?id="+ d.id + "&office="+ d.officeId+"&office.name="+encodeURI(d.office)+"','95%','95%')\" class=\"op-btn  op-btn-add\" ><i class=\"glyphicon glyphicon-plus\"></i> 分配用户</a>";
+                       		 if(d.candelete4 != undefined && d.candelete4 == "1")
+                            xml +="<a href=\"javascript:void(0)\" onclick=\"openDialog('关联工作流角色', '${ctx}/sys/role/form?id="+ d.id + "&view=copy&office="+ d.officeId+"&office.name="+encodeURI(d.office)+"','80%','500px')\" class=\"op-btn op-btn-revert\" ><i class=\"fa fa-refresh\"></i> 关联角色</a>";
+                        */
+                            xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogView('分配用户', '${ctx}/sys/role/assign?id="+ d.id + "&office="+ d.officeId+"&office.name="+encodeURI(d.office)+"','95%','95%')\" class=\"op-btn  op-btn-add\" ><i class=\"glyphicon glyphicon-plus\"></i> 分配用户</a>";
+
+                        return xml;
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="role" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${role.id}"
+                    ,"number":"${role.number}"
+                    ,"name":"${role.name}"
+                    ,"company":"${role.company.name}"
+                    ,"office":"${role.office.topCompany}"
+                    ,"officeId":"${role.office.id}"
+                    ,"dataScope":"${fns:getDictLabel(role.dataScope, 'sys_data_scope', '无')}"
+                    <shiro:hasPermission name="sys:role:edit">
+                    ,"candelete1":"1"
+                    </shiro:hasPermission>
+                    <shiro:hasPermission name="sys:role:del">
+                    ,"candelete2":"1"
+                    </shiro:hasPermission>
+                    <shiro:hasPermission name="sys:role:assign">
+                    ,"candelete3":"1"
+                    </shiro:hasPermission>
+                    <c:if test="${fns:getUser().comId ne '1'}">
+                    ,"candelete4":"1"
+                    </c:if>
+
+                }
+                </c:forEach>
+                </c:if>
+            ]
+            // ,even: true
+            // ,height: 315
+        });
+    })
+    resizeListTable();
+</script>
+<script>
+    $("a").on("click",addLinkVisied);
+    resizeListWindow3();
+    $(window).resize(function(){
+        resizeListWindow3();
+    });
+</script>
+</body>
+</html>

+ 76 - 0
src/main/webapp/webpage/modules/sys/roleRelation.jsp

@@ -0,0 +1,76 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>关联角色</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+            //初始化加载
+            var processKey = "${workActivityMenu.processKey}";
+            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(processKey){
+                showlink(processKey);
+            }
+		});
+
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+	<form:form id="inputForm" modelAttribute="role" action="${ctx}/sys/role/relation" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<form:hidden path="office.id"/>
+
+		<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">岗位名称:</label>
+				<div class="layui-input-block">
+					<input readonly="true" htmlEscape="false" class="layui-input form-control" value="${role.name}" />
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm12">
+				<label class="layui-form-label">归属部门:</label>
+				<div class="layui-input-block">
+					<input readonly="true" htmlEscape="false" class="layui-input form-control" value="${role.office.name}" />
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm12">
+				<label class="layui-form-label">选择角色:</label>
+				<div class="layui-input-block with-icon">
+					<sys:treeselectRole id="roleActivityIds" name="roleActivityIds" value="${role.roleActivityIds}" labelName="roleActivityNames" labelValue="${role.roleActivityNames}"
+										title="选择角色" url="/sys/office/treeDataRoleActivity?type=3&isAll=false&role=${role.id}" cssClass="form-control layui-input" notAllowSelectParent="true" checked="true"/>
+					<label id="roleIdList-error" class="error" for="roleActivityList"></label>
+				</div>
+			</div>
+		</div>
+	</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 305 - 0
src/main/webapp/webpage/modules/sys/roleUserList.jsp

@@ -0,0 +1,305 @@
+<%@ 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">
+		img {
+			max-width: 30px;
+			max-height: 30px;
+		}
+	</style>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+
+        function openDialogreUser(title,url,width,height,target){
+
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            top.layer.open({
+                type: 2,
+                area: ['90%','90%'],
+                title:title,
+                skin:"two-btns",
+                name:'friend',
+                content: encodeURI("${ctx}/sys/office/gridSelectUser?url=${ctx}/sys/office/gridSelectUser&isAll=true&type=4&isSingle=false") ,
+                btn: ['确定', '关闭'],
+                yes: function(index, layero){
+                    var iframeWin = layero.find('iframe')[0].contentWindow; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var item = iframeWin.getSelectedItem();
+                    if(item == "-1"){
+                        return;
+                    }
+                    var userIds; ;
+                    if(false){//单选
+                        userIds = item.userId;
+                        //selectUserInfo(item.userId);
+                    }else{//多选
+                        var ids = [], names = [];
+                        for (var i=0;i<item.length;i++){
+                            ids.push(item[i].userId);
+                        }
+                        var arr=ids.join(",").replace(/u_/ig,"");
+                        userIds = arr;
+                        //setUserInfo(arr);
+                    }
+                    console.log(userIds);
+                    console.log($("#id").val());
+                    $.ajax({
+                        type:"post",
+                        url:'${ctx}/sys/role/assignRoleUsers',
+                        data:{"ids":userIds,"roleId":$("#id").val()},
+                        dataType:"json",
+                        success:function(data){
+                            if(data.success) {
+                                parent.layer.msg(data.msg,{icon:1});
+                                search();
+                            }else {
+                                parent.layer.msg(data.msg,{icon:2});
+                            }
+                        },
+                        error:function () {
+                            parent.layer.msg("关联用户岗位失败!!!",{icon:2});
+                        }
+                    })
+                    top.layer.close(index);//关闭对话框。
+
+                },
+                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="role" action="${ctx}/sys/role/list?look=true" method="post" class="form-inline">
+					<form:hidden path="id"/>
+                    <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="workStaffBasicInfoName" htmlEscape="false" maxlength="20"  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="no" htmlEscape="false" maxlength="20"  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">
+								<form:select path="gender" class="form-control simple-select">
+									<form:option value="" label=""/>
+									<form:option value="1" label="男"/>
+									<form:option value="2" label="女"/>
+								</form:select>
+							</div>
+						</div>
+                        <div class="layui-item query athird">
+                            <label class="layui-form-label">部门:</label>
+                            <div class="layui-input-block with-icon">
+                                <sys:treeselect id="workStaffBasicInfoOfficeId" name="workStaffBasicInfoOffice.id" value="${role.workStaffBasicInfoOffice.id}" labelName="workStaffBasicInfoOffice.name" labelValue="${role.workStaffBasicInfoOffice.name}"
+                                                title="部门" url="/sys/office/treeDataAll?type=2" 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:treeselectJob id="jobGrade" name="jobGradeId" value="${role.jobGradeId}" labelName="jobGradeName" labelValue="${role.jobGradeName}"
+												   title="职级类型" url="/workjobgrade/workJobGrade/treeData"  cssClass="form-control layui-input required" allowClear="true" notAllowSelectParent="true"/>
+							</div>
+						</div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="contentShadow shadowT full-width fl">
+			<div class="layui-form contentDetails">
+				<div class="nav-btns">
+					<a href="javascript:void(0)" onclick="openDialogreUser('选择用户', '${ctx}/sys/office/gridSelectUser','90%','90%')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i>&nbsp;选择</a>
+
+					<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 class="form-group-label"><h2>关联岗位</h2></div>
+				<table class="oa-table layui-table" id="contentTable2"></table>--%>
+				<!-- 分页代码 -->
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+
+	</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},
+                // {checkbox: true, fixed: true},
+                {field:'index',align:'center',  width:40,title: '序号'}
+                ,{field:'no',align:'center', title: '工号', minWidth:80,templet:function(d){
+                        var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('关联岗位', '${ctx}/sys/role/form?userId=" + d.userId + "&view=user','95%','95%')\">" +
+                            "<span title=" + d.no + ">" + d.no + "</span></a>";
+                        return xml;
+                    }}
+                ,{field:'name',align:'center', title: '姓名', minWidth:120,templet:function(d){
+                        return "<span title='"+ d.name +"'>" + d.name + "</span>";
+                    }}
+                ,{field:'office', align:'center',title: '部门', minWidth:120,templet:function(d){
+                        return "<span title='"+ d.office +"'>" + d.office + "</span>";
+                    }}
+                ,{field:'jobGrade', align:'center',title: '职级', width:200,templet:function(d){
+                        return "<span title='"+ d.jobGrade +"'>" + d.jobGrade + "</span>";
+                    }}
+                ,{field:'op',align:'center',title:"操作",minWidth:160,templet:function(d){
+                        ////对操作进行初始化
+                        var xml = "";
+						if(d.candelete2 != undefined && d.candelete2 == "1")
+                            xml +="<a href=\"${ctx}/sys/role/outrole?view=toUser&userId=" + d.userId + "&roleId=" + d.roleId + "&office=" + d.officeId + "\" 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="workStaffBasicInfo" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${workStaffBasicInfo.id}"
+                    ,"roleId":"${role.id}"
+                    ,"userId":"${workStaffBasicInfo.userId}"
+                    ,"no":"${workStaffBasicInfo.no}"
+                    ,"name":"${workStaffBasicInfo.name}"
+                    ,"gender":"<c:if test="${workStaffBasicInfo.gender==1}">男</c:if><c:if test="${workStaffBasicInfo.gender==2}">女</c:if>"
+                    ,"office":"${workStaffBasicInfo.office.topCompany}"
+                    ,"officeId":"${workStaffBasicInfo.office.id}"
+                    ,"jobGrade":"${workStaffBasicInfo.jobGrade.name}"
+                    <shiro:hasPermission name="sys:user:edit">
+                    ,"candelete1":"1"
+                    </shiro:hasPermission>
+                    <shiro:hasPermission name="sys:user:del">
+					<c:if test="${fns:getUser().comId ne '1'}">
+                    ,"candelete2":"1"
+                    </c:if>
+                    </shiro:hasPermission>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+            // ,even: true
+            // ,height: 315
+        });
+    })
+
+    /*layui.use('table', function(){
+        layui.table.render({
+            limit: '0'
+            ,elem: '#contentTable2'
+            ,page: false
+            ,cols: [[
+                // {checkbox: true, fixed: true},
+                {field:'index',align:'center',  width:40,title: '序号'}
+                ,{field:'name2',align:'center', title: '岗位编码', width:80,templet:function(d){
+                        var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看岗位', '${ctx}/sys/role/form?id=" + d.id + "&office.id=" + d.officeId + "&office.name=" + encodeURI(d.office) + "&view=view','95%','95%')\">" +
+                            "<span title=" + d.name2 + ">" + d.name2 + "</span></a>";
+                        return xml;
+                    }}
+                ,{field:'name',align:'center', title: '岗位名称', minWidth:100,templet:function(d){
+                        return "<span title='"+ d.name +"'>" + d.name + "</span>";
+                    }}
+                ,{field:'company', align:'center',title: '归属公司', minWidth :80,templet:function(d){
+                        return "<span title='"+ d.company +"'>" + d.company + "</span>";
+                    }}
+                ,{field:'office', align:'center',title: '归属部门', minWidth:80,templet:function(d){
+                        return "<span title='"+ d.office +"'>" + d.office + "</span>";
+                    }}
+                ,{field:'dataScope', align:'center',title: '数据范围',width:160}
+                ,{field:'op',align:'center',title:"操作",width:200,templet:function(d){
+                        ////对操作进行初始化
+                        var xml = "";
+                        if(d.candelete2 != undefined && d.candelete2 == "1")
+                            xml +="<a href=\"${ctx}/sys/role/deleteAll?ids=" + 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 page2.list}">
+                <c:forEach items="${page2.list}" var="role" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${role.id}"
+                    ,"name2":"${role.name}"
+                    ,"name":"${role.name}"
+                    ,"company":"${role.company.name}"
+                    ,"office":"${role.office.name}"
+                    ,"officeId":"${role.office.id}"
+                    ,"dataScope":"${fns:getDictLabel(role.dataScope, 'sys_data_scope', '无')}"
+                    <shiro:hasPermission name="sys:role:del">
+                    ,"candelete2":"1"
+                    </shiro:hasPermission>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+            // ,even: true
+            // ,height: 315
+        });
+    })*/
+    resizeListTable(175);
+</script>
+<script>
+    $("a").on("click",addLinkVisied);
+
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 203 - 0
src/main/webapp/webpage/modules/sys/roleView.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"/>
+	<%@include file="/webpage/include/treeview.jsp" %>
+	<style>
+		.form-group{
+			padding-top:18px;
+		}
+        .lw9 .layui-item .layui-form-label{
+            width:80px;
+        }
+	</style>
+	<script type="text/javascript">
+        var validateForm;
+        function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                loading('正在提交,请稍等...');
+                $("#inputForm").submit();
+                return true;
+            }
+
+            return false;
+        }
+
+        $(document).ready(function(){
+            $("#name").focus();
+
+            validateForm= $("#inputForm").validate({
+                rules: {
+                    enname: {remote: "${ctx}/sys/role/checkEnname?oldEnname=" + encodeURIComponent("${role.enname}")}
+                },
+                messages: {
+                    enname: {remote: "英文名已存在"}
+                },
+                submitHandler: function(form){
+                    var ids = [], nodes = tree.getCheckedNodes(true);
+                    for(var i=0; i<nodes.length; i++) {
+                        ids.push(nodes[i].id);
+                    }
+                    console.log("----ids:"+ids);
+                    $("#menuIds").val(ids);
+                    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);
+                    }
+                }
+            });
+            var setting = {check:{enable:true,nocheckInherit:true},view:{selectedMulti:false},
+                data:{simpleData:{enable:true}},callback:{beforeClick:function(id, node){
+                        tree.checkNode(node, !node.checked, true, true);
+                        return false;
+                    }}};
+
+            // 用户-菜单
+            var zNodes=[
+                    <c:forEach items="${menuList}" var="menu">{id:"${menu.id}", pId:"${not empty menu.parent.id?menu.parent.id:0}", name:"${not empty menu.parent.id?menu.name:'权限列表'}"},
+                </c:forEach>];
+            // 初始化树结构
+            var tree = $.fn.zTree.init($("#menuTree"), setting, zNodes);
+            // 不选择父节点
+            tree.setting.check.chkboxType = { "Y" : "ps", "N" : "s" };
+            // 默认选择节点
+            var ids = "${role.menuIds}".split(",");
+            for(var i=0; i<ids.length; i++) {
+                var node = tree.getNodeByParam("id", ids[i]);
+                try{tree.checkNode(node, true, false);}catch(e){}
+            }
+            // 默认展开全部节点
+            tree.expandAll(false);
+        });
+        $(function(){
+            $('#menuTree_1_switch').removeClass('root_close').addClass('root_open');
+            $('#menuTree_1_ul').css('display','block');
+            $('#menuTree_1_switch').click(function () {
+                $('#menuTree_1_switch').toggleClass('root_open').toggleClass('root_close');
+                if($('#menuTree_1_switch').is('.root_open')){
+                    $('#menuTree_1_ul').css('display','block');
+                }else{
+                    $('#menuTree_1_ul').css('display','none');
+                }
+            })
+        })
+	</script>
+</head>
+<body>
+<div class="single-form" style="display:flex;">
+	<div class="container view-form" style="width:90%;display:flex;">
+		<div class="form-group layui-row first lw9" style="width:70%;">
+			<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 readonly="true" htmlEscape="false" class="layui-input form-control" value="${role.company.name}" />
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">归属机构:</label>
+				<div class="layui-input-block">
+					<input readonly="true" htmlEscape="false" class="layui-input form-control" value="${role.office.name}" />
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">岗位名称:</label>
+				<div class="layui-input-block">
+					<input readonly="true" htmlEscape="false" class="layui-input form-control" value="${role.name}" />
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">数据范围:</label>
+				<div class="layui-input-block">
+					<input readonly="true" htmlEscape="false" class="layui-input form-control" value="${fns:getDictLabel(role.dataScope, 'sys_data_scope', '')}" />
+				</div>
+			</div>
+			<%--<div class="layui-item layui-col-sm12">
+				<label class="layui-form-label">岗位类型:</label>
+				<div class="layui-input-block">
+					<input readonly="true" htmlEscape="false" class="layui-input form-control" value="<c:choose><c:when test="${role.roleType eq 'assignment'}">任务分配</c:when><c:when test="${role.roleType eq 'security-role'}">管理岗位</c:when><c:otherwise>普通岗位</c:otherwise></c:choose>" />
+					<span class="help-inline" title="activiti有3种预定义的组类型:security-role、assignment、user 如果使用Activiti Explorer,需要security-role才能看到manage页签,需要assignment才能claim任务">
+						工作流组用户组类型(任务分配:assignment、管理岗位:security-role、普通岗位:user)</span>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm12">
+				<label class="layui-form-label">是否系统数据:</label>
+				<div class="layui-input-block">
+					<input readonly="true" htmlEscape="false" class="layui-input form-control" value="${fns:getDictLabel(role.sysData, 'yes_no', '')}" />
+					<span class="help-inline">“是”代表此数据只有超级管理员能进行修改,“否”则表示拥有岗位修改人员的权限都能进行修改</span>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm12">
+				<label class="layui-form-label">是否可用:</label>
+				<div class="layui-input-block">
+					<input readonly="true" htmlEscape="false" class="layui-input form-control" value="${fns:getDictLabel(role.useable, 'yes_no', '')}" />
+					<span class="help-inline">“是”代表此数据可用,“否”则表示此数据不可用</span>
+				</div>
+			</div>--%>
+			<div class="layui-item layui-col-sm12 with-textarea">
+				<label class="layui-form-label">备注:</label>
+				<div class="layui-input-block">
+					<textarea readonly="true" path="remarks" htmlEscape="false" rows="4" maxlength="200" class="form-control ">${role.remarks}</textarea>
+				</div>
+			</div>
+			<div class="form-group layui-row ">
+				<div class="form-group-label"><h2>关联角色</h2></div>
+				<div class="layui-item layui-col-sm12">
+					<div class="layui-input-block with-icon" style="margin-left:0;">
+						<%--<c:if test="${not empty role.id}">
+							<sys:treeselectroles id="roleActivityIds" name="roleActivityIds" value="${role.roleActivityIds}" labelName="roleActivityNames" labelValue="${role.roleActivityNames}"
+												 title="选择角色" url="sys/office/treeDataRoleActivitys" checked="true" cssClass="form-control required" allowClear="true" notAllowSelectParent="true"/>
+						</c:if>--%>
+						<table id="contentTable" class="table details table-bordered table-condensed">
+							<thead>
+							<tr>
+								<th  class="sort-column name">角色名称</th>
+								<th  class="sort-column type">角色类型</th>
+								<th  class="sort-column remarks">备注信息</th>
+								<th width="100">操作</th>
+							</tr>
+							</thead>
+							<tbody id="roleActivityList">
+							<c:forEach items="${role.roleActivityList}" var="roleActivity" varStatus="index">
+								<tr id="${roleActivity.id}">
+									<td >
+											${roleActivity.name}
+									</td>
+									<td>
+											${fns:getDictLabel(roleActivity.type, 'sys_role_type', '')}
+									</td>
+									<td>
+											${roleActivity.remarks}
+									</td>
+									<td>
+										<a href="javascript:void(0)" onclick="delRowData(this,'${roleActivity.id}')"   class="btn btn-danger btn-xs"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</a>
+									</td>
+								</tr>
+							</c:forEach>
+							</tbody>
+						</table>
+						<%-- <sys:treeselectRole id="roleActivityIds" name="roleActivityIds" value="${role.roleActivityIds}" labelName="roleActivityNames" labelValue="${role.roleActivityNames}"
+                                                title="选择角色" url="/sys/office/treeDataRoleActivity?type=3&isAll=false&role=${role.id}" cssClass="form-control layui-input" notAllowSelectParent="true" checked="true"/>
+                            <label id="roleIdList-error" class="error" for="roleActivityList"></label>--%>
+					</div>
+				</div>
+			</div>
+		</div>
+        <div class="form-group layui-row " style="margin-left:10%;width:20%;">
+            <div class="form-group-label"><h2>关联菜单</h2></div>
+            <div id="menuTree" class="ztree" style="margin-top:3px;float:left;"></div>
+        </div>
+	</div>
+
+</div>
+</body>
+</html>

+ 40 - 0
src/main/webapp/webpage/modules/sys/selectRole.jsp

@@ -0,0 +1,40 @@
+<%@ 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 formData = function () {
+	  $("form :radio:checked").each(function(i,dom){
+		  return $(this).val();
+       
+      });
+  }
+</script>
+</head>
+<body style="overflow-x:hidden">
+	<form:form id="roleForm" modelAttribute="Role" action="${ctx}/sys/user/selectRole" method="post"
+		class="form-horizontal form-group">
+			<div class="form-group">
+         	<label style="width:35%;text-align:center" class="control-label">公司名称:</label>  	
+         	<label style="width:35%;text-align:center" class="control-label">岗位名称:</label>  
+         	<label style="width:25%;text-align:center" class="control-label">选择:</label> 
+       		</div>
+			<c:forEach items="${allRoles}" var="item" varStatus="status">
+			<div style="margin-left:5px;width:100%" class="form-group">
+				<label style="width:35%;text-align:center" class="control-label">
+				<input type="text" style="width:100%"  name="company" value="${item.company.name}" onmouseover="this.title=this.value" readonly>
+				</label>
+				<label  style="width:35%;text-align:center" class="control-label">
+				<input type="text" style="width:100%" name="name" value="${item.name}" onmouseover="this.title=this.value" readonly>
+				</label>
+					<label  style="width:25%" class="pull-right radio-inline"> 
+					<input style="width:99%" type="radio" value="${item.id}" name="id" onclick="document.roleForm.remarks='${item.company.id}'"/>
+					</label>
+			</div>
+			</c:forEach>
+	</form:form>
+</body>
+
+</html>

+ 128 - 0
src/main/webapp/webpage/modules/sys/selectUserToRole.jsp

@@ -0,0 +1,128 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>分配岗位</title>
+	<meta name="decorator" content="blank"/>
+	<%@include file="/webpage/include/treeview.jsp" %>
+	<script type="text/javascript">
+	
+		var officeTree;
+		var selectedTree;//zTree已选择对象
+		
+		// 初始化
+		$(document).ready(function(){
+			officeTree = $.fn.zTree.init($("#officeTree"), setting, officeNodes);
+			selectedTree = $.fn.zTree.init($("#selectedTree"), setting, selectedNodes);
+		});
+
+		var setting = {view: {selectedMulti:false,nameIsHTML:true,showTitle:false,dblClickExpand:false},
+				data: {simpleData: {enable: true}},
+				callback: {onClick: treeOnClick}};
+		
+		var officeNodes=[
+	            <c:forEach items="${officeList}" var="office">
+	            {id:"${office.id}",
+	             pId:"${not empty office.parent?office.parent.id:0}", 
+	             name:"${office.name}"},
+	            </c:forEach>];
+	
+		var pre_selectedNodes =[
+   		        <c:forEach items="${userList}" var="user">
+   		        {id:"${user.id}",
+   		         pId:"0",
+   		         name:"<font color='red' style='font-weight:bold;'>${user.name}</font>"},
+   		        </c:forEach>];
+		
+		var selectedNodes =[
+		        <c:forEach items="${userList}" var="user">
+		        {id:"${user.id}",
+		         pId:"0",
+		         name:"<font color='red' style='font-weight:bold;'>${user.name}</font>"},
+		        </c:forEach>];
+		
+		var pre_ids = "${selectIds}".split(",");
+		var ids = "${selectIds}".split(",");
+		//点击选择项回调
+		function treeOnClick(event, treeId, treeNode, clickFlag){
+			$.fn.zTree.getZTreeObj(treeId).expandNode(treeNode);
+			if("officeTree"==treeId){
+                officeId = treeNode.id;
+				$.get("${ctx}/sys/role/users?officeId=" + treeNode.id, function(userNodes){
+					$.fn.zTree.init($("#userTree"), setting, userNodes);
+				});
+			}
+			if("userTree"==treeId){
+				$.get("${ctx}/sys/role/checkUserCompany?userId=" + treeNode.id+"&officeId=${role.office.id}", function(data){
+					if(data == "false"){
+				//alert(treeNode.id + " | " + ids);
+				//alert(typeof ids[0] + " | " +  typeof treeNode.id);
+						if($.inArray(String(treeNode.id), ids)<0){
+							selectedTree.addNodes(null, treeNode);
+							ids.push(String(treeNode.id));
+						}
+					}else{
+						$.jBox.tip("该用户已经拥有当前岗位!", 'info');
+					}
+				});
+			};
+			if("selectedTree"==treeId){
+				if($.inArray(String(treeNode.id), pre_ids)<0){
+					selectedTree.removeNode(treeNode);
+					ids.splice($.inArray(String(treeNode.id), ids), 1);
+				}else{
+					$.jBox.tip("岗位原有成员不能清除!", 'info');
+				}
+			}
+		};
+		function clearAssign(){
+			var submit = function (v, h, f) {
+			    if (v == 'ok'){
+					var tips="";
+					if(pre_ids.sort().toString() == ids.sort().toString()){
+						tips = "未给岗位【${role.name}】分配新成员!";
+					}else{
+						tips = "已选人员清除成功!";
+					}
+					ids=pre_ids.slice(0);
+					selectedNodes=pre_selectedNodes;
+					$.fn.zTree.init($("#selectedTree"), setting, selectedNodes);
+			    	top.$.jBox.tip(tips, 'info');
+			    } else if (v == 'cancel'){
+			    	// 取消
+			    	top.$.jBox.tip("取消清除操作!", 'info');
+			    }
+			    return true;
+			};
+			tips="确定清除岗位【${role.name}】下的已选人员?";
+			top.$.jBox.confirm(tips, "清除确认", submit);
+		};
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+	<div id="assignRole" class="row" style="margin-top: 16px;">
+		<div class="col-sm-4" style="border-right: 1px solid #A8A8A8;padding: 0;margin-left: -1px;">
+			<div style="padding: 0 16px 16px 16px;" >
+				<p>所在部门:</p>
+				<div id="officeTree" class="ztree"></div>
+			</div>
+		</div>
+		<div class="col-sm-4" style="padding: 0;">
+			<div style="padding: 0 16px 16px 16px;">
+				<p>待选人员:</p>
+				<div id="userTree" class="ztree"></div>
+			</div>
+		</div>
+		<div class="col-sm-4" style="padding-left:16px;border-left: 1px solid #A8A8A8;padding: 0;margin-right: -1px;">
+			<div style="padding: 0 16px 16px 16px;">
+				<p>已选人员:</p>
+				<div id="selectedTree" class="ztree"></div>
+			</div>
+		</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 134 - 0
src/main/webapp/webpage/modules/sys/selectWorkEvaluationRoom.jsp

@@ -0,0 +1,134 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+
+			    $('#contentTable thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('check');
+			    	});
+
+			    $('#contentTable thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 
+			    	  $('#contentTable tbody tr td input.i-checks').iCheck('uncheck');
+			    	});
+			    
+			
+		});
+
+		function getSelectedItem(){
+
+			var size = $("#contentTable tbody tr td input.i-checks:checked").size();
+			  if(size == 0 ){
+					top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+
+			  if(size > 1 ){
+					top.layer.alert('只能选择一条数据!', {icon: 0, title:'警告'});
+					return "-1";
+				  }
+			    var id =  $("#contentTable tbody tr td input.i-checks:checkbox:checked").attr("id");
+			    
+				var label = $("#contentTable tbody tr td input.i-checks:checkbox:checked").parent().parent().parent().find(".codelabel").html();
+				return id+"_item_"+label;
+		}
+		function page(n,s){
+			if(n) $("#pageNo").val(n);
+			if(s) $("#pageSize").val(s);
+			$("#searchForm").attr("action","${url}");
+			$("#searchForm").submit();
+	    	return false;
+	    }
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="">
+    <div class="ibox-content">
+		<!-- 查询条件 -->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="obj" action="${url}" method="post" class="form-inline">
+		<input type="hidden" name="url" value="${url}"/>
+		<input type="hidden" name="fieldLabels" value="${fieldLabels}"/>
+		<input type="hidden" name="fieldKeys" value="${fieldKeys}"/>
+		<input type="hidden" name="searchLabel" value="${searchLabel}"/>
+		<input type="hidden" name="searchKey" value="${searchKey}"/>
+		<input type="hidden" name="floorLabel" value="${floorLabel}"/>
+		<input type="hidden" name="floorKey" value="${floorKey}"/>
+		<input type="hidden" name="housenumberLabel" value="${housenumberLabel}"/>
+		<input type="hidden" name="housenumberKey" value="${housenumberKey}"/>
+		<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="${searchKey}" htmlEscape="false" maxlength="50" class=" form-control input-sm"/>
+
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<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>
+				<c:forEach items="${labelNames}" var="name"  varStatus="status">
+					<th>地址</th>
+					<th>楼层</th>
+					<th>房间</th>
+				</c:forEach>
+			</tr>
+		</thead>
+		<tbody>
+		<c:choose>
+		<c:when test="${not empty page.list}">
+		<c:forEach items="${page.list}" var="obj">
+			<tr>
+				<td> <input type="checkbox" id="${fns:getValue(obj, 'id')}" class="i-checks"></td>
+				<c:forEach items="${labelValues}" var="value"  varStatus="status">
+					<c:if test="${status.first==true}">
+						<td class="codelabel">${fns:getValue(obj, value)}</td>
+					</c:if>
+
+					<c:if test="${status.first!=true}">
+						<td>${fns:getValue(obj, value)}</td>
+					</c:if>
+				</c:forEach>
+				<td>${fns:getValue(obj, 'floor')}</td>
+				<td>${fns:getValue(obj, 'houseNumber')}</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>
+</body>
+</html>

+ 56 - 0
src/main/webapp/webpage/modules/sys/suggestionForm.jsp

@@ -0,0 +1,56 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>意见反馈管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="suggestion" action="${ctx}/sys/suggestion/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+			<div class="form-group layui-row first">
+				<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="content" htmlEscape="false" rows="4" class="form-control "/>
+					</div>
+				</div>
+			</div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 118 - 0
src/main/webapp/webpage/modules/sys/suggestionList.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>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="suggestion" action="${ctx}/sys/suggestion/" 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();"/><!-- 支持排序 -->
+
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="contentShadow layui-form contentDetails">
+				<div class="nav-btns">
+					<shiro:hasPermission name="sys:suggestion:add">
+						<table:addRow url="${ctx}/sys/suggestion/form" title="意见反馈"></table:addRow><!-- 增加按钮 -->
+					</shiro:hasPermission>
+					<shiro:hasPermission name="sys:suggestion:edit">
+						<table:editRow url="${ctx}/sys/suggestion/form" title="意见反馈" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+					</shiro:hasPermission>
+					<shiro:hasPermission name="sys:suggestion:del">
+						<table:delRow url="${ctx}/sys/suggestion/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+					</shiro:hasPermission>
+					<shiro:hasPermission name="sys:suggestion:import">
+						<table:importExcel url="${ctx}/sys/suggestion/import"></table:importExcel><!-- 导入按钮 -->
+					</shiro:hasPermission>
+					<shiro:hasPermission name="sys:suggestion:export">
+						<table:exportExcel url="${ctx}/sys/suggestion/export"></table:exportExcel><!-- 导出按钮 -->
+					</shiro:hasPermission>
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+					<div style="clear: both;"></div>
+				</div>
+
+	
+				<!-- 表格 -->
+				<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+					<thead>
+						<tr>
+							<th width="40"> <input type="checkbox" class="i-checks"></th>
+							<th style="text-align: center;"  class="sort-column content">反馈内容</th>
+							<th width="180" style="text-align:center"  class="sort-column updateDate">更新时间</th>
+							<th style="text-align:center"  class="sort-column remarks">备注</th>
+							<th width="180" style="text-align: center;">操作</th>
+						</tr>
+					</thead>
+					<tbody>
+					<c:forEach items="${page.list}" var="suggestion">
+						<tr>
+							<td> <input type="checkbox" id="${suggestion.id}" class="i-checks"></td>
+							<td><a class="attention-info" href="javascript:void(0)" onclick="openDialogView('查看意见反馈', '${ctx}/sys/suggestion/form?id=${suggestion.id}&view=1','95%','95%')">
+								${suggestion.content}
+							</a></td>
+							<td>
+								<fmt:formatDate value="${suggestion.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+							</td>
+							<td>
+								${suggestion.remarks}
+							</td>
+							<td class="op-td text-center">
+								<div class="op-btn-box">
+								<shiro:hasPermission name="sys:suggestion:view">
+									<a href="javascript:void(0)" onclick="openDialogView('查看意见反馈', '${ctx}/sys/suggestion/form?id=${suggestion.id}&view=1','95%','95%')" class="op-btn op-btn-view" ><i class="fa fa-search-plus"></i> 查看</a>
+								</shiro:hasPermission>
+								<shiro:hasPermission name="sys:suggestion:edit">
+									<a href="javascript:void(0)" onclick="openDialog('修改意见反馈', '${ctx}/sys/suggestion/form?id=${suggestion.id}','95%','95%')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>
+								</shiro:hasPermission>
+								<shiro:hasPermission name="sys:suggestion:del">
+									<a href="${ctx}/sys/suggestion/delete?id=${suggestion.id}" onclick="return confirmx('确认要删除该意见反馈吗?', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
+								</shiro:hasPermission>
+								</div>
+							</td>
+						</tr>
+					</c:forEach>
+					</tbody>
+				</table>
+
+					<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+
+				<div style="clear: both;"></div>
+
+			</div>
+		</div>
+	</div>
+</div>
+<script>
+    $("a").on("click",addLinkVisied);
+
+    resizeListWindow3();
+    $(window).resize(function(){
+        resizeListWindow3();
+    });
+</script>
+</body>
+</html>

+ 56 - 0
src/main/webapp/webpage/modules/sys/suggestionView.jsp

@@ -0,0 +1,56 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>意见反馈管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container view-form">
+		<form:form id="inputForm" modelAttribute="suggestion" action="${ctx}/sys/suggestion/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+			<div class="form-group layui-row first">
+				<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="content" readonly="true" htmlEscape="false" rows="4" class="form-control "/>
+					</div>
+				</div>
+			</div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1098 - 0
src/main/webapp/webpage/modules/sys/sysHome.jsp


+ 467 - 0
src/main/webapp/webpage/modules/sys/sysIndex-ace.jsp

@@ -0,0 +1,467 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="renderer" content="webkit">
+    <title>JeePlus快速开发框架</title>
+
+	<%@ include file="/webpage/include/acehead.jsp"%>
+	<script src="${ctxStatic}/common/inspinia-ace.js?v=3.2.0"></script>
+	<script src="${ctxStatic}/common/contabs.js"></script> 
+ 	<meta name="keywords" content="JeePlus快速开发平台">
+    <meta name="description" content="JeePlus,采用spring mvc+mybatis+shiro+bootstrap,集成代码生成器的快速开发平台">
+
+</head>
+
+<body class="no-skin">
+		<!-- #section:basics/navbar.layout -->
+		<div id="navbar" class="navbar navbar-default">
+			<script type="text/javascript">
+				try{ace.settings.check('navbar' , 'fixed')}catch(e){}
+			</script>
+
+			<div class="navbar-container" id="navbar-container">
+				<!-- #section:basics/sidebar.mobile.toggle -->
+				<button type="button" class="navbar-toggle menu-toggler pull-left" id="menu-toggler" data-target="#sidebar">
+					<span class="sr-only">Toggle sidebar</span>
+
+					<span class="icon-bar"></span>
+
+					<span class="icon-bar"></span>
+
+					<span class="icon-bar"></span>
+				</button>
+
+				<!-- /section:basics/sidebar.mobile.toggle -->
+				<div class="navbar-header pull-left">
+					<!-- #section:basics/navbar.layout.brand -->
+					<a href="javascript:void(0)" class="navbar-brand">
+						<small>
+							<i class="fa fa-leaf"></i>
+							JeePlus快速开发框架
+						</small>
+					</a>
+
+					<!-- /section:basics/navbar.layout.brand -->
+
+					<!-- #section:basics/navbar.toggle -->
+
+					<!-- /section:basics/navbar.toggle -->
+				</div>
+
+				<!-- #section:basics/navbar.dropdown -->
+				<div class="navbar-buttons navbar-header pull-right" role="navigation">
+					<ul class="nav ace-nav">
+						<li class="grey">
+							<a id="lang-switch" class="lang-selector dropdown-toggle" href="javascript:void(0)" data-toggle="dropdown" aria-expanded="true">
+								<span class="lang-selected">
+										<img  class="lang-flag" src="${ctxStatic}/common/img/china.png" alt="中国">
+										<span class="lang-id">中国</span>
+										<span class="lang-name">中文</span>
+									</span>
+							</a>
+
+							<ul class="dropdown-menu-right dropdown-navbar dropdown-menu dropdown-caret dropdown-close">
+								<li class="dropdown-header">
+									<i class="ace-icon fa fa-check"></i>
+									选择国家语言
+								</li>
+
+								<li class="dropdown-content">
+									<ul class="dropdown-menu dropdown-navbar">
+										<li>
+											<a href="javascript:void(0)" class="lang-select">
+												<img class="lang-flag" src="${ctxStatic}/common/img/china.png" alt="中国">
+												<span class="lang-id">中国</span>
+												<span class="lang-name">中文</span>
+											</a>
+										</li>
+
+										<li>
+											<a href="javascript:void(0)" class="lang-select">
+												<img class="lang-flag" src="${ctxStatic}/common/img/united-kingdom.png" alt="English">
+												<span class="lang-id">EN</span>
+												<span class="lang-name">English</span>
+											</a>
+										</li>
+										
+										<li>
+											<a href="javascript:void(0)" class="lang-select">
+												<img class="lang-flag" src="${ctxStatic}/common/img/france.png" alt="France">
+												<span class="lang-id">FR</span>
+												<span class="lang-name">Français</span>
+											</a>
+										</li>
+										<li>
+											<a href="javascript:void(0)" class="lang-select">
+												<img class="lang-flag" src="${ctxStatic}/common/img/germany.png" alt="Germany">
+												<span class="lang-id">DE</span>
+												<span class="lang-name">Deutsch</span>
+											</a>
+										</li>
+										<li>
+											<a href="javascript:void(0)" class="lang-select">
+												<img class="lang-flag" src="${ctxStatic}/common/img/italy.png" alt="Italy">
+												<span class="lang-id">IT</span>
+												<span class="lang-name">Italiano</span>
+											</a>
+										</li>
+										<li>
+											<a href="javascript:void(0)" class="lang-select">
+												<img class="lang-flag" src="${ctxStatic}/common/img/spain.png" alt="Spain">
+												<span class="lang-id">ES</span>
+												<span class="lang-name">Español</span>
+											</a>
+										</li>
+									</ul>
+								</li>
+
+								<li class="dropdown-footer">
+								</li>
+							</ul>
+						</li>
+
+						<li class="purple">
+							<a data-toggle="dropdown" class="dropdown-toggle" href="javascript:void(0)">
+								<i class="ace-icon fa fa-bell icon-animated-bell"></i>
+								<span class="badge badge-important">${count }</span>
+							</a>
+
+							<ul class="dropdown-menu-right dropdown-navbar navbar-pink dropdown-menu dropdown-caret dropdown-close">
+								<li class="dropdown-header">
+									<i class="ace-icon fa fa-exclamation-triangle"></i>
+									${count } 条未读消息
+								</li>
+
+								<li class="dropdown-content">
+									<ul class="dropdown-menu dropdown-navbar navbar-pink">
+									
+										  <c:forEach items="${page.list}" var="oaNotify">
+										  	<li>
+					                            <a class="J_menuItem" href="${ctx}/oa/oaNotify/view?id=${oaNotify.id}&">
+					                                        <div class="clearfix">
+					                                            <i class="fa fa-envelope fa-fw"></i> ${fns:abbr(oaNotify.title,50)}
+					                                            <span class="pull-right text-muted small">${fns:getTime(oaNotify.updateDate)}前</span>
+					                                        </div>
+					                             </a>
+					                        </li>
+										</c:forEach>
+									</ul>
+								</li>
+
+								<li class="dropdown-footer">
+									 <a class="J_menuItem" href="${ctx }/oa/oaNotify/self ">
+										查看所有
+										<i class="ace-icon fa fa-arrow-right"></i>
+									</a>
+								</li>
+							</ul>
+						</li>
+
+						<li class="green">
+							<a data-toggle="dropdown" class="dropdown-toggle" href="javascript:void(0)">
+								<i class="ace-icon fa fa-envelope icon-animated-vertical"></i>
+								<span class="badge badge-success">${noReadCount}</span>
+							</a>
+
+							<ul class="dropdown-menu-right dropdown-navbar dropdown-menu dropdown-caret dropdown-close">
+								<li class="dropdown-header">
+									<i class="ace-icon fa fa-envelope-o"></i>
+									${noReadCount} 未读邮件
+								</li>
+
+								<li class="dropdown-content">
+									<ul class="dropdown-menu dropdown-navbar">
+										 <c:forEach items="${mailPage.list}" var="mailBox">
+			                               	<li>
+											<a href="javascript:void(0)" class="clearfix">
+												<img src="${mailBox.sender.photo }" class="msg-photo" alt="${mailBox.sender.name }的邮件" />
+												<span class="msg-body">
+													<span class="msg-title">
+														<span class="blue">${mailBox.sender.name }:</span>
+														<a class="J_menuItem" href="${ctx}/iim/mailBox/detail?id=${mailBox.id}">
+			                                             ${mailBox.mail.overview}
+			                                            </a>
+													</span>
+
+													<span class="msg-time">
+														<i class="ace-icon fa fa-clock-o"></i>
+														<span><fmt:formatDate value="${mailBox.sendtime}" pattern="yyyy-MM-dd HH:mm:ss"/></span>
+													</span>
+												</span>
+											</a>
+										</li>
+		                                </c:forEach>
+									
+
+									</ul>
+								</li>
+
+
+							 	<li class="dropdown-footer">
+		                              <a class="J_menuItem" href="${ctx}/iim/mailBox/list?orderBy=sendtime desc">
+		                                       	查看所有邮件<i class="ace-icon fa fa-arrow-right"></i>
+		                              </a>
+		                      	</li>
+							</ul>
+						</li>
+
+						<!-- #section:basics/navbar.user_menu -->
+						<li class="light-blue">
+							<a data-toggle="dropdown" href="javascript:void(0)" class="dropdown-toggle">
+								<img class="nav-user-photo" src="${fns:getUser().photo}" alt="Jason's Photo" />
+								<span class="user-info">
+									<small>欢迎,</small>
+									${fns:getUser().name}
+								</span>
+
+								<i class="ace-icon fa fa-caret-down"></i>
+							</a>
+
+							<ul class="user-menu dropdown-menu-right dropdown-menu dropdown-yellow dropdown-caret dropdown-close">
+								<li>
+									<a class="J_menuItem" href="${ctx}/sys/user/imageEdit">
+										<i class="ace-icon fa fa-cog"></i>
+										修改头像
+									</a>
+								</li>
+
+								<li>
+									<a class="J_menuItem" href="${ctx }/sys/user/info">
+										<i class="ace-icon fa fa-user"></i>
+										个人资料
+									</a>
+								</li>
+
+                                <%--<li>
+                                	<a class="J_menuItem" href="${ctx }/iim/contact/index">
+                                	<i class="ace-icon fa fa-indent"></i>
+                                	我的通讯录
+                                	</a>
+                                </li>--%>
+                                <li>
+                                	<a class="J_menuItem" href="${ctx }/iim/mailBox/list">
+                                		<i class="ace-icon fa fa-inbox"></i>
+                                	信箱</a>
+                                </li> 
+                                 <li class="divider"></li>
+                                <li><a href="javascript:void(0)" onclick="changeStyle()">
+                                	<i class="ace-icon fa  fa-mail-reply"></i>
+                                	切换到经典模式</a>
+                                </li> 
+
+
+								<li class="divider"></li>
+
+								<li>
+									<a class="J_menuItem" href="${ctx}/logout">
+										<i class="ace-icon fa fa-power-off"></i>
+										安全退出
+									</a>
+								</li>
+							</ul>
+						</li>
+
+						<!-- /section:basics/navbar.user_menu -->
+					</ul>
+				</div>
+
+				<!-- /section:basics/navbar.dropdown -->
+			</div><!-- /.navbar-container -->
+		</div>
+
+		<!-- /section:basics/navbar.layout -->
+		<div class="main-container" id="main-container">
+			<script type="text/javascript">
+				try{ace.settings.check('main-container' , 'fixed')}catch(e){}
+			</script>
+
+			<!-- #section:basics/sidebar -->
+			<div id="sidebar" class="sidebar                  responsive">
+				<script type="text/javascript">
+					try{ace.settings.check('sidebar' , 'fixed')}catch(e){}
+				</script>
+
+				<div class="sidebar-shortcuts" id="sidebar-shortcuts">
+					<div class="sidebar-shortcuts-large" id="sidebar-shortcuts-large">
+						<button class="btn btn-success">
+							<i class="ace-icon fa fa-signal"></i>
+						</button>
+
+						<button class="btn btn-info">
+							<i class="ace-icon fa fa-pencil"></i>
+						</button>
+
+						<!-- #section:basics/sidebar.layout.shortcuts -->
+						<button class="btn btn-warning">
+							<i class="ace-icon fa fa-users"></i>
+						</button>
+
+						<button class="btn btn-danger">
+							<i class="ace-icon fa fa-cogs"></i>
+						</button>
+
+						<!-- /section:basics/sidebar.layout.shortcuts -->
+					</div>
+
+					<div class="sidebar-shortcuts-mini" id="sidebar-shortcuts-mini">
+						<span class="btn btn-success"></span>
+
+						<span class="btn btn-info"></span>
+
+						<span class="btn btn-warning"></span>
+
+						<span class="btn btn-danger"></span>
+					</div>
+				</div><!-- /.sidebar-shortcuts -->
+
+						 <t:aceMenu  menu="${fns:getTopMenu()}"></t:aceMenu>
+
+				<!-- #section:basics/sidebar.layout.minimize -->
+				<div class="sidebar-toggle sidebar-collapse" id="sidebar-collapse">
+					<i class="ace-icon fa fa-angle-double-left" data-icon1="ace-icon fa fa-angle-double-left" data-icon2="ace-icon fa fa-angle-double-right"></i>
+				</div>
+
+				<!-- /section:basics/sidebar.layout.minimize -->
+				<script type="text/javascript">
+					try{ace.settings.check('sidebar' , 'collapsed')}catch(e){}
+				</script>
+			</div>
+
+			<!-- /section:basics/sidebar -->
+			<div class="main-content">
+				<div class="main-content-inner">
+					<!-- #section:basics/content.breadcrumbs -->
+					<div class="breadcrumbs" id="breadcrumbs">
+				  <div class="content-tabs">
+                <button class="roll-nav roll-left J_tabLeft"><i class="fa fa-backward"></i>
+                </button>
+                <nav class="page-tabs J_menuTabs">
+                    <div class="page-tabs-content">
+                         <a href="javascript:;" class="active J_menuTab" data-id="${ctx}/home">首页</a>
+                    </div>
+                </nav>
+                <button class="roll-nav roll-right J_tabRight"><i class="fa fa-forward"></i>
+                </button>
+                <div class="btn-group roll-nav roll-right">
+                    <button class="dropdown J_tabClose"  data-toggle="dropdown">关闭操作<span class="caret"></span>
+
+                    </button>
+                    <ul role="menu" class="dropdown-menu dropdown-menu-right">
+                        <li class="J_tabShowActive"><a>定位当前选项卡</a>
+                        </li>
+                        <li class="divider"></li>
+                        <li class="J_tabCloseAll"><a>关闭全部选项卡</a>
+                        </li>
+                        <li class="J_tabCloseOther"><a>关闭其他选项卡</a>
+                        </li>
+                    </ul>
+                </div>
+                <a href="${ctx}/logout" class="roll-nav roll-right J_tabExit"><i class="fa fa fa-sign-out"></i> 退出</a>
+            	</div>
+					</div>
+
+			<div class="J_mainContent"  id="content-main">
+             <iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="${ctx}/home" frameborder="0" data-id="${ctx}/home" seamless></iframe>
+            </div>
+            </div>
+            
+            
+            </div>
+            
+            <div class="footer">
+				<div class="footer-inner">
+					<!-- #section:basics/footer -->
+					<div class="footer-content">
+						<span class="bigger-120">
+							<span class="blue bolder">JeePlus</span>
+							 &copy; 2015-2020
+						</span>
+
+						&nbsp; &nbsp;
+						<span class="action-buttons">
+							<a href="javascript:void(0)">
+								<i class="ace-icon fa fa-twitter-square light-blue bigger-150"></i>
+							</a>
+
+							<a href="javascript:void(0)">
+								<i class="ace-icon fa fa-facebook-square text-primary bigger-150"></i>
+							</a>
+
+							<a href="javascript:void(0)">
+								<i class="ace-icon fa fa-rss-square orange bigger-150"></i>
+							</a>
+						</span>
+					</div>
+
+					<!-- /section:basics/footer -->
+				</div>
+			</div>
+
+			<a href="javascript:void(0)" id="btn-scroll-up" class="pull-left btn-scroll-up btn btn-sm btn-inverse">
+				<i class="ace-icon fa fa-angle-double-up icon-only bigger-110"></i>
+			</a>
+			
+            </div>
+            
+            
+            
+				
+
+	</body>
+	<!-- 语言切换插件,为国际化功能预留插件 -->
+	<script type="text/javascript">
+	
+	$(document).ready(function(){
+	
+		$("a.lang-select").click(function(){
+			$(".lang-selected").find(".lang-flag").attr("src",$(this).find(".lang-flag").attr("src"));
+			$(".lang-selected").find(".lang-flag").attr("alt",$(this).find(".lang-flag").attr("alt"));
+			$(".lang-selected").find(".lang-id").text($(this).find(".lang-id").text());
+			$(".lang-selected").find(".lang-name").text($(this).find(".lang-name").text());
+	
+		});
+	
+	
+	});
+
+	
+	function changeStyle(){
+		   $.get('${pageContext.request.contextPath}/theme/default?url='+window.top.location.href,function(result){ window.location.reload();  });
+		  
+
+		}
+	</script>
+	
+<!-- 即时聊天插件  开始-->
+<%--<link href="${ctxStatic}/layer-v2.3/layim/layui/css/layui.css" type="text/css" rel="stylesheet"/>
+<script type="text/javascript">
+var currentId = '${fns:getUser().loginName}';
+var currentName = '${fns:getUser().name}';
+var currentFace ='${fns:getUser().photo}';
+var url="${ctx}";
+var static_url="${ctxStatic}";
+var wsServer = 'ws://'+window.document.domain+':8668'; 
+
+</script>
+<!--webscoket接口  -->
+<script src="${ctxStatic}/layer-v2.3/layim/layui/layui.js"></script>
+
+<script src="${ctxStatic}/layer-v2.3/layim/layim.js"></script>--%>
+<!-- 即时聊天插件 结束 -->
+<style>
+/*签名样式*/
+.layim-sign-box{
+	width:80%
+}
+.layim-sign-hide{
+    background:transparent;border:0
+}
+</style>
+
+</html>

+ 716 - 0
src/main/webapp/webpage/modules/sys/sysIndex.jsp

@@ -0,0 +1,716 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<%
+    String path = request.getContextPath();
+%>
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="renderer" content="webkit">
+    <title>首页列表</title>
+
+    <%@ include file="/webpage/include/head.jsp"%>
+    <script src="${ctxStatic}/common/inspinia.js?v=3.2.0"></script>
+    <script src="${ctxStatic}/common/contabs.js"></script>
+    <meta name="keywords" content="JeePlus快速开发平台">
+    <meta name="description" content="JeePlus,采用spring mvc+mybatis+shiro+bootstrap,集成代码生成器的快速开发平台">
+    <script type="text/javascript">
+        $(document).ready(function() {
+            if('${fns:getDictLabel(cookie.theme.value,'theme','默认主题')}' == '天蓝主题'){
+                // 蓝色主题
+                $("body").removeClass("skin-2");
+                $("body").removeClass("skin-3");
+                $("body").addClass("skin-1");
+            }else  if('${fns:getDictLabel(cookie.theme.value,'theme','默认主题')}' == '橙色主题'){
+                // 黄色主题
+                $("body").removeClass("skin-1");
+                $("body").removeClass("skin-2");
+                $("body").addClass("skin-3");
+            }else {
+                // 默认主题
+                $("body").removeClass("skin-2");
+                $("body").removeClass("skin-3");
+                $("body").removeClass("skin-1");
+            };
+            //ajax废弃
+            startRequest();
+        });
+        setInterval("requesting()",10000);
+        function startRequest(){
+            var url = "${ctx}/workprojectnotify/workProjectNotify/notify";
+            var data = {};
+            $.ajax({
+                type : "get",
+                async : true, //同步请求
+                url : url,
+                data : data,
+                success:function(datas){
+                    //$("#mainContent").html(dates);//要刷新的div
+                    $("#totalCount").text((datas.notifyCount+datas.count+datas.notifyShowCount)>9?"10+":(datas.notifyCount+datas.count+datas.notifyShowCount));
+                    $("#count").text(datas.count>9?datas.count+"+":datas.count);
+                    $("#noReadCount").text(datas.noReadCount>9?datas.noReadCount+"+":datas.noReadCount);
+                    $("#notifyCount").text(datas.notifyCount>9?datas.notifyCount+"+":datas.notifyCount);
+                    $("#notifyShowCount").text(datas.notifyShowCount>9?datas.notifyShowCount+"+":datas.notifyShowCount);
+                },
+                error: function() {
+                    <!--parent.layer.msg('获取通知失败,请稍后再试!',{icon:2}) -->
+                }
+            });
+        }
+        function requesting(){
+            if (index.indexOf("审批信息")!=-1 || index.indexOf("公告消息")!=-1 || index == 'sys_me' || index.indexOf("未读邮件")!=-1){
+                refreshTabIndex();
+                startRequest();
+                index = "";
+            }
+        }
+
+        function refreshTabIndex() {
+            var target = $('.J_iframe[data-id="/a/home"]');
+            var url = target.attr('src');
+            //显示loading提示
+            var loading = layer.load();
+            target.attr('src', url).load(function () {
+                //关闭loading提示
+                layer.close(loading);
+            });
+        }
+
+        function changePwd() {
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+                width='500px';
+                height='350px';
+            }
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                closeBtn: 0,
+                title:"修改密码",
+                content: "${ctx}/sys/user/modifyPwd?home=home" ,
+                skin:"two-btns",
+                btn: ['确定'],
+                yes: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var inputForm = $(body).find('#inputForm');
+                    var btn = body.find('#btnSubmit');
+                    var top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    inputForm.validate({
+                        rules: {
+                        },
+                        messages: {
+                            confirmNewPassword: {equalTo: "输入与上面相同的密码"}
+                        },
+                        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(inputForm.valid()){
+                        loading("正在提交,请稍等...");
+                        inputForm.submit();
+                        top.layer.close(index);//关闭对话框。
+                    }else{
+                        return;
+                    }
+
+
+                },
+                cancel: function(index){
+                }
+            });
+        }
+    </script>
+</head>
+
+<body class="fixed-sidebar full-height-layout" style="min-width:1366px;overflow-x: auto; ">
+<a class="navbar-minimalize minimalize-styl-2 l-nav-div l-nav-div-offsetl" href="javascript:void(0)">
+    <img id="l-nav-img" src="${ctxStatic}/common/img/l-nav-open.png" width="36px" ></img>
+</a>
+<div id="wrapper">
+    <!--左侧导航开始-->
+    <nav class="navbar-default navbar-static-side" role="navigation">
+        <div class="nav-close"><i class="fa fa-times-circle"></i>
+        </div>
+        <div class="sidebar-collapse">
+            <ul class="nav" id="side-menu">
+                <li class="nav-header" id="nav-header" style="border-bottom:solid 2px #0f92fb;">
+                    <div class="dropdown profile-element">
+                        <span><img alt="image" class="img-circle profile" style="height:90px;width:90px;" src="${fns:getUser().photo }" /></span>
+                        <%--<a data-toggle="dropdown" class="dropdown-toggle" href="javascript:void(0)">--%>
+                                <span class="clear">
+                               <span class="block m-t-xs" style="font-size: 14px;cursor:default">${fns:getUser().name}</span>
+                               <%--<span class="text-muted text-xs block m-t-xs" style="font-size: 12px;">${companyName}<b class="caret"></b></span>--%>
+                                     <span class="text-muted text-xs block m-t-xs" style="font-size: 12px;margin-top:8px;cursor:default">${companyName}</span>
+                                </span>
+                        <%--</a>--%>
+                        <ul class="dropdown-menu animated fadeInRight m-t-xs" style="display:none;">
+
+                            <li><a href="javascript:void(0);" class="J_menuItem">盛世瑞华(北京)技术有限公司</a>
+                            </li>
+                            <li><a href="javascript:void(0);" class="J_menuItem">中竟发</a>
+                            </li>
+                            <li><a href="javascript:void(0);" class="J_menuItem">瑞华总公司</a>
+                            </li>
+                            <%--<li><a class="J_menuItem" href="${ctx}/sys/user/imageEdit">修改头像</a>--%>
+                            <%--</li>--%>
+                            <%--<li><a class="J_menuItem" href="${ctx }/sys/user/info">个人资料</a>--%>
+                            <%--</li>--%>
+                            <%--<li><a class="J_menuItem" href="${ctx }/iim/contact/index">我的通讯录</a>--%>
+                            <%--</li>--%>
+                            <%--<li><a class="J_menuItem" href="${ctx }/iim/mailBox/list">信箱</a>--%>
+                            <%--</li>--%>
+                            <%--<li class="divider"></li>--%>
+                            <%--<li><a href="${ctx}/logout">安全退出</a>--%>
+                            <%--</li>--%>
+                        </ul>
+                    </div>
+                    <div class="logo-element">
+                        <span><img alt="image" class="img-circle profile" style="height:50px;width:50px;" src="${fns:getUser().photo }" /></span>
+                        <span class="block m-t-xs" style="font-size: 12px;">${fns:getUser().name}</span>
+                    </div>
+                </li>
+                <t:menu  menu="${fns:getTopMenu()}"></t:menu>
+            </ul>
+        </div>
+    </nav>
+    <!--左侧导航结束-->
+    <!--右侧部分开始-->
+    <div id="page-wrapper" class="gray-bg dashbard-1">
+        <div class="row border-bottom">
+            <nav class="navbar navbar-static-top" role="navigation" style="margin-bottom: 0">
+                <%--<div class="navbar-header">--%>
+                <%--<a class="navbar-minimalize minimalize-styl-2" href="javascript:void(0)" style="z-index: 9999;">--%>
+                <%--<img src="${ctxStatic}/common/img/l-nav-open.png" width="32px" height="32px"></img>--%>
+                <%--</a>--%>
+                <%--<form role="search" class="navbar-form-custom" method="post" action="search_results.html">--%>
+                <%--<div class="form-group">
+                    <input type="text" placeholder="请输入您需要查找的内容 …" class="form-control" name="top-search" id="top-search">
+                </div>--%>
+                <%--</form>--%>
+                <%--</div>--%>
+                <div class="nav-logo">
+                    <%--<img src="${ctxStatic}/common/img/logo.png"/>--%>
+                    <div style="font-size: 16px;line-height: 55px;font-size: 20px;font-weight: bold;">兴光项目管理有限公司</div>
+                </div>
+                <div class="newsShell">
+                    <div id="newsDiv">
+                    </div>
+                </div>
+                <script>
+                    var marqueeContent=new Array();   //滚动新闻
+                    marqueeContent[0]='<a class="news" href="javascript:void(0);">兴光项目全过程审计系统</a><br>';
+                    marqueeContent[1]='<a class="news" href="javascript:void(0);">兴光项目全过程审计系统</a><br>';
+                    // marqueeContent[2]='<a class="news" href="javascript:void(0);">匞匞办公平台正式发布</a><br>';
+                    // marqueeContent[3]='<a class="news" href="javascript:void(0);">匞匞办公平台正式发布</a><br>';
+                    var marqueeInterval=new Array();  //定义一些常用而且要经常用到的变量
+                    var marqueeId=0;
+                    var marqueeDelay=3000;
+                    var marqueeHeight=24;
+                    //接下来的是定义一些要使用到的函数
+                    function initMarquee() {
+                        var str=marqueeContent[0];
+                        //var document.createElement("div");
+                        var div = document.getElementById("newsDiv");
+                        div.innerHTML = '<div id=marqueeBox style="overflow:hidden;height:'+marqueeHeight+'px" onmouseover="clearInterval(marqueeInterval[0])" onmouseout="marqueeInterval[0]=setInterval(\'startMarquee()\',marqueeDelay)"><div class="news-format">'+str+'</div></div>';
+
+                        marqueeId++;
+                        marqueeInterval[0]=setInterval("startMarquee()",marqueeDelay);
+                    }
+                    function startMarquee() {
+                        var str=marqueeContent[marqueeId];
+                        marqueeId++;
+                        if(marqueeId>=marqueeContent.length) marqueeId=0;
+                        if(marqueeBox.childNodes.length==1) {
+                            var nextLine=document.createElement('div');
+                            nextLine.classList="news-format";
+                            // nextLine.classList = "news";
+                            nextLine.innerHTML=str;
+                            marqueeBox.appendChild(nextLine);
+                        }
+                        else {
+                            marqueeBox.childNodes[0].innerHTML=str;
+                            // marqueeBox.childNodes[0].classList = "news";
+                            marqueeBox.appendChild(marqueeBox.childNodes[0]);
+                            marqueeBox.scrollTop=0;
+                        }
+                        clearInterval(marqueeInterval[1]);
+                        marqueeInterval[1]=setInterval("scrollMarquee()",24);
+                    }
+                    function scrollMarquee() {
+                        marqueeBox.scrollTop++;
+                        if(marqueeBox.scrollTop%marqueeHeight==(marqueeHeight-1)){
+                            clearInterval(marqueeInterval[1]);
+                        }
+                    }
+                    initMarquee();
+                </script>
+
+                <ul class="nav navbar-top-links navbar-right" style="float: right;margin-right: 10px;">
+                    <li class="dropdown">
+                       <%-- <a class="dropdown-toggle count-info" data-toggle="dropdown" href="javascript:void(0)" onclick='top.openTab("${ctx}/iim/mailBox/list?orderBy=sendtime desc","邮件列表", false)'>
+                            <i class="fa fa-envelope"></i>
+                            <span class="label label-danger labelInfo" id="noReadCount">0</span>&nbsp;收件箱
+                        </a>--%>
+                        <%--<ul class="dropdown-menu dropdown-messages">--%>
+                            <%--<li class="m-t-xs" id="mailPage">--%>
+                                <%--&lt;%&ndash;<c:forEach items="${mailPage.list}" var="mailBox">--%>
+                                   <%--<div class="dropdown-messages-box">--%>
+
+                                       <%--<a  href="javascript:void(0)" onclick='top.openTab("${ctx}/iim/contact/index?name=${mailBox.sender.name }","通讯录", false)' class="pull-left">--%>
+                                           <%--<img alt="image" class="img-circle" src="${mailBox.sender.photo }">--%>
+                                       <%--</a>--%>
+                                       <%--<div class="media-body">--%>
+                                           <%--<small class="pull-right">${fns:getTime(mailBox.sendtime)}前</small>--%>
+                                           <%--<strong>${mailBox.sender.name }</strong>--%>
+                                           <%--<a class="J_menuItem" href="${ctx}/iim/mailBox/detail?id=${mailBox.id}"> ${fns:abbr(mailBox.mail.title,50)}</a>--%>
+                                           <%--<br>--%>
+                                           <%--<a class="J_menuItem" href="${ctx}/iim/mailBox/detail?id=${mailBox.id}">--%>
+                                            <%--${mailBox.mail.overview}--%>
+                                           <%--</a>--%>
+                                           <%--<br>--%>
+                                           <%--<small class="text-muted">--%>
+                                           <%--<fmt:formatDate value="${mailBox.sendtime}" pattern="yyyy-MM-dd HH:mm:ss"/></small>--%>
+                                       <%--</div>--%>
+                                   <%--</div>--%>
+                                <%--</c:forEach>&ndash;%&gt;--%>
+                            <%--</li>--%>
+                            <%--<li class="divider"></li>--%>
+                            <%--<li>--%>
+                                <%--<div class="text-center link-block">--%>
+                                    <%--&lt;%&ndash;<a href="javascript:void(0)" onclick="openDialogView('查看所有邮件', '${ctx}/iim/mailBox/list?orderBy=sendtime desc','80%','80%')" ><i class="fa fa-envelope"></i><strong>查看所有邮件 </strong></a>&ndash;%&gt;--%>
+                                    <%--<a  href="javascript:void(0)" onclick='top.openTab("${ctx}/iim/mailBox/list?orderBy=sendtime desc","邮件列表", false)' >--%>
+                                        <%--<i class="fa fa-envelope"></i><strong>查看所有 </strong><i class="fa fa-angle-right"></i></a>--%>
+                                <%--</div>--%>
+                            <%--</li>--%>
+                        <%--</ul>--%>
+                    </li>
+                    <li class="dropdown">
+                        <a class="dropdown-toggle count-info" data-toggle="dropdown" href="javascript:void(0)">
+                            <%--<i class="fa fa-bell"></i>--%>
+                            <i class="fa fa-list-ul"></i>
+                            <span class="label label-danger labelInfo" id="totalCount">0</span>&nbsp;待办事宜
+                        </a>
+                        <ul class="dropdown-menu dropdown-alerts">
+                            <li>
+                                <div class="info link-block">
+                                    您有<span class="label label-primary" id="notifyCount">0</span>条未处理待办任务
+                                    <%--<a href="javascript:void(0)" onclick="openDialogView('查看所有', '${ctx }/workprojectnotify/workProjectNotify/list','80%','80%')" >
+                                        <strong>查看所有 </strong><i class="fa fa-angle-right"></i>
+                                    </a>--%>
+                                    <a class="more-info" href="javascript:void(0)" onclick='top.openTab("${ctx }/workprojectnotify/workProjectNotify/list","待办任务列表", false)' >
+                                        <strong>查看所有 </strong><i class="fa fa-angle-right"></i></a>
+                                </div>
+                            </li>
+                            <%--<li id="notifyPage">--%>
+                                <%--<c:forEach items="${notifyPage.list}" var="notify" varStatus="index">
+                                    <div>
+                                        <a href="javascript:void(0)" onclick="openDialogView('${fns:abbr(notify.title,50)}', '${ctx}/workprojectnotify/workProjectNotify/form?id=${notify.id}&type=${notify.type}','80%','80%')" >
+                                            <i class="fa fa-envelope fa-fw"></i> <span id="notifyTitle${index.index}">${fns:abbr(notify.title,50)}</span>
+                                        </a>
+                                        <span class="pull-right text-muted small">${fns:getTime(notify.updateDate)}前</span>
+                                    </div>
+                                </c:forEach>--%>
+                            <%--</li>--%>
+                            <%--<li class="divider"></li>--%>
+                            <li>
+                                <div class="info link-block">
+                                    您有<span class="label label-primary" id="notifyShowCount">0</span>条未读通知消息
+                                    <%--<a href="javascript:void(0)" onclick="openDialogView('查看所有', '${ctx }/workprojectnotify/workProjectNotify/list','80%','80%')" >
+                                        <strong>查看所有 </strong><i class="fa fa-angle-right"></i>
+                                    </a>--%>
+                                    <a class="more-info" href="javascript:void(0)" onclick='top.openTab("${ctx }/workprojectnotify/workProjectNotify/listShow","通知消息列表", false)' >
+                                        <strong>查看所有 </strong><i class="fa fa-angle-right"></i></a>
+                                </div>
+                            </li>
+                            <%--<li id="notifyShowPage">--%>
+                                <%--<c:forEach items="${notifyPage.list}" var="notify" varStatus="index">
+                                    <div>
+                                        <a href="javascript:void(0)" onclick="openDialogView('${fns:abbr(notify.title,50)}', '${ctx}/workprojectnotify/workProjectNotify/form?id=${notify.id}&type=${notify.type}','80%','80%')" >
+                                            <i class="fa fa-envelope fa-fw"></i> <span id="notifyTitle${index.index}">${fns:abbr(notify.title,50)}</span>
+                                        </a>
+                                        <span class="pull-right text-muted small">${fns:getTime(notify.updateDate)}前</span>
+                                    </div>
+                                </c:forEach>--%>
+                            <%--</li>--%>
+                            <%--<li class="divider"></li>--%>
+                            <li>
+                                <div class="info link-block">
+                                    您有<span class="label label-primary" id="count">0</span>条未读公告消息
+                                    <%--<a href="javascript:void(0)" onclick="openDialogView('查看所有', '${ctx }/oa/oaNotify/self','80%','80%')" ><strong>查看所有 </strong></a>
+                                    <i class="fa fa-angle-right"></i>--%>
+                                    <a class="more-info" href="javascript:void(0)" onclick='top.openTab("${ctx }/oa/oaNotify/self","公告列表", false)' >
+                                        <strong>查看所有 </strong><i class="fa fa-angle-right"></i></a>
+                                </div>
+                            </li>
+                            <%--<li id="page">--%>
+                                <%--<c:forEach items="${page.list}" var="oaNotify">
+                                        <div>
+                                            <a href="javascript:void(0)" onclick="openDialogView('${fns:abbr(notify.title,50)}', '${ctx}/oa/oaNotify/view?id=${oaNotify.id}&','80%','80%')" >
+                                                <i class="fa fa-envelope fa-fw"></i> ${fns:abbr(notify.title,50)}
+                                            </a>
+                                            <span class="pull-right text-muted small">${fns:getTime(oaNotify.updateDate)}前</span>
+                                        </div>
+                                </c:forEach>--%>
+                            <%--</li>--%>
+                        </ul>
+                    </li>
+                    <%--<li >--%>
+                        <%--<a href="javascript:void(0);" class="roll-nav roll-right J_tabExit hide"><i class="fa fa fa-cog"></i>&nbsp;&nbsp;设置</a>--%>
+                    <%--</li>--%>
+                    <li>
+                        <a href="${ctx}/logout" class="roll-nav roll-right J_tabExit"><i class="fa fa fa-sign-out"></i>&nbsp;退出</a>
+                    </li>
+                    <!-- 国际化功能预留接口 -->
+                    <%-- <li class="dropdown">
+                         <a id="lang-switch" class="lang-selector dropdown-toggle" href="javascript:void(0)" data-toggle="dropdown" aria-expanded="true">
+                             <span class="lang-selected">
+                                     <img  class="lang-flag" src="${ctxStatic}/common/img/china.png" alt="中国">
+                                     <span class="lang-id">中国</span>
+                                     <span class="lang-name">中文</span>
+                                 </span>
+                         </a>
+
+                         <!--Language selector menu-->
+                         <ul class="head-list dropdown-menu with-arrow">
+                             <li>
+                                 <!--English-->
+                                 <a class="lang-select">
+                                     <img class="lang-flag" src="${ctxStatic}/common/img/china.png" alt="中国">
+                                     <span class="lang-id">中国</span>
+                                     <span class="lang-name">中文</span>
+                                 </a>
+                             </li>
+                             <li>
+                                 <!--English-->
+                                 <a class="lang-select">
+                                     <img class="lang-flag" src="${ctxStatic}/common/img/united-kingdom.png" alt="English">
+                                     <span class="lang-id">EN</span>
+                                     <span class="lang-name">English</span>
+                                 </a>
+                             </li>
+                             <li>
+                                 <!--France-->
+                                 <a class="lang-select">
+                                     <img class="lang-flag" src="${ctxStatic}/common/img/france.png" alt="France">
+                                     <span class="lang-id">FR</span>
+                                     <span class="lang-name">Français</span>
+                                 </a>
+                             </li>
+                             <li>
+                                 <!--Germany-->
+                                 <a class="lang-select">
+                                     <img class="lang-flag" src="${ctxStatic}/common/img/germany.png" alt="Germany">
+                                     <span class="lang-id">DE</span>
+                                     <span class="lang-name">Deutsch</span>
+                                 </a>
+                             </li>
+                             <li>
+                                 <!--Italy-->
+                                 <a class="lang-select">
+                                     <img class="lang-flag" src="${ctxStatic}/common/img/italy.png" alt="Italy">
+                                     <span class="lang-id">IT</span>
+                                     <span class="lang-name">Italiano</span>
+                                 </a>
+                             </li>
+                             <li>
+                                 <!--Spain-->
+                                 <a class="lang-select">
+                                     <img class="lang-flag" src="${ctxStatic}/common/img/spain.png" alt="Spain">
+                                     <span class="lang-id">ES</span>
+                                     <span class="lang-name">Español</span>
+                                 </a>
+                             </li>
+                         </ul>
+                     </li>--%>
+                </ul>
+            </nav>
+        </div>
+        <div class="row content-tabs">
+            <button class="roll-nav roll-left J_tabLeft"><i class="fa fa-backward"></i>
+            </button>
+            <nav class="page-tabs J_menuTabs">
+                <div class="page-tabs-content">
+                    <a href="javascript:;" class="active J_menuTab" data-id="${ctx}/home">首页</a>
+                </div>
+            </nav>
+            <button class="roll-nav roll-right J_tabRight"><i class="fa fa-forward"></i>
+            </button>
+            <div class="btn-group roll-nav roll-right">
+                <button class="dropdown J_tabClose"  data-toggle="dropdown">关闭操作<span class="caret"></span>
+
+                </button>
+                <ul role="menu" class="dropdown-menu dropdown-menu-right">
+                    <li class="J_tabShowActive"><a>定位当前选项卡</a>
+                    </li>
+                    <li class="divider"></li>
+                    <li class="J_tabCloseAll"><a>关闭全部选项卡</a>
+                    </li>
+                    <li class="J_tabCloseOther"><a>关闭其他选项卡</a>
+                    </li>
+                </ul>
+            </div>
+            <%--<a href="${ctx}/logout" class="roll-nav roll-right J_tabExit"><i class="fa fa fa-sign-out"></i> 退出</a>--%>
+        </div>
+        <div class="row J_mainContent" id="content-main">
+            <iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="${ctx}/home" frameborder="0" data-id="${ctx}/home" seamless></iframe>
+        </div>
+        <%--<div class="footer">
+            <div class="pull-left"><a href="http://www.jeeplus.org">http://www.jeeplus.org</a> &copy; 2015-2025</div>
+        </div>--%>
+    </div>
+    <!--右侧部分结束-->
+
+
+</div>
+</body>
+
+<!-- 语言切换插件,为国际化功能预留插件 -->
+<script type="text/javascript">
+    var index = "";
+    $(document).ready(function(){
+
+        $("a.lang-select").click(function(){
+            $(".lang-selected").find(".lang-flag").attr("src",$(this).find(".lang-flag").attr("src"));
+            $(".lang-selected").find(".lang-flag").attr("alt",$(this).find(".lang-flag").attr("alt"));
+            $(".lang-selected").find(".lang-id").text($(this).find(".lang-id").text());
+            $(".lang-selected").find(".lang-name").text($(this).find(".lang-name").text());
+
+        });
+
+
+    });
+
+    function changeStyle(){
+        $.get('${pageContext.request.contextPath}/theme/ace?url='+window.top.location.href,function(result){   window.location.reload();});
+    }
+
+</script>
+
+
+
+<!-- 即时聊天插件  开始-->
+<link href="${ctxStatic}/layer-v2.3/layim/layui/css/layui.css" type="text/css" rel="stylesheet"/>
+<script type="text/javascript">
+    var currentId = '${fns:getUser().id}';
+    var currentName = '${fns:getUser().name}';
+    var currentFace ='${fns:getUser().photo}';
+    var url="${ctx}";
+    var static_url="${ctxStatic}";
+    var JSESSIONID="${JSESSIONID}";
+    //var wsServer = 'ws://'+window.document.domain+':8670';
+
+    var BOSH_SERVICE = 'http://'+window.document.domain+':7070/http-bind';
+    var jid = '${fns:getUser().id}'+'@'+window.document.domain+'/web';
+    var jidpasswd = '${fns:getUser().passwordRemake}';
+
+</script>
+<!--webscoket接口  -->
+<script src="${ctxStatic}/layer-v2.3/layim/layui/layui.js"></script>
+
+<script src="${ctxStatic}/layer-v2.3/layim/layim.js"></script>
+<script src="${ctxStatic}/layer-v2.3/layim/strophe.js"></script>
+
+<!-- 即时聊天插件 结束 -->
+<style>
+    /*签名样式*/
+    .layim-sign-box{
+        width:80%
+    }
+    .layim-sign-hide{
+        background:transparent;border:0;
+    }
+</style>
+
+<script type="text/javascript">
+    /*$(function () {
+        var userId = '${fns:getUser().id}';
+        var roleId = '${fns:getUser().roleIds}';
+        var companyId = '${fns:getUser().company.id}';
+        var officeId ='${fns:getUser().office.id}';
+        var type ='1';
+
+        var socket;
+        if(typeof(WebSocket) == "undefined") {
+            top.layer.alert("您的浏览器不支持WebSocket");
+            return;
+        }
+        socket = new WebSocket("ws://"+window.document.domain+":8670");
+
+        //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
+        window.onbeforeunload = function(){
+            socket.close();
+        };
+        //发生了错误事件
+        socket.onerror = function(event) {
+            //top.layer.alert("发生了错误");
+//            console.log("websocket发生了错误");
+        };
+        //关闭事件
+        socket.onclose = function(event) {
+            //top.layer.alert("WebSocket已关闭");
+//            console.log("websocket已关闭");
+        };
+        //发送消息事件
+        socket.onmessage = function(event) {
+
+            //top.layer.alert("onMessage:服务器返回的数据!");
+            var resultData = event.data;
+            //console.log(resultData);
+            var message = $.parseJSON(resultData);
+            var resultState = message['resultState'];
+            //console.log(resultState);
+            if(resultState!="success"){
+                console.info("false");
+                return;
+            }
+            var noReadCount=message['noReadCount'],
+                count=message['count'],
+                notifyCount=message['notifyCount'],
+                notifyShowCount=message['notifyShowCount'];
+//            console.log(noReadCount);
+//            console.log(mailPage);
+//            console.log(count);
+//            console.log(page);
+//            console.log(notifyCount);
+//            console.log(notifyPage);
+//            console.log(notifyShowCount);
+//            console.log(notifyShowPage);
+            var regExp = /'/g;
+            if(noReadCount.length<1){
+                noReadCount="0";
+            }
+            if(count.length<1){
+                count="0";
+            }
+
+            if(notifyCount.length<1){
+                notifyCount="0";
+            }
+
+            if(notifyShowCount.length<1){
+                notifyShowCount="0";
+            }
+
+            $("#totalCount").text((parseInt(notifyCount)+parseInt(count)+parseInt(notifyShowCount))>9?"10+":(parseInt(notifyCount)+parseInt(count)+parseInt(notifyShowCount)));
+            $("#count").text(parseInt(count)>9?"10+":parseInt(count));
+            $("#noReadCount").text(parseInt(noReadCount)>9?"10+":parseInt(noReadCount));
+            $("#notifyCount").text(parseInt(notifyCount)>9?"10+":parseInt(notifyCount));
+            $("#notifyShowCount").text(parseInt(notifyShowCount)>9?"10+":parseInt(notifyShowCount));
+        };
+        //打开连接事件
+        socket.onopen = function() {
+            //top.layer.alert("WebSocket 已打开");
+//            console.log("websocket已打开");
+            //登录成功首次刷新
+            socket.send("{\"userId\":\""+userId+"\",\"companyId\":\""+companyId+"\",\"officeId\":\""+officeId+"\",\"roleId\":\""+roleId+"\",\"type\":\""+type+"\",\"messageType\":\"_user_notify_\"}");
+            //以后每隔30秒 服务端向浏览器 推送消息
+            setInterval(exeMessage,30000);
+        };
+        function exeMessage()
+        {
+            socket.send("{\"userId\":\""+userId+"\",\"companyId\":\""+companyId+"\",\"officeId\":\""+officeId+"\",\"roleId\":\""+roleId+"\",\"type\":\""+type+"\",\"messageType\":\"_user_notify_\"}");
+        }
+    });*/
+
+</script>
+<script>
+    $(function () {
+        var firstFlag = '${firstFlag}';
+        if(firstFlag=='true'){
+            setTimeout("changePwd()",2000)
+        }
+    })
+    function resizeWindow()
+    {
+        var winW = $(window).width();
+        if(winW > 1224)
+            $(".newsShell").css('width','400px');
+        else
+            $(".newsShell").css('width','200px');
+    }
+    resizeWindow();
+    $(window).resize(function(){
+            resizeWindow();
+    });
+
+
+    // $(function(){
+    //     var hei = $(document).height();
+    //     console.log(hei);
+    //     if($('.nav-header').width()==200){
+    //         $('.nav-header').css({'position':'fixed','width':'200px','height':'200px','left':0,'top':0,'z-index':999,'background':'#ffffff'});
+    //         var navlis = $('.nav-header').siblings();
+    //         var lisbox = document.createElement('div');
+    //         $(lisbox).append(navlis);
+    //         $(lisbox).css({'position':'fixed','width':'200px','height':'100%','left':0,','top':0,z-index':999,'background':'#ffffff'});
+    //     }
+    //         $('#side-menu').on('click',$('#side-menu li'),function (e) {
+    //             var menuHeight = $(this).height();
+    //             var offtop = $(e.target).height().top * 0.3 ;
+    //             if(menuHeight>hei){
+    //                 var difference = menuHeight - hei;
+    //                 $(this).css("margin-top",-difference+ 'px');
+    //             }else if(menuHeight<=hei){
+    //                 $(this).stop().animate({marginTop:'0px'},"slow");
+    //             }
+    //
+    //         });
+    //
+    // })
+
+    // $(function(){
+    //     // $('#side-menu').bind('mousewheel', function(event, delta) { return false; });
+    //     var hei = $(document).height();
+    //     console.log('hei:'+ hei);
+    //     if(hei>=760){
+    //         $('#side-menu').mouseover(function () {
+    //             var menuHeight = $('#side-menu').height();
+    //             if(menuHeight>hei){
+    //                 if(menuHeight>1500){
+    //                     var difference = menuHeight - hei - 200;
+    //                     $(this).css("margin-top",-difference+ 'px');
+    //                 }else{
+    //                     var difference = menuHeight - hei;
+    //                     $(this).css("margin-top",-difference+ 'px');
+    //                 }
+    //
+    //             }else if(menuHeight<=hei){
+    //                 $(this).css("margin-top",'0px');
+    //             }
+    //         });
+    //     }else if(hei<760){
+    //         $('#side-menu').mouseover(function () {
+    //             var menuHeight = $('#side-menu').height();
+    //             var initHei = 760 - hei;
+    //             if(menuHeight>hei){
+    //                 var difference = menuHeight - hei - initHei;
+    //                 $(this).css("margin-top",-difference+ 'px');
+    //             }else if(menuHeight<=hei){
+    //                 $(this).css("margin-top",'0px');
+    //             }
+    //         });
+    //     }
+    //
+    // })
+
+
+
+</script>
+
+</html>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1003 - 0
src/main/webapp/webpage/modules/sys/sysLogin.jsp


+ 549 - 0
src/main/webapp/webpage/modules/sys/sysLogin2.jsp

@@ -0,0 +1,549 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ page import="org.apache.shiro.web.filter.authc.FormAuthenticationFilter"%>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<!DOCTYPE html>
+<html>
+
+	<head>
+		<meta name="description" content="User login page" />
+		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
+		<script src="${ctxStatic}/jquery/jquery-2.1.1.min.js" type="text/javascript"></script>
+		<script src="${ctxStatic}/jquery/jquery-migrate-1.1.1.min.js" type="text/javascript"></script>
+		<script src="${ctxStatic}/jquery-validation/1.14.0/jquery.validate.js" type="text/javascript"></script>
+		<script src="${ctxStatic}/jquery-validation/1.14.0/localization/messages_zh.min.js" type="text/javascript"></script>
+		<link href="${ctxStatic}/bootstrap/3.3.4/css_default/bootstrap.min.css" type="text/css" rel="stylesheet" />
+		<script src="${ctxStatic}/bootstrap/3.3.4/js/bootstrap.min.js"  type="text/javascript"></script>
+		<link href="${ctxStatic}/awesome/4.4/css/font-awesome.min.css" rel="stylesheet" />
+		<!-- jeeplus -->
+		<link href="${ctxStatic}/common/jeeplus.css" type="text/css" rel="stylesheet" />
+		<script src="${ctxStatic}/common/jeeplus.js" type="text/javascript"></script>
+		<link rel="shortcut icon" href="images/favicon.png" type="image/png">
+		<!-- text fonts -->
+		<link rel="stylesheet" href="${ctxStatic }/common/login/ace-fonts.css" />
+
+		<!-- ace styles -->
+		<link rel="stylesheet" href="${ctxStatic }/common/login/ace.css" />
+
+		<!-- 引入layer插件 -->
+		<script src="${ctxStatic}/layer-v2.3/layer/layer.js"></script>
+		<script src="${ctxStatic}/layer-v2.3/layer/laydate/laydate.js"></script>
+		
+		
+		<!--[if lte IE 9]>
+			<link rel="stylesheet" href="../assets/css/ace-part2.css" />
+		<![endif]-->
+		<link rel="stylesheet" href="${ctxStatic }/common/login/ace-rtl.css" />
+		<title>${fns:getConfig('productName')} 登录</title>
+		<script>
+			if (window.top !== window.self) {
+				window.top.location = window.location;
+			}
+		</script>
+		<script type="text/javascript">
+				$(document).ready(function() {
+					$("#loginForm").validate({
+						rules: {
+							validateCode: {remote: "${pageContext.request.contextPath}/servlet/validateCodeServlet"}
+						},
+						messages: {
+							username: {required: "请填写用户名."},password: {required: "请填写密码."},
+							validateCode: {remote: "验证码不正确.", required: "请填写验证码."}
+						},
+						errorLabelContainer: "#messageBox",
+						errorPlacement: function(error, element) {
+							error.appendTo($("#loginError").parent());
+						} 
+					});
+				});
+				// 如果在框架或在对话框中,则弹出提示并跳转到首页
+				if(self.frameElement && self.frameElement.tagName == "IFRAME" || $('#left').length > 0 || $('.jbox').length > 0){
+					top.location = "${ctx}";
+				}
+		</script>
+		<script type="text/javascript">
+		$(document).ready(function() {
+			$("#inputForm").validate({
+				rules: {
+				loginName: {remote: "${ctx}/sys/user/validateLoginName"},
+				mobile: {remote: "${ctx}/sys/user/validateMobile"},
+				randomCode: {
+
+					  remote:{
+
+						   url:"${ctx}/sys/register/validateMobileCode", 
+	
+						  data:{
+					       mobile:function(){
+					          return $("#tel").val();
+					          }
+			          		} 
+
+						}
+
+
+					}
+			},
+				messages: {
+					confirmNewPassword: {equalTo: "输入与上面相同的密码"},
+					ck1: {required: "必须接受用户协议."},
+					loginName: {remote: "此用户名已经被注册!", required: "用户名不能为空."},
+					mobile:{remote: "此手机号已经被注册!", required: "手机号不能为空."},
+					randomCode:{remote: "验证码不正确!", required: "验证码不能为空."}
+				},
+				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);
+					}
+				}
+			});
+
+			$("#resetForm").validate({
+				rules: {
+				mobile: {remote: "${ctx}/sys/user/validateMobileExist"}
+			},
+				messages: {
+					mobile:{remote: "此手机号未注册!", required: "手机号不能为空."}
+				},
+				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);
+					}
+				}
+			});
+			// 手机号码验证
+			jQuery.validator.addMethod("isMobile", function(value, element) {
+			    var length = value.length;
+			    var mobile = /^(13[0-9]{9})|(18[0-9]{9})|(14[0-9]{9})|(17[0-9]{9})|(15[0-9]{9})$/;
+			    return (length == 11 && mobile.test(value));
+			}, "请正确填写您的手机号码");
+
+
+
+			$('#sendPassBtn').click(function () { 
+				if($("#tel_resetpass").val()=="" || $("#tel_resetpass-error").text()!=""){
+					top.layer.alert("请输入有效的注册手机号码!", {icon: 0});//讨厌的白色字体问题
+					return;
+
+				}
+				$("#sendPassBtn").attr("disabled", true); 
+				$.get("${ctx}/sys/user/resetPassword?mobile="+$("#tel_resetpass").val(),function(data){
+						if(data.success == false){
+							top.layer.alert(data.msg, {icon: 0});//讨厌的白色字体问题
+							//alert(data.msg);
+							$("#sendPassBtn").html("重新发送").removeAttr("disabled"); 
+							clearInterval(countdown); 
+
+						}
+
+					});
+				var count = 60; 
+				var countdown = setInterval(CountDown, 1000); 
+				function CountDown() { 
+					$("#sendPassBtn").attr("disabled", true); 
+					$("#sendPassBtn").html("等待 " + count + "秒!"); 
+					if (count == 0) { 
+						$("#sendPassBtn").html("重新发送").removeAttr("disabled"); 
+						clearInterval(countdown); 
+					} 
+					count--; 
+				}
+
+				
+			}) ;
+			
+
+			$('#sendCodeBtn').click(function () { 
+				if($("#tel").val()=="" || $("#tel-error").text()!=""){
+					top.layer.alert("请输入有效的注册手机号码!", {icon: 0});//讨厌的白色字体问题
+					return;
+
+				}
+				$("#sendCodeBtn").attr("disabled", true); 
+				$.get("${ctx}/sys/register/getRegisterCode?mobile="+$("#tel").val(),function(data){
+						if(data.success == false){
+							//top.layer.alert(data.msg, {icon: 0});讨厌的白色字体问题
+							alert(data.msg);
+							$("#sendCodeBtn").html("重新发送").removeAttr("disabled"); 
+							clearInterval(countdown); 
+
+						}
+
+					});
+				var count = 60; 
+				var countdown = setInterval(CountDown, 1000); 
+				function CountDown() { 
+					$("#sendCodeBtn").attr("disabled", true); 
+					$("#sendCodeBtn").html("等待 " + count + "秒!"); 
+					if (count == 0) { 
+						$("#sendCodeBtn").html("重新发送").removeAttr("disabled"); 
+						clearInterval(countdown); 
+					} 
+					count--; 
+				}
+
+				
+			}) ;
+			
+		});
+
+	
+		
+		
+
+		
+	</script>
+	</head>
+
+	
+	<body class="login-layout light-login">
+		<div class="main-container">
+			<div class="main-content">
+				<div class="row">
+					<div class="col-sm-10 col-sm-offset-1">
+						<div class="login-container">
+							
+							<div class="center">
+								<h1>
+									<br/>
+									<img src="${ctxStatic }/common/login/images/logo.png" style="width:380px">
+									<br>
+								</h1>
+								
+								
+								<sys:message content="${message}"/>
+							</div>
+
+							<div class="space-6"></div>
+
+							<div class="position-relative">
+								<div id="login-box" class="login-box visible widget-box no-border">
+									<div class="widget-body">
+										<div class="widget-main">
+											<h4 class="header blue lighter bigger">
+												<i class="ace-icon fa fa-coffee green"></i>
+												用户登录
+											</h4>
+
+											<div class="space-6"></div>
+
+											<form id="loginForm" class="form-signin" action="${ctx}/login" method="post">
+												<fieldset>
+													<label class="block clearfix">
+														<span class="block input-icon input-icon-right">
+															<input type="text"  id="username" name="username" class="form-control required"  value="${username}" placeholder="用户名" />
+															<i class="ace-icon fa fa-user"></i>
+														</span>
+													</label>
+
+													<label class="block clearfix">
+														<span class="block input-icon input-icon-right">
+															<input type="password" id="password" name="password" class="form-control required" placeholder="密码" />
+															<i class="ace-icon fa fa-lock"></i>
+														</span>
+													</label>
+													<c:if test="${isValidateCodeLogin}">
+														<div class="input-group m-b text-muted validateCode">
+														<label class="input-label mid" for="validateCode">验证码:</label>
+														<sys:validateCode name="validateCode" inputCssStyle="margin-bottom:5px;"/>
+														</div>
+													</c:if>
+													<div class="space"></div>
+
+													<div class="clearfix">
+														<label class="inline">
+															<input  type="checkbox" id="rememberMe" name="rememberMe" ${rememberMe ? 'checked' : ''} class="ace" />
+															<span class="lbl"> 记住我</span>
+														</label>
+
+														<button type="submit" class="width-35 pull-right btn btn-sm btn-primary">
+															<i class="ace-icon fa fa-key"></i>
+															<span class="bigger-110">登录</span>
+														</button>
+													</div>
+
+													<div class="space-4"></div>
+														<div id="themeSwitch" class="dropdown">
+															<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">${fns:getDictLabel(cookie.theme.value,'theme','默认主题')}<b class="caret"></b></a>
+															<ul class="dropdown-menu">
+															  <c:forEach items="${fns:getDictList('theme')}" var="dict"><li><a href="javascript:void(0)" onclick="location='${pageContext.request.contextPath}/theme/${dict.value}?url='+location.href"><font color="black">${dict.label}</font></a></li></c:forEach>
+															</ul>
+															<!--[if lte IE 6]><script type="text/javascript">$('#themeSwitch').hide();</script><![endif]-->
+														</div>
+												</fieldset>
+											</form>
+											<!--  
+											<div class="social-or-login center">
+												<span class="bigger-110">Or Login Using</span>
+											</div>
+
+											<div class="space-6"></div>
+
+											<div class="social-login center">
+												<a class="btn btn-primary">
+													<i class="ace-icon fa fa-facebook"></i>
+												</a>
+
+												<a class="btn btn-info">
+													<i class="ace-icon fa fa-twitter"></i>
+												</a>
+
+												<a class="btn btn-danger">
+													<i class="ace-icon fa fa-google-plus"></i>
+												</a>
+											</div>
+											-->
+										</div><!-- /.widget-main -->
+
+										<div class="toolbar clearfix">
+											<div>
+												<a href="javascript:void(0)" data-target="#forgot-box" class="forgot-password-link">
+													<i class="ace-icon fa fa-arrow-left"></i>
+													忘记密码
+												</a>
+											</div>
+
+											<div>
+												<a href="javascript:void(0)" data-target="#signup-box" class="user-signup-link">
+													没有账号?注册
+													<i class="ace-icon fa fa-arrow-right"></i>
+												</a>
+											</div>
+										</div>
+									</div><!-- /.widget-body -->
+								</div><!-- /.login-box -->
+
+								<div id="forgot-box" class="forgot-box widget-box no-border">
+									<div class="widget-body">
+										<div class="widget-main">
+											<h4 class="header red lighter bigger">
+												<i class="ace-icon fa fa-key"></i>
+												找回密码
+											</h4>
+
+											<div class="space-6"></div>
+											<p>
+												请输入您的注册手机号,您将会收到新的密码。
+											</p>
+
+											<form id="resetForm">
+												<fieldset>
+													<label class="block clearfix">
+														<span class="block input-icon input-icon-right">
+															<input id="tel_resetpass" name="mobile" type="tel" class="form-control  text-muted required isMobile" placeholder="请输入手机号" />
+															<i class="ace-icon fa fa-envelope"></i>
+														</span>
+													</label>
+
+													<div class="clearfix">
+														<button id="sendPassBtn" type="button" class="width-35 pull-right btn btn-sm btn-danger">
+															<i class="ace-icon fa fa-lightbulb-o"></i>
+															<span class="bigger-110">发送!</span>
+														</button>
+													</div>
+												</fieldset>
+											</form>
+										</div><!-- /.widget-main -->
+
+										<div class="toolbar center">
+											<a href="javascript:void(0)" data-target="#login-box" class="back-to-login-link">
+												返回登录
+												<i class="ace-icon fa fa-arrow-right"></i>
+											</a>
+										</div>
+									</div><!-- /.widget-body -->
+								</div><!-- /.forgot-box -->
+
+								<div id="signup-box" class="signup-box widget-box no-border">
+									<div class="widget-body">
+										<div class="widget-main">
+											<h4 class="header green lighter bigger">
+												<i class="ace-icon fa fa-users blue"></i>
+												用户注册
+											</h4>
+
+											<div class="space-6"></div>
+											<form:form id="inputForm" modelAttribute="user" action="${ctx}/sys/register/registerUser" method="post" class="form-group form-horizontal">
+												<input  type="hidden" value="system" name="roleName"><!-- 默认注册用户都是超级管理员 -->
+												<fieldset>
+													<label class="block clearfix">
+														<span class="block input-icon input-icon-right">
+															<input id="tel" name="mobile" type="text" value="" maxlength="11" minlength="11" class="form-control text-muted required isMobile"  placeholder="手机号"/>
+															<i class="ace-icon fa fa-phone"></i>
+														</span>
+													</label>
+													<label class="block clearfix">
+														<span class="block input-icon input-icon-right">
+															<input id="code" name="randomCode" type="text" value="" maxlength="4" minlength="4" class="required"  placeholder="验证码"/>
+															<button class="width-40 pull-right btn btn-sm btn-primary" type="button" id="sendCodeBtn"  >
+																<i class="ace-icon fa fa-lightbulb-o"></i>
+																<span class="bigger-110">获取验证码!</span>
+															</button>
+															<label id="code-error" class="error" for="code" style="display:none"></label>
+														</span>
+													</label>
+													<label class="block clearfix">
+														<span class="block input-icon input-icon-right">
+															<input id="userId" name="loginName" type="text" value="${user.loginName }" maxlength="20" minlength="3" class="form-control required" placeholder="用户名" />
+															<i class="ace-icon fa fa-user"></i>
+														</span>
+													</label>
+
+													<label class="block clearfix">
+														<span class="block input-icon input-icon-right">
+															<input id="newPassword" name="password" type="password" value="" maxlength="20" minlength="3"  class="form-control required" placeholder="密码" />
+															<i class="ace-icon fa fa-lock"></i>
+														</span>
+													</label>
+
+													<label class="block clearfix">
+														<span class="block input-icon input-icon-right">
+															<input id="confirmNewPassword" name="confirmNewPassword" type="password" value="" maxlength="20" minlength="3" class="form-control required" equalTo="#newPassword" placeholder="重复密码" />
+															<i class="ace-icon fa fa-retweet"></i>
+														</span>
+													</label>
+
+													<label class="block">
+														<input name="ck1" type="checkbox" class="required ace" />
+														<span class="lbl">
+															我接受
+															<a href="javascript:void(0)">《JeePlus用户注册协议》</a>
+														</span>
+														<label id="ck1-error" class="error" for="ck1" style="display: none;">必须接受用户协议</label>
+													</label>
+
+													<div class="space-24"></div>
+
+													<div class="clearfix">
+														<button type="reset" class="width-30 pull-left btn btn-sm">
+															<i class="ace-icon fa fa-refresh"></i>
+															<span class="bigger-110">重置</span>
+														</button>
+
+														<button type="submit" class="width-65 pull-right btn btn-sm btn-success">
+															<span class="bigger-110">注册</span>
+
+															<i class="ace-icon fa fa-arrow-right icon-on-right"></i>
+														</button>
+													</div>
+												</fieldset>
+											</form:form>
+										</div>
+
+										<div class="toolbar center">
+											<a href="javascript:void(0)" data-target="#login-box" class="back-to-login-link">
+												<i class="ace-icon fa fa-arrow-left"></i>
+												返回登录
+											</a>
+										</div>
+									</div><!-- /.widget-body -->
+								</div><!-- /.signup-box -->
+							</div><!-- /.position-relative -->
+							<div class="center"><h4 class="blue" id="id-company-text">&copy; JeePlus</h4></div>
+							<div class="navbar-fixed-top align-right">
+								<br />
+								&nbsp;
+								<a id="btn-login-dark" href="javascript:void(0)">Dark</a>
+								&nbsp;
+								<span class="blue">/</span>
+								&nbsp;
+								<a id="btn-login-blur" href="javascript:void(0)">Blur</a>
+								&nbsp;
+								<span class="blue">/</span>
+								&nbsp;
+								<a id="btn-login-light" href="javascript:void(0)">Light</a>
+								&nbsp; &nbsp; &nbsp;
+							</div>
+						</div>
+					</div><!-- /.col -->
+				</div><!-- /.row -->
+			</div><!-- /.main-content -->
+		</div><!-- /.main-container -->
+
+		<!-- basic scripts -->
+
+		<!--[if !IE]> -->
+		<script type="text/javascript">
+			window.jQuery || document.write("<script src='../assets/js/jquery.js'>"+"<"+"/script>");
+		</script>
+
+		<!-- <![endif]-->
+
+		<!--[if IE]>
+<script type="text/javascript">
+ window.jQuery || document.write("<script src='../assets/js/jquery1x.js'>"+"<"+"/script>");
+</script>
+<![endif]-->
+
+		<script type="text/javascript">
+			if('ontouchstart' in document.documentElement) document.write("<script src='../assets/js/jquery.mobile.custom.js'>"+"<"+"/script>");
+		</script>
+		<style>
+		/* Validation */
+
+			label.error {
+			    color: #cc5965;
+			    display: inline-block;
+			    margin-left: 5px;
+			}
+			
+			.form-control.error {
+			    border: 1px dotted #cc5965;
+			}
+		</style>
+		<!-- inline scripts related to this page -->
+		<script type="text/javascript">
+		$(document).ready(function() {
+			 $(document).on('click', '.toolbar a[data-target]', function(e) {
+				e.preventDefault();
+				var target = $(this).data('target');
+				$('.widget-box.visible').removeClass('visible');//hide others
+				$(target).addClass('visible');//show target
+			 });
+			});
+			
+			
+			
+			//you don't need this, just used for changing background
+			$(document).ready(function() {
+			 $('#btn-login-dark').on('click', function(e) {
+				$('body').attr('class', 'login-layout');
+				$('#id-text2').attr('class', 'white');
+				$('#id-company-text').attr('class', 'blue');
+				
+				e.preventDefault();
+			 });
+			 $('#btn-login-light').on('click', function(e) {
+				$('body').attr('class', 'login-layout light-login');
+				$('#id-text2').attr('class', 'grey');
+				$('#id-company-text').attr('class', 'blue');
+				
+				e.preventDefault();
+			 });
+			 $('#btn-login-blur').on('click', function(e) {
+				$('body').attr('class', 'login-layout blur-login');
+				$('#id-text2').attr('class', 'white');
+				$('#id-company-text').attr('class', 'light-blue');
+				
+				e.preventDefault();
+			 });
+			 
+			});
+		</script>
+	</body>
+</html>

+ 146 - 0
src/main/webapp/webpage/modules/sys/sysroleactivityForm.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"/>
+	<style>
+		label.error{
+			left:0;
+			top:40px;
+		}
+	</style>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+		});
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="sysRoleActivity" action="${ctx}/sys/sysroleactivity/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 required layui-input "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>编码:</label>
+					<div class="layui-input-block">
+						<form:input path="sort" htmlEscape="false" minlength="4" maxlength="4" class="layui-input form-control number required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label"><span class="require-item">*</span>角色类型:</label>
+					<div class="layui-input-block">
+						<form:select path="type" class="form-control required simple-select">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getDictList('sys_role_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label">备注信息:</label>
+					<div class="layui-input-block">
+						<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+					</div>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>工作流明细</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable" class="table table-bordered table-condensed no-bottom-margin details">
+						<thead>
+						<tr>
+							<%--<th width="30%"  style="text-align: center;">模块类型</th>--%>
+							<th width="50%"  style="text-align: center;">工作流类型</th>
+							<th width="50%"  style="text-align: center;">工作流环节</th>
+						</tr>
+						</thead>
+						<tbody id="activityList">
+							<c:if test="${not empty sysRoleActivity.activityList}">
+							<c:forEach items="${sysRoleActivity.activityList}" var="activity" varStatus="index">
+							<tr>
+								<%--<td>
+										${activity.processKey}
+								</td>--%>
+								<td >
+										${activity.activityName}
+								</td>
+								<td>
+										${activity.name}
+								</td>
+							</tr>
+							</c:forEach>
+							</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>关联岗位明细</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable3" class="table table-bordered table-condensed no-bottom-margin details">
+						<thead>
+						<tr>
+							<th width="30%"  style="text-align: center;">岗位名称</th>
+							<th width="30%"  style="text-align: center;">归属部门</th>
+							<th width="40%"  style="text-align: center;">数据范围</th>
+						</tr>
+						</thead>
+						<tbody id="roleList">
+						<c:if test="${not empty sysRoleActivity.roleList}">
+							<c:forEach items="${sysRoleActivity.roleList}" var="role" varStatus="index">
+								<tr>
+									<td style="text-align: center;">
+											${role.name}
+									</td>
+									<td style="text-align: center;">
+											${role.office.topCompany}
+									</td>
+									<td style="text-align: center;">
+											${fns:getDictLabel(role.dataScope, 'sys_data_scope', '无')}
+									</td>
+								</tr>
+							</c:forEach>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</form:form>
+
+	</div>
+</div>
+</body>
+</html>

+ 149 - 0
src/main/webapp/webpage/modules/sys/sysroleactivityList.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"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</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="sysRoleActivity" action="${ctx}/sys/sysroleactivity/" method="post" class="form-inline">
+				<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+				<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+				<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+
+				<div class="commonQuery">
+					<div class="layui-item query athird">
+						<label class="layui-form-label">角色名称:</label>
+						<div class="layui-input-block with-icon">
+							<form:input path="name" htmlEscape="false" maxlength="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="type" class=" form-control  simple-select">
+								<form:option value="" label=""/>
+								<form:options items="${fns:getDictList('sys_role_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+							</form:select>
+						</div>
+					</div>
+
+					<div class="layui-item athird fr">
+						<div class="input-group">
+							<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+							<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+						</div>
+					</div>
+					<div style="    clear:both;"></div>
+				</div>
+			</form:form>
+			</div>
+		</div>
+
+		<div class="full-width fl">
+			<div class="contentShadow layui-form contentDetails">
+				<div class="nav-btns">
+					<shiro:hasPermission name="sys:sysroleactivity:add">
+						<table:addRow url="${ctx}/sys/sysroleactivity/form" title="工作流角色信息" width="95%" height="95%"></table:addRow><!-- 增加按钮 -->
+					</shiro:hasPermission>
+					<%--<shiro:hasPermission name="sys:sysroleactivity:del">
+						<table:delRow url="${ctx}/sys/sysroleactivity/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+					</shiro:hasPermission>--%>
+					<shiro:hasPermission name="sys:sysroleactivity:import">
+						<table:importExcel url="${ctx}/sys/sysroleactivity/import"></table:importExcel><!-- 导入按钮 -->
+					</shiro:hasPermission>
+					<shiro:hasPermission name="sys:sysroleactivity:export">
+						<table:exportExcel url="${ctx}/sys/sysroleactivity/export"></table:exportExcel><!-- 导出按钮 -->
+					</shiro:hasPermission>
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+					<div style="clear: both;"></div>
+				</div>
+
+				<!-- 表格 -->
+				<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+					<thead>
+						<tr>
+							<th width="50"> <input type="checkbox" class="i-checks"></th>
+							<th  class="sort-column name">角色名称</th>
+							<th  class="sort-column type">角色类型</th>
+							<th  class="sort-column sort">编码</th>
+							<th  class="sort-column remarks">备注信息</th>
+							<th width="200">操作</th>
+						</tr>
+					</thead>
+					<tbody>
+					<c:choose>
+						<c:when test="${not empty page.list}">
+
+							<c:forEach items="${page.list}" var="sysRoleActivity">
+								<tr>
+									<td> <input type="checkbox" id="${sysRoleActivity.id}" class="i-checks"></td>
+									<td><a class="attention-info" href="javascript:void(0);" onclick="openDialogView('查看工作流角色信息', '${ctx}/sys/sysroleactivity/form?id=${sysRoleActivity.id}&view=1','95%', '95%')">
+										${sysRoleActivity.name}
+									</a></td>
+									<td>
+										${fns:getDictLabel(sysRoleActivity.type, 'sys_role_type', '')}
+									</td>
+									<td>
+										${sysRoleActivity.sort}
+									</td>
+									<td>
+										${sysRoleActivity.remarks}
+									</td>
+									<td class="op-td text-center">
+										<div class="op-btn-box">
+											<shiro:hasPermission name="sys:sysroleactivity:edit">
+												<a href="#" onclick="openDialog('修改工作流角色信息', '${ctx}/sys/sysroleactivity/form?id=${sysRoleActivity.id}','95%', '95%')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>
+											</shiro:hasPermission>
+											<shiro:hasPermission name="sys:sysroleactivity:edit">
+												<a href="${ctx}/sys/sysroleactivity/delete?id=${sysRoleActivity.id}" onclick="return confirmx('确认要删除该角色吗?', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
+											</shiro:hasPermission>
+										</div>
+									</td>
+								</tr>
+							</c:forEach>
+						</c:when>
+						<c:otherwise>
+							<tr>
+								<td colspan="5" align="center">暂无数据</td>
+							</tr>
+						</c:otherwise>
+					</c:choose>
+					</tbody>
+				</table>
+
+					<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+</div>
+<script>
+    $("a").on("click",addLinkVisied);
+
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 136 - 0
src/main/webapp/webpage/modules/sys/sysroleactivityView.jsp

@@ -0,0 +1,136 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作流角色信息管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+		});
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container view-form">
+		<form:form id="inputForm" modelAttribute="sysRoleActivity" action="${ctx}/sys/sysroleactivity/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 required layui-input "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>编码:</label>
+					<div class="layui-input-block">
+						<form:input path="sort" readonly="true" htmlEscape="false" minlength="4" maxlength="4" class="layui-input form-control number required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label"><span class="require-item">*</span>角色类型:</label>
+					<div class="layui-input-block">
+						<input readonly="true" htmlEscape="false" class="layui-input form-control" value="${fns:getDictLabel(sysRoleActivity.type, 'sys_role_type', '')}" />
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label">备注信息:</label>
+					<div class="layui-input-block">
+						<form:textarea path="remarks" readonly="true" htmlEscape="false" rows="4"    class="form-control "/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>工作流明细</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable" class="table table-bordered table-condensed no-bottom-margin details">
+						<thead>
+						<tr>
+								<%--<th width="30%"  style="text-align: center;">模块类型</th>--%>
+							<th width="50%"  style="text-align: center;">工作流类型</th>
+							<th width="50%"  style="text-align: center;">工作流环节</th>
+						</tr>
+						</thead>
+						<tbody id="activityList">
+						<c:if test="${not empty sysRoleActivity.activityList}">
+							<c:forEach items="${sysRoleActivity.activityList}" var="activity" varStatus="index">
+								<tr>
+										<%--<td>
+                                                ${activity.processKey}
+                                        </td>--%>
+									<td >
+											${activity.activityName}
+									</td>
+									<td>
+											${activity.name}
+									</td>
+								</tr>
+							</c:forEach>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>关联岗位明细</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable3" class="table table-bordered table-condensed no-bottom-margin details">
+						<thead>
+						<tr>
+							<th width="30%"  style="text-align: center;">岗位名称</th>
+							<th width="30%"  style="text-align: center;">归属部门</th>
+							<th width="40%"  style="text-align: center;">数据范围</th>
+						</tr>
+						</thead>
+						<tbody id="roleList">
+						<c:if test="${not empty sysRoleActivity.roleList}">
+							<c:forEach items="${sysRoleActivity.roleList}" var="role" varStatus="index">
+								<tr>
+									<td style="text-align: center;">
+											${role.name}
+									</td>
+									<td style="text-align: center;">
+											${role.office.topCompany}
+									</td>
+									<td style="text-align: center;">
+											${fns:getDictLabel(role.dataScope, 'sys_data_scope', '无')}
+									</td>
+								</tr>
+							</c:forEach>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</form:form>
+
+	</div>
+</div>
+</body>
+</html>

+ 0 - 0
src/main/webapp/webpage/modules/sys/systemConfig.jsp


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است