<?php namespace App\Admin\Controllers; use App\Admin\Repositories\Lawyer; use App\Models\Lawyer as ModelLawyer; use App\Models\Covenant as ModelCovenant; use App\Models\CovenantReceivePayment as ModelCovenantReceivePayment; use Dcat\Admin\Form; use Dcat\Admin\Grid; use Dcat\Admin\Show; use Dcat\Admin\Admin; use Dcat\Admin\Http\Controllers\AdminController; use Illuminate\Support\Facades\DB; use Illuminate\Http\Request; use Maatwebsite\Excel\Facades\Excel; use App\Exports\LawyersExport; class LawyerController extends AdminController { /** * Make a grid builder. * * @return Grid */ protected function grid() { return Grid::make(new Lawyer(), function (Grid $grid) { //$grid->column('id')->sortable(); $grid->column('number'); $grid->column('name'); $grid->column('sex')->display(function ($val) { return $val == 1 ? '男' : '女'; }); $grid->column('identity_card'); $grid->column('phone'); $grid->column('bank_account'); $grid->column('sign_at'); $grid->column('commission_rate'); $grid->column('settlement_period')->display(function ($val) { return $val == 1 ? '月' : '年'; }); $grid->column('ticket_ratio', '贴票比例(%)'); $grid->column('settlement_method', '结算方式')->display(function ($val) { return $val == 1 ? '贴票' : '个税'; }); $grid->column('commission_retention', '提成留底'); // $grid->column('created_at'); // $grid->column('updated_at')->sortable(); $grid->disableViewButton(); $grid->disableRowSelector(); //禁用增加按钮 if (!Admin::user()->can('lawyer-add')) { $grid->disableCreateButton(); } $grid->filter(function (Grid\Filter $filter) { // 更改为 panel 布局 $filter->panel(); $filter->like('name')->width(3); $filter->like('identity_card')->width(3); $filter->like('phone')->width(3); $filter->equal('settlement_period')->select(Lawyer::SETTLEMENT_PERIOD)->width(3); $filter->equal('settlement_method')->select(Lawyer::SETTLEMENT_METHOD)->width(3); }); //添加导出按钮 $grid->export()->rows(function ($rows) { foreach ($rows as $index => &$row) { $row['sex'] = ($row['sex'] == 1) ? '男' : '女'; $row['settlement_period'] = ($row['settlement_period'] == 1) ? '月' : '年'; $row['settlement_method'] = ($row['settlement_method'] == 1) ? '贴票' : '个税'; } return $rows; }); $grid->actions(function (Grid\Displayers\Actions $actions) { //编辑 if (!Admin::user()->can('lawyer-edit')) { $actions->disableEdit(); } //删除 if (!Admin::user()->can('lawyer-delete')) { $actions->disableDelete(); } }); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { return Show::make($id, new Lawyer(), function (Show $show) { $show->field('id'); $show->field('number'); $show->field('name'); $show->field('sex'); $show->field('identity_card'); $show->field('phone'); $show->field('bank_account'); $show->field('sign_at'); $show->field('commission_rate'); $show->field('settlement_period'); $show->field('created_at'); $show->field('updated_at'); }); } /** * Make a form builder. * * @return Form */ protected function form() { $form = Form::make(new Lawyer(), function (Form $form) { $form->display('id'); //$form->text('number'); $form->text('name')->required(); $form->select('sex')->options([1 => '男', 2 => '女'])->default(1)->required(); $form->text('identity_card')->required(); $form->text('phone')->required(); $form->text('bank_account')->required(); $form->date('sign_at')->format('YYYY-MM-DD')->required(); $form->text('commission_rate');//提成比例,提了在更新代码 $form->select('settlement_period')->options([1 => '月', 2 => '年'])->default(1)->required(); $form->text('ticket_ratio', '贴票比例')->required(); $form->select('settlement_method', '结算方式')->options([1 => '贴票', 2 => '个税'])->default(1)->required(); $form->text('commission_retention', '提成留底'); $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'); }); return $form; } //生成编号 public static function getRandNumber() { $rndnumber = ''; $flag = 0; do { $rndnumber = mt_rand(10000, 99999); $rowObj = ModelLawyer::where('number', $rndnumber)->count(); $flag = $rowObj ? 0 : 1; } while ($flag < 1); return $rndnumber; } public function destroy($id) { $res = $this->form()->destroy($id); if ($res) { //合同信息 ModelCovenant::where('lawyer_id', $id)->delete(); //收款开票信息 ModelCovenantReceivePayment::where('lawyer_id', $id)->delete(); } return $res; } public function getList(Request $request) { $name = $request->get('q'); $where = []; if ($name) { $where['name'] = ['like', '%' . $name . '%']; } $data = []; $list = ModelLawyer::whereNull('deleted_at')->where($where) ->select(['id', 'number', 'name'])->limit(100) ->get() ->toArray(); foreach ($list as $item) { $tmp = []; $tmp['id'] = $item['number']; $tmp['text'] = $item['number'] . ' ' . $item['name']; array_push($data, $tmp); } return $data; } /** * 导出律师数据 * * @return \Symfony\Component\HttpFoundation\BinaryFileResponse */ public function export() { return Excel::download(new LawyersExport(), 'lawyers.xlsx'); } }