Browse Source

修正排序的BUG

moshaorui 5 months ago
parent
commit
b0005b3ec9

+ 10 - 2
app/Admin/Controllers/BaseProductCategoryController.php

@@ -30,10 +30,14 @@ class BaseProductCategoryController extends AdminController
     {
         return Grid::make(BaseProductCategory::with('baseProductParameter'), function (Grid $grid) {
             $grid->column('id','ID')->bold()->sortable();
-            $grid->column('name')->tree(true,true);
+            $grid->column('name')->display(function ($name) {
+                $level = $this->level; // 获取当前行的 level 字段值
+                $prefix = str_repeat('&nbsp; ', $level * 2). ' <i class="fa fa-angle-right"></i>&nbsp; '; // 生成 level * 3 个加号
+                return $prefix . ' ' . html_entity_decode($name); // 拼接加号和名称
+            });;
             $grid->column('parent_id');
             $grid->column('baseProductParameter.name',admin_trans_label('parameter_name'));
-            $grid->column('order')->orderable();
+            $grid->column('order');
             $grid->column('enabled')->switch();
             $grid->column('created_at');
             $grid->column('updated_at')->sortable();
@@ -71,6 +75,10 @@ class BaseProductCategoryController extends AdminController
                 });
             $form->text('name')->required();
             $form->select('parameter_id', admin_trans_field('parameter_name'))->options(BaseProductParameter::selectOptions())->required();
+            $form->number('order')
+                ->default(0)
+                ->rules('numeric')
+                ->help(admin_trans_label('order_tips')); // 添加备注
             $form->switch('enabled')->default(1);
           //  $form->display('created_at');
           //  $form->display('updated_at');

+ 2 - 2
app/Admin/Controllers/BaseProductController.php

@@ -54,8 +54,8 @@ class BaseProductController extends AdminController
                 $filter->expand();
                 $filter->equal('sku')->width(2);
                 $filter->like('title')->width(2);
-                $filter->equal('category_id',admin_trans_label('Category'))->select(BaseProductCategory::selectOptions())->width(2);
-                $filter->equal('enabled', admin_trans_label('Enabled'))->select(config('dictionary.enabled'))->width(2);
+                $filter->equal('category_id',admin_trans_label('category_name'))->select(BaseProductCategory::selectOptions())->width(2);
+                $filter->equal('enabled')->select(config('dictionary.enabled'))->width(2);
             });
             //排序
             $grid->model()->orderBy("is_pinned",'desc')->orderBy("order",'desc');

+ 6 - 3
app/Admin/Controllers/BaseVideoCategoryController.php

@@ -32,11 +32,10 @@ class BaseVideoCategoryController extends AdminController
      */
     protected function grid()
     {
-
         return Grid::make(new BaseVideoCategory(), function (Grid $grid) {
             $grid->column('id')->sortable();
-            $grid->column('name')->tree(true,true);
-            $grid->column('parent_id');
+            $grid->column('name');
+            //$grid->column('parent_id');
             $grid->column('order')->orderable();
             $grid->column('enabled')->switch();
             $grid->column('created_at');
@@ -54,6 +53,8 @@ class BaseVideoCategoryController extends AdminController
             $grid->showQuickEditButton();
             $grid->enableDialogCreate();
             $grid->disableEditButton();
+            //排序
+            $grid->model()->orderBy('order', 'asc');
         });
     }
 
@@ -67,11 +68,13 @@ class BaseVideoCategoryController extends AdminController
         return Form::make(new BaseVideoCategory(), function (Form $form) {
             $form->display('id');
             $form->text('name');
+            /*
             $form->select('parent_id', admin_trans_field('parent'))
                 ->options(BaseVideoCategory::selectOptions())
                 ->saving(function ($v) {
                     return (int) $v;
                 });
+            */
             $form->switch('enabled')->default(1);
         });
     }

+ 23 - 0
app/Admin/Repositories/BaseProductCategory.php

@@ -38,4 +38,27 @@ class BaseProductCategory extends EloquentRepository
             return "[]";
         }
     }
+
+    /*
+     * 改写列表显示返回的数据
+     */
+    public function get(Grid\Model|\Dcat\Admin\Grid\Model $model)
+    {
+
+        // 获取模型对象
+        $obj = $this->model();
+        // 获取数据
+        $tree = $obj->orderBy('order', 'asc')->get();
+
+        // 构建树形结构
+        $data=buildTree($tree->toArray());
+        // 转换成一维数组
+        $data=flattenTree($data);
+
+        return $model->makePaginator(
+            count($data), // 传入总记录数
+            $data // 传入数据二维数组
+        );
+    }
+
 }

+ 1 - 1
app/Distributor/Controllers/DistProductCategoryController.php

@@ -118,7 +118,7 @@ class DistProductCategoryController extends AdminController
                     return (int) $v;
                 });
             $form->text('name')->required();
-            $form->text('order')
+            $form->number('order')
                 ->default(0)
                 ->rules('numeric')
                 ->help(admin_trans_label('order_tips')); // 添加备注

+ 6 - 2
app/Distributor/Controllers/DistVideoCategoryController.php

@@ -37,8 +37,8 @@ class DistVideoCategoryController extends AdminController
 
             $grid->model()->where('dist_id', getDistributorId());//这里限不了,改为仓库限制
             $grid->column('id')->sortable();
-            $grid->column('name')->tree(true,true);
-            $grid->column('parent_id');
+            $grid->column('name');
+            //$grid->column('parent_id');
             $grid->column('order')->orderable();
             $grid->column('enabled')->switch();
             $grid->column('created_at');
@@ -49,6 +49,8 @@ class DistVideoCategoryController extends AdminController
             $grid->showQuickEditButton();
             $grid->enableDialogCreate();
             $grid->disableEditButton();
+            //排序
+            $grid->model()->orderBy('order', 'asc');
         });
     }
 
@@ -62,11 +64,13 @@ class DistVideoCategoryController extends AdminController
         return Form::make(new DistVideoCategory(), function (Form $form) {
             $form->display('id');
             $form->text('name')->required();
+            /*
             $form->select('parent_id', admin_trans_field('parent'))
                 ->options([0 =>admin_trans_label('root')]) // 只显示 0 => root
                 ->saving(function ($v) {
                     return (int) $v;
                 });
+            */
             $form->switch('enabled')->default(1);
             $form->hidden('dist_id'); // 隐藏dist_id字段,用于保存
             $form->saving(function (Form $form) {

+ 1 - 1
app/Distributor/Repositories/DistProductCategory.php

@@ -90,7 +90,7 @@ class DistProductCategory extends EloquentRepository
         // 获取模型对象
         $obj = $this->model();
 
-        $obj = $obj->where('dist_id', getDistributorId());
+        $obj = $obj->orderBy('order', 'asc')->where('dist_id', getDistributorId());
 
         // 获取数据
         $tree = $obj->get();

+ 4 - 2
lang/zh_CN/global.php

@@ -77,7 +77,7 @@ return [
         'enabled'      => '是否启用',
         'Yes'          => '是',
         'No'           => '否',
-        'order_tips'   => '请输入数字,数字越前台展示排名越靠前',
+        'order_tips'   => '请输入数字,数字越前台展示排名越靠前',
         'cover_image'  => '封面图片',
         'video_url'    => '视频URL地址',
         'site_name'    => '站点名称',
@@ -91,7 +91,9 @@ return [
         'distributor_company_name' => '分销商名称',
         'select_products_to_import' => '选择产品后点击导入按钮.',
         'company_address' => '公司地址',
-        'import_tmpl'  => '导入模板'
+        'import_tmpl'  => '导入模板',
+        'category_name'         => '分类名称',
+        'parameter_name'        => '参数名称',
     ],
     'options' => [
         //