LigerUI权限系统之菜单管理

  菜单管理跟上篇的组织结构实现方式差不多,所以不存在多大的问题。还是老样,先上图,再看代码。菜单管理界面

  菜单管理添加:

 

  菜单管理修改:

  前端完整代码:

  1 @section headerScripts{
  2     <style type="text/css">
  3         #grid {
  4             margin-left: 10px;
  5             margin-top: 10px;
  6         }
  7     </style>
  8 
  9     <script type="text/javascript">
 10 
 11         var UrlMenuDataSource = '@Url.Action("MenuDataSource")';
 12         var UrlParentNode = '@Url.Action("ParentNode")';
 13         var UrlAddMenu = '@Url.Action("AddMenu")';
 14         var UrlModifyMenu = '@Url.Action("ModifyMenu")';
 15         var UrlDeleteMenu = '@Url.Action("DeleteMenu")';
 16 
 17         $(function () {
 18             $("#grid").ligerGrid({
 19                 columns: [
 20                 { display: '页面名称', name: 'name', id: 'tree1', align: 'left',  '30%' },
 21                 { display: '排列序号', name: 'tindex', type: 'int', align: 'left',  '30%' },
 22                 { display: '访问地址', name: 'url', align: 'left',  '30%' },
 23                 { display: '页面ID', name: 'rid', hide: 'hide',  '1%' },
 24                 { display: '页面父ID', name: 'parentrid', hide: 'hide',  '1%' }
 25                 ],
 26                  '98%',
 27                 pageSizeOptions: [10, 30, 50],
 28                 height: '100%',
 29                 rowHeight: 30,
 30                 headerRowHeight: 30,
 31                 url: UrlMenuDataSource,
 32                 alternatingRow: true,
 33                 tree: { columnId: 'tree1' },
 34                 dataAction: 'local',
 35                 toolbar: {
 36                     items: [
 37                    { text: '增加', click: AddMenu, img: '@Url.Content("~/Content/LigerUI/icons/add.gif")' },
 38                    { line: true },
 39                    { text: '修改', click: ModifyMenu, img: '@Url.Content("~/Content/LigerUI/icons/modify.gif")' },
 40                    { line: true },
 41                    { text: '删除', click: DeleteMenu, img: '@Url.Content("~/Content/LigerUI/icons/delete.gif")' }
 42                     ]
 43                 }
 44             }
 45             );
 46 
 47             //添加
 48             function AddMenu() {
 49               
 50                 if (!window.addWin) {
 51                     window.addWin = $.ligerDialog.open({
 52                         target: $("#winAdd"),
 53                         height: 260,
 54                          400,
 55                         title: "增加菜单",
 56                         isHidden: false
 57                     });
 58                     $("#txtParentNode").ligerComboBox(
 59                        {
 60                            url: UrlParentNode,
 61                            valueField: 'rid',
 62                            textField: 'name',
 63                            selectBoxWidth: 135,
 64                            autocomplete: true,
 65                             135,
 66                            hideOnLoseFocus: true,
 67                            css: 'combo'
 68                        }
 69 
 70                    );
 71 
 72                     $("#btnCancel").click(function () {
 73                         window.addWin.hide();
 74                     });
 75 
 76                     $("#btnConfirm").click(function () {
 77 
 78                         var parentNode = $("#txtParentNode").ligerComboBox().getValue();
 79                         var pageName = $("#txtPageName").val();
 80                         var url = $("#txtUrl").val();
 81                         var index = $("#txtTIndex").val();
 82 
 83                         if (pageName == "" || url == "") {
 84                             alert("页面名称和访问地址不能为空!");
 85                             return;
 86                         }
 87 
 88                         $.post(UrlAddMenu,
 89                             { parentNode: parentNode, pageName: pageName, url: url, index: index },
 90                             function (data) {
 91                                 if (data.result) {
 92                                     alert("操作成功!");
 93                                     $("#grid").ligerGrid().reload();
 94                                 } else {
 95                                     alert(data.msg);
 96                                 }
 97                             });
 98                     });
 99                 } else {
100                     window.addWin.show();
101                 }
102 
103             }
104             //修改
105             function ModifyMenu() {
106                 var ModifyDialog;
107                 var grid = $("#grid").ligerGrid();
108                 var row = grid.getSelectedRow();
109                 if (row == null) {
110                     alert("请选择一条数据");
111                     return;
112                 }
113                 $("#winModify").data("name",row.name);
114                 $("#winModify").data("tindex",row.tindex);
115                 $("#winModify").data("url", row.url);
116                 $("#winModify").data("rid", row.rid);
117                 $("#winModify").data("parentrid", row.parentrid);
118 
119 
120                 if (!window.modifyWin) {
121                     window.modifyWin = $.ligerDialog.open({
122                         target: $("#winModify"),
123                         height: 250,
124                          400,
125                         title: "修改菜单"
126                     });
127                    
128                     $("#txtModifyPageName").val( $("#winModify").data("name"));
129                     $("#txtIndex").val( $("#winModify").data("tindex"));
130                     $("#txtModifyUrl").val($("#winModify").data("url"));
131                     $("#txtRid").val($("#winModify").data("rid"));
132                     $("#txtParentRid").val( $("#winModify").data("parentrid"));
133 
134                     $("#btnModifyCancel").click(function () {
135                         window.modifyWin.hide();
136                     });
137 
138                     $("#btnModifyConfirm").click(function () {
139 
140                         var pageName = $("#txtModifyPageName").val();
141                         var index = $("#txtIndex").val();
142                         var url = $("#txtModifyUrl").val();
143                         var rid = $("#txtRid").val();
144                         var parentrid = $("#txtParentRid").val();
145 
146                         if (pageName == "" || url == "") {
147                             alert("页面名称和访问地址不能为空");
148                             return;
149                         }
150 
151                         $.post(UrlModifyMenu, { pageName: pageName, index: index, url: url, rid: rid, parentrid: parentrid }, function (data) {
152                             if (data.result) {
153                                 alert("操作成功!");
154                                 $("#grid").ligerGrid().reload();
155                             } else {
156                                 alert(data.msg);
157                             }
158                         });
159                     });
160                 } else {
161                     $("#txtModifyPageName").val($("#winModify").data("name"));
162                     $("#txtIndex").val($("#winModify").data("tindex"));
163                     $("#txtModifyUrl").val($("#winModify").data("url"));
164                     $("#txtRid").val($("#winModify").data("rid"));
165                     $("#txtParentRid").val($("#winModify").data("parentrid"));
166                     window.modifyWin.show();
167                 }
168 
169             }
170             //删除
171             function DeleteMenu() {
172                 var grid = $("#grid").ligerGrid();
173                 var row = grid.getSelectedRow();
174                 if (row == null) {
175                     alert("请选择一条数据");
176                     return;
177                 }
178                 if (confirm("是否确定删除?")) {
179                     $.post(UrlDeleteMenu, { rid: row.rid }, function (data) {
180                         if (data.result) {
181                             alert("删除成功!");
182                             $("#grid").ligerGrid().reload();
183                         } else {
184                             alert(data.msg);
185                         }
186                     });
187                 }
188 
189             }
190         });
191     </script>
192 }
193 
194 <div id="grid"></div>
195 
196 <div id="winAdd" style="display: none;">
197     <table class="tb" style="height: 170px;">
198         <tr class="tr">
199             <td class="td">父级:</td>
200             <td>
201                 <input id="txtParentNode" /></td>
202         </tr>
203         <tr class="tr">
204             <td class="td">页面名称:</td>
205             <td>
206                 <input id="txtPageName" type="text" /></td>
207         </tr>
208         <tr class="tr">
209             <td class="td">访问地址:
210             </td>
211             <td>
212                 <input id="txtUrl" type="text" />
213             </td>
214 
215         </tr>
216         <tr class="tr">
217             <td class="td">排列序号:
218             </td>
219             <td>
220                 <input id="txtTIndex" type="text" />
221             </td>
222 
223         </tr>
224         <tr class="tr">
225             <td colspan="2">
226                 <button id="btnConfirm" class="ui-button">确定</button>
227                 <button id="btnCancel" class="ui-button">取消</button>
228             </td>
229         </tr>
230     </table>
231 </div>
232 
233 <div id="winModify" style="display: none;">
234     <table class="tb" style="height: 170px;">
235         <tr class="tr">
236             <td class="td">页面名称:</td>
237             <td>
238                 <input id="txtModifyPageName" type="text" /></td>
239         </tr>
240         <tr class="tr">
241             <td class="td">排列序号:</td>
242             <td>
243                 <input id="txtIndex" /></td>
244         </tr>
245         <tr class="tr">
246             <td class="td">访问地址:
247             </td>
248             <td>
249                 <input id="txtModifyUrl" type="text" />
250                 <input id="txtRid" type="hidden" />
251                  <input id="txtParentRid" type="hidden" />
252             </td>
253 
254         </tr>
255         <tr class="tr">
256             <td colspan="2">
257                 <button id="btnModifyConfirm" class="ui-button">确定</button>
258                 <button id="btnModifyCancel" class="ui-button">取消</button>
259             </td>
260         </tr>
261     </table>
262 </div>
View Code

  后端完整代码:

  1 public class MenuController : Controller
  2     {
  3         //
  4         // GET: /Menu/
  5 
  6         private IMenuRepository _menuRepository;
  7 
  8         public MenuController(IMenuRepository menuRepository)
  9         {
 10 
 11             this._menuRepository = menuRepository;
 12         }
 13 
 14         public ActionResult Index()
 15         {
 16             return View();
 17         }
 18 
 19         public JsonResult MenuDataSource()
 20         {
 21 
 22             var data = _menuRepository.GetMenuParentsNode().ToList();
 23 
 24             var list = new List<dynamic>();
 25 
 26             foreach (var item in data)
 27             {
 28                 var children = _menuRepository.GetMenuChildrenNodeByParentId(item.rid).ToList();
 29 
 30                 if (children == null || children.Count() == 0)
 31                 {
 32                     list.Add(new
 33                     {
 34                         name = item.name, 
 35                         tindex = item.tindex,
 36                         url = item.url,
 37                         rid=item.rid,
 38                         parentrid = item.parentrid
 39                     });
 40                 }
 41                 else
 42                 {
 43                     list.Add(new
 44                     {
 45                         name = item.name,
 46                         tindex = item.tindex,
 47                         url = item.url,
 48                         rid = item.rid,
 49                         parentrid = item.parentrid,
 50                         children = children.Select(m => new {
 51                             name = m.name,
 52                             tindex = m.tindex,
 53                             url = m.url,
 54                             rid = m.rid,
 55                             parentrid = m.parentrid
 56                         })
 57                     });
 58                 }
 59             }
 60 
 61             return Json(new
 62             {
 63                 Rows = list,
 64                 Total = list.Count()
 65             }, JsonRequestBehavior.AllowGet);
 66 
 67         }
 68 
 69         public JsonResult ParentNode()
 70         {
 71 
 72             var data = _menuRepository.GetMenuParentsNode().ToList();
 73 
 74             return Json(data, JsonRequestBehavior.AllowGet);
 75         }
 76 
 77         public JsonResult AddMenu(int? parentNode, string pageName, string url,int?index)
 78         {
 79             var check = _menuRepository.GetMenuByCondition(pageName, url);
 80 
 81             if (check.Count() > 1)
 82             {
 83                 return Json(new { result = false, msg = "修改失败,已存在相同的菜单!" }, JsonRequestBehavior.AllowGet);
 84             }
 85             var menu = new t_resources()
 86             {
 87                 name = pageName,
 88                 url = url,
 89                 parentrid = parentNode,
 90                 tindex=index
 91             };
 92 
 93             try
 94             {
 95               var result= _menuRepository.AddMenu(menu);
 96               if (result)
 97               {
 98                   return Json(new { result = true, msg = "" }, JsonRequestBehavior.AllowGet);
 99               }
100               else
101               {
102                   return Json(new { result = false, msg = "操作失败!" }, JsonRequestBehavior.AllowGet);
103               }
104             }
105             catch (Exception ex)
106             {
107                 return Json(new { result = false, msg = ex.Message }, JsonRequestBehavior.AllowGet);
108             }
109         }
110 
111         public JsonResult DeleteMenu(int rid)
112         {
113             var menu = new t_resources()
114             {
115                 rid=rid
116             };
117 
118             try
119             {
120                 var result = _menuRepository.DeleteMenu(menu);
121                 if (result)
122                 {
123                     return Json(new { result = true, msg = "" }, JsonRequestBehavior.AllowGet);
124                 }
125                 else
126                 {
127                     return Json(new { result = false, msg = "操作失败!" }, JsonRequestBehavior.AllowGet);
128                 }
129             }
130             catch (Exception ex)
131             {
132                 return Json(new { result = false, msg = ex.Message }, JsonRequestBehavior.AllowGet);
133             }
134         }
135 
136         public JsonResult ModifyMenu(string pageName, int? index, string url, int rid, int? parentrid)
137         {
138             var check = _menuRepository.GetMenuByCondition(pageName,url);
139 
140             if (check.Count() > 1) {
141                 return Json(new { result = false, msg = "修改失败,已存在相同的菜单!" }, JsonRequestBehavior.AllowGet);
142             }
143 
144             var menu = new t_resources()
145             {
146                 name=pageName,
147                 tindex=index,
148                 url=url,
149                 rid=rid,
150                 parentrid=parentrid
151             };
152 
153             try
154             {
155                 var result = _menuRepository.UpdateMenu(menu);
156                 if (result)
157                 {
158                     return Json(new { result = true, msg = "" }, JsonRequestBehavior.AllowGet);
159                 }
160                 else
161                 {
162                     return Json(new { result = false, msg = "操作失败!" }, JsonRequestBehavior.AllowGet);
163                 }
164             }
165             catch (Exception ex)
166             {
167                 return Json(new { result = false, msg = ex.Message }, JsonRequestBehavior.AllowGet);
168             }
169         }
170     }
View Code
原文地址:https://www.cnblogs.com/qiuyan/p/3233593.html