MenuController.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Http\Request;
  5. class MenuController extends Controller {
  6. //
  7. public function top() {
  8. $menu = \App\Models\NavsModel::getTopMenu();
  9. $menus = array('data' => array());
  10. if ($menu > 0) {
  11. $menus['data'] = $menu;
  12. }
  13. return json_encode($menus);
  14. }
  15. public function left() {
  16. $menu = \App\Models\NavsModel::getLeftMenu();
  17. $menus = array('data' => array());
  18. if ($menu > 0) {
  19. $menus['data'] = $menu;
  20. }
  21. return json_encode($menus);
  22. }
  23. public function quick() {
  24. $menu = \App\Models\NavsModel::getQuickMenu();
  25. $menus = array('data' => array());
  26. if ($menu > 0) {
  27. $menus['data'] = $menu;
  28. }
  29. return json_encode($menus);
  30. }
  31. function getParent() {
  32. $data = \App\Models\NavsModel::where('parent_id', '0')->get();
  33. if (!$data) {
  34. return;
  35. }
  36. return $data->toArray();
  37. }
  38. function add(Request $req) {
  39. if (!$req->isMethod('post')) {
  40. $data = $this->getParent();
  41. $lange = trans('menu');
  42. foreach ($data as $k => $v) {
  43. $arr = trim($data[$k]['name']);
  44. if (isset($lange[$arr])) {
  45. $data[$k]['name']=$lange[$arr];
  46. }
  47. }
  48. return view('vip.menu_form', array('parents' => $data));
  49. } else {
  50. $model = new \App\Models\NavsModel();
  51. $model->name = $req->input('menu_name');
  52. $model->href = $req->input('menu_url');
  53. $model->icon = $req->input('menu_icon');
  54. $model->sort = $req->input('menu_sort');
  55. $model->parent_id = $req->input('parent_id');
  56. $model->target = $req->input('target');
  57. $model->type = $req->input('type');
  58. $model->save();
  59. return responseToJson(1);
  60. }
  61. }
  62. function view(Request $req) {
  63. return $this->edit($req);
  64. }
  65. function edit(Request $req) {
  66. $id = $req->id;
  67. if (intval($id) < 1) {
  68. return -1;
  69. }
  70. if (!$req->isMethod('post')) {
  71. $data = \App\Models\NavsModel::where('id', $id)->first();
  72. if (!$data) {
  73. return -2;
  74. }
  75. $data = $data->toArray();
  76. $data['parents'] = $this->getParent();
  77. $lange = trans('menu');
  78. foreach ($data['parents'] as $k => $v) {
  79. $arr = trim($data['parents'][$k]['name']);
  80. if (isset($lange[$arr])) {
  81. $data['parents'][$k]['name']=$lange[$arr];
  82. }
  83. }
  84. return view('vip.menu_form', $data);
  85. } else {
  86. $model = \App\Models\NavsModel::where('id', $id)->first();
  87. $model->name = $req->input('menu_name');
  88. $model->href = $req->input('menu_url');
  89. $model->icon = $req->input('menu_icon');
  90. $model->sort = $req->input('menu_sort');
  91. $model->type = $req->input('type');
  92. $model->parent_id = $req->input('parent_id');
  93. $model->target = $req->input('target');
  94. $model->save();
  95. return responseToJson(1);
  96. }
  97. }
  98. public function delete(Request $req) {
  99. $id = $req->id;
  100. if (empty($id)) {
  101. return responseToJson(-2001); //id������
  102. }
  103. $ids = explode(',', $id);
  104. if (!is_array($ids) && intval($ids) < 0) {
  105. return responseToJson(-2002); //id����
  106. }
  107. if (is_array($ids) && count($ids) > 0) {
  108. foreach ($ids as $k => $v) {
  109. if (intval($v) < 1) {
  110. unset($ids[$k]);
  111. }
  112. }
  113. }
  114. $rows = \App\Models\NavsModel::whereIn('id', $ids)->delete();
  115. if (!$rows) {
  116. return responseToJson(-2003); //id����
  117. }
  118. return responseToJson(1, trans('menu.delete_success')); //id����
  119. }
  120. public function dataSource(Request $req) {
  121. $limit = intval($req->limit) > 0 ? $req->limit : 10;
  122. $page = intval($req->page) > 0 ? $req->page : 1;
  123. $field = empty($req->field) ? $req->field : '';
  124. $order = empty($req->order) ? $req->order : '';
  125. $name = $req->name ? $req->name : '';
  126. $url = $req->href ? $req->href : '';
  127. $type = $req->type ? $req->type : '';
  128. $target = $req->target ? $req->target : '';
  129. $model = \App\Models\NavsModel::offset(($page - 1) * $limit)
  130. ->limit($limit);
  131. if (!empty($field) && !empty($order)) {
  132. $model = $model->orderBy($field, $order);
  133. }
  134. if (!empty($name)) {
  135. $model = $model->where('name', 'like', '%' . $name . '%');
  136. }
  137. if (!empty($url)) {
  138. $model = $model->where('href', 'like', '%' . $url . '%');
  139. }
  140. if (!empty($type)) {
  141. if ($type == -1) {
  142. $model = $model->where('type', '=', '0');
  143. } else {
  144. $model = $model->where('type', '=', $type);
  145. }
  146. }
  147. if (!empty($target)) {
  148. if ($target == -1) {
  149. $model = $model->where('target', '=', '0');
  150. } else {
  151. $model = $model->where('target', '=', $target);
  152. }
  153. }
  154. $data = $model->get();
  155. if (!$data) {
  156. return;
  157. }
  158. $data = $data->toArray();
  159. $parent = $this->getParent();
  160. $parentgroup = array();
  161. if (count($parent) > 0) {
  162. foreach ($parent as $v) {
  163. $parentgroup[$v['id']] = $v['name'];
  164. }
  165. }
  166. if (!empty($data) && is_array($data)) {
  167. $langinfo = trans('status.dc_navs');
  168. $menu = trans('menu');
  169. foreach ($data as $k => $v) {
  170. $data[$k]['name'] = isset($menu[trim($v['name'])]) ? $menu[trim($v['name'])] : trim($v['name']);
  171. $pname = ($v['parent_id'] == 0 || !isset($parentgroup[$v['parent_id']])) ? 'noparent' : $parentgroup[$v['parent_id']];
  172. $data[$k]['parent_name'] = isset($menu[trim($pname)])?$menu[trim($pname)]:trim($pname);
  173. $data[$k]['type'] = ($v['type'] == 0) ? $langinfo['type']['-1'] : $langinfo['type'][$v['type']];
  174. $data[$k]['target'] = ($v['target'] == 0) ? $langinfo['target']['-1'] : $langinfo['target'][$v['target']];
  175. }
  176. }
  177. $count = \App\Models\NavsModel::count();
  178. return \App\Lib\DataTable\DataTable::init()->toJson($data, $count);
  179. }
  180. public function index(Request $req) {
  181. $request['name'] = isset($req->name) ? trim($req->name) : null;
  182. $request['href'] = isset($req->href) ? trim($req->href) : null;
  183. $request['type'] = isset($req->type) ? trim($req->type) : null;
  184. $dt = \App\Lib\DataTable\DataTable::init();
  185. $dt->setLang('menu');
  186. $dt->addColsFields('id', array('sort' => false, 'width' => 100));
  187. $dt->addColsFields('name', array('sort' => false, 'width' => 250, 'templet' => '#menudetail'));
  188. // $dt->addColsFields('icon');
  189. $dt->addColsFields('href', array('sort' => false));
  190. $dt->addColsFields('type', array('sort' => false, 'width' => 150));
  191. $dt->addColsFields('sort', array('width' => 85));
  192. $dt->addColsFields('parent_id', array('sort' => false, 'width' => 100));
  193. $dt->addColsFields('parent_name', array('sort' => false, 'width' => 150));
  194. $dt->addColsFields('target', array('sort' => false, 'width' => 150));
  195. $dt->enableCheckBox();
  196. $arr[] = 'view';
  197. if (checkRriv('/admin/Menu/edit')) {
  198. $arr[] = 'edit';
  199. }
  200. $dt->setToolBar($arr, array('width' => 200));
  201. return view('vip.system_menu', $dt->render($request));
  202. }
  203. function getEditColsModel() {
  204. return 'NavsModel';
  205. }
  206. }