diff --git a/app/Admin/Controllers/DealerChannelSubsidyController.php b/app/Admin/Controllers/DealerChannelSubsidyController.php index 75efaafa..fa9b2ecd 100644 --- a/app/Admin/Controllers/DealerChannelSubsidyController.php +++ b/app/Admin/Controllers/DealerChannelSubsidyController.php @@ -12,6 +12,7 @@ use Dcat\Admin\Admin; use Dcat\Admin\Grid; use Dcat\Admin\Http\Controllers\AdminController; use Dcat\Admin\Layout\Row; +use Dcat\Admin\Widgets\Card; class DealerChannelSubsidyController extends AdminController { @@ -48,10 +49,12 @@ class DealerChannelSubsidyController extends AdminController $grid->column('fee', '手续费')->prepend('¥')->help('手续费=补贴金额*手续费率'); $grid->column('fee_rate', '手续费率')->append('%'); $grid->column('total_earnings', '总收入')->prepend('¥')->help('总收入=补贴金额-手续费'); - $grid->column('remark', '备注')->display('查看')->modal(function ($modal) { - $modal->title('备注'); - return '
'.nl2br($this->remark).'
'; - }); + $grid->column('remark', '备注')->display('查看') // 设置按钮名称 + ->expand(function () { + $card = new Card(null, nl2br($this->remark)); + + return "
$card
"; + }); $grid->column('settle_at', '结算时间')->display(function () { return $this->settle_at?->toDateTimeString(); })->sortable(); diff --git a/app/Admin/Controllers/DealerEarningController.php b/app/Admin/Controllers/DealerEarningController.php index c7a32e39..4d194f45 100644 --- a/app/Admin/Controllers/DealerEarningController.php +++ b/app/Admin/Controllers/DealerEarningController.php @@ -5,7 +5,9 @@ namespace App\Admin\Controllers; use App\Admin\Actions\Show\DealerEarningPay; use App\Admin\Renderable\Grid\Filter\DealerEarningStatusIn; use App\Admin\Repositories\DealerEarning; +use App\Admin\Widgets\InfoBox; use App\Enums\DealerEarningStatus; +use App\Enums\PayWay; use App\Models\DealerChannelSubsidyLog; use App\Models\DealerEarning as DealerEarningModel; use App\Models\DealerManagerSalesLog; @@ -32,46 +34,58 @@ class DealerEarningController extends AdminController */ protected function grid() { - $earning = DealerEarning::with(['user', 'payer']); + Admin::style( + <<setResource('dealer-earnings'); - $grid->model()->orderBy('id', 'desc');//默认ID倒叙 + $grid->model()->orderBy('id', 'desc'); //默认ID倒叙 + $grid->column('id')->sortable(); $grid->column('user.phone'); - $grid->column('type_name')->display(function () { - return $this->type_name; - })->label()->filter(Grid\Column\Filter\In::make([ - (new DealerManagerSubsidy())->getMorphClass() =>'管理者补贴', - (new DealerManageSubsidy())->getMorphClass() =>'管理补贴', - (new DealerChannelSubsidyLog())->getMorphClass() =>'渠道补贴', - (new DealerPurchaseSubsidy())->getMorphClass() =>'进货补贴', - ])->setColumnName('earningable_type')); - $grid->column('remark')->display('详情') // 设置按钮名称 - ->expand(function () { - // 这里返回 content 字段内容,并用 Card 包裹起来 - $card = new Card(null, $this->remark); - - return "
$card
"; - }); - // $grid->column('earningable_type'); - // $grid->column('earningable_id'); + $grid->column('user.userInfo.nickname', '昵称'); $grid->column('lvl')->display(function () { return $this->lvl->text(); }); - $grid->column('is_manager')->bool(); + $grid->column('earningable_type', '资金类型')->display(function () { + return $this->earningable_type_text; + })->label([ + (new DealerManageSubsidy())->getMorphClass() => 'primary', + (new DealerManagerSubsidy())->getMorphClass() => 'success', + (new DealerPurchaseSubsidy())->getMorphClass() => 'danger', + (new DealerChannelSubsidyLog())->getMorphClass() => 'warning', + ])->filter(Grid\Column\Filter\In::make([ + (new DealerManagerSubsidy())->getMorphClass() =>'管理者补贴', + (new DealerManageSubsidy())->getMorphClass() => '管理补贴', + (new DealerChannelSubsidyLog())->getMorphClass() => '渠道补贴', + (new DealerPurchaseSubsidy())->getMorphClass() => '进货补贴', + ])); $grid->column('total_amount')->prepend('¥'); $grid->column('fee_rate')->append('%'); $grid->column('fee')->prepend('¥'); $grid->column('total_earnings')->prepend('¥'); - $grid->column('status_format')->display(function ($value) { - return $this->status_format; - })->using([ - -1=> '待结算', - 0 => '待打款', - 1 => '待收款', - 5 => '已完成', - ])->dot()->filter(DealerEarningStatusIn::make([ - -1=> '待结算', + $grid->column('remark')->display('查看') // 设置按钮名称 + ->expand(function () { + $card = new Card(null, nl2br($this->remark)); + + return "
$card
"; + }); + $grid->column('status', '状态')->display(function ($v) { + if (! $this->isSettled()) { + return "  待结算"; + } + + return "  {$v->text()}"; + })->filter(DealerEarningStatusIn::make([ + -1 => '待结算', 0 => '待打款', 1 => '待收款', 5 => '已完成', @@ -80,45 +94,39 @@ class DealerEarningController extends AdminController $grid->column('payer_id')->display(function () { return $this->payer_id ? $this->payer?->phone : '公司'; }); - // $grid->column('pay_info'); - $grid->column('pay_way')->using(DealerEarningModel::$payWayText)->label([ - DealerEarningModel::PAY_WAY_WALLET=>'warning', - DealerEarningModel::PAY_WAY_OFFLINE=>'danger', - 'none'=>'#b3b9bf', - ]); + $grid->column('pay_way', '支付方式')->display(function ($v) { + return $v?->text(); + })->circleDot(PayWay::colors()); $grid->column('pay_at'); - - // $grid->column('pay_image'); $grid->column('created_at')->sortable(); $grid->actions(function (Grid\Displayers\Actions $actions) { - //如果不是渠道补贴添加详情显示 - // if ($actions->row->earningable_type != (new DealerChannelSubsidyLog())->getMorphClass()) { $actions->append(' 显示   '); - // } }); $grid->header(function ($collection) use ($grid) { - $query = DealerEarningModel::query(); + return tap(new Row(), function ($row) use ($grid) { + $query = DealerEarningModel::query(); - // 拿到表格筛选 where 条件数组进行遍历 - $grid->model()->getQueries()->unique()->each(function ($value) use (&$query) { - if (in_array($value['method'], ['paginate', 'get', 'orderBy', 'orderByDesc'], true)) { - return; - } + // 拿到表格筛选 where 条件数组进行遍历 + $grid->model()->getQueries()->unique()->each(function ($value) use (&$query) { + if (in_array($value['method'], ['paginate', 'get', 'orderBy', 'orderByDesc'], true)) { + return; + } - $query = call_user_func_array([$query, $value['method']], $value['arguments'] ?? []); + $query = call_user_func_array([$query, $value['method']], $value['arguments'] ?? []); + }); + + // 查出统计数据 + $totalAmount = (clone $query)->sum('total_amount'); + + $row->column(3, new InfoBox('金额', $totalAmount, 'fa fa-cny')); }); - - // 查出统计数据 - $totalAmount = (clone $query)->sum('total_amount'); - // 自定义组件 - return "
金额:".$totalAmount.' 元
'; }); $grid->filter(function (Grid\Filter $filter) { $filter->panel(); $filter->equal('user.phone')->width(3); - $filter->between('settle_at')->dateTime()->width(7); + $filter->between('settle_at')->dateTime()->width(6); }); }); } @@ -134,21 +142,17 @@ class DealerEarningController extends AdminController { return function (Row $row) use ($id) { $row->column(5, function ($column) use ($id) { - $builder = DealerEarning::with(['user', 'payer']); + $builder = DealerEarning::with(['user.userInfo', 'payer']); $column->row(Show::make($id, $builder, function (Show $show) { $show->field('id'); - $show->field('type_name')->as(function () { - return $this->type_name; - })->label(); $show->field('user.phone'); - // $show->field('earningable_type'); - // $show->field('earningable_id'); + $show->field('user.user_info.nickname', '昵称'); $show->field('lvl')->as(function () { return $this->lvl->text(); }); - $show->field('is_manager')->as(function ($val) { - return $val ? '是' : '否'; - }); + $show->field('earningable_type', '资金类型')->as(function () { + return $this->earningable_type_text; + })->label(); $show->field('total_amount')->prepend('¥'); $show->field('fee_rate')->append('%'); $show->field('fee')->prepend('¥'); @@ -156,19 +160,28 @@ class DealerEarningController extends AdminController $show->field('payer.phone', '打款人')->as(function () { return $this->payer_id ? $this->payer?->phone : '公司'; }); - $show->field('pay_way', '支付方式')->using(DealerEarningModel::$payWayText)->dot([ - DealerEarningModel::PAY_WAY_WALLET=>'warning', - DealerEarningModel::PAY_WAY_OFFLINE=>'danger', - 'none'=>'#b3b9bf', - ]); + $show->field('pay_way', '打款方式')->as(function () { + return $this->pay_way?->text(); + })->circleDot(PayWay::colors()); + $show->field('pay_at', '打款时间')->as(function () { + return $this->pay_at?->toDateTimeString(); + }); $show->field('pay_image')->image(); - // $show->field('pay_info'); - $show->field('pay_at'); $show->field('settle_at'); - // $show->field('status'); - $show->field('remark'); - //非(待结算)显示收款人信息 - if ($show->model()->settle_at) { + $show->field('remark')->unescape()->as(function () { + return nl2br($this->remark); + }); + $show->field('status', '状态')->unescape()->as(function () { + if (! $this->isSettled()) { + return "  待结算"; + } + + return "  {$this->status->text()}"; + }); + $show->field('created_at'); + + // 非(待结算)显示收款人信息 + if ($show->model()->isSettled()) { $show->divider('收款信息-银行'); $show->field('bank_user_name', '银行-收款人')->as(function () { $payInfo = $this->getPayInfo(); @@ -213,17 +226,16 @@ class DealerEarningController extends AdminController return $payInfo['wechat']['image'] ?? ''; })->image(); } - $show->field('created_at'); - // $show->field('updated_at'); + $show->panel() ->tools(function (Show\Tools $tools) use ($show) { $tools->disableEdit(); $tools->disableDelete(); - if ($show->model()->status == DealerEarningStatus::Pending && Admin::user()->can('dcat.admin.dealer_earnings.pay')) { - if (!$show->model()->payer_id || $show->model()->payer_id == 1) { - $tools->append(new DealerEarningPay()); - } - } + // if ($show->model()->status == DealerEarningStatus::Pending && Admin::user()->can('dcat.admin.dealer_earnings.pay')) { + // if (!$show->model()->payer_id || $show->model()->payer_id == 1) { + // $tools->append(new DealerEarningPay()); + // } + // } }); })); }); @@ -241,7 +253,6 @@ class DealerEarningController extends AdminController $grid->column('order_completed_at', '结算时间'); $grid->disableCreateButton(); $grid->disableActions(); - // $grid->disablePagination(); }); break; case DealerManageSubsidy::class://管理补贴 diff --git a/app/Admin/Controllers/DealerManageSubsidyController.php b/app/Admin/Controllers/DealerManageSubsidyController.php index dc445223..47255cea 100644 --- a/app/Admin/Controllers/DealerManageSubsidyController.php +++ b/app/Admin/Controllers/DealerManageSubsidyController.php @@ -12,6 +12,7 @@ use Dcat\Admin\Admin; use Dcat\Admin\Grid; use Dcat\Admin\Http\Controllers\AdminController; use Dcat\Admin\Layout\Row; +use Dcat\Admin\Widgets\Card; class DealerManageSubsidyController extends AdminController { @@ -56,11 +57,12 @@ class DealerManageSubsidyController extends AdminController $grid->column('fee', '手续费')->prepend('¥')->help('手续费=津贴总额*手续费率'); $grid->column('real_amount', '总收入')->prepend('¥')->help('总收入=津贴总额-手续费'); $grid->column('fee_rate', '手续费率')->append('%'); - $grid->column('remark', '备注')->display('查看')->modal(function ($modal) { - $modal->title('备注'); + $grid->column('remark', '备注')->display('查看') // 设置按钮名称 + ->expand(function () { + $card = new Card(null, nl2br($this->remark)); - return "
".nl2br($this->remark).'
'; - }); + return "
$card
"; + }); $grid->column('status', '状态')->display(function ($v) { return $v->text(); })->circleDot(DealerManageSubsidyStatus::colors()); diff --git a/app/Admin/Controllers/DealerManagerSubsidyController.php b/app/Admin/Controllers/DealerManagerSubsidyController.php index 701e7de5..56c71fa5 100644 --- a/app/Admin/Controllers/DealerManagerSubsidyController.php +++ b/app/Admin/Controllers/DealerManagerSubsidyController.php @@ -12,6 +12,7 @@ use Dcat\Admin\Admin; use Dcat\Admin\Grid; use Dcat\Admin\Http\Controllers\AdminController; use Dcat\Admin\Layout\Row; +use Dcat\Admin\Widgets\Card; class DealerManagerSubsidyController extends AdminController { @@ -57,11 +58,12 @@ class DealerManagerSubsidyController extends AdminController $grid->column('fee', '手续费')->prepend('¥')->help('手续费=津贴总额*手续费率'); $grid->column('real_amount', '总收入')->prepend('¥')->help('总收入=津贴总额-手续费'); $grid->column('fee_rate', '手续费率')->append('%'); - $grid->column('remark', '备注')->display('查看')->modal(function ($modal) { - $modal->title('备注'); + $grid->column('remark', '备注')->display('查看') // 设置按钮名称 + ->expand(function () { + $card = new Card(null, nl2br($this->remark)); - return "
".nl2br($this->remark).'
'; - }); + return "
$card
"; + }); $grid->column('status', '状态')->display(function ($v) { return $v->text(); })->circleDot(DealerManagerSubsidyStatus::colors()); diff --git a/app/Models/DealerEarning.php b/app/Models/DealerEarning.php index b53befe9..efc2e305 100644 --- a/app/Models/DealerEarning.php +++ b/app/Models/DealerEarning.php @@ -5,9 +5,11 @@ namespace App\Models; use App\Casts\JsonArray; use App\Enums\DealerEarningStatus; use App\Enums\DealerLvl; +use App\Enums\PayWay; use Dcat\Admin\Traits\HasDateTimeFormatter; use EloquentFilter\Filterable; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\Relation; class DealerEarning extends Model { @@ -24,6 +26,7 @@ class DealerEarning extends Model protected $casts = [ 'lvl' => DealerLvl::class, 'status' => DealerEarningStatus::class, + 'pay_way' => PayWay::class, 'pay_at' => 'datetime', 'settle_at'=> 'datetime', 'pay_info' => JsonArray::class, @@ -180,25 +183,32 @@ class DealerEarning extends Model return $this->settle_at ? $this->status->value : -1; } - public function getTypeNameAttribute() + public function getEarningableTypeTextAttribute() { - $name = '未知'; - switch ($this->attributes['earningable_type']) { - case (new DealerManagerSubsidy())->getMorphClass(): - $name = '管理者津贴'; + $text = '其它'; + + switch (Relation::getMorphedModel($this->attributes['earningable_type'])) { + // 管理津贴 + case DealerManageSubsidy::class: + $text = '管理津贴'; break; - case (new DealerManageSubsidy())->getMorphClass(): - $name = '管理津贴'; + + // 管理者津贴 + case DealerManagerSubsidy::class: + $text = '管理者津贴'; break; - case (new DealerChannelSubsidyLog())->getMorphClass(): - $name = '渠道补贴'; + + // 进货津贴 + case DealerPurchaseSubsidy::class: + $text = '进货补贴'; break; - default: - $name = '进货补贴'; + + case DealerChannelSubsidyLog::class: + $text = '渠道补贴'; break; } - return $name; + return $text; } /** diff --git a/database/seeders/AdminMenuSeeder.php b/database/seeders/AdminMenuSeeder.php index 68f2384d..60dc9814 100644 --- a/database/seeders/AdminMenuSeeder.php +++ b/database/seeders/AdminMenuSeeder.php @@ -299,6 +299,11 @@ class AdminMenuSeeder extends Seeder 'icon' => '', 'uri' => 'dealer-users', ], + [ + 'title' =>'经销商资金明细', + 'icon'=>'', + 'uri' => 'dealer-earnings', + ], [ 'title' =>'商品管理', 'icon' => '', @@ -319,26 +324,15 @@ class AdminMenuSeeder extends Seeder 'icon' => '', 'uri' => 'dealer-delivery-bills', ], - // [ - // 'title' =>'用户资金', - // 'icon'=>'', - // 'uri' => 'dealer-earnings', - // ], [ - 'title' =>'渠道补贴', + 'title' =>'签约渠道补贴', 'icon'=>'', - 'uri' => 'dealer-earnings-channel?filter-earningable_type[]=dealer_channel_subsidy_log', + 'uri' => 'dealer-channel-subsidies', ], - // [ - // 'title' =>'签约渠道补贴', - // 'icon'=>'', - // 'uri' => 'dealer-channel-subsidies', - // ], [ 'title' =>'进货补贴', 'icon' => '', - 'uri' => 'dealer-earnings-purchase?filter-earningable_type[]=dealer_purchase_subsidy', - // 'uri' => 'dealer-purchase-subsidies', + 'uri' => 'dealer-purchase-subsidies', ], [ 'title' =>'进货补贴明细', @@ -348,8 +342,7 @@ class AdminMenuSeeder extends Seeder [ 'title'=>'管理津贴', 'icon' => '', - 'uri' => 'dealer-earnings-manage?filter-earningable_type[]=dealer_manage_subsidy', - // 'uri' => 'dealer-manage-subsidies', + 'uri' => 'dealer-manage-subsidies', ], [ 'title' =>'管理津贴明细', @@ -359,8 +352,7 @@ class AdminMenuSeeder extends Seeder [ 'title'=>'管理者津贴', 'icon' => '', - 'uri' => 'dealer-earnings-manage?filter-earningable_type[]=dealer_manager_subsidy', - // 'uri' => 'dealer-manager-subsidies', + 'uri' => 'dealer-manager-subsidies', ], [ 'title'=>'管理者津贴明细',