NavController.php 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <?php
  2. namespace app\modules\admin\controllers;
  3. use app\common\controllers\BController;
  4. use app\models\Nav;
  5. use app\models\ContentModel;
  6. use app\common\components\FormElements;
  7. use Yii;
  8. class NavController extends BController
  9. {
  10. public $layout = 'main';
  11. public function actionList()
  12. {
  13. $query = Nav::find();
  14. if (Yii::$app->request->isAjax) {
  15. $data = [];
  16. $params = Yii::$app->request->get('Nav',[]);
  17. $query = mergeParams($query,$params);
  18. $countQuery = clone $query;
  19. //分页
  20. if(isset($_GET['limit'])){ $query->limit(intval($_GET['limit']));}
  21. if(isset($_GET['offset'])){ $query->offset(intval($_GET['offset']));}
  22. //排序
  23. if(isset($_GET['sort'])&&isset($_GET['sortOrder']))
  24. {
  25. $resultList = $query->orderBy([$_GET['sort']=>($_GET['sortOrder']=='asc'?SORT_ASC:SORT_DESC)])->all();
  26. }
  27. else
  28. {
  29. $resultList = $query->orderBy(['id'=>SORT_ASC])->all();
  30. }
  31. foreach($resultList as $result)
  32. {
  33. $data[] = array('id'=>$result->id,'parent_id'=>$result->parent_id,'title'=>$result->title,'type_txt'=>Nav::typeOptions($result->type),'type'=>$result->type,'content_model_id'=>$result->content_model_id?ContentModel::modelOptions($result->content_model_id):'','url'=>$result->url?$result->url:'','is_dropdown'=>$result->is_dropdown,'dropdown_level'=>$result->dropdown_level,'disabled'=>$result->disabled,'list_order'=>$result->list_order);
  34. }
  35. $result = ["total"=>$countQuery->count(),"totalNotFiltered"=>$countQuery->count(),"rows"=>$data];
  36. echo_json($result);
  37. }
  38. $this->tableTitle = array(
  39. array('field'=>'id','checkbox'=>false,'formatter'=>'checkboxFormatter','class'=>'col-md-1'),
  40. array('field'=>'title','title'=>Nav::getAttributeName('title'),'align'=>'left','class'=>'col-md-1'),
  41. array('field'=>'type_txt','title'=>Nav::getAttributeName('type'),'align'=>'center','sortable'=>true,'class'=>'col-md-1'),
  42. array('field'=>'content_model_id','title'=>Nav::getAttributeName('content_model_id'),'align'=>'center','sortable'=>true,'class'=>'col-md-2'),
  43. array('field'=>'url','title'=>Nav::getAttributeName('url'),'align'=>'center','formatter'=>'editFormatter','class'=>'col-md-1'),
  44. array('field'=>'is_dropdown','title'=>Nav::getAttributeName('is_dropdown'),'align'=>'center','formatter'=>'switchFormatter','class'=>'col-md-2'),
  45. array('field'=>'disabled','title'=>Nav::getAttributeName('disabled'),'align'=>'center','formatter'=>'switchFormatter','class'=>'col-md-2'),
  46. array('field'=>'list_order','title'=>Nav::getAttributeName('list_order'),'align'=>'center','sortable'=>true,'formatter'=>'editFormatter','class'=>'col-md-2'),
  47. array('field'=>'operate','title'=>Nav::getAttributeName('operate'),'align'=>'center','events'=>'window.operateEvents','formatter'=>'operateFormatter','class'=>'col-md-2'),
  48. );
  49. $this->tableConfig = array('table'=>Nav::shortTableName(),'url'=>$this->createRealUrl(['admin/nav/list']),'setFieldUrl'=>$this->createRealUrl(['admin/nav/setfield']),'idField'=>Nav::modelPrimaryKey(),'checkbox'=>1,'dropmenu'=>1,'tree'=>1,'parentIdField'=>'parent_id','treeShowField'=>'title','expand'=>true,'refresh'=>true);
  50. return $this->render('list',array('model'=>new Nav()));
  51. }
  52. public function actionAdd()
  53. {
  54. $model = new Nav();
  55. if(Yii::$app->request->isAjax&&$model->load(Yii::$app->request->post())){
  56. $post = Yii::$app->request->post();
  57. if(!$model->validate())
  58. {
  59. $msgdata = ['error' => 1,'msg' => $model->returnFirstError()];
  60. }
  61. else
  62. {
  63. $model->parent_id = intval($model->parent_id);
  64. $model->content_model_id = intval($model->content_model_id);
  65. $model->dropdown_level = intval($model->dropdown_level);
  66. $model->list_order = intval($model->list_order);
  67. $model->width = intval($model->width);
  68. $model->is_dropdown = $post['Nav']['is_dropdown']?$post['Nav']['is_dropdown']:0;
  69. $model->is_system = $post['Nav']['is_system']?$post['Nav']['is_system']:0;
  70. $model->is_new = $post['Nav']['is_new']?$post['Nav']['is_new']:0;
  71. $model->is_hot = $post['Nav']['is_hot']?$post['Nav']['is_hot']:0;
  72. $model->blank = $post['Nav']['blank']?$post['Nav']['blank']:0;
  73. $model->disabled = $post['Nav']['disabled']?$post['Nav']['disabled']:0;
  74. if($model->save())
  75. {
  76. $msgdata = ['error' => 0,'msg' => '操作成功'];
  77. }
  78. else
  79. {
  80. $msgdata = ['error' => 1,'msg' => '操作失败'];
  81. }
  82. }
  83. echo_json($msgdata);
  84. }
  85. $menuList = Nav::find()->orderBy(['type'=>SORT_ASC])->All();
  86. foreach($menuList as $k=>$v)
  87. {
  88. $menuList[$k]->title = $v->title.'('.Nav::typeOptions($v->type).')';
  89. }
  90. $datas = $this->serializeTreeData($menuList,'id','parent_id','title');
  91. $parentStr = FormElements::getInstCls()->tree_select($datas,'',0,'Nav[parent_id]',Yii::t('admin','as first level resource'),'',' class=\'form-select \' data-dselect-clearable=\'true\'');
  92. return $this->renderAjax('add',array('model'=>$model,'parentStr'=>$parentStr));
  93. }
  94. public function actionEdit()
  95. {
  96. $id = $this->getKeyId();
  97. $model = Nav::findOne($id);
  98. check_record_exists($model);
  99. if(Yii::$app->request->isAjax&&$model->load(Yii::$app->request->post())){
  100. $post = Yii::$app->request->post();
  101. if(!$model->validate())
  102. {
  103. $msgdata = ['error' => 1,'msg' => $model->returnFirstError()];
  104. }
  105. else
  106. {
  107. $model->parent_id = intval($model->parent_id);
  108. $model->content_model_id = intval($model->content_model_id);
  109. $model->dropdown_level = intval($model->dropdown_level);
  110. $model->list_order = intval($model->list_order);
  111. $model->width = intval($model->width);
  112. $model->is_dropdown = $post['Nav']['is_dropdown']?$post['Nav']['is_dropdown']:0;
  113. $model->is_system = $post['Nav']['is_system']?$post['Nav']['is_system']:0;
  114. $model->is_new = $post['Nav']['is_new']?$post['Nav']['is_new']:0;
  115. $model->is_hot = $post['Nav']['is_hot']?$post['Nav']['is_hot']:0;
  116. $model->blank = $post['Nav']['blank']?$post['Nav']['blank']:0;
  117. $model->disabled = $post['Nav']['disabled']?$post['Nav']['disabled']:0;
  118. if($model->save())
  119. {
  120. $msgdata = ['error' => 0,'msg' => '操作成功'];
  121. }
  122. else
  123. {
  124. $msgdata = ['error' => 1,'msg' => '操作失败'];
  125. }
  126. }
  127. echo_json($msgdata);
  128. }
  129. $menuList = Nav::find()->where('type='.$model->type." and id!=".$model->id)->All();
  130. $datas = $this->serializeTreeData($menuList,'id','parent_id','title');
  131. $parentStr = FormElements::getInstCls()->tree_select($datas,'',$model->parent_id,'Nav[parent_id]',Yii::t('admin','as first level resource'),'',' class=\'form-select \' data-dselect-clearable=\'true\'');
  132. return $this->renderAjax('add',array('model'=>$model,'parentStr'=>$parentStr));
  133. }
  134. //批量删除
  135. public function actionMultidelete()
  136. {
  137. $ids = Yii::$app->request->get('ids');
  138. if(!empty($ids))
  139. {
  140. Nav::deleteAll("id in(".$ids.")");
  141. $msgdata = ['error' => 0,'msg' => '操作成功'];
  142. }
  143. else
  144. {
  145. $msgdata = ['error' => 1,'msg' => '请选择操作记录'];
  146. }
  147. echo_json($msgdata);
  148. }
  149. //删除
  150. public function actionDel()
  151. {
  152. $id = $this->getKeyId('id');
  153. $model = Nav::findOne($id);
  154. check_record_exists($model);
  155. if($model->delete())
  156. {
  157. $msgdata = ['error' => 0,'msg' => '操作成功!'];
  158. }
  159. else
  160. {
  161. $msgdata = ['error' => 1,'msg' => '操作失败!'];
  162. }
  163. echo_json($msgdata);
  164. }
  165. }