BaseProductController.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Admin\Repositories\BaseProduct;
  4. use Dcat\Admin\Admin;
  5. use Dcat\Admin\Form;
  6. use Dcat\Admin\Form\NestedForm;
  7. use Dcat\Admin\Grid;
  8. use Dcat\Admin\Show;
  9. use Dcat\Admin\Http\Controllers\AdminController;
  10. use App\Admin\Repositories\BaseProductCategory;
  11. use Illuminate\Http\Request;
  12. class BaseProductController extends AdminController
  13. {
  14. /**
  15. * Make a grid builder.
  16. *
  17. * @return Grid
  18. */
  19. protected function grid()
  20. {
  21. return Grid::make(BaseProduct::with('baseProductCategory'), function (Grid $grid) {
  22. $grid->column('id','ID')->sortable();
  23. $grid->column('title');
  24. $grid->column('sku');
  25. $grid->column('baseProductCategory.name','Category Name');
  26. $grid->column('issuance_date');
  27. $grid->column('order')->orderable();
  28. $grid->column('enabled')->switch();
  29. $grid->column('created_at');
  30. $grid->column('updated_at')->sortable();
  31. // 筛选
  32. $grid->filter(function (Grid\Filter $filter) {
  33. $filter->equal('sku');
  34. $filter->like('title');
  35. $filter->equal('category_id','Category')->select(BaseProductCategory::selectOptions());
  36. $filter->equal('enabled', 'enabled')->select([
  37. 1 => 'Yes',
  38. 0 => 'No',
  39. ]);
  40. });
  41. //排序
  42. $grid->model()->orderBy("order",'asc')->orderBy('id', 'desc');
  43. // 禁用查看按钮
  44. //$grid->showQuickEditButton();
  45. //$grid->enableDialogCreate();
  46. //$grid->disableEditButton();
  47. });
  48. }
  49. /**
  50. * Make a show builder.
  51. *
  52. * @param mixed $id
  53. *
  54. * @return Show
  55. */
  56. protected function detail($id)
  57. {
  58. return Show::make($id, new BaseProduct(), function (Show $show) {
  59. $show->field('id');
  60. $show->field('title');
  61. $show->field('keywords');
  62. $show->field('description');
  63. $show->field('sku');
  64. $show->field('baseProductCategory.name','Category Name');
  65. $show->field('issuance_date');
  66. $show->field('order');
  67. $show->field('enabled');
  68. $show->field('content');
  69. $show->field('parameters');
  70. $show->field('created_at');
  71. $show->field('updated_at');
  72. });
  73. }
  74. /**
  75. * Make a form builder.
  76. *
  77. * @return Form
  78. */
  79. protected function form()
  80. {
  81. return Form::make(new BaseProduct(), function (Form $form) {
  82. $form->select('category_id', 'Category Name')
  83. ->options(BaseProductCategory::selectOptions())
  84. ->required();
  85. // $form->select('city');
  86. // $form->text('title')->required();
  87. // $form->text('keywords');
  88. // $form->text('description');
  89. // $form->text('sku')->required();
  90. // $form->date('issuance_date');
  91. // $form->table('parameters','Parameters', function (Form\NestedForm $table) {
  92. // $table->text('key')->required();
  93. // $table->text('value')->required();
  94. // });
  95. // $form->editor('content');
  96. // $form->number('order');
  97. // $form->switch('enabled')->default(1);
  98. $form->table('parameters','Parameters', function (Form\NestedForm $table) {
  99. $table->text('key')->required();
  100. $table->text('value')->required();
  101. })->default([
  102. ['key' => 'color', 'value' => 'white'],
  103. ]);
  104. //插入JS
  105. $this->addParametersJs();
  106. });
  107. }
  108. /*
  109. * 以json型式返回产品参数
  110. */
  111. public static function parameter(Request $request)
  112. {
  113. $id = $request->query('q');
  114. $content = BaseProductCategory::getParameter($id);
  115. return $content;
  116. }
  117. private function addParametersJs()
  118. {
  119. //插入JS
  120. Admin::script(
  121. <<<JS
  122. var fill_param = function (key,val) {
  123. lastForm = $(".has-many-table-parameters-form:last");
  124. lastForm.find('input').eq(0).val(key);
  125. lastForm.find('input').eq(1).val(val);
  126. }
  127. $('select[name="category_id"]').on('change', function() {
  128. var category_id = $(this).val();
  129. // 清空现有的表格行
  130. $('.has-many-table-parameters-form').remove();
  131. if (category_id > 0) {
  132. $.ajax({
  133. url: '/prime-control/base-product/parameter', // 请求的 URL
  134. data: { q: category_id},
  135. type: 'GET', // GET 请求
  136. success: function(data) { // 成功时执行的代码
  137. // 动态添加新数据到表格
  138. $.each(data, function(index, item) {
  139. $(".has-many-table-parameters").find(".add").click();
  140. fill_param(item.key,item.value);
  141. console.log(item);
  142. });
  143. },
  144. error: function(error) { // 错误时执行的代码
  145. console.log('error:', error);
  146. }
  147. });
  148. }
  149. });
  150. JS
  151. );
  152. }
  153. }