Files
water-back/app/Admin/Controllers/Platform/ExperienceController.php
2023-01-11 11:00:43 +08:00

140 lines
4.6 KiB
PHP

<?php
namespace App\Admin\Controllers\Platform;
use App\Admin\Actions\LinkStockOrderDeliver;
use App\Admin\Actions\LinkVipOrderRefund;
use Encore\Admin\Controllers\AdminController;
use Encore\Admin\Grid;
use Modules\Gout\Http\Controllers\Admin\Action\Audit;
use Modules\Gout\Models\GoutCase;
use Modules\Gout\Renderable\CaseData;
use Modules\Gout\Renderable\CaseSymptoms;
use Modules\User\Models\User;
use Modules\User\Models\UserStock;
class ExperienceController extends AdminController
{
protected $title = '体验官审核';
public function grid(): Grid
{
$grid = new Grid(new GoutCase());
$grid->disableCreateButton();
$grid->model()->with(['symptoms', 'user', 'user.sign', 'user.userStock'])
->withCount(['logs', 'surveys'])
->where('type', GoutCase::TYPE_TY);
$grid->actions(function (Grid\Displayers\Actions $actions) {
$actions->disableEdit();
$actions->disableDelete();
$actions->disableView();
if ($actions->row->canAudit()) {
$actions->add(new Audit());
}
if ($actions->row->manage_status == GoutCase::MANAGE_STATUS_DELIVER) {
$actions->add(new LinkStockOrderDeliver());
}
if ($actions->row->manage_status == GoutCase::MANAGE_STATUS_REFUND) {
$actions->add(new LinkVipOrderRefund());
}
});
$grid->filter(function (Grid\Filter $filter) {
$filter->column(1 / 2, function (Grid\Filter $filter) {
$filter->like('name', '姓名');
$filter->equal('mobile', '手机号');
});
$filter->column(1 / 2, function (Grid\Filter $filter) {
$filter->equal('status', '状态')->select((new GoutCase())->status_map);
});
});
$grid->column('id', '#ID#');
$grid->column('name', '姓名');
$grid->column('mobile', '手机号');
$grid->column('建档信息')
->display(function ($title, $column) {
return '查看';
})->modal('建档信息', CaseData::class);
$grid->column('报告数据')
->display(function ($title, $column) {
return '查看';
})->modal('亚健康数据', CaseSymptoms::class);
$grid->column('symptoms', '症状')
->display(function () {
return $this->symptoms->pluck('title');
})->label();
$grid->column('是否关注')
->display(function () {
return $this->user->isOfficialSubscribe();
})
->bool();
//
$grid->column('缴纳保证金')
->display(function () {
return $this->user->isExperiencePrice() ? '已缴' : '待缴';
})
->label([
'已缴' => 'primary',
'待缴' => 'success',
]);
$grid->column('是否收货')
->display(function () {
return $this->user->userStock->stock_order_status_text;
})
->label(UserStock::STOCK_ORDER_STATUS_MAP);
$grid->column('is_coupon', '是否发券')
->using(GoutCase::COUPONS)
->label(GoutCase::COUPONS_MAP);
$grid->column('喝水打卡')
->display(function () {
return $this->user->sign->counts;
});
//
$grid->column('完结报告')
->display(function () {
return $this->logs_count > 1 ? '已上传' : '待上传';
})
->label([
'已上传' => 'primary',
'待上传' => 'success',
]);
//
$grid->column('是否退保')
->display(function () {
return $this->user->isExperiencePriceRefund() ? '是' : '否';
})
->label([
'是' => 'primary',
'否' => 'success',
]);
$grid->column('好转反馈')
->display(function () {
return $this->surveys_count;
});
$grid->column('manage_status', '状态')
->using((new GoutCase())->manage_status_map)
->label([
GoutCase::MANAGE_STATUS_INIT => 'primary',
GoutCase::MANAGE_STATUS_DELIVER => 'success',
GoutCase::MANAGE_STATUS_REFUND => 'danger',
GoutCase::MANAGE_STATUS_PASS => 'info',
GoutCase::MANAGE_STATUS_FINISH => 'warning',
]);
$grid->column('created_at', '创建时间');
return $grid;
}
}