withBorder(); // 开启字段选择器功能 $grid->showColumnSelector(); //开启导出功能 $grid->export(new ImportOrder()); //检测是否有筛选年届条件 $request = request(); if(empty($request->input("annual_session"))){ //取出当前年份 $config = Config::query()->where([ "unique_identification" => "annual_session" ])->first(); $grid->model()->where("annual_session", $config->data); }else{ $grid->model()->where("annual_session", $request->input("annual_session")); } $grid->column('id')->sortable(); $grid->column('annual_session')->help("对应缴费年份,如2022-2023则表示缴纳该年份的费用"); $grid->column('idcard')->display(function($info){ $info = UsersMember::query()->where("unique_number", $this->unique_number)->first(); if(!empty($info)){ return $info->idcard; } })->help("不显示时代表未找到该用户"); $grid->column('mobile')->display(function($info){ $info = UsersMember::query()->where("unique_number", $this->unique_number)->first(); if(!empty($info)){ return $info->mobile; } })->help("不显示时代表未找到该用户"); $grid->column('user_name')->display(function(){ $info = UsersMember::query()->where("unique_number", $this->unique_number)->first(); if(!empty($info)){ $str = ''; if($info->is_test == 2){ $str = "(测试)"; } return $info->name.$str; } })->help("不显示时代表未找到该用户"); $grid->column('sex', __('性别'))->display(function(){ $info = UsersMember::query()->where("unique_number", $this->unique_number)->first(); if(empty($info)){ return "不存在此账号"; } if($info->sex == 1){ return "男"; } if($info->sex == 2){ return "女"; } return "未知"; }); $grid->column('speciality_id')->display(function(){ $info = UsersMember::query()->where("unique_number", $this->unique_number)->first(); if(!empty($info)){ $speciality = Speciality::query()->where("id", $info->speciality_id)->first(); if(!empty($speciality)){ $college = SecondaryCollege::query()->where("id", $speciality->secondary_college_id)->first(); if(!empty($college)){ return $speciality->speciality_name."({$college->name})"; } } } })->limit(20);; $grid->column('orders_num'); $grid->column('transaction_id')->limit(10); $grid->column('price'); $grid->column('pay_type')->display(function(){ $msg = "未知"; if($this->pay_type == Order::PAY_TYPE_WECHAT) $msg = "微信支付"; return $msg; }); $grid->column('pay_time')->display(function (){ $time_msg = "未支付"; if(!empty($this->pay_time)) $time_msg = date("Y-m-d H:i:s", $this->pay_time); return $time_msg; }); $grid->column('status')->display(function(){ if($this->status == Order::STATUS_UNPAID) return "未支付"; if($this->status == Order::STATUS_PAID) return "已支付"; if($this->status == Order::STATUS_CANCEL) return "已取消"; }); $grid->column('is_new_student_order')->display(function(){ if($this->is_new_student_order == Order::IS_NEW_STUDENT_ORDER_NEW) return "新生订单"; if($this->is_new_student_order == Order::IS_NEW_STUDENT_ORDER_NO) return "老生订单"; }); $grid->column("payment_data")->display('缴费项目')->modal( function (){ $resultData = []; $nameData = []; $data = json_decode($this->payment_data, true); $payKeys = array_keys($data); $payMentList = PaymentList::query()->where([ "unique_number" => $this->unique_number, "annual_session" => $this->annual_session ])->whereIn("project_code", $payKeys)->get()->toArray(); if(!empty($payMentList)){ $payMentList = array_column($payMentList, null, "project_code"); foreach($data as $key => $item){ array_push($resultData, $item); array_push($nameData, $payMentList[$key]['project_name']); } } return Table::make($nameData, [$resultData]); }); $grid->column('msg')->limit(10); $grid->column('create_time')->display(function (){ if(!empty($this->create_time)){ return date("Y-m-d H:i:s", $this->create_time); } })->sortable(); $grid->filter(function (Grid\Filter $filter) { $filter->equal('id'); $filter->equal('orders_num'); $filter->equal('transaction_id'); $filter->where("unique_number", function ($query) { $unique_number = ""; $userInfo = UsersMember::query()->where('mobile', $this->input)->orWhere('idcard', $this->input)->orWhere('name', $this->input)->first(['unique_number']); if(!empty($userInfo)){ $unique_number = $userInfo->unique_number; } $query->where('unique_number', $unique_number); }, '手机号/身份证/姓名'); $filter->equal('is_new_student_order')->select(function (){ return [ Order::IS_NEW_STUDENT_ORDER_NEW => "新生", Order::IS_NEW_STUDENT_ORDER_NO => "老生" ]; }); $filter->equal('status')->select(function (){ return [ Order::STATUS_UNPAID => "未支付", Order::STATUS_PAID => "已支付", Order::STATUS_CANCEL => "已取消" ]; }); $filter->equal('annual_session', '年届')->select(function (){ $list = Order::query()->distinct("annual_session")->get("annual_session")->toArray(); if(empty($list)) return []; $list = array_column($list, "annual_session"); $result = []; foreach($list as $item){ $result[$item] = $item; } return $result; }); $filter->between('pay_time')->datetime()->toTimestamp(); }); // 禁用创建按钮 $grid->disableCreateButton(); // 禁用删除按钮 $grid->disableDeleteButton(); //禁用批量操作按钮 $grid->disableBatchDelete(); // 禁用详情按钮 $grid->disableViewButton(); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { return Show::make($id, new Order(), function (Show $show) { $show->field('id'); $show->field('products_name'); $show->field('unique_number'); $show->field('orders_num'); $show->field('amounts_price'); $show->field('price'); $show->field('transaction_id'); $show->field('pay_type'); $show->field('pay_time'); $show->field('create_time'); $show->field('update_time'); $show->field('status'); $show->field('annual_session'); $show->field('payment_data'); $show->field('source'); $show->field('source_orders_num'); $show->field('dormitory_price'); $show->field('source_pay_time'); $show->field('msg'); }); } /** * Make a form builder. * * @return Form */ protected function form() { return Form::make(new Order(), function (Form $form) { $form->display('id'); $form->text('msg'); //保存前回调 $form->saving(function (Form $form) { if ($form->isCreating()) { $form->create_time =time(); // 删除用户提交的数据 $form->deleteInput('update_time'); }else{ $form->update_time =time(); } }); }); } }