71 lines
2.7 KiB
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;
|
|
}
|
|
}
|