| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301 |
- <?php
- namespace UCore\DcatAdmin;
- use App\Admin\Business\Order\Traits\OrderId;
- use App\Admin\Business\Order\Traits\VOrderId;
- use UCore\DcatAdmin\Grid\Views\GridHeader;
- use UCore\DcatAdmin\Traits\AdminId;
- use UCore\DcatAdmin\Traits\UserID;
- use UCore\DcatAdmin\Traits\MerchantId;
- use App\Module\File\Img;
- use Carbon\CarbonInterface;
- use Carbon\Traits\Converter;
- use Dcat\Admin\Grid;
- use Dcat\Admin\Widgets\Table;
- use Illuminate\Support\Arr;
- class GridHelper
- {
- use \UCore\DcatAdmin\Traits\Options, UserID, MerchantId, AdminId;
- /**
- * @var Grid
- */
- public $grid;
- /**
- * @var AdminController
- */
- public $controller;
- public function __construct($grid, $controller)
- {
- $this->grid = $grid;
- $grid->filter(function (Grid\Filter $filter) {
- // $filter->panel();
- // $filter->expand();
- });
- $this->controller = $controller;
- if (request('in_iframe')) {
- $grid->model()->setConstraints([ 'in_iframe' => 1 ]);
- }
- GridHeader::gridHeader($grid);
- }
- public function columnId()
- {
- $this->grid->column('id', 'ID')->sortable();
- return $this;
- }
- public function columnIdDesc()
- {
- $this->grid->column('id', 'ID')->sortable();
- $this->grid->model()->orderByDesc('id');
- return $this;
- }
- public function disableAll()
- {
- $this->grid->disableCreateButton();
- $this->grid->disableBatchActions();
- $this->grid->disableDeleteButton();
- $this->grid->disableEditButton();
- $this->grid->disableQuickEditButton();
- $this->grid->disableViewButton();
- // $this->grid->disableBatchActions();
- return $this;
- }
- /**
- *
- * @param $field
- * @param $view
- * @return $this
- */
- public function columnView($field, $view, $label = '')
- {
- $this->grid->column($field, $label)->view($view);
- return $this;
- }
- public function columnImg($field, $width = 100, $hei = 100, $label = '')
- {
- $this->grid->column($field, $label)->display(function ($p2) {
- // dump($p2);
- return Img::img2imgurl($p2);
- })->image('', $width, $hei);
- }
- public function columnExpand($field, $fields = [], $label = '')
- {
- $controller = $this->controller;
- $this->grid->column($field, $label)->expand(function (Grid\Displayers\Expand $exped) use ($fields, $controller) {
- // dump(func_get_args());
- $headers = [
- 'admin.kv.name',
- 'admin.kv.value',
- ];
- $data = [];
- // $exped->row;
- // dd($exped);
- foreach ($fields as $f) {
- $data[] = [
- $controller->_label($f), $exped->row->$f
- ];
- }
- return Table::make($headers, $data);
- });
- }
- /**
- * 翻译 字段内容
- *
- * @param $field
- * @return void
- */
- public function columnTranslation($field, $label = '')
- {
- $this->grid->column($field, $label)->display(function ($value, $column, $controller) {
- // dd(func_get_args());
- /**
- * @var AdminController $controller
- */
- return $controller->_translation('key.' . $value);
- }, $this->controller);;
- }
- /**
- * 展示的时候除以100
- *
- * @param string $field
- * @return void
- */
- public function columnc100($field, $label = '')
- {
- $this->grid->column($field, $label)->display(function ($p2) {
- return $p2 / 100;
- });
- }
- public function columnc1000($field, $label = '')
- {
- return $this->grid->column($field, $label)->display(function ($p2) {
- return $p2 / 1000;
- });
- }
- /**
- * 展示 时间戳
- *
- * @param string $field
- * @return void
- */
- public function columnAt($field, $label = '')
- {
- $this->grid->column($field, $label)->display(function ($p2) {
- return date(\DateTime::W3C, $p2);
- });
- }
- public function columnAtd($field, $label = '')
- {
- $this->grid->column($field, $label)->display(function (/* \Carbon\Carbon*/ $p2) {
- if (!$p2) {
- return null;
- }
- // dd($p2);
- return $p2->format(CarbonInterface::DEFAULT_TO_STRING_FORMAT);
- })->width(105);
- }
- /**
- * 使用枚举展示
- *
- * @param $field
- * @param $enmu
- * @return $this
- */
- public function columnUseing($field, $enmu, $label = '')
- {
- $this->grid->column($field, $label)->use($enmu);
- return $this;
- }
- public function columnUsingVk($field, $enmu, $label = '')
- {
- $res = array_flip($enmu);
- // dd($res);
- return $this->grid->column($field, $label)->using($res);
- }
- public function columnUsingkv($field, $enmu, $label = '')
- {
- // dump($enmu);
- return $this->grid->column($field, $label)->using($enmu);
- }
- /**
- * 使用枚举展示.new
- *
- * @param $name
- * @param array $keys
- * @return Grid\Column
- */
- public function fieldUseing($name, array $keys, $label = '')
- {
- return $this->grid->column($name, $label)->using($this->useing($name, $keys));
- }
- /**
- * 使用lab
- *
- * @param $name
- * @param array $keys
- * @return Grid\Column
- */
- public function fieldLable1($name, $label = '')
- {
- $c = $this->controller;
- return $this->grid->column($name, $label)->display(function ($value, Grid\Column $column) use ($c) {
- // $list = explode(',',$c)
- $list = [];
- foreach ($value as $item) {
- // dd($this);
- $list[] = $c->_option($column->getName() . '-' . $item);
- }
- return $list;
- })->label();
- }
- /**
- * 模型字段展示-cats
- *
- * @param $name
- * @param $default
- * @param $label
- * @return Grid\Column
- * @throws \Exception
- */
- public function columnModelCats($name, $default = null, $label = '', $edit = false)
- {
- $cates = $this->grid->model()->repository()->model()->getCasts();
- $enmu = $cates[$name] ?? "";
- if ($enmu === '') {
- throw new \Exception("$name is not a model casts");
- }
- $values = $enmu::getValueDescription();
- if ($edit) {
- $res = $this->grid->column($name)->display(function ($value) use ($values, $default) {
- if (is_null($value)) {
- return $default;
- }
- if ($value instanceof \UnitEnum) {
- $value = $value->value();
- }
- return $value;
- })->radio($values);
- } else {
- $res = $this->grid->column($name, $label)->display(function ($value) use ($values, $default) {
- if (is_null($value)) {
- return $default;
- }
- if ($value instanceof \UnitEnum) {
- $value = $value->value();
- }
- return Arr::get($values, $value, $default);
- });
- }
- return $res;
- }
- }
|