<?php namespace App\Admin\Controllers; use App\Admin\Actions\Grid\HandleInquiry; use App\Admin\Renderable\BarChart; use App\Admin\Renderable\InquiryDetail; use App\Admin\Renderable\PostTable; use App\Admin\Repositories\Inquiry; use App\Admin\Service\InquiryService; use App\Models\Cms\CmsUser; use Dcat\Admin\Admin; use Dcat\Admin\Form; use Dcat\Admin\Grid; use Dcat\Admin\Show; use Dcat\Admin\Http\Controllers\AdminController; use Dcat\Admin\Widgets\Card; class InquiryController extends AdminController { /** * Make a grid builder. * * @return Grid */ protected function grid() { return Grid::make(new Inquiry(['user', 'sales_user']), function (Grid $grid) { $grid->showFilter(); $grid->disableActions(); $grid->disableFilterButton(); $grid->disableRefreshButton(); $grid->disableCreateButton(); $grid->filter(function ($filter) { $filter->expand(true); $filter->whereBetween('create_time', function ($q) { $start = strtotime($this->input['start'] ?? null); $end = strtotime($this->input['end'] ?? null); $q->whereBetween('create_time', [$start, $end]); })->datetime()->width(3); $filter->startWith('user.company_name')->width(3); $filter->startWith('user.id')->width(3); // $filter->equal('inquiry_id')->width(3); $filter->startWith('user.email')->width(3); $filter->startWith('user.phone')->width(3); $filter->like('inquiry_sn')->width(3); $filter->equal('priority')->select(admin_trans('inquiry.options.priority'))->width(3); $filter->equal('status')->select(admin_trans('inquiry.options.status'))->width(3); $filter->equal('sales_id', trans('inquiry.fields.sales_name'))->select(CmsUser::pluck('name', 'userId')->toArray())->width(3); }); $grid->tools(new HandleInquiry(admin_trans('inquiry.labels.handle'))); $grid->model()->orderBy('inquiry_id', 'desc'); $grid->column('inquiry_sn')->modal(function (Grid\Displayers\Modal $modal) { $modal->xl(); $modal->icon('fa fa-list-ul'); // 标题 $modal->title(admin_trans('inquiry.labels.inquiry_detail')); $detail = InquiryDetail::make(['key' => $this->inquiry_id]); $list = InquiryDetail::inquiryItems($this->inquiry_id); return new Card($detail) . new Card($list); }); $grid->column('task_type')->display(admin_trans('inquiry.options.task_type.1')); $grid->column('user.user_sn')->display(function ($value) { return '<a target="_blank" iframe-extends=true iframe-tab=true href="/admin/users/'.$this->user->id.'" style="color:#1224cc">'.$value.'</a>'; }); $grid->column('user.phone')->copyable(); $grid->column('user.email')->copyable(); $grid->column('status')->using(admin_trans('inquiry.options.status'))->dot([ -1 => 'danger', 0 => 'info', 1 => 'success' ])->sortable(); $grid->column('priority')->using(admin_trans('inquiry.options.priority'))->badge([ 0 => 'default', 1 => 'primary', 2 => 'danger' ])->sortable(); $grid->column('remark')->limit(10); $grid->column('sales_user.name'); $grid->column('user_types')->using(admin_trans('inquiry.options.user_types')); $grid->column('processing_time')->display(function ($time) { return $time ? date('Y-m-d H:i:s', $time) : ''; })->sortable(); $grid->column('create_time')->display(function ($time) { return date('Y-m-d H:i:s', $time); })->sortable(); // $grid->column('update_time')->display(function ($time) { // return $time ? date('Y-m-d H:i:s', $time) : ''; // })->sortable(); $grid->column('source')->using(admin_trans('inquiry.options.source')); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { return Show::make($id, new Inquiry(), function (Show $show) { $show->field('inquiry_id'); $show->field('sales_id'); $show->field('inquiry_sn'); $show->field('status'); $show->field('remark'); $show->field('priority'); $show->field('user_types'); $show->field('processing_time'); $show->field('create_time'); $show->field('update_time'); }); } /** * Make a form builder. * * @return Form */ protected function form() { return Form::make(new Inquiry(), function (Form $form) { $form->row(function (Form\Row $form) { $form->text('sales_id'); $form->text('inquiry_sn'); }); $form->row(function (Form\Row $form) { $form->text('status'); $form->text('remark'); $form->text('priority'); }); $form->row(function (Form\Row $form) { $form->array('column_name', function ($table) { $table->text('key')->width(3); $table->text('value')->width(3); $table->text('desc')->width(3); $table->text('desc')->width(3); $table->text('desc')->width(3); $table->text('desc')->width(3); $table->text('desc')->width(3); $table->text('desc')->width(3); $table->text('desc')->width(3); }); }); }); } protected function handleInquiry() { return Form::make(new Inquiry(), function (Form $form) { $form->display('inquiry_id'); $form->text('sales_id'); $form->text('inquiry_sn'); $form->text('status'); $form->text('remark'); $form->text('priority'); $form->text('user_types'); $form->text('processing_time'); $form->text('create_time'); $form->text('update_time'); }); } }