Prechádzať zdrojové kódy

优化菜单列表和区域管理列表

user5 4 rokov pred
rodič
commit
c18096eef8
27 zmenil súbory, kde vykonal 82953 pridanie a 52 odobranie
  1. 65 0
      src/main/java/com/jeeplus/modules/projectAccessory/service/ProjectTemplateService.java
  2. 19 0
      src/main/java/com/jeeplus/modules/projectAccessory/web/ProjectAccessoryRelationController.java
  3. 4 0
      src/main/java/com/jeeplus/modules/sys/dao/AreaDao.java
  4. 2 0
      src/main/java/com/jeeplus/modules/sys/dao/MenuDao.java
  5. 28 1
      src/main/java/com/jeeplus/modules/sys/entity/Area.java
  6. 27 0
      src/main/java/com/jeeplus/modules/sys/entity/Menu.java
  7. 22 0
      src/main/java/com/jeeplus/modules/sys/service/AreaService.java
  8. 5 0
      src/main/java/com/jeeplus/modules/sys/service/SystemService.java
  9. 25 2
      src/main/java/com/jeeplus/modules/sys/web/AreaController.java
  10. 26 2
      src/main/java/com/jeeplus/modules/sys/web/MenuController.java
  11. 20 2
      src/main/resources/mappings/modules/sys/AreaDao.xml
  12. 30 5
      src/main/resources/mappings/modules/sys/MenuDao.xml
  13. BIN
      src/main/webapp/static/common/css/allbgs.gif
  14. BIN
      src/main/webapp/static/common/css/allbgs.png
  15. BIN
      src/main/webapp/static/common/css/loading.gif
  16. 17936 33
      src/main/webapp/static/common/css/vendors.css
  17. 32 0
      src/main/webapp/static/layer-v2.3/layui/css/treeTable.min.css
  18. 63738 0
      src/main/webapp/static/layer-v2.3/layui/jquery.treeTable.min.js
  19. 198 2
      src/main/webapp/static/treeTable/jquery.treeTable.min.js
  20. 78 2
      src/main/webapp/webpage/modules/projectAccessory/projectAccessoryRelation/projectAccessoryRelationList.jsp
  21. 1 1
      src/main/webapp/webpage/modules/ruralprojectrecords/cost/ruralCostProjectRecordsAdminModify.jsp
  22. 1 1
      src/main/webapp/webpage/modules/ruralprojectrecords/cost/ruralCostProjectRecordsForm.jsp
  23. 1 1
      src/main/webapp/webpage/modules/ruralprojectrecords/cost/ruralCostProjectRecordsModify.jsp
  24. 145 0
      src/main/webapp/webpage/modules/sys/areaList2.jsp
  25. 192 0
      src/main/webapp/webpage/modules/sys/areaLists.jsp
  26. 151 0
      src/main/webapp/webpage/modules/sys/menuList2.jsp
  27. 207 0
      src/main/webapp/webpage/modules/sys/menuLists.jsp

+ 65 - 0
src/main/java/com/jeeplus/modules/projectAccessory/service/ProjectTemplateService.java

@@ -59,6 +59,31 @@ public class ProjectTemplateService extends TreeService<ProjectTemplateDao, Proj
         return  DictUtils.getMainDictList("attachment_template_type");
     }
 
+
+    /**
+     * 获取咨询项目类别
+     * @return
+     */
+    public static List<MainDictDetail> projectSortList(){
+        return  DictUtils.getMainDictList("attachment_project_sort");
+    }
+
+    /**
+     * 获取造价项目类别
+     * @return
+     */
+    public static List<MainDictDetail> projectSortCostList(){
+        return  DictUtils.getMainDictList("attachment_project_sort_cost");
+    }
+
+    /**
+     * 获取送审金额字典信息
+     * @return
+     */
+    public static List<MainDictDetail> projectApprovalMoneyList(){
+        return  DictUtils.getMainDictList("attachment_project_approval_money");
+    }
+
     /**
      * 查询所有数据
      * @param projectTemplateInfo
@@ -307,4 +332,44 @@ public class ProjectTemplateService extends TreeService<ProjectTemplateDao, Proj
         return attachments.size();
     }
 
+    public Map getSortMessage(String type){
+        Map map = new HashMap();
+        List<MainDictDetail> mainDictDetails = Lists.newArrayList();
+        try {
+            if(StringUtils.isNotBlank(type)){
+                if("1".equals(type)){
+                    mainDictDetails = projectSortList();
+                }else if("2".equals(type)){
+                    mainDictDetails = projectSortCostList();
+                }
+            }
+            map.put("data",mainDictDetails);
+            map.put("success",true);
+        } catch (Exception e) {
+            map.put("data","");
+            map.put("success",false);
+        }
+        return map;
+    }
+
+    public Map getMoneyMessage(String type,String sortType){
+        Map map = new HashMap();
+        List<MainDictDetail> mainDictDetails = Lists.newArrayList();
+        try {
+            if(StringUtils.isNotBlank(type)){
+                if("1".equals(type)){
+                    mainDictDetails = projectApprovalMoneyList();
+                }else if("2".equals(type)){
+                    mainDictDetails = projectApprovalMoneyList();
+                }
+            }
+            map.put("data",mainDictDetails);
+            map.put("success",true);
+        } catch (Exception e) {
+            map.put("data","");
+            map.put("success",false);
+        }
+        return map;
+    }
+
 }

+ 19 - 0
src/main/java/com/jeeplus/modules/projectAccessory/web/ProjectAccessoryRelationController.java

@@ -9,6 +9,9 @@ import com.jeeplus.common.web.BaseController;
 import com.jeeplus.modules.projectAccessory.entity.ProjectAccessoryRelationInfo;
 import com.jeeplus.modules.projectAccessory.service.ProjectAccessoryRelationService;
 import com.jeeplus.modules.projectAccessory.service.ProjectTemplateService;
+import com.jeeplus.modules.sys.dao.MainDictDetailDao;
+import com.jeeplus.modules.sys.entity.Area;
+import com.jeeplus.modules.sys.entity.MainDictDetail;
 import org.apache.shiro.authz.annotation.Logical;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -33,6 +36,8 @@ public class ProjectAccessoryRelationController extends BaseController {
 
 	@Autowired
 	private ProjectTemplateService projectTemplateService;
+	@Autowired
+	private MainDictDetailDao mainDictDetailDao;
 	
 	@ModelAttribute
 	public ProjectAccessoryRelationInfo get(@RequestParam(required=false) String id) {
@@ -219,4 +224,18 @@ public class ProjectAccessoryRelationController extends BaseController {
 		return map;
 	}
 
+	@RequestMapping("getMessage")
+	@ResponseBody
+	public Map getMessage(String type){
+		Map map = projectTemplateService.getSortMessage(type);
+		return  map;
+	}
+
+	@RequestMapping("getMoneyMessage")
+	@ResponseBody
+	public Map getMoneyMessage(String type,String sortType){
+		Map map = projectTemplateService.getMoneyMessage(type,sortType);
+		return  map;
+	}
+
 }

+ 4 - 0
src/main/java/com/jeeplus/modules/sys/dao/AreaDao.java

@@ -8,6 +8,8 @@ import com.jeeplus.common.persistence.annotation.MyBatisDao;
 import com.jeeplus.modules.sys.entity.Area;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * 区域DAO接口
  * @author jeeplus
@@ -22,4 +24,6 @@ public interface AreaDao extends TreeDao<Area> {
 	public Area findByName(String name);
 	public Area findByPId(String parentId);
 
+	List<Area> getChildren(String parentId);
+
 }

+ 2 - 0
src/main/java/com/jeeplus/modules/sys/dao/MenuDao.java

@@ -27,4 +27,6 @@ public interface MenuDao extends CrudDao<Menu> {
 	
 	public List<Menu> findByUserRole(Menu menu);
 
+	public List<Menu> getChildren(String parentId);
+
 }

+ 28 - 1
src/main/java/com/jeeplus/modules/sys/entity/Area.java

@@ -21,7 +21,10 @@ public class Area extends TreeEntity<Area> {
 //	private String name; 	// 区域名称
 //	private Integer sort;		// 排序
 	private String type; 	// 区域类型(1:国家;2:省份、直辖市;3:地市;4:区县)
-	
+	private String typeStr; 	// 区域类型(1:国家;2:省份、直辖市;3:地市;4:区县)
+	private String pid;
+	private boolean hasChildren;
+
 	public Area(){
 		super();
 		this.sort = 30;
@@ -93,4 +96,28 @@ public class Area extends TreeEntity<Area> {
 	public String toString() {
 		return name;
 	}
+
+	public String getPid() {
+		return pid;
+	}
+
+	public void setPid(String pid) {
+		this.pid = pid;
+	}
+
+	public boolean isHasChildren() {
+		return hasChildren;
+	}
+
+	public void setHasChildren(boolean hasChildren) {
+		this.hasChildren = hasChildren;
+	}
+
+	public String getTypeStr() {
+		return typeStr;
+	}
+
+	public void setTypeStr(String typeStr) {
+		this.typeStr = typeStr;
+	}
 }

+ 27 - 0
src/main/java/com/jeeplus/modules/sys/entity/Menu.java

@@ -37,6 +37,9 @@ public class Menu extends DataEntity<Menu> {
 	private String roleId;
 	private String officeId;
 	private List<String> roleList;
+	private String pid;             // 父id
+	private String isShowStr;       //显示Str
+	private boolean hasChildren;
 
 	public Menu(){
 		super();
@@ -215,4 +218,28 @@ public class Menu extends DataEntity<Menu> {
     public void setRoleList(List<String> roleList) {
         this.roleList = roleList;
     }
+
+	public String getPid() {
+		return pid;
+	}
+
+	public void setPid(String pid) {
+		this.pid = pid;
+	}
+
+	public String getIsShowStr() {
+		return isShowStr;
+	}
+
+	public void setIsShowStr(String isShowStr) {
+		this.isShowStr = isShowStr;
+	}
+
+	public boolean isHasChildren() {
+		return hasChildren;
+	}
+
+	public void setHasChildren(boolean hasChildren) {
+		this.hasChildren = hasChildren;
+	}
 }

+ 22 - 0
src/main/java/com/jeeplus/modules/sys/service/AreaService.java

@@ -5,6 +5,9 @@ package com.jeeplus.modules.sys.service;
 
 import java.util.List;
 
+import com.jeeplus.modules.sys.entity.Dict;
+import com.jeeplus.modules.sys.utils.DictUtils;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -54,4 +57,23 @@ public class AreaService extends TreeService<AreaDao, Area> {
 	public Area getParent(String parentId){
 		return areaDao.findByPId(parentId);
 	}
+
+
+	public List<Area> getChildren(String parentId){
+		List<Area> areaList = areaDao.getChildren(parentId);
+		List<Dict> dictList = DictUtils.getDictList("sys_area_type");
+		if(null != areaList){
+			for (Area area: areaList) {
+				for (Dict dict: dictList) {
+					if(dict.getValue().equals(area.getType())){
+						area.setTypeStr(dict.getLabel());
+						break;
+					}else{
+						area.setTypeStr("");
+					}
+				}
+			}
+		}
+		return areaList;
+	}
 }

+ 5 - 0
src/main/java/com/jeeplus/modules/sys/service/SystemService.java

@@ -1319,6 +1319,11 @@ public class SystemService extends BaseService implements InitializingBean {
     public List<Menu> findAllMenu() {
         return UserUtils.getMenuList();
     }
+
+    public List<Menu> getChildren(String parentId){
+        return menuDao.getChildren(parentId);
+    }
+
     public List<Menu> findAllMenu(Role role) {
         return UserUtils.getMenuList(role);
     }

+ 25 - 2
src/main/java/com/jeeplus/modules/sys/web/AreaController.java

@@ -10,6 +10,7 @@ import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.jeeplus.modules.sys.entity.Menu;
 import org.apache.shiro.authz.annotation.Logical;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -54,8 +55,30 @@ public class AreaController extends BaseController {
 	@RequiresPermissions("sys:area:list")
 	@RequestMapping(value = {"list", ""})
 	public String list(Area area, Model model) {
-		model.addAttribute("list", areaService.findAll());
-		return "modules/sys/areaList";
+		//model.addAttribute("list", areaService.findAll());
+		return "modules/sys/areaList2";
+	}
+	/**
+	 * 菜单列表页面
+	 */
+	@RequestMapping(value = "getTreeList")
+	@ResponseBody
+	public Map<String,List> getTreeList() {
+		Map map = new HashMap();
+		List<Area> list = areaService.findAll();
+		map.put("data",list);
+		return map;
+	}
+
+
+	@ResponseBody
+	@RequestMapping(value = "getChildren")
+	public List<Area> getChildren(String parentId){
+		if("-1".equals(parentId)){
+			parentId = "1";
+		}
+		List<Area> children = areaService.getChildren(parentId);
+		return children;
 	}
 
 	@RequiresPermissions(value={"sys:area:view","sys:area:add","sys:area:edit"},logical=Logical.OR)

+ 26 - 2
src/main/java/com/jeeplus/modules/sys/web/MenuController.java

@@ -3,6 +3,7 @@
  */
 package com.jeeplus.modules.sys.web;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -52,13 +53,36 @@ public class MenuController extends BaseController {
 	@RequiresPermissions("sys:menu:list")
 	@RequestMapping(value = {"list", ""})
 	public String list(Model model) {
+		return "modules/sys/menuList2";
+	}
+
+
+	@ResponseBody
+	@RequestMapping(value = "getChildren")
+	public List<Menu> getChildren(String parentId){
+		if("-1".equals(parentId)){
+			parentId = "1";
+		}
+		List<Menu> children = systemService.getChildren(parentId);
+		return children;
+	}
+
+
+	/**
+	 * 菜单列表页面
+	 */
+	@RequestMapping(value = "getTreeList")
+	@ResponseBody
+	public Map<String,List> getTreeList() {
+		Map map = new HashMap();
 		List<Menu> list = Lists.newArrayList();
 		List<Menu> sourcelist = systemService.findAllMenu();
 		Menu.sortList(list, sourcelist, Menu.getRootId(), true);
-        model.addAttribute("list", list);
-		return "modules/sys/menuList";
+		map.put("data",list);
+		return map;
 	}
 
+
 	@RequiresPermissions(value={"sys:menu:view","sys:menu:add","sys:menu:edit"},logical=Logical.OR)
 	@RequestMapping(value = "form")
 	public String form(Menu menu, Model model) {

+ 20 - 2
src/main/resources/mappings/modules/sys/AreaDao.xml

@@ -1,7 +1,16 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.jeeplus.modules.sys.dao.AreaDao">
-    
+	<resultMap id="areaResult" type="Area">
+		<id property="id" column="id" />
+		<result property="parentIds" column="parentIds" />
+		<result property="name" column="name" />
+		<result property="sort" column="sort" />
+		<result property="code" column="code" />
+		<result property="type" column="type" />
+		<association property="hasChildren" column="id" select="hasChildren" />
+	</resultMap>
+
 	<sql id="areaColumns">
 		a.id,
 		a.parent_id AS "parent.id",
@@ -74,12 +83,21 @@
 	<select id="findAllList" resultType="Area">
 		SELECT
 			<include refid="areaColumns"/>
+			,a.parent_id as pid
 		FROM sys_area a
 		<include refid="areaJoins"/>
 		WHERE a.del_flag = #{DEL_FLAG_NORMAL}
 		ORDER BY a.sort=29 desc, a.code
 	</select>
-	
+
+	<select id="getChildren" parameterType="String" resultMap="areaResult">
+        select * from sys_area where parent_id = #{id} ORDER BY sort
+    </select>
+
+	<select id="hasChildren" parameterType="String" resultType="Boolean">
+        select case when exists(select 1 from sys_area where parent_id = #{id}) then 1 else 0 end
+    </select>
+
 	<select id="findByParentIdsLike" resultType="Area">
 		SELECT
 			a.id,

+ 30 - 5
src/main/resources/mappings/modules/sys/MenuDao.xml

@@ -1,7 +1,21 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.jeeplus.modules.sys.dao.MenuDao">
-	
+
+	<resultMap id="menuChildrenResult" type="Menu">
+		<id property="id" column="id" />
+		<result property="parentIds" column="parentIds" />
+		<result property="name" column="name" />
+		<result property="href" column="href" />
+		<result property="target" column="target" />
+		<result property="icon" column="icon" />
+		<result property="sort" column="sort" />
+		<result property="type" column="menu_type" />
+		<result property="isShow" column="isShow" />
+		<result property="permission" column="permission" />
+		<association property="hasChildren" column="id" select="hasChildren" />
+	</resultMap>
+
      <resultMap id="menuResult" type="Menu">
 		<id property="id" column="id" />
 		<result property="parentIds" column="parentIds" />
@@ -49,15 +63,26 @@
 		select * from sys_menu where ${propertyName} = ${value}
 	</select>
 	
-	<select id="getChildren" parameterType="String" resultMap="menuResult">  
-        select * from sys_menu where parent_id = #{id} ORDER BY sort 
-    </select>  
-    <select id="getParent" parameterType="String" resultMap="menuResult">  
+	<select id="getChildren" parameterType="String"  resultMap="menuChildrenResult">
+        select <include refid="menuColumns"/>
+		,a.parent_id as pid
+		,case a.is_show when 1 then '显示' else '隐藏' end as isShowStr
+        from sys_menu a
+		<include refid="menuJoins"/>
+        where a.parent_id = #{id} ORDER BY a.sort
+    </select>
+
+	<select id="hasChildren" parameterType="String" resultType="Boolean">
+        select case when exists(select 1 from sys_menu where parent_id = #{id}) then 1 else 0 end
+    </select>
+	<select id="getParent" parameterType="String" resultMap="menuResult">
         select * from sys_menu where id = #{id}  
     </select>  
 	<select id="findAllList" resultMap="menuResult">
 		SELECT
 			<include refid="menuColumns"/>
+			,a.parent_id as pid
+			,case a.is_show when 1 then '显示' else '隐藏' end as isShowStr
 		FROM sys_menu a
 		<include refid="menuJoins"/>
 		WHERE a.del_flag = #{DEL_FLAG_NORMAL}

BIN
src/main/webapp/static/common/css/allbgs.gif


BIN
src/main/webapp/static/common/css/allbgs.png


BIN
src/main/webapp/static/common/css/loading.gif


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 17936 - 33
src/main/webapp/static/common/css/vendors.css


+ 32 - 0
src/main/webapp/static/layer-v2.3/layui/css/treeTable.min.css

@@ -0,0 +1,32 @@
+.tree_table .default_node, .tree_table .default_active_node {
+    width: 16px;
+    height: 16px;
+    border: medium none;
+    margin: 0;
+    padding: 0;
+    display: inline-block
+}
+
+.tree_table .default_active_node {
+    cursor: pointer
+}
+
+.tree_table .default_open, .tree_table .default_last_open {
+    background: url(./allbgs.gif) no-repeat 0 1px;
+    width: 16px
+}
+
+.tree_table .default_shut, .tree_table .default_last_shut {
+    background: url(./allbgs.gif) no-repeat -16px 1px;
+    width: 16px
+}
+
+.tree_table .default_hover_open, .tree_table .default_hover_last_open {
+    background: url(./allbgs.gif) no-repeat -32px 1px;
+    width: 16px
+}
+
+.tree_table .default_hover_shut, .tree_table .default_hover_last_shut {
+    background: url(./allbgs.gif) no-repeat -48px 1px;
+    width: 16px
+}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 63738 - 0
src/main/webapp/static/layer-v2.3/layui/jquery.treeTable.min.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 198 - 2
src/main/webapp/static/treeTable/jquery.treeTable.min.js


+ 78 - 2
src/main/webapp/webpage/modules/projectAccessory/projectAccessoryRelation/projectAccessoryRelationList.jsp

@@ -230,6 +230,7 @@
 		<div class="full-width fl">
 			<div class="layui-row contentShadow shadowLR" id="queryDiv">
 				<form:form id="searchForm" modelAttribute="projectAccessoryRelationInfo" action="${ctx}/projectAccessoryRelation/projectAccessoryRelation/list" method="post" class="form-inline">
+				<%--<form:form id="searchForm" modelAttribute="projectAccessoryRelationInfo" action="${ctx}/projectAccessoryRelation/projectAccessoryRelation/list" method="post" class="form-horizontal layui-form">--%>
 					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
 					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
 					<div class="commonQuery lw6">
@@ -242,16 +243,39 @@
 								</form:select>
 							</div>
 						</div>
+						<%--<div class="layui-item query athird ">
+							<label class="layui-form-label">项目类型:</label>
+							<div class="layui-input-block">
+								<select name="attachmentProjectType" id="attachmentProjectType" lay-filter="typeFilter">
+									<option value=""></option>
+									<option value="1" >工程咨询</option>
+									<option value="2" >造价审核</option>
+								</select>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">项目类别:</label>
+							<div class="layui-input-block">
+								<select id="attachmentProjectSort" name="attachmentProjectSort" value="" lay-filter="sortFilter"></select>
+							</div>
+						</div>--%>
+
 						<div class="layui-item query athird ">
 							<label class="layui-form-label">项目类别:</label>
 							<div class="layui-input-block">
 								<form:select path="attachmentProjectSort" class=" form-control  simple-select" onchange="projectSortChange()">
 									<form:option value="" label=""/>
-									<form:options items="${fns:getMainDictList('attachment_project_sort')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+									<form:options id="sort" cssStyle="display: none" items="${fns:getMainDictList('attachment_project_sort')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+									<form:options id="sortCost" cssStyle="display: none" items="${fns:getMainDictList('attachment_project_sort_cost')}" 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">
+								<select id="attachmentProjectApprovalMoney" name="attachmentProjectApprovalMoney" value="" lay-filter="moneyFilter"></select>
+							</div>
+						</div>--%>
 						<%--<div class="layui-item athird">
 							<div class="input-group">
 								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
@@ -319,6 +343,8 @@
 		var table = layui.table;
 		var layer = layui.layer;
 		var treetable = layui.treetable;
+		/*var form = layui.form;
+		form.render();*/
 
 		// 渲染表格
 		var renderTable = function () {
@@ -431,6 +457,56 @@
 				}
 			}
 		});
+/*
+		layui.form.on('select(typeFilter)',function(data) {
+			if (data.value == "") {
+				$('#attachmentProjectSort').html('<option value=""></option>');
+				$('#attachmentProjectApprovalMoney').html('<option value=""></option>')
+				layui.form.render("select");
+			} else {
+				$('#attachmentProjectSort').html('<option value=""></option>')
+				$('#attachmentProjectApprovalMoney').html('<option value=""></option>')
+				$.ajax({
+					type:"post",
+					url:'${ctx}/projectAccessoryRelation/projectAccessoryRelation/getMessage',
+					data:{"type":data.value},
+					dataType:"json",
+					async: false,
+					success:function(data){
+						if(data.success) {
+							for (var info in data.data){
+								$('#attachmentProjectSort').append(new Option(data.data[info].label,data.data[info].value));
+							}
+						}
+					}
+				})
+				layui.form.render("select");
+			}
+		});
+
+		layui.form.on('select(sortFilter)',function(data) {
+			if (data.value == "") {
+				$('#attachmentProjectApprovalMoney').html('<option value=""></option>');
+				layui.form.render("select");
+			} else {
+				$('#attachmentProjectApprovalMoney').html('<option value=""></option>')
+				$.ajax({
+					type:"post",
+					url:'${ctx}/projectAccessoryRelation/projectAccessoryRelation/getMessage',
+					data:{"type":data.value},
+					dataType:"json",
+					async: false,
+					success:function(data){
+						if(data.success) {
+							for (var info in data.data){
+								$('#attachmentProjectApprovalMoney').append(new Option(data.data[info].label,data.data[info].value));
+							}
+						}
+					}
+				})
+				layui.form.render("select");
+			}
+		});*/
 	});
 
 </script>

+ 1 - 1
src/main/webapp/webpage/modules/ruralprojectrecords/cost/ruralCostProjectRecordsAdminModify.jsp

@@ -746,7 +746,7 @@
                     <div class="layui-input-block">
                         <form:select path="attachmentProjectSort" class="form-control required editable-select layui-input" id="attachmentProjectSort" value="${attachmentProjectSort}">
                             <form:option value=""/>
-                            <form:options items="${fns:getMainDictList('attachment_project_sort')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                            <form:options items="${fns:getMainDictList('attachment_project_sort_cost')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
                         </form:select>
                     </div>
                 </div>

+ 1 - 1
src/main/webapp/webpage/modules/ruralprojectrecords/cost/ruralCostProjectRecordsForm.jsp

@@ -835,7 +835,7 @@
                     <div class="layui-input-block">
                         <form:select path="attachmentProjectSort" class="form-control required editable-select layui-input" id="attachmentProjectSort" value="${attachmentProjectSort}">
                             <form:option value=""/>
-                            <form:options items="${fns:getMainDictList('attachment_project_sort')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                            <form:options items="${fns:getMainDictList('attachment_project_sort_cost')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
                         </form:select>
                     </div>
                 </div>

+ 1 - 1
src/main/webapp/webpage/modules/ruralprojectrecords/cost/ruralCostProjectRecordsModify.jsp

@@ -858,7 +858,7 @@
                     <div class="layui-input-block">
                         <form:select path="attachmentProjectSort" class="form-control required editable-select layui-input" id="attachmentProjectSort" value="${attachmentProjectSort}">
                             <form:option value=""/>
-                            <form:options items="${fns:getMainDictList('attachment_project_sort')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                            <form:options items="${fns:getMainDictList('attachment_project_sort_cost')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
                         </form:select>
                     </div>
                 </div>

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

@@ -0,0 +1,145 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>菜单管理</title>
+	<meta name="decorator" content="default"/>
+	<link href="${ctxStatic}/treeTable/themes/vsStyle/treeTable.min.css" rel="stylesheet" type="text/css" />
+	<link href="${ctxStatic}/common/css/vendors.css" rel="stylesheet" type="text/css" />
+	<script src="${ctxStatic}/layer-v2.3/layui/jquery.treeTable.min.js" charset="utf-8"></script>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			$('#treeTable').treeTable({
+				theme:'vsStyle',
+				expandLevel : 1,
+				column:0,
+				checkbox: false,
+				url:'${ctx}/sys/area/getChildren?parentId=',
+				callback:function(item) {
+					item.isShow = (item.isShow == '1'?true:false);
+					if(item.href&&item.href.length>4){
+						item.hideFullName = item.href.substring(0,4)+"...";
+					}else if(item.href == undefined){
+						item.hideFullName = "";
+					}else{
+						item.hideFullName = item.href;
+					}
+					if(item.permission&&item.permission.length>4){
+						item.hidePermission = item.permission.substring(0,4)+"...";
+					}else if(item.permission == undefined){
+						item.hidePermission = "";
+					}else{
+						item.hidePermission = item.permission;
+					}
+					var menuItemTpl= $("#menuItemTpl").html();
+					var result = laytpl(menuItemTpl).render(item);
+					return result;
+				},
+				beforeClick: function($treeTable, id) {
+					//异步获取数据 这里模拟替换处理
+					$treeTable.refreshPoint(id);
+				},
+				beforeExpand : function($treeTable, id) {
+
+				},
+				beforeClose : function($treeTable, id) {
+
+				}
+			}).show();
+		});
+		function updateSort() {
+			loading('正在提交,请稍等...');
+			$("#listForm").attr("action", "${ctx}/sys/area/updateSort");
+			$("#listForm").submit();
+		}
+		function refresh(){//刷新
+
+			window.location="${ctx}/sys/area/";
+		}
+	</script>
+	<script type="text/html" id="menuItemTpl">
+		<td><a class="attention-info" href="javascript:void(0)" onclick="openDialogView('查看区域', '${ctx}/sys/area/form?id={{d.id}}&view=1','95%','95%')">{{d.name}}</a></td>
+		<td>{{d.code}}</td>
+		<td>{{d.typeStr}}</td>
+		<td>{{d.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={{d.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={{d.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={{d.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={{d.id}}','95%','95%')" class="op-btn op-btn-add" ><i class="fa fa-plus"></i> 添加下级区域</a>
+				</shiro:hasPermission>
+			</div>
+		</td>
+	</script>
+</head>
+<body class="gray-bg">
+<div class="wrapper wrapper-content">
+	<div class="ibox">
+		<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/area/form" title="菜单"></table:addRow><!-- 增加按钮 -->
+						</shiro:hasPermission>
+						<%--<shiro:hasPermission name="sys:menu:edit">
+                            <table:editRow url="${ctx}/sys/area/form" id="treeTable"  title="菜单"></table:editRow><!-- 编辑按钮 -->
+                        </shiro:hasPermission>
+                        <shiro:hasPermission name="sys:menu:del">
+                            <table:delRow url="${ctx}/sys/area/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="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>
+					</tbody>
+				</table>
+			</form>
+		</div>
+		<div  id="right" class="panel panel-default col-sm-6" style="display:none">
+			<div class="panel-heading">
+				<h3 class="panel-title"><label>数据规则列表,所属菜单: </label><font id="menuLabel"></font><input type="hidden" id="menuId"/></h3>
+			</div>
+			<div class="panel-body">
+				<div id="dataRuleToolbar">
+					<button id="dataRuleAddButton"  class="btn btn-outline btn-primary" title="添加规则"><i class="fa fa-plus"></i> 添加规则</button>
+				</div>
+				<!-- 表格 -->
+				<table id="dataRuleTable"
+					   data-toolbar="#dataRuleToolbar"
+					   data-id-field="id">
+				</table>
+			</div>
+		</div>
+	</div>
+</div>
+</body>
+</html>

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

@@ -0,0 +1,192 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>区域管理</title>
+	<meta name="decorator" content="default"/>
+	<script src="${ctxStatic}/layer-v2.3/layim/layui/layui.js"></script>
+	<link href="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.css" rel="stylesheet" />
+	<style>
+		.layui-table th{
+			font-size: 15px;
+			/*表头内容居中显示*/
+			text-align: center;
+		}
+		.layui-table th div span{
+			font-size: 15px;
+			/*表头内容居中显示*/
+			text-align: center;
+		}
+		.layui-table td div ,.layui-table td div font{
+			font-size: 15px;
+		}
+		.pid{
+			font-size:15px;
+			font-weight:400;
+		}
+	</style>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+
+		function reset() {
+			$("#searchForm").resetForm();
+		}
+	</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 contentShadow shadowLR" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="area" action="${ctx}/sys/area/" method="post" class="form-inline">
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-form contentDetails contentShadow shadowLBR">
+				<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 layui-btn" id="btn-expand">全部展开</button>
+					<button class="nav-btn layui-btn-warm" id="btn-fold">全部折叠</button>
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+
+					<div style="clear: both;"></div>
+				</div>
+				<table id="permissionTable" class="layui-table" lay-filter="permissionTable"></table>
+				<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>
+
+	resizeListTable();
+	$("a").on("click",addLinkVisied);
+</script>
+<script>
+	resizeListWindow2();
+	$(window).resize(function(){
+		resizeListWindow2();
+	});
+</script>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script src="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.js" charset="utf-8"></script>
+<script>
+	/*使用模块加载的方式 加载文件*/
+	layui.config({
+		base: '${ctx}/resoueces/css/layui/module/'
+	}).extend({
+		treetable: 'treetable-lay/treetable'
+	}).use(['layer', 'table', 'treetable'], function () {
+		var $ = layui.jquery;
+		var table = layui.table;
+		var layer = layui.layer;
+		var treetable = layui.treetable;
+
+		// 渲染表格
+		var renderTable = function () {
+			layer.load(2);
+			treetable.render({
+				treeColIndex: 0,//树形图标显示在第几列
+				treeSpid: 1,//最上级的父级id
+				treeIdName: 'permissionId',//id字段的名称
+				treePidName: 'pid',//pid字段的名称
+				treeDefaultClose: true,//是否默认折叠
+				treeLinkage: true,//父级展开时是否自动展开所有子级
+				elem: '#permissionTable',
+				url: '${ctx}/sys/area/getTreeList',
+				page: false,
+				cols: [[
+					/*{type:'checkbox'},*/
+					{field: 'name', title: '结构',width:'15%'},
+					{field: 'name', title: '区域名称',width:'10%',templet:function(d){
+							return "<a class=\"attention-info pid\" title=\"" + d.name + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看菜单', '${ctx}/sys/menu/form?id=" + d.id +"','80%', '80%')\">" + d.name + "</a>";
+						}},
+					{field: 'code', align:'center', title: '区域编码',width:'10%',templet: function(d){
+							if(undefined == d.code || null == d.code || '' == d.code){
+								return "<font></font>";
+							}else{
+								return "<font>"+d.code+"</font>";
+							}
+						}},
+					{field: 'type', align:'center', title: '区域类型',width:100},
+					{field: 'remarks', align:'center', title: '备注',width:'18%',templet: function(d){
+							if(undefined == d.remarks || null == d.remarks || '' == d.remarks){
+								return "<font></font>";
+							}else{
+								return "<font>"+d.remarks+"</font>";
+							}
+						}},
+					{templet: complain, align:'center', title: '操作'}
+				]],
+				done: function () {
+					layer.closeAll('loading');
+				}
+			});
+		};
+
+		renderTable();
+
+		//触发三个button按钮
+		$('#btn-expand').click(function () {
+			treetable.expandAll('#permissionTable');
+		});
+
+		$('#btn-fold').click(function () {
+			treetable.foldAll('#permissionTable');
+		});
+
+		$('#btn-refresh').click(function () {
+			renderTable();
+		});
+
+		function complain(d){//操作中显示的内容
+			var xml = '';
+
+			<shiro:hasPermission name="sys:area:view">
+			xml+="<a href=\"javascript:void(0)\" onclick=\"openDialogView('查看菜单', '${ctx}/sys/menu/form?id=" +  d.id + " ','80%', '80%')\" class=\"btn btn-info btn-xs\" ><i class=\"fa fa-search-plus\"></i> 查看</a>"
+			</shiro:hasPermission>
+			<shiro:hasPermission name="sys:area:edit">
+			xml+="<a href=\"javascript:void(0)\" onclick=\"openDialog('修改菜单', '${ctx}/sys/menu/form?id=" +  d.id + " ','80%', '80%')\" class=\"btn btn-success btn-xs\" ><i class=\"fa fa-edit\"></i> 修改</a>"
+			</shiro:hasPermission>
+			<shiro:hasPermission name="sys:area:del">
+			xml+="<a href=\"${ctx}/sys/menu/delete?id="+d.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:area:add">
+			xml+="<a href=\"javascript:void(0)\" onclick=\"openDialog('添加下级菜单', '${ctx}/sys/menu/form?parent.id=" +  d.id + " ','80%', '80%')\" class=\"btn btn-primary btn-xs\" ><i class=\"fa fa-plus\"></i> 添加下级菜单</a>"
+			</shiro:hasPermission>
+			return[xml].join('');
+		}
+		//监听工具条
+		table.on('tool(permissionTable)', function (obj) {
+			var data = obj.data;
+			var layEvent = obj.event;
+			if(data.permissionName!=null){
+				if (layEvent === 'del') {
+					layer.msg('删除' + data.id);
+				} else if (layEvent === 'edit') {
+					layer.msg('修改' + data.id);
+				}
+			}
+		});
+	});
+
+</script>
+</body>
+</html>

+ 151 - 0
src/main/webapp/webpage/modules/sys/menuList2.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"/>
+	<link href="${ctxStatic}/treeTable/themes/vsStyle/treeTable.min.css" rel="stylesheet" type="text/css" />
+	<link href="${ctxStatic}/common/css/vendors.css" rel="stylesheet" type="text/css" />
+	<script src="${ctxStatic}/layer-v2.3/layui/jquery.treeTable.min.js" charset="utf-8"></script>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			$('#treeTable').treeTable({
+				theme:'vsStyle',
+				expandLevel : 1,
+				column:0,
+				checkbox: false,
+				url:'${ctx}/sys/menu/getChildren?parentId=',
+				callback:function(item) {
+					item.isShow = (item.isShow == '1'?true:false);
+					if(item.href&&item.href.length>4){
+						item.hideFullName = item.href.substring(0,4)+"...";
+					}else if(item.href == undefined){
+						item.hideFullName = "";
+					}else{
+						item.hideFullName = item.href;
+					}
+					if(item.permission&&item.permission.length>4){
+						item.hidePermission = item.permission.substring(0,4)+"...";
+					}else if(item.permission == undefined){
+						item.hidePermission = "";
+					}else{
+						item.hidePermission = item.permission;
+					}
+					var menuItemTpl= $("#menuItemTpl").html();
+					var result = laytpl(menuItemTpl).render(item);
+					return result;
+				},
+				beforeClick: function($treeTable, id) {
+					//异步获取数据 这里模拟替换处理
+					$treeTable.refreshPoint(id);
+				},
+				beforeExpand : function($treeTable, id) {
+
+				},
+				beforeClose : function($treeTable, id) {
+
+				}
+			}).show();
+		});
+    	function updateSort() {
+			loading('正在提交,请稍等...');
+	    	$("#listForm").attr("action", "${ctx}/sys/menu/updateSort");
+	    	$("#listForm").submit();
+    	}
+		function refresh(){//刷新
+
+			window.location="${ctx}/sys/menu/";
+		}
+	</script>
+	<script type="text/html" id="menuItemTpl">
+		<td> <a  href="#" onclick="openDialogView('查看菜单', '${ctx}/sys/menu/form?id={{d.id}}','80%', '80%')"> {{d.name}}</a></td>
+		<td title="{{d.href}}">{{d.href}}</td>
+		<td title="{{d.sort}}">{{d.sort}}</td>
+		<td style="text-align: center" title="{{d.isShowStr}}">
+			{{d.isShowStr}}
+		</td>
+		<td  title="{{d.permission}}">
+			{{d.permission}}
+		</td>
+		<td style="text-align: center">
+			<div class="btn-group">
+				<shiro:hasPermission name="sys:menu:view">
+					<a href="javascript:void(0)" style="margin-left: 2px;margin-right: 2px;" onclick="openDialogView('查看菜单', '${ctx}/sys/menu/form?id={{d.id}}','80%', '80%')" class="btn btn-info btn-xs"><i class="fa fa-search-plus"></i> 查看</a>&nbsp&nbsp
+				</shiro:hasPermission>
+				<shiro:hasPermission name="sys:menu:edit">
+					<a href="javascript:void(0)" style="margin-left: 2px;margin-right: 2px;" onclick="openDialog('修改菜单', '${ctx}/sys/menu/form?id={{d.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={{d.id}}" onclick="return confirmx('要删除该菜单及所有子菜单项吗?', this.href)" style="margin-left: 2px;margin-right: 2px;" 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)" style="margin-left: 2px;margin-right: 2px;" onclick="openDialog('添加下级菜单', '${ctx}/sys/menu/form?parent.id={{d.id}}','80%', '80%')" class="btn btn-primary btn-xs"><i class="fa fa-plus"></i> 添加下级菜单</a>
+				</shiro:hasPermission>
+			</div>
+		</td>
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+    <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="text-align: center;width: 20%">名称</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: 20%">权限标识</th>
+					<th>操作</th>
+				</tr>
+			</thead>
+			<tbody>
+			</tbody>
+		</table>
+	 </form>
+	 </div>
+		<div  id="right" class="panel panel-default col-sm-6" style="display:none">
+			<div class="panel-heading">
+				<h3 class="panel-title"><label>数据规则列表,所属菜单: </label><font id="menuLabel"></font><input type="hidden" id="menuId"/></h3>
+			</div>
+			<div class="panel-body">
+				<div id="dataRuleToolbar">
+					<button id="dataRuleAddButton"  class="btn btn-outline btn-primary" title="添加规则"><i class="fa fa-plus"></i> 添加规则</button>
+				</div>
+				<!-- 表格 -->
+				<table id="dataRuleTable"
+					   data-toolbar="#dataRuleToolbar"
+					   data-id-field="id">
+				</table>
+			</div>
+		</div>
+	</div>
+	</div>
+</body>
+</html>

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

@@ -0,0 +1,207 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>菜单管理</title>
+	<meta name="decorator" content="default"/>
+	<script src="${ctxStatic}/layer-v2.3/layim/layui/layui.js"></script>
+	<link href="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.css" rel="stylesheet" />
+	<%--<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>--%>
+	<style>
+		.layui-table th{
+			font-size: 15px;
+			/*表头内容居中显示*/
+			text-align: center;
+		}
+		.layui-table th div span{
+			font-size: 15px;
+			/*表头内容居中显示*/
+			text-align: center;
+		}
+		.layui-table td div ,.layui-table td div font{
+			font-size: 15px;
+		}
+		.pid{
+			font-size:15px;
+			font-weight:400;
+		}
+	</style>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+
+		function reset() {
+			$("#searchForm").resetForm();
+		}
+	</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 contentShadow shadowLR" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="menu" action="${ctx}/sys/menu/" method="post" class="form-inline">
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-form contentDetails contentShadow shadowLBR">
+				<div class="nav-btns">
+					<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>--%>
+					<button class="nav-btn layui-btn" id="btn-expand">全部展开</button>
+					<button class="nav-btn layui-btn-warm" id="btn-fold">全部折叠</button>
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+
+					<div style="clear: both;"></div>
+				</div>
+				<table id="permissionTable" class="layui-table" lay-filter="permissionTable"></table>
+				<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>
+
+	resizeListTable();
+	$("a").on("click",addLinkVisied);
+</script>
+<script>
+	resizeListWindow2();
+	$(window).resize(function(){
+		resizeListWindow2();
+	});
+</script>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script src="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.js" charset="utf-8"></script>
+<script>
+	/*使用模块加载的方式 加载文件*/
+	layui.config({
+		base: '${ctx}/resoueces/css/layui/module/'
+	}).extend({
+		treetable: 'treetable-lay/treetable'
+	}).use(['layer', 'table', 'treetable'], function () {
+		var $ = layui.jquery;
+		var table = layui.table;
+		var layer = layui.layer;
+		var treetable = layui.treetable;
+
+		// 渲染表格
+		var renderTable = function () {
+			layer.load(2);
+			treetable.render({
+				treeColIndex: 0,//树形图标显示在第几列
+				treeSpid: 1,//最上级的父级id
+				treeIdName: 'permissionId',//id字段的名称
+				treePidName: 'pid',//pid字段的名称
+				treeDefaultClose: true,//是否默认折叠
+				treeLinkage: true,//父级展开时是否自动展开所有子级
+				elem: '#permissionTable',
+				url: '${ctx}/sys/menu/getTreeList',
+				page: false,
+				cols: [[
+					/*{type:'checkbox'},*/
+					{field: 'name', title: '结构',width:'15%'},
+					{field: 'name', title: '名称',width:'15%',templet:function(d){
+							return "<a class=\"attention-info pid\" title=\"" + d.name + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看菜单', '${ctx}/sys/menu/form?id=" + d.id +"','80%', '80%')\">" + d.name + "</a>";
+						}},
+					/*{field: 'projectName', align:'center', title: '项目名称',width:200,templet:function(d){
+                            if(0 == d.pid){
+                                return "<a class=\"attention-info pid\" title=\"" + d.projectName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目', '${ctx}/ruralProject/ruralProjectRecords/view?id=" + d.id +"','95%', '95%')\">" + d.projectName + "</a>";
+								}else{
+									return "<a class=\"attention-info\" title=\"" + d.projectName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目信息', '${ctx}/subProject/subProject/view?id=" + d.id +"','95%', '95%')\">" + d.projectName + "</a>";
+								}
+							}},*/
+					{field: 'href', align:'center', title: '链接',width:'18%',templet: function(d){
+						if(undefined == d.href || null == d.href || '' == d.href){
+							return "<font></font>";
+						}else{
+							return "<font>"+d.href+"</font>";
+						}
+						}},
+					{field: 'sort', align:'center', title: '排序',width:80},
+					{field: 'isShowStr', align:'center', title: '可见',width:80},
+					{field: 'permission', align:'center', title: '权限标识',width:'18%',templet: function(d){
+							if(undefined == d.permission || null == d.permission || '' == d.permission){
+								return "<font></font>";
+							}else{
+								return "<font>"+d.permission+"</font>";
+							}
+						}},
+					{templet: complain, align:'center', title: '操作'}
+				]],
+				done: function () {
+					layer.closeAll('loading');
+				}
+			});
+		};
+
+		renderTable();
+
+		//触发三个button按钮
+		$('#btn-expand').click(function () {
+			treetable.expandAll('#permissionTable');
+		});
+
+		$('#btn-fold').click(function () {
+			treetable.foldAll('#permissionTable');
+		});
+
+		$('#btn-refresh').click(function () {
+			renderTable();
+		});
+
+		function complain(d){//操作中显示的内容
+			var xml = '';
+
+			<shiro:hasPermission name="sys:menu:view">
+			xml+="<a href=\"javascript:void(0)\" onclick=\"openDialogView('查看菜单', '${ctx}/sys/menu/form?id=" +  d.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">
+			xml+="<a href=\"javascript:void(0)\" onclick=\"openDialog('修改菜单', '${ctx}/sys/menu/form?id=" +  d.id + " ','80%', '80%')\" class=\"btn btn-success btn-xs\" ><i class=\"fa fa-edit\"></i> 修改</a>"
+			</shiro:hasPermission>
+			<shiro:hasPermission name="sys:menu:del">
+			xml+="<a href=\"${ctx}/sys/menu/delete?id="+d.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">
+			xml+="<a href=\"javascript:void(0)\" onclick=\"openDialog('添加下级菜单', '${ctx}/sys/menu/form?parent.id=" +  d.id + " ','80%', '80%')\" class=\"btn btn-primary btn-xs\" ><i class=\"fa fa-plus\"></i> 添加下级菜单</a>"
+			</shiro:hasPermission>
+			return[xml].join('');
+		}
+		//监听工具条
+		table.on('tool(permissionTable)', function (obj) {
+			var data = obj.data;
+			var layEvent = obj.event;
+			if(data.permissionName!=null){
+				if (layEvent === 'del') {
+					layer.msg('删除' + data.id);
+				} else if (layEvent === 'edit') {
+					layer.msg('修改' + data.id);
+				}
+			}
+		});
+	});
+
+</script>
+</body>
+</html>