id->sortable(); $grid->title->width('12%'); $grid->start_time_text; $grid->end_time_text; $grid->full_amount; $grid->discounts; $grid->discount_type_text; $grid->inventory; $grid->inventory_use; $grid->use_number->display(function($use){ $id = $this->id; $number = UseModel::getUseCount([['coupon_id','=',$id]])->toArray(); $item = isset($number[0]['total']) ? $number[0]['total'] : 0; return $item; }); $grid->active_type_text; $grid->status ->using( CouponModel::$status ) ->label( config('label.status_label') ); $grid->model()->orderBy('id','desc'); $grid->actions(function (Grid\Displayers\Actions $actions) use($grid){ if(in_array($this->status,[0,3])){ $actions->append(new CouponPublish()); $actions->append(new CouponTime()); if($this->status == 3){ $actions->disableEdit(); } }else if(in_array($this->status,[1,2])){ $actions->disableDelete(); $actions->disableEdit(); if($this->status == 1){ $actions->append(new CouponForbidden()); $actions->append(new CouponTime()); } } }); $grid->filter(function (Grid\Filter $filter) { $discountTypeList = CouponModel::$discountType; $activeTypeList = CouponModel::$activeType; $filter->like('title','标题'); $filter->equal('discount_type')->select($discountTypeList); $filter->equal('active_type')->select($activeTypeList); $status = CouponModel::$status; unset($status[-1]);/* 去掉删除状态 */ $filter->in('status')->multipleSelect($status); }); $grid->model()->orderBy('id', 'desc'); // 每页10条 $grid->paginate(10); $grid->disableBatchDelete(); // $grid->disableCreateButton(); $grid->disableDeleteButton(); // $grid->disableEditButton(); $grid->disableRowSelector(); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { $builder = CouponModel::with('receiveType'); return Show::make($id, $builder, function (Show $show) use($id){ $show->id; $show->title; $show->introduce; $show->full_amount; $show->discounts; $show->discount_type_text; $show->inventory; $show->inventory_use; $show->start_time_text; $show->end_time_text; $show->usable_start_time_text; $show->usable_end_time_text; $show->active_type_text; $show->column('receive_type.receive_type','')->as(function($receiveTypeId) use($show){ $text = ''; if($receiveTypeId > 0){ $receiveTypeName = SettingModel::getSettingInfo($receiveTypeId,'name'); $text = $receiveTypeName ? $receiveTypeName : $text; } return $text; }); $show->type_text; $show->category_text; $show->market_ids->as(function($marketId){ $text = '全部市场'; if($marketId > 0){ $market = marketModel::select('name')->find($marketId)->toArray(); $text = $market ? $market['name'] : $text ; } return $text; }); // $show->category_ids->as(function($storeTypeId){ // $text = '全部类型'; // if($storeTypeId > 0){ // $storeType = storeTypeModel::select('type_name')->find($storeTypeId)->toArray(); // $text = $storeType ? $storeType['type_name'] : $text ; // } // return $text; // }); $show->is_new_user_text; $show->usable_number; $show->weigh; $show->remark; $show->status_text; $show->created_at_text; $show->updated_at_text; $show->panel()->tools(function ($tools) { $tools->disableEdit(); // $tools->disableList(); $tools->disableDelete(); // 显示快捷编辑按钮 // $tools->showQuickEdit(); }); }); } /** * Make a form builder. * * @return Form */ protected function form() { $builder = CouponModel::with('receiveType'); return Form::make($builder, function (Form $form) { $form->column(6,function(Form $form){ $form->text('title')->required()->maxLength(255,'最多只能输入500个字'); $form->textarea('introduce')->required(); $form->currency('full_amount')->required()->symbol('¥'); $form->currency('discounts')->required()->symbol('¥'); $form->radio('discount_type')->options(CouponModel::$discountType)->default(1); $form->number('inventory')->required()->type('number')->attribute('min', 1)->default(1); $form->number('weigh')->type('number')->attribute('min', 0)->default(0); $form->hidden('is_new_user')->options(CouponModel::$isNewUser)->default(2); }); $form->column(6,function(Form $form) { $receiveTypes = SettingModel::getSettingArray(); $form->select('active_type')->required()->options(CouponModel::$activeType)->default(1); // $form->select('receive_type.receive_type','领取方式')->required()->options($receiveTypes)->default(2); $form->datetime('start_time')->required() ->customFormat(function ($start_time){ return date('Y-m-d H:i:s',$start_time); }); // ->rules('after:now',[ // 'after' => '只能选择今天和之后的时间' // ]); $form->datetime('end_time')->required() ->customFormat(function ($start_time){ return date('Y-m-d H:i:s',$start_time); }) ->rules('after:start_time',[ 'after' => '只能选择活动开始之后的时间' ]); $form->datetime('usable_start_time')->required() ->customFormat(function ($start_time){ return date('Y-m-d H:i:s',$start_time); }); $form->datetime('usable_end_time')->required() ->customFormat(function ($start_time){ return date('Y-m-d H:i:s',$start_time); }) ->rules('after:end_time',[ 'after' => '只能选择活动结束之后的时间' ]); // $form->select('type')->options(CouponModel::$_TYPE)->default(1)->disable(); /* 默认全平台的市场 */ $marketList = MarketModel::getMarketArray(); $form->multipleSelect('market_ids')->options($marketList)->help('不选默认所有市场可用'); /* 目前默认全平台的分类 */ $categoryList = CategoryModel::getArray(); $form->multipleSelect('category_ids')->options($categoryList)->help('不选默认所有类型可用'); }); $form->column(12,function(Form $form){ $form->tags('activity_available','可用活动')->options(CouponModel::$activityAvailable); $form->tags('tags','标签')->options(['新人专享','满39减10','满19减5']); $form->text('remark')->maxLength(500,'最多只能输入500个字')->default(''); }); /* 页面按钮 */ $form->disableResetButton(); $form->disableViewCheck(); $form->disableEditingCheck(); $form->disableCreatingCheck(); /* 不显示字段 */ $form->hidden('id'); // $form->text('usable_number')->width(2)->default(1)->disable(); $form->saving(function (Form $form){ $tags = $form->input('tags'); $activityAvailable = $form->input('activity_available'); if( $form->discount_type == 2 && ($form->discounts <= 0 || $form->discounts >= 10)){ return $form->error('优惠金额请输入1~10之间的数字'); } $tagsArr = []; if(!empty($tags)){ foreach($tags as $kt => $tag){ if(empty($tag)){ unset($tags[$kt]); continue; } $tagsArr[] = $tag; } }; $form->tags = json_encode($tagsArr); $availableArr = []; if(!empty($activityAvailable)){ foreach($activityAvailable as $ka => $available){ if(empty($available)){ unset($activityAvailable[$ka]); continue; } $availableArr[] = $available; } }; $form->activity_available = json_encode($availableArr); $form->remark = empty($form->input('remark')) ? '' : $form->input('remark'); }); }); } }