Commit 660cec73366cfe6be3090a77cec3be578a70b343
1 parent
2561719c
角色管理页面添加系统资源配置
Showing
11 changed files
with
331 additions
and
20 deletions
src/main/java/com/bsth/controller/sys/ResourceController.java
| 1 | 1 | package com.bsth.controller.sys; |
| 2 | 2 | |
| 3 | +import java.util.List; | |
| 3 | 4 | import java.util.Map; |
| 4 | 5 | |
| 6 | +import com.bsth.security.SecurityMetadataSourceService; | |
| 5 | 7 | import org.springframework.beans.factory.annotation.Autowired; |
| 6 | 8 | import org.springframework.web.bind.annotation.RequestMapping; |
| 7 | 9 | import org.springframework.web.bind.annotation.RequestMethod; |
| ... | ... | @@ -19,9 +21,22 @@ public class ResourceController extends BaseController<Resource, Integer>{ |
| 19 | 21 | |
| 20 | 22 | @Autowired |
| 21 | 23 | ResourceService resourceService; |
| 24 | + | |
| 25 | + @Autowired | |
| 26 | + SecurityMetadataSourceService securityMetadataSourceService; | |
| 22 | 27 | |
| 23 | 28 | @RequestMapping(value = "/batch", method = RequestMethod.POST) |
| 24 | 29 | public Map<String, Object> save(@RequestParam String array){ |
| 25 | 30 | return resourceService.saveList(JSON.parseArray(array, Resource.class)); |
| 26 | 31 | } |
| 32 | + | |
| 33 | + /*** | |
| 34 | + * 查询所有资源信息,如果当前角色id拥有该资源就将原Resource实体类中的enable改为true否则为false | |
| 35 | + * @param roleId | |
| 36 | + * @return | |
| 37 | + */ | |
| 38 | + @RequestMapping(value = "/findResource",method = RequestMethod.GET) | |
| 39 | + public List<Resource> findResource(Integer roleId){ | |
| 40 | + return resourceService.findResource(roleId); | |
| 41 | + } | |
| 27 | 42 | } | ... | ... |
src/main/java/com/bsth/controller/sys/RoleController.java
| ... | ... | @@ -44,4 +44,17 @@ public class RoleController extends BaseController<Role, Integer>{ |
| 44 | 44 | public Map<String, Object> roleInfo(@RequestParam Integer id){ |
| 45 | 45 | return roleService.roleInfo(id); |
| 46 | 46 | } |
| 47 | + | |
| 48 | + /** | |
| 49 | + * | |
| 50 | + * @Title: settRoleModules | |
| 51 | + * @Description: TODO(为角色设置资源) | |
| 52 | + * @param @param roleId 角色ID | |
| 53 | + * @param @param mIds 模块ID字符串(1,2,3,4) | |
| 54 | + * @throws | |
| 55 | + */ | |
| 56 | + @RequestMapping(value = "/settResources",method = RequestMethod.POST) | |
| 57 | + public Map<String, Object> settResources(@RequestParam Integer roleId, @RequestParam String rIds){ | |
| 58 | + return roleService.settRoleResources(roleId,rIds); | |
| 59 | + } | |
| 47 | 60 | } | ... | ... |
src/main/java/com/bsth/repository/sys/ResourceRepository.java
| 1 | 1 | package com.bsth.repository.sys; |
| 2 | 2 | |
| 3 | 3 | import java.util.List; |
| 4 | +import java.util.Set; | |
| 4 | 5 | |
| 6 | +import org.springframework.data.jpa.domain.Specification; | |
| 7 | +import org.springframework.data.jpa.repository.Modifying; | |
| 8 | +import org.springframework.data.jpa.repository.Query; | |
| 9 | +import org.springframework.data.repository.query.Param; | |
| 5 | 10 | import org.springframework.stereotype.Repository; |
| 6 | 11 | |
| 7 | 12 | import com.bsth.entity.sys.Resource; |
| 8 | 13 | import com.bsth.repository.BaseRepository; |
| 14 | +import org.springframework.transaction.annotation.Propagation; | |
| 15 | +import org.springframework.transaction.annotation.Transactional; | |
| 9 | 16 | |
| 10 | 17 | @Repository |
| 11 | 18 | public interface ResourceRepository extends BaseRepository<Resource, Integer> { |
| 12 | 19 | |
| 13 | - List<Resource> findByRolesId(Integer roleId); | |
| 20 | + List<Resource> findByRolesId(Integer roleId); | |
| 21 | + | |
| 22 | + /*** | |
| 23 | + * 查询所有资源信息,如果当前角色id拥有该资源就将原Resource实体类中的enable改为true否则为false | |
| 24 | + * @param roleId 角色id | |
| 25 | + * @return | |
| 26 | + */ | |
| 27 | + @Query(value = "select a.id ,a.`name`,a.create_date,a.descriptions,a.method,a.module,a.update_date,a.url,if(b.resources is null,0,1) enable from bsth_c_sys_resource a\n" + | |
| 28 | + "left join \n" + | |
| 29 | + "(select resources from bsth_c_sys_resource_roles where roles = ?1) b\n" + | |
| 30 | + "on a.id = b.resources",nativeQuery = true) | |
| 31 | + List<Resource> findResource(int roleId); | |
| 14 | 32 | } | ... | ... |
src/main/java/com/bsth/service/sys/ResourceService.java
src/main/java/com/bsth/service/sys/RoleService.java
| ... | ... | @@ -10,4 +10,6 @@ public interface RoleService extends BaseService<Role, Integer>{ |
| 10 | 10 | Map<String, Object> settRoleModules(Integer roleId, String mIds); |
| 11 | 11 | |
| 12 | 12 | Map<String, Object> roleInfo(Integer id); |
| 13 | + | |
| 14 | + Map<String, Object> settRoleResources(Integer roleId, String mIds); | |
| 13 | 15 | } | ... | ... |
src/main/java/com/bsth/service/sys/impl/ResourceServiceImpl.java
| 1 | 1 | package com.bsth.service.sys.impl; |
| 2 | 2 | |
| 3 | +import java.util.ArrayList; | |
| 3 | 4 | import java.util.HashMap; |
| 4 | 5 | import java.util.List; |
| 5 | 6 | import java.util.Map; |
| 6 | 7 | |
| 8 | +import com.bsth.entity.sys.SysUser; | |
| 9 | +import com.bsth.security.util.SecurityUtils; | |
| 7 | 10 | import org.slf4j.Logger; |
| 8 | 11 | import org.slf4j.LoggerFactory; |
| 9 | 12 | import org.springframework.beans.factory.annotation.Autowired; |
| ... | ... | @@ -40,4 +43,15 @@ public class ResourceServiceImpl extends BaseServiceImpl<Resource, Integer> impl |
| 40 | 43 | public List<Resource> findByRolesId(Integer id) { |
| 41 | 44 | return resourceRepository.findByRolesId(id); |
| 42 | 45 | } |
| 46 | + | |
| 47 | + @Override | |
| 48 | + public List<Resource> findResource(Integer roleId) { | |
| 49 | + List<Resource> list = new ArrayList<>(); | |
| 50 | + try{ | |
| 51 | + list = resourceRepository.findResource(roleId); | |
| 52 | + }catch (Exception e){ | |
| 53 | + logger.error("", e); | |
| 54 | + } | |
| 55 | + return list; | |
| 56 | + } | |
| 43 | 57 | } | ... | ... |
src/main/java/com/bsth/service/sys/impl/RoleServiceImpl.java
| 1 | 1 | package com.bsth.service.sys.impl; |
| 2 | 2 | |
| 3 | +import java.sql.PreparedStatement; | |
| 4 | +import java.sql.SQLException; | |
| 3 | 5 | import java.text.SimpleDateFormat; |
| 4 | -import java.util.ArrayList; | |
| 5 | -import java.util.HashMap; | |
| 6 | -import java.util.Iterator; | |
| 7 | -import java.util.List; | |
| 8 | -import java.util.Map; | |
| 9 | -import java.util.Set; | |
| 6 | +import java.util.*; | |
| 10 | 7 | |
| 8 | +import com.bsth.data.BasicData; | |
| 9 | +import com.bsth.entity.realcontrol.ScheduleRealInfo; | |
| 10 | +import com.bsth.entity.sys.Resource; | |
| 11 | +import com.bsth.repository.sys.ResourceRepository; | |
| 12 | +import com.bsth.security.SecurityMetadataSourceService; | |
| 11 | 13 | import org.slf4j.Logger; |
| 12 | 14 | import org.slf4j.LoggerFactory; |
| 13 | 15 | import org.springframework.beans.factory.annotation.Autowired; |
| 16 | +import org.springframework.jdbc.core.BatchPreparedStatementSetter; | |
| 17 | +import org.springframework.jdbc.core.JdbcTemplate; | |
| 18 | +import org.springframework.jdbc.datasource.DataSourceTransactionManager; | |
| 19 | +import org.springframework.orm.jpa.JpaTransactionManager; | |
| 14 | 20 | import org.springframework.stereotype.Service; |
| 15 | 21 | |
| 16 | 22 | import com.bsth.common.ResponseCode; |
| ... | ... | @@ -21,6 +27,11 @@ import com.bsth.repository.sys.ModuleRepository; |
| 21 | 27 | import com.bsth.repository.sys.RoleRepository; |
| 22 | 28 | import com.bsth.service.impl.BaseServiceImpl; |
| 23 | 29 | import com.bsth.service.sys.RoleService; |
| 30 | +import org.springframework.transaction.TransactionDefinition; | |
| 31 | +import org.springframework.transaction.TransactionStatus; | |
| 32 | +import org.springframework.transaction.annotation.Propagation; | |
| 33 | +import org.springframework.transaction.annotation.Transactional; | |
| 34 | +import org.springframework.transaction.support.DefaultTransactionDefinition; | |
| 24 | 35 | |
| 25 | 36 | @Service |
| 26 | 37 | public class RoleServiceImpl extends BaseServiceImpl<Role, Integer> implements |
| ... | ... | @@ -33,6 +44,15 @@ public class RoleServiceImpl extends BaseServiceImpl<Role, Integer> implements |
| 33 | 44 | |
| 34 | 45 | @Autowired |
| 35 | 46 | ModuleRepository moduleRepository; |
| 47 | + | |
| 48 | + @Autowired | |
| 49 | + ResourceRepository resourceRepository; | |
| 50 | + | |
| 51 | + @Autowired | |
| 52 | + SecurityMetadataSourceService securityMetadataSourceService; | |
| 53 | + | |
| 54 | + @Autowired | |
| 55 | + JdbcTemplate jdbcTemplate; | |
| 36 | 56 | |
| 37 | 57 | SimpleDateFormat sdfMinute = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| 38 | 58 | |
| ... | ... | @@ -103,4 +123,39 @@ public class RoleServiceImpl extends BaseServiceImpl<Role, Integer> implements |
| 103 | 123 | map.put("userNames", userNames); |
| 104 | 124 | return map; |
| 105 | 125 | } |
| 106 | -} | |
| 126 | + | |
| 127 | + @Override | |
| 128 | + public Map<String, Object> settRoleResources(final Integer roleId, String rIds){ | |
| 129 | + Map<String, Object> map = new HashMap<>(); | |
| 130 | + DataSourceTransactionManager tran = new DataSourceTransactionManager(jdbcTemplate.getDataSource()); | |
| 131 | + DefaultTransactionDefinition def = new DefaultTransactionDefinition(); | |
| 132 | + def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); | |
| 133 | + TransactionStatus status = tran.getTransaction(def); | |
| 134 | + final String[] ids = rIds.split(","); | |
| 135 | + try{ | |
| 136 | + jdbcTemplate.update("delete from bsth_c_sys_resource_roles where roles = ?", roleId); | |
| 137 | + jdbcTemplate.batchUpdate("insert into bsth_c_sys_resource_roles(resources,roles)" + | |
| 138 | + " VALUES (?, ?)", new BatchPreparedStatementSetter() { | |
| 139 | + @Override | |
| 140 | + public void setValues(PreparedStatement ps, int i) throws SQLException { | |
| 141 | + ps.setInt(1, Integer.parseInt(ids[i])); | |
| 142 | + ps.setInt(2, roleId); | |
| 143 | + } | |
| 144 | + | |
| 145 | + @Override | |
| 146 | + public int getBatchSize() { | |
| 147 | + return ids.length; | |
| 148 | + } | |
| 149 | + }); | |
| 150 | + tran.commit(status); | |
| 151 | + //重新加载security资源 | |
| 152 | + securityMetadataSourceService.loadResourceDefine(); | |
| 153 | + map.put("status", ResponseCode.SUCCESS); | |
| 154 | + }catch (Exception e){ | |
| 155 | + tran.rollback(status); | |
| 156 | + logger.error("【RoleServiceImpl】【settRoleResources】 : ", e); | |
| 157 | + map.put("status", ResponseCode.ERROR); | |
| 158 | + } | |
| 159 | + return map; | |
| 160 | + } | |
| 161 | +} | |
| 107 | 162 | \ No newline at end of file | ... | ... |
src/main/resources/static/assets/js/common.js
| ... | ... | @@ -57,7 +57,10 @@ function ajaxComplete(xhr, ts, succ){ |
| 57 | 57 | successHandle(JSON.parse(xhr.responseText), succ); |
| 58 | 58 | } |
| 59 | 59 | else if(ts == 'error'){ |
| 60 | - layer.alert(xhr.responseText, {icon: 2, title: '操作失败'}); | |
| 60 | + layer.alert(xhr.responseText + '<br> <span id="goIndex" style="color: #ff1f08;font-weight: bold;font-size: large;">1</span> 秒后回到首页', {icon: 2, title: '操作失败'}); | |
| 61 | + setTimeout(function(){ | |
| 62 | + window.location.href = '/'; | |
| 63 | + },1500) | |
| 61 | 64 | } |
| 62 | 65 | } |
| 63 | 66 | ... | ... |
src/main/resources/static/pages/permission/resource/list.html
| ... | ... | @@ -165,16 +165,17 @@ $(function(){ |
| 165 | 165 | var options = '<option value="">请选择...</option>'; |
| 166 | 166 | $.each(treeData, function(i, g){ |
| 167 | 167 | var dArray = g.children; |
| 168 | - | |
| 169 | - for(var i = 0,d; d = dArray[i++];){ | |
| 170 | - options += '<optgroup label="'+d.name+'">'; | |
| 171 | - if(!d.children) | |
| 172 | - continue; | |
| 173 | - | |
| 174 | - $.each(d.children, function(i, m){ | |
| 175 | - options += '<option value="'+m.id+'">'+m.name+'</option>' | |
| 176 | - }); | |
| 177 | - options += '</optgroup>'; | |
| 168 | + if(dArray){ | |
| 169 | + for(var i = 0,d; d = dArray[i++];){ | |
| 170 | + options += '<optgroup label="'+d.name+'">'; | |
| 171 | + if(!d.children) | |
| 172 | + continue; | |
| 173 | + | |
| 174 | + $.each(d.children, function(i, m){ | |
| 175 | + options += '<option value="'+m.id+'">'+m.name+'</option>' | |
| 176 | + }); | |
| 177 | + options += '</optgroup>'; | |
| 178 | + } | |
| 178 | 179 | } |
| 179 | 180 | }); |
| 180 | 181 | $('#moduleSelect').html(options)/* .select2() */; | ... | ... |
src/main/resources/static/pages/permission/role/list.html
| ... | ... | @@ -67,7 +67,7 @@ |
| 67 | 67 | style="display: inline-block; margin-right: 5px;"> <i |
| 68 | 68 | class="fa fa-meh-o"> </i> 模块配置 |
| 69 | 69 | </a> |
| 70 | - <a href="javascript:;" class=" font-blue " | |
| 70 | + <a href="resourcesSetting.html?no={{role.id}}" class=" font-blue " | |
| 71 | 71 | style="display: inline-block;color: #aaaaaa !important;" > <i class="fa fa-key"> |
| 72 | 72 | </i> 系统资源权限 |
| 73 | 73 | </a> | ... | ... |
src/main/resources/static/pages/permission/role/resourcesSetting.html
0 → 100644
| 1 | +<div class="page-head"> | |
| 2 | + <div class="page-title"> | |
| 3 | + <h1>分配资源</h1> | |
| 4 | + </div> | |
| 5 | +</div> | |
| 6 | + | |
| 7 | +<ul class="page-breadcrumb breadcrumb"> | |
| 8 | + <li><a href="/pages/home.html" data-pjax>首页</a> <i | |
| 9 | + class="fa fa-circle"></i></li> | |
| 10 | + <li><span class="active">权限管理</span> <i class="fa fa-circle"></i></li> | |
| 11 | + <li><a href="list.html" data-pjax>角色管理</a> <i class="fa fa-circle"></i></li> | |
| 12 | + <li><span class="active">分配资源</span></li> | |
| 13 | +</ul> | |
| 14 | +<br><br> | |
| 15 | +<div class="row"> | |
| 16 | + <div class="col-lg-4 col-md-5 col-sm-5 col-md-offset-1"> | |
| 17 | + <!-- BEGIN PORTLET--> | |
| 18 | + <div class="portlet light bordered"> | |
| 19 | + <div class="portlet-title"> | |
| 20 | + <div class="caption"> | |
| 21 | + <i class="icon-bar-chart font-green"></i> | |
| 22 | + <span class="caption-subject font-green bold uppercase">角色信息</span> | |
| 23 | + <span class="caption-helper">更新于 2016-03-29 16:40</span> | |
| 24 | + </div> | |
| 25 | + </div> | |
| 26 | + <div class="portlet-body"> | |
| 27 | + <div class="mt-element-list"> | |
| 28 | + <div class="mt-list-container list-simple" style="border: none;"> | |
| 29 | + </div> | |
| 30 | + </div> | |
| 31 | + </div> | |
| 32 | + </div> | |
| 33 | + <!-- END PORTLET--> | |
| 34 | + </div> | |
| 35 | + <script id="role_detail_temp" type="text/html"> | |
| 36 | + <ul> | |
| 37 | + <li class="mt-list-item" style="border-bottom:none;"> | |
| 38 | + <div class="list-item-content" > | |
| 39 | + <h5 class="uppercase"> | |
| 40 | + <span><i class="fa fa-code"></i> 角色代码:{{codeName}}</span> | |
| 41 | + </h5> | |
| 42 | + </div> | |
| 43 | + </li> | |
| 44 | + <li class="mt-list-item" style="border-bottom:none;"> | |
| 45 | + <div class="list-item-content"> | |
| 46 | + <h5 class="uppercase"> | |
| 47 | + <span><i class="fa fa-user"></i> 角色名称:{{roleName}}</span> | |
| 48 | + </h5> | |
| 49 | + </div> | |
| 50 | + </li> | |
| 51 | + <li class="mt-list-item" style="border-bottom:none;"> | |
| 52 | + <div class="list-item-content"> | |
| 53 | + <h5 class="uppercase"> | |
| 54 | + <span><i class="fa fa-clock-o"></i> 创建时间:{{createDate}}</span> | |
| 55 | + </h5> | |
| 56 | + </div> | |
| 57 | + </li> | |
| 58 | + <li class="mt-list-item" style="border-bottom:none;"> | |
| 59 | + <div class="list-item-content"> | |
| 60 | + <h5 class="uppercase"> | |
| 61 | + <span><i class="fa fa-check-circle"></i> 状态: | |
| 62 | + {{if enable == 1}} | |
| 63 | + 可用 | |
| 64 | + {{else}} | |
| 65 | + 禁用 | |
| 66 | + {{/if}} | |
| 67 | + </span> | |
| 68 | + </h5> | |
| 69 | + </div> | |
| 70 | + </li> | |
| 71 | + <li class="mt-list-item" style="border-bottom:none;"> | |
| 72 | + <div class="list-item-content"> | |
| 73 | + <h5 class="uppercase"> | |
| 74 | + <span><i class="fa fa-columns"></i> 模块数:{{modules}}</span> | |
| 75 | + </h5> | |
| 76 | + </div> | |
| 77 | + </li> | |
| 78 | + <li class="mt-list-item" style="border-bottom:none;"> | |
| 79 | + <div class="list-item-content"> | |
| 80 | + <h5 class="uppercase"> | |
| 81 | + <span><i class="fa fa-users"></i> 用户:{{userNames}}</span> | |
| 82 | + </h5> | |
| 83 | + </div> | |
| 84 | + </li> | |
| 85 | + <li class="mt-list-item" style="border-bottom:none;"> | |
| 86 | + <div class="list-item-content"> | |
| 87 | + <h5 class="uppercase"> | |
| 88 | + <span><i class="fa fa-ambulance"></i> 资源数:{{resources}}</span> | |
| 89 | + </h5> | |
| 90 | + </div> | |
| 91 | + </li> | |
| 92 | + <li class="mt-list-item" style="border-bottom:none;"> | |
| 93 | + <div class="list-item-content"> | |
| 94 | + <h5 class="uppercase"> | |
| 95 | + <span><i class="fa fa-text-width"></i> 描述:{{descriptions}}</span> | |
| 96 | + </h5> | |
| 97 | + </div> | |
| 98 | + </li> | |
| 99 | + </ul> | |
| 100 | + </script> | |
| 101 | + | |
| 102 | + <div style="display: inline-block;"> | |
| 103 | + <!-- BEGIN PORTLET--> | |
| 104 | + <div class="portlet light bordered"> | |
| 105 | + <div class="portlet-title"> | |
| 106 | + <div class="caption"> | |
| 107 | + <i class="icon-bar-chart font-green"></i> | |
| 108 | + <span class="caption-subject font-green bold uppercase">分配资源</span> | |
| 109 | + </div> | |
| 110 | + <div class="actions"> | |
| 111 | + <button class="btn green btn-circle btn-sm" disabled="disabled" id="saveResourceSett"><i class="fa fa-check"></i> 保存修改</button> | |
| 112 | + <a href="list.html" data-pjax class="btn grey btn-circle btn-sm"><i class="fa fa-reply"></i> 返回</a> | |
| 113 | + </div> | |
| 114 | + </div> | |
| 115 | + <div class="portlet-body"> | |
| 116 | + <div class="form-group last" > | |
| 117 | + <div> | |
| 118 | + <select multiple="multiple" class="multi-select" id="resourceSettSelect" ></select> | |
| 119 | + </div> | |
| 120 | + </div> | |
| 121 | + </div> | |
| 122 | + </div> | |
| 123 | + </div> | |
| 124 | +</div> | |
| 125 | +<script> | |
| 126 | + var id = $.url().param('no') | |
| 127 | + ,roleObj; | |
| 128 | + | |
| 129 | + if(!id){ | |
| 130 | + alert('缺少主键'); | |
| 131 | + } | |
| 132 | + else{ | |
| 133 | + $get('/role/roleInfo' ,{id:id}, function(obj){ | |
| 134 | + $('.caption-helper').text(obj.updateDate); | |
| 135 | + var htmlStr = template('role_detail_temp', obj); | |
| 136 | + $('.mt-list-container').html(htmlStr); | |
| 137 | + }); | |
| 138 | + $get('/role/' + id ,null, function(obj){ | |
| 139 | + roleObj = obj; | |
| 140 | + }); | |
| 141 | + } | |
| 142 | + | |
| 143 | + $("#saveResourceSett").on('click',function(){ | |
| 144 | + if($(this).attr('disabled')) | |
| 145 | + return; | |
| 146 | + | |
| 147 | + var ids = []; | |
| 148 | + $.each($('#resourceSettSelect').val(), function(i, rId){ | |
| 149 | + ids.push(rId); | |
| 150 | + }); | |
| 151 | + | |
| 152 | + if(roleObj){ | |
| 153 | + $post('/role/settResources', {roleId: roleObj.id,rIds: ids.join(',')}, function(){ | |
| 154 | + layer.msg('修改成功!'); | |
| 155 | + }); | |
| 156 | + } | |
| 157 | + }) | |
| 158 | + | |
| 159 | + //资源下拉框 | |
| 160 | + getResourceTreeData(function(treeData){ | |
| 161 | + var options = ''; | |
| 162 | + for(var i = 0; i < treeData.length; i++){ | |
| 163 | + //是否被当前角色持有 | |
| 164 | + var selected = ''; | |
| 165 | + if(treeData[i].enable){ | |
| 166 | + selected = 'selected'; | |
| 167 | + } | |
| 168 | + options += '<option value="'+treeData[i].id+'" '+selected+'>'+treeData[i].name+'</option>' | |
| 169 | + } | |
| 170 | + //初始化multiSelect | |
| 171 | + $('#resourceSettSelect').html(options).multiSelect({ | |
| 172 | + selectableOptgroup: false, | |
| 173 | + selectableHeader: "<div class='multi-custom-header-left'>未分配</div>", | |
| 174 | + selectionHeader: "<div class='multi-custom-header-right'>已分配</div>", | |
| 175 | + }).on('change',function(){ | |
| 176 | + if($(this).val() != null) | |
| 177 | + $('#saveResourceSett').removeAttr('disabled'); | |
| 178 | + else | |
| 179 | + $('#saveResourceSett').attr('disabled', 'disabled'); | |
| 180 | + }); | |
| 181 | + }); | |
| 182 | + | |
| 183 | + function getResourceTreeData(cb){ | |
| 184 | + $get('/resource/findResource',{roleId:id}, function(arr){ | |
| 185 | + cb && cb(arr) | |
| 186 | + }); | |
| 187 | + } | |
| 188 | +</script> | |
| 0 | 189 | \ No newline at end of file | ... | ... |