1
0

menu.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. $(function () {
  2. initialPage();
  3. getGrid();
  4. });
  5. function initialPage() {
  6. $(window).resize(function () {
  7. TreeGrid.table.resetHeight({height: $(window).height() - 100});
  8. });
  9. }
  10. function getGrid() {
  11. var colunms = TreeGrid.initColumn();
  12. var table = new TreeTable(TreeGrid.id, '../sys/menu/queryAll', colunms);
  13. table.setExpandColumn(2);
  14. table.setIdField("menuId");
  15. table.setCodeField("menuId");
  16. table.setParentCodeField("parentId");
  17. table.setExpandAll(false);
  18. table.setHeight($(window).height() - 100);
  19. table.init();
  20. TreeGrid.table = table;
  21. }
  22. var TreeGrid = {
  23. id: "jqGrid",
  24. table: null,
  25. layerIndex: -1
  26. };
  27. /**
  28. * 初始化表格的列
  29. */
  30. TreeGrid.initColumn = function () {
  31. var columns = [
  32. {field: 'selectItem', radio: true},
  33. {title: '编号', field: 'menuId', visitable: false, align: 'center', valign: 'middle', width: '50px'},
  34. {title: '名称', field: 'name', align: 'center', valign: 'middle', width: '180px'},
  35. {title: '上级菜单', field: 'parentName', align: 'center', valign: 'middle', width: '100px'},
  36. {
  37. title: '图标',
  38. field: 'icon',
  39. align: 'center',
  40. valign: 'middle',
  41. width: '50px',
  42. formatter: function (item, index) {
  43. return item.icon == null ? '' : '<i class="' + item.icon + ' fa-lg"></i>';
  44. }
  45. },
  46. {
  47. title: '类型',
  48. field: 'type',
  49. align: 'center',
  50. valign: 'middle',
  51. width: '60px',
  52. formatter: function (item) {
  53. if (item.type === 0) {
  54. return '<span class="label label-primary">目录</span>';
  55. }
  56. if (item.type === 1) {
  57. return '<span class="label label-success">菜单</span>';
  58. }
  59. if (item.type === 2) {
  60. return '<span class="label label-warning">按钮</span>';
  61. }
  62. }
  63. },
  64. {title: '排序', field: 'orderNum', align: 'center', valign: 'middle', width: '50px'},
  65. {title: '菜单URL', field: 'url', align: 'center', valign: 'middle', width: '200px'},
  66. {title: '授权标识', field: 'perms', align: 'center', valign: 'middle'},
  67. {
  68. title: '状态', field: 'status', align: 'center', valign: 'middle', width: '80px',
  69. formatter: function (item) {
  70. if (item.status === 1) {
  71. return '<span class="label label-danger">无效</span>';
  72. }
  73. return '<span class="label label-success">有效</span>';
  74. }
  75. }];
  76. return columns;
  77. };
  78. var setting = {
  79. data: {
  80. simpleData: {
  81. enable: true,
  82. idKey: "menuId",
  83. pIdKey: "parentId",
  84. rootPId: -1
  85. },
  86. key: {
  87. url: "nourl"
  88. }
  89. }
  90. };
  91. var ztree;
  92. var vm = new Vue({
  93. el: '#rrapp',
  94. data: {
  95. showList: true,
  96. title: null,
  97. menu: {
  98. parentName: null,
  99. parentId: 0,
  100. type: 1,
  101. orderNum: 0,
  102. status: 0
  103. },
  104. q: {
  105. menuName: '',
  106. parentName: ''
  107. },
  108. ruleValidate: {
  109. name: [
  110. {required: true, message: '菜单名称不能为空', trigger: 'blur'}
  111. ],
  112. url: [
  113. {required: true, message: '菜单url不能为空', trigger: 'blur'}
  114. ],
  115. parentName: [
  116. {required: true, message: '上级菜单不能为空', trigger: 'blur'}
  117. ]
  118. }
  119. },
  120. methods: {
  121. selectIcon: function () {
  122. openWindow({
  123. type: 2,
  124. title: '选取图标',
  125. area: ['1030px', '500px'],
  126. content: ['icon.html'],
  127. btn: false
  128. });
  129. },
  130. getMenu: function (menuId) {
  131. //加载菜单树
  132. $.get("../sys/menu/select", function (r) {
  133. ztree = $.fn.zTree.init($("#menuTree"), setting, r.menuList);
  134. var node = ztree.getNodeByParam("menuId", vm.menu.parentId);
  135. if (node) {
  136. ztree.selectNode(node);
  137. vm.menu.parentName = node.name;
  138. } else {
  139. node = ztree.getNodeByParam("menuId", 0);
  140. ztree.selectNode(node);
  141. vm.menu.parentName = node.name;
  142. }
  143. })
  144. },
  145. add: function () {
  146. vm.showList = false;
  147. vm.title = "新增";
  148. var menuId = TreeGrid.table.getSelectedRow();
  149. var parentId = 0;
  150. if (menuId.length != 0) {
  151. parentId = menuId[0].id;
  152. }
  153. vm.menu = {parentName: null, parentId: parentId, type: 1, orderNum: 0, status: 0};
  154. vm.getMenu();
  155. },
  156. update: function (event) {
  157. var menuId = TreeGrid.table.getSelectedRow();
  158. if (menuId.length == 0) {
  159. iview.Message.error("请选择一条记录");
  160. return;
  161. }
  162. $.get("../sys/menu/info/" + menuId[0].id, function (r) {
  163. vm.showList = false;
  164. vm.title = "修改";
  165. vm.menu = r.menu;
  166. vm.getMenu();
  167. });
  168. },
  169. del: function (event) {
  170. var menuIds = TreeGrid.table.getSelectedRow(), ids = [];
  171. if (menuIds.length == 0) {
  172. iview.Message.error("请选择一条记录");
  173. return;
  174. }
  175. confirm('确定要删除选中的记录?', function () {
  176. $.each(menuIds, function (idx, item) {
  177. ids[idx] = item.id;
  178. });
  179. $.ajax({
  180. type: "POST",
  181. url: "../sys/menu/delete",
  182. contentType: "application/json",
  183. data: JSON.stringify(ids),
  184. success: function (r) {
  185. if (r.code === 0) {
  186. alert('操作成功', function (index) {
  187. vm.reload();
  188. });
  189. } else {
  190. alert(r.msg);
  191. }
  192. }
  193. });
  194. });
  195. },
  196. saveOrUpdate: function (event) {
  197. var url = vm.menu.menuId == null ? "../sys/menu/save" : "../sys/menu/update";
  198. $.ajax({
  199. type: "POST",
  200. url: url,
  201. contentType: "application/json",
  202. data: JSON.stringify(vm.menu),
  203. success: function (r) {
  204. if (r.code === 0) {
  205. alert('操作成功', function (index) {
  206. vm.reload();
  207. });
  208. } else {
  209. iview.Message.error(r.msg);
  210. }
  211. }
  212. });
  213. },
  214. menuTree: function () {
  215. openWindow({
  216. title: "选择菜单",
  217. area: ['300px', '450px'],
  218. content: jQuery("#menuLayer"),
  219. btn: ['确定', '取消'],
  220. btn1: function (index) {
  221. var node = ztree.getSelectedNodes();
  222. //选择上级菜单
  223. vm.menu.parentId = node[0].menuId;
  224. vm.menu.parentName = node[0].name;
  225. layer.close(index);
  226. }
  227. });
  228. },
  229. query: function () {
  230. vm.reload();
  231. },
  232. reload: function (event) {
  233. vm.showList = true;
  234. TreeGrid.table.refresh();
  235. },
  236. handleSubmit: function (name) {
  237. handleSubmitValidate(this, name, function () {
  238. vm.saveOrUpdate()
  239. });
  240. },
  241. handleReset: function (name) {
  242. handleResetForm(this, name);
  243. }
  244. }
  245. });