6
0
Fork 0
jiqu-library-server/app/Admin/Renderable/ShippingRuleTable.php

71 lines
2.7 KiB
PHP

<?php
namespace App\Admin\Renderable;
use App\Models\ShippingRule;
use App\Models\Zone;
use Dcat\Admin\Admin;
use Dcat\Admin\Grid;
class ShippingRuleTable extends Grid
{
public static function grid(int $templateId = null)
{
// $builder = ShippingRule::with('zones');
$builder = new ShippingRule();
$zones = Zone::get()->toArray();
$grid = parent::make($builder, function (Grid $grid) use ($zones) {
$grid->setResource('shipping-rules');
$grid->column('id')->sortable();
$grid->column('type')->using([
1=>'包邮规则',
2=>'计重规则',
])->label();
$grid->column('remarks', __('shipping-rule.fields.remarks'));
$grid->column('info', __('shipping-rule.fields.info'))->display(function ($value) {
$value = json_decode($value, true);
if ($this->type == 1) {
return '满'.$value['threshold'].'元包邮';
} elseif ($this->type == 2) {
return '首重:'.$value['first_weight'].'KG内'.$value['first_w_amount'].'元,续重:每'.$value['continue_weight'].'KG'.$value['continue_w_amount'].'元';
}
})->label();
$grid->column('zones', __('shipping-rule.fields.zones'))
// ->display(function ($value) {
// return $value->pluck('id')->toArray();
// })
->showTreeInDialog(function (Grid\Displayers\DialogTree $tree) use ($zones) {
$tree->title('城市');
$tree->nodes($zones);
$tree->setTitleColumn('name');
});
$grid->column('created_at');
$grid->column('updated_at')->sortable();
/** 操作 **/
//新增
if (Admin::user()->can('dcat.admin.shipping_rules.create')) {
$grid->disableCreateButton(false);
$grid->enableDialogCreate();
$grid->setDialogFormDimensions('40%', '70%');
}
//修改
$grid->showQuickEditButton(Admin::user()->can('dcat.admin.shipping_rules.edit'));
//删除以及自定义操作
$grid->actions(function (Grid\Displayers\Actions $actions) {
$actions->disableView();
$actions->disableEdit();
$actions->disableDelete(Admin::user()->cannot('dcat.admin.shipping_rules.destroy'));
});
});
if ($templateId) {
$grid->model()->where('template_id', $templateId);
$grid->model()->setConstraints([
'template_id' => $templateId,
]);
}
return $grid;
}
}