zoukankan      html  css  js  c++  java
  • LigerUI权限系统之用户管理

      用户管理较之前的的组织结构和菜单管理稍显复杂。不管怎样还是先上图吧,再来讲解

      左边是组织结构,右边是用户,用户是跟组织机构挂钩的,通过点击左边的组织结构,来刷新右边,加载该组织机构下的用户。

      用户管理添加:

     

      选中左边的组织机构,用户就加在该选中的组织机构下

      用户管理修改:

      用户管理删除:

      删除该组织机构下的用户,若该用户分配了角色,那么也把关联的角色删掉

      用户管理角色分配:

      为用户分配角色,一个用户可以有多个角色,当然一个角色也可以是多个用户。它们是多对多的关系

      前端完整代码:

      1 @section headerScripts{
      2     <style type="text/css">
      3         #layout {
      4              99.2%;
      5             margin: 0 auto;
      6             margin-top: 4px;
      7         }
      8 
      9         #tree {
     10              200px;
     11             height: 300px;
     12             margin: 10px;
     13             float: left;
     14             overflow: auto;
     15         }
     16     </style>
     17     <script type="text/javascript">
     18 
     19         $(function () {
     20 
     21             var UrlTreeDataSource = '@Url.Action("TreeDataSource")';
     22             var UrlUserDataSource = '@Url.Action("UserDataSource")';
     23             var UrlAddUser = '@Url.Action("AddUser")';
     24             var UrlModifyUser = '@Url.Action("ModifyUser")';
     25             var UrlDeleteUser = '@Url.Action("DeleteUser")';
     26             var UrlAddRole = '@Url.Action("AddRole")';
     27             var UrlGetRole = '@Url.Action("GetRole")';
     28 
     29             var grid;
     30             var tree;
     31 
     32             $("#layout").ligerLayout({
     33                 leftWidth: 190,
     34                 height: '100%',
     35                 heightDiff: -14,
     36                 space: 4
     37             });
     38 
     39             tree = $("#tree").ligerTree({
     40                 url: UrlTreeDataSource,
     41                 nodeWidth: 40,
     42                 checkbox: false,
     43                 parentIcon: null,
     44                 childIcon: null,
     45                 idFieldName: 'orgCode',
     46                 textFieldName: 'name',
     47                 parentIDFieldName: 'parentCode',
     48                 onSelect: LoadUser
     49 
     50             });
     51 
     52             grid = $("#grid").ligerGrid({
     53                 columns: [
     54                 { display: '用户账号', name: 'userid', align: 'center',  '30%' },
     55                 { display: '姓名', name: 'name', type: 'int', align: 'center',  '30%' },
     56                 { display: '角色名称', name: 'rolename', type: 'int', align: 'center',  '30%' },
     57                 ],
     58                  '98%',
     59                 pageSizeOptions: [10, 30, 50],
     60                 height: '90%',
     61                 rowHeight: 30,
     62                 headerRowHeight: 30,
     63                 url: UrlUserDataSource,
     64                 alternatingRow: true,
     65                 parms: { orgCode: "01" },
     66                 toolbar: {
     67                     items: [
     68                    { text: '增加', click: AddUser, img: '@Url.Content("~/Content/LigerUI/icons/add.gif")' },
     69                    { line: true },
     70                    { text: '修改', click: ModifyUser, img: '@Url.Content("~/Content/LigerUI/icons/modify.gif")' },
     71                    { line: true },
     72                    { text: '删除', click: DeleteUser, img: '@Url.Content("~/Content/LigerUI/icons/delete.gif")' },
     73                    { line: true },
     74                    { text: '角色分配', click: RoleAllocation, img: '@Url.Content("~/Content/LigerUI/icons/role.gif")' }
     75                     ]
     76                 }
     77 
     78             }
     79            );
     80 
     81             function LoadUser() {
     82                 grid.loadServerData({ orgCode: tree.getSelected().data.orgCode });
     83             }
     84 
     85             function AddUser() {
     86                 var node = tree.getSelected();
     87                 if (node == null) {
     88                     alert("请选择组织机构!");
     89                     return;
     90                 }
     91 
     92                 $("#winAdd").data("orgCode", tree.getSelected().data.orgCode);
     93 
     94                 if (!window.addWin) {
     95                     window.addWin = $.ligerDialog.open({
     96                         target: $("#winAdd"),
     97                         height: 260,
     98                          400,
     99                         title: "增加用户",
    100                         isHidden: false
    101                     });
    102 
    103                     $("#btnCancel").click(function () {
    104                         window.addWin.hide();
    105                     });
    106 
    107                     $("#btnConfirm").click(function () {
    108 
    109                         var orgCode = $("#winAdd").data("orgCode");
    110                         var userId = $("#txtUserId").val();
    111                         var userName = $("#txtUserName").val();
    112                         var password = $("#txtPassword").val();
    113 
    114                         if (userId == "" || userName == "" || password == "") {
    115                             alert("用户账号,名称,密码都不能为空!");
    116                             return;
    117                         }
    118 
    119                         $.post(UrlAddUser,
    120                             { orgCode: orgCode, userId: userId, userName: userName, password: password },
    121                             function (data) {
    122                                 if (data.result) {
    123                                     alert("操作成功!");
    124                                     $("#grid").ligerGrid().reload();
    125                                 } else {
    126                                     alert(data.msg);
    127                                 }
    128                             });
    129                     });
    130                 } else {
    131                     window.addWin.show();
    132                 }
    133             }
    134             function ModifyUser() {
    135                 var ModifyDialog;
    136                 var grid = $("#grid").ligerGrid();
    137                 var row = grid.getSelectedRow();
    138                 if (row == null) {
    139                     alert("请选择用户");
    140                     return;
    141                 }
    142 
    143                 $("#winModify").data("userId", row.userid);
    144                 $("#winModify").data("name", row.name);
    145                 $("#txtModifyUserId").attr("readonly", true);
    146 
    147                 if (!window.modifyWin) {
    148                     window.modifyWin = $.ligerDialog.open({
    149                         target: $("#winModify"),
    150                         height: 250,
    151                          400,
    152                         title: "修改用户"
    153                     });
    154 
    155                     $("#txtModifyUserId").val($("#winModify").data("userId"));
    156                     $("#txtModifyUserName").val($("#winModify").data("name"));
    157 
    158                     $("#btnModifyCancel").click(function () {
    159                         window.modifyWin.hide();
    160                     });
    161 
    162                     $("#btnModifyConfirm").click(function () {
    163 
    164                         var userId = $("#txtModifyUserId").val();
    165                         var userName = $("#txtModifyUserName").val();
    166                         var password = $("#txtModifyPassword").val();
    167 
    168                         if (userName == "" || password == "") {
    169                             alert("用户名和密码不能为空!");
    170                             return;
    171                         }
    172 
    173                         $.post(UrlModifyUser, { userId: userId, userName: userName, password: password }, function (data) {
    174                             if (data.result) {
    175                                 alert("操作成功!");
    176                                 $("#grid").ligerGrid().reload();
    177                             } else {
    178                                 alert(data.msg);
    179                             }
    180                         });
    181                     });
    182                 } else {
    183                     $("#winModify").data("userId", row.userid);
    184                     $("#winModify").data("name", row.name);
    185                     window.modifyWin.show();
    186                 }
    187             }
    188             function DeleteUser() {
    189                 var grid = $("#grid").ligerGrid();
    190                 var row = grid.getSelectedRow();
    191                 if (row == null) {
    192                     alert("请选择用户");
    193                     return;
    194                 }
    195                 if (confirm("是否确定删除?")) {
    196                     $.post(UrlDeleteUser, { userId: row.userid }, function (data) {
    197                         if (data.result) {
    198                             alert("删除成功!");
    199                             $("#grid").ligerGrid().reload();
    200                         } else {
    201                             alert(data.msg);
    202                         }
    203                     });
    204                 }
    205             }
    206 
    207             function RoleAllocation() {
    208                 var grid = $("#grid").ligerGrid();
    209                 var row = grid.getSelectedRow();
    210                 if (row == null) {
    211                     alert("请选择用户");
    212                     return;
    213                 }
    214                 $("#winAllocation").data("userName", row.name);
    215                 $("#winAllocation").data("userId", row.userid);
    216                 
    217                 if (!window.dialog) {
    218                     window.dialog = $.ligerDialog.open({
    219                         target: $("#winAllocation"),
    220                         height: 200,
    221                          400,
    222                         title: "分配角色",
    223                         isHidden: false
    224                     });
    225 
    226                     $("#txtRole").ligerComboBox(
    227                       {
    228                           url: UrlGetRole,
    229                           valueField: 'roleid',
    230                           textField: 'rolename',
    231                           selectBoxWidth: 135,
    232                           autocomplete: true,
    233                            135,
    234                           hideOnLoseFocus:true,
    235                           css: 'combo'
    236                       }
    237 
    238                   );
    239                     $("#btnRoleCancel").click(function () {
    240                         window.dialog.hide();
    241                     });
    242 
    243                     $("#btnRoleConfirm").click(function () {
    244                         var userId = $("#winAllocation").data("userId");
    245                         var userName = $("#winAllocation").data("userName");
    246                         var roleName = $("#txtRole").ligerComboBox().getText();
    247                       
    248                         if (roleName == "") {
    249                             alert("角色不能为空!");
    250                             return;
    251                         }
    252 
    253                         $.post(UrlAddRole,
    254                             {userId:userId, userName: userName, roleName: roleName },
    255                             function (data) {
    256                                 if (data.result) {
    257                                     alert("操作成功!");
    258                                     $("#grid").ligerGrid().reload();
    259                                 } else {
    260                                     alert(data.msg);
    261                                 }
    262                             });
    263                     });
    264                 } else {
    265                     window.dialog.show();
    266                 }
    267             }
    268         })
    269     </script>
    270 }
    271 
    272 <div id="layout">
    273     <div position="left" title="组织机构">
    274         <ul id="tree">
    275         </ul>
    276     </div>
    277     <div position="center" title="用户操作列表">
    278         <div id="grid"></div>
    279     </div>
    280 </div>
    281 
    282 <div id="winAdd" style="display: none;">
    283     <table class="tb" style="height: 170px;">
    284         <tr class="tr">
    285             <td class="td">用户账户:</td>
    286             <td>
    287                 <input id="txtUserId" /></td>
    288         </tr>
    289         <tr class="tr">
    290             <td class="td">用户名称:</td>
    291             <td>
    292                 <input id="txtUserName" /></td>
    293         </tr>
    294         <tr class="tr">
    295             <td class="td">用户密码:</td>
    296             <td>
    297                 <input id="txtPassword" type="text" /></td>
    298         </tr>
    299         <tr class="tr">
    300             <td colspan="2">
    301                 <button id="btnConfirm" class="ui-button">确定</button>
    302                 <button id="btnCancel" class="ui-button">取消</button>
    303             </td>
    304         </tr>
    305     </table>
    306 </div>
    307 
    308 <div id="winModify" style="display: none;">
    309     <table class="tb" style="height: 170px;">
    310         <tr class="tr">
    311             <td class="td">用户账户:</td>
    312             <td>
    313                 <input id="txtModifyUserId" /></td>
    314         </tr>
    315         <tr class="tr">
    316             <td class="td">用户名称:</td>
    317             <td>
    318                 <input id="txtModifyUserName" /></td>
    319         </tr>
    320         <tr class="tr">
    321             <td class="td">用户密码:</td>
    322             <td>
    323                 <input id="txtModifyPassword" type="text" /></td>
    324         </tr>
    325         <tr class="tr">
    326             <td colspan="2">
    327                 <button id="btnModifyConfirm" class="ui-button">确定</button>
    328                 <button id="btnModifyCancel" class="ui-button">取消</button>
    329             </td>
    330         </tr>
    331     </table>
    332 </div>
    333 
    334 <div id="winAllocation" style="display: none;">
    335     <table class="tb" style="height: 100px;">
    336         <tr class="tr">
    337             <td class="td" style=" 150px;">角色:</td>
    338             <td>
    339                 <input id="txtRole" /></td>
    340         </tr>
    341         <tr class="tr">
    342             <td colspan="2">
    343                 <button id="btnRoleConfirm" class="ui-button">确定</button>
    344                 <button id="btnRoleCancel" class="ui-button">取消</button>
    345             </td>
    346         </tr>
    347     </table>
    348 </div>
    View Code

      后端完整代码:

      1 public class UserController : Controller
      2     {
      3         //
      4         // GET: /User/
      5 
      6         private IUserRepository _userRepository;
      7         private IOrgRepository _orgRepository;
      8         private IRoleRepository _roleRepository;
      9 
     10         public UserController(IUserRepository userRepository, IOrgRepository orgRepository, IRoleRepository roleRepository)
     11         {
     12             this._userRepository = userRepository;
     13             this._orgRepository = orgRepository;
     14             this._roleRepository = roleRepository;
     15         }
     16 
     17         public ActionResult Index()
     18         {
     19             return View();
     20         }
     21 
     22         public JsonResult TreeDataSource()
     23         {
     24             var data = _orgRepository.GetOrgAll().ToList().Select(m => new
     25             {
     26 
     27                 orgCode = m.orgcode,
     28                 name = m.name,
     29                 parentCode = m.parentCode
     30             });
     31 
     32             return Json(data, JsonRequestBehavior.AllowGet);
     33         }
     34 
     35         public JsonResult UserDataSource(string orgCode)
     36         {
     37             var data = _userRepository.GetUserByOrgCode(orgCode).ToList();
     38             return Json(new
     39             {
     40                 Rows = data.Select(m => new
     41                 {
     42                     userid = m.userid,
     43                     name = m.name,
     44                     rolename = string.Join(",", m.role == null ? new string[] { "" } : m.role.ToList().Select(r => r.rolename).Distinct())
     45                 }),
     46                 Total = data.Count()
     47             }, JsonRequestBehavior.AllowGet);
     48         }
     49 
     50         public JsonResult AddUser(string orgCode, string userId, string userName, string password)
     51         {
     52             var check = _userRepository.GetUserBySpecifiedCondition(userId);
     53 
     54             if (check.Count() > 1)
     55             {
     56                 return Json(new { result = false, msg = "添加失败,已存在相同的用户账号!" }, JsonRequestBehavior.AllowGet);
     57             }
     58 
     59             var org = new t_user()
     60             {
     61                 orgcode = orgCode,
     62                 userid = userId,
     63                 name = userName,
     64                 password = password
     65 
     66             };
     67 
     68             try
     69             {
     70                 var result = _userRepository.AddUser(org);
     71                 if (result)
     72                 {
     73                     return Json(new { result = true, msg = "" }, JsonRequestBehavior.AllowGet);
     74                 }
     75                 else
     76                 {
     77                     return Json(new { result = false, msg = "操作失败!" }, JsonRequestBehavior.AllowGet);
     78                 }
     79             }
     80             catch (Exception ex)
     81             {
     82                 return Json(new { result = false, msg = ex.Message }, JsonRequestBehavior.AllowGet);
     83             }
     84         }
     85 
     86         public JsonResult ModifyUser(string userId, string userName, string password)
     87         {
     88 
     89             var org = new t_user()
     90             {
     91                 userid = userId,
     92                 name = userName,
     93                 password = password
     94 
     95             };
     96 
     97             try
     98             {
     99                 var result = _userRepository.ModifyUser(org);
    100                 if (result)
    101                 {
    102                     return Json(new { result = true, msg = "" }, JsonRequestBehavior.AllowGet);
    103                 }
    104                 else
    105                 {
    106                     return Json(new { result = false, msg = "操作失败!" }, JsonRequestBehavior.AllowGet);
    107                 }
    108             }
    109             catch (Exception ex)
    110             {
    111                 return Json(new { result = false, msg = ex.Message }, JsonRequestBehavior.AllowGet);
    112             }
    113         }
    114 
    115         public JsonResult DeleteUser(string userId)
    116         {
    117             try
    118             {
    119                 var result = _userRepository.DeleteUser(userId);
    120                 if (result)
    121                 {
    122                     return Json(new { result = true, msg = "" }, JsonRequestBehavior.AllowGet);
    123                 }
    124                 else
    125                 {
    126                     return Json(new { result = false, msg = "操作失败!" }, JsonRequestBehavior.AllowGet);
    127                 }
    128             }
    129             catch (Exception ex)
    130             {
    131                 return Json(new { result = false, msg = ex.Message }, JsonRequestBehavior.AllowGet);
    132             }
    133         }
    134 
    135         public JsonResult AddRole(string userId, string userName, string roleName)
    136         {
    137             var check = _userRepository.GetUserRoleByCondition(userName, roleName);
    138 
    139             if (check.Count() > 1)
    140             {
    141                 return Json(new { result = false, msg = "添加失败,不能重复添加相同的角色!" }, JsonRequestBehavior.AllowGet);
    142             }
    143 
    144             try
    145             {
    146                 var result = _userRepository.AddRole(userId, userName, roleName);
    147                 if (result)
    148                 {
    149                     return Json(new { result = true, msg = "" }, JsonRequestBehavior.AllowGet);
    150                 }
    151                 else
    152                 {
    153                     return Json(new { result = false, msg = "操作失败!" }, JsonRequestBehavior.AllowGet);
    154                 }
    155             }
    156             catch (Exception ex)
    157             {
    158                 return Json(new { result = false, msg = ex.Message }, JsonRequestBehavior.AllowGet);
    159             }
    160         }
    161 
    162         public JsonResult GetRole()
    163         {
    164 
    165             var data = _roleRepository
    166                 .GetAll()
    167                 .ToList()
    168                 .Select(m => new
    169                 {
    170                     roleid = m.roleid,
    171                     rolename = m.rolename
    172                 });
    173 
    174             return Json(data, JsonRequestBehavior.AllowGet);
    175         }
    176     }
    View Code
  • 相关阅读:
    open()文件对象的seek、tell方法详解 分类: python基础学习 open()文件读写 python Module 2013-09-05 09:40 450人阅读 评论(0) 收藏
    sorted()排序详解 分类: python基础学习 python Module 2013-09-04 17:18 1372人阅读 评论(0) 收藏
    nmon与nmonanalyser 系统性能分析(图表)利器非草稿 分类: 测试 2013-09-04 15:21 668人阅读 评论(0) 收藏
    qemu-img 整理
    [模拟] P1167 刷题
    [线筛] [洛谷] P2640
    [洛谷] P1893 山峰瞭望
    [模拟] 多校赛-开学觉醒赛 G 骰子
    [贪心 + 化学] 多校赛-开学觉醒赛 B
    [模拟] 牛客小白月赛 B 鹏
  • 原文地址:https://www.cnblogs.com/qiuyan/p/3233828.html
Copyright © 2011-2022 走看看