<?php namespace App\Admin\Controllers; use App\Admin\Repositories\Principal; use App\Models\Principal as ModelsPrincipal; use Dcat\Admin\Form; use Dcat\Admin\Grid; use Dcat\Admin\Show; use Dcat\Admin\Http\Controllers\AdminController; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Dcat\Admin\Admin; use Dcat\Admin\Widgets\Card; class PrincipalController extends AdminController { /** * Make a grid builder. * * @return Grid */ protected function grid() { return Grid::make(new Principal(), function (Grid $grid) { $ptype = $grid->model()->filter()->input('wtype') ?? 0; $where = $ptype ? ['wtype' => $ptype] : []; $grid->model()->where($where)->orderBy("id", "desc"); //$grid->column('id')->sortable(); $grid->column('number'); $grid->column('wtype', '类型')->display(function ($val) { return $val == 1 ? '单位' : '个人'; })->width(50); //if ($ptype == 1) { $grid->column('company'); $grid->column('tax_number'); $grid->column('address'); $grid->column('tel'); $grid->column('bank_name', '开户银行'); $grid->column('bank_account')->width(90)->if(function ($column) { return $column->getValue(); })->display('查看')->modal(function ($modal) { $modal->title('开户账号'); $content = $this->bank_account; $card = new Card(null, $content); return "<div style='padding:10px 10px 0;width:100%;'>$card</div>"; })->else(function ($column) { return ''; }); $grid->column('contacts')->width(90); //} else { $grid->column('name'); //$grid->column('identity_card'); $grid->column('identity_card')->width(90)->if(function ($column) { return $column->getValue(); })->display('查看')->modal(function ($modal) { $modal->title('身份信息'); $content = $this->identity_card; $card = new Card(null, $content); return "<div style='padding:10px 10px 0;width:100%;'>$card</div>"; })->else(function ($column) { return ''; }); $grid->column('address', '联系地址'); //} $grid->column('phone'); // $grid->column('created_at'); // $grid->column('updated_at')->sortable(); $grid->disableViewButton(); $grid->disableRowSelector(); //禁用增加按钮 if (!Admin::user()->can('principal-add')) { $grid->disableCreateButton(); } $grid->filter(function (Grid\Filter $filter) use ($ptype) { // 更改为 panel 布局 $filter->panel(); $filter->like('company')->width(3); $filter->like('tax_number')->width(3); $filter->like('name')->width(3); $filter->like('identity_card')->width(3); $filter->equal('wtype', '类型')->select([1 => '单位', 2 => '个人'])->width(3); }); $grid->actions(function (Grid\Displayers\Actions $actions) { //编辑 if (!Admin::user()->can('principal-edit')) { $actions->disableEdit(); } //删除 if (!Admin::user()->can('principal-delete')) { $actions->disableDelete(); } }); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { return Show::make($id, new Principal(), function (Show $show) { $show->field('id'); $show->field('number'); $show->field('company'); $show->field('username'); $show->field('identity_card'); $show->field('tax_number'); $show->field('address'); $show->field('tel'); $show->field('bank_name'); $show->field('bank_account'); $show->field('contacts'); $show->field('phone'); $show->field('created_at'); $show->field('updated_at'); }); } /** * Make a form builder. * * @return Form */ protected function form() { $form = Form::make(new Principal(), function (Form $form) { $form->display('id'); $form->radio('wtype', '类型') ->when(1, function (Form $form) { $form->text('company')->setLabelClass(['asterisk']); $form->text('tax_number')->setLabelClass(['asterisk']); $form->text('tel'); $form->text('bank_name', '开户银行'); $form->text('bank_account'); $form->text('contacts'); }) ->when(2, function (Form $form) { $form->text('name')->setLabelClass(['asterisk']); $form->text('identity_card'); }) ->options([ 1 => '单位', 2 => '个人', ]) ->default(1); $form->text('address'); $form->text('phone'); $form->disableCreatingCheck(); $form->disableEditingCheck(); $form->disableViewCheck(); $form->disableDeleteButton(); $form->disableViewButton(); $number = $form->number; $form->hidden('number'); if (!$number) { $form->saving(function (Form $form) { $form->number = self::getRandNumber(); }); } $form->display('created_at'); $form->display('updated_at'); }); $form->submitted(function (Form $form) { $wtype = isset($_POST['wtype']) ? $_POST['wtype'] : 0; $company = isset($_POST['company']) ? $_POST['company'] : ''; $tax_number = isset($_POST['tax_number']) ? $_POST['tax_number'] : ''; $name = isset($_POST['name']) ? $_POST['name'] : ''; //姓名 $identity_card = isset($_POST['identity_card']) ? $_POST['identity_card'] : ''; if ($wtype == 1) { if (!$company) { $form->responseValidationMessages('company', "单位全称不为空"); } if (!$tax_number) { $form->responseValidationMessages('tax_number', "税号不为空"); } } elseif ($wtype == 2) { if (!$name) { $form->responseValidationMessages('name', "姓名不为空"); } // if (!$identity_card) { // $form->responseValidationMessages('identity_card', "身份证号码不为空"); // } } }); // Admin::script( // <<<JS // $(function () { // //社保 // $("input[name='wtype']").on('click', function() { // var wtype = $(this).val(); // console.log('-----'+wtype); // if(wtype==1) { // $("input[name='company']").attr('required',1); // $("input[name='tax_number']").attr('required',1); // $("input[name='name']").removeAttr('required'); // $("input[name='identity_card']").removeAttr('required'); // } else { // $("input[name='name']").attr('required',1); // $("input[name='identity_card']").attr('required',1); // $("input[name='company']").removeAttr('required'); // $("input[name='tax_number']").removeAttr('required'); // } // }); // }); // JS // ); return $form; } //生成编号 public static function getRandNumber() { $rndnumber = ''; $flag = 0; do { $rndnumber = mt_rand(10000, 99999); $rowObj = ModelsPrincipal::where('number', $rndnumber)->count(); $flag = $rowObj ? 0 : 1; } while ($flag < 1); return $rndnumber; } public function getList(Request $request) { $wtype = $request->get('q'); //委托人类型 if ($wtype == 1) { $list = ModelsPrincipal::where('wtype', $wtype)->limit(1000)->get(['id', 'company as text']); } else { $list = ModelsPrincipal::where('wtype', $wtype)->limit(1000)->get(['id', 'name as text']); } return $list->toArray() ? $list : new \stdClass;; } }