6
0
Fork 0

添加后台打款动作

release
vine_liutk 2022-01-20 14:46:00 +08:00 committed by 李静
parent 184139d425
commit 76b1da0907
3 changed files with 111 additions and 1 deletions

View File

@ -0,0 +1,32 @@
<?php
namespace App\Admin\Actions\Show;
use App\Admin\Forms\DealerEarningPay as DealerEarningPayForm;
use Dcat\Admin\Show\AbstractTool;
use Dcat\Admin\Widgets\Modal;
class DealerEarningPay extends AbstractTool
{
/**
* @return string
*/
protected $title = '<i class="feather icon-file-text"></i>&nbsp;打款';
/**
* 按钮样式定义,默认 btn btn-white waves-effect
*
* @var string
*/
protected $style = 'btn-danger';
public function render()
{
$form = DealerEarningPayForm::make()->payload(['id'=>$this->getKey()]);
return Modal::make()
->lg()
->title($this->title)
->body($form)
->button("<a href=\"javascript:void(0)\" class=\"btn btn-sm {$this->style}\">{$this->title}</a>&nbsp;&nbsp;");
}
}

View File

@ -2,7 +2,9 @@
namespace App\Admin\Controllers;
use App\Admin\Actions\Show\DealerEarningPay;
use App\Admin\Repositories\DealerEarning;
use App\Enums\DealerEarningStatus;
use App\Models\DealerChannelSubsidyLog;
use App\Models\DealerEarning as DealerEarningModel;
use App\Models\DealerManagerSalesLog;
@ -120,7 +122,7 @@ class DealerEarningController extends AdminController
$show->field('payer.phone', '打款人')->as(function () {
return $this->payer_id ? $this->payer?->phone : '公司';
});
$show->field('pay_image');
$show->field('pay_image')->image();
// $show->field('pay_info');
$show->field('pay_at');
$show->field('settle_at');
@ -178,6 +180,11 @@ class DealerEarningController extends AdminController
->tools(function (Show\Tools $tools) use ($show) {
$tools->disableEdit();
$tools->disableDelete();
if ($show->model()->status == DealerEarningStatus::Pending) {
if (!$show->model()->payer_id || $show->model()->payer_id == 1) {
$tools->append(new DealerEarningPay());
}
}
});
}));
});

View File

@ -0,0 +1,71 @@
<?php
namespace App\Admin\Forms;
use App\Enums\DealerEarningStatus;
use App\Models\DealerEarning;
use Carbon\Carbon;
use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
use Dcat\Admin\Widgets\Form;
use Illuminate\Support\Facades\DB;
use Throwable;
class DealerEarningPay extends Form implements LazyRenderable
{
use LazyWidget;
/**
* @param Model|Authenticatable|HasPermissions|null $user
*
* @return bool
*/
protected function authorize($user): bool
{
return $user->can('dcat.admin.dealer_earnings.pay');
}
/**
* Handle the form request.
*
* @param array $input
*
* @return mixed
*/
public function handle(array $input)
{
$id = $this->payload['id'] ?? 0;
try {
DB::beginTransaction();
$earning = DealerEarning::findOrFail($id);
$earning->update([
'pay_info' => $earning->getPayInfo(),
'pay_image' => $input['pay_image']??null,
'pay_at' => now(),
'status' => DealerEarningStatus::Completed,
]);
DB::commit();
} catch (Throwable $th) {
DB::rollBack();
report($th);
return $this->response()->error('操作失败:'.$th->getMessage());
}
return $this->response()
->success(__('admin.update_succeeded'))
->refresh();
}
/**
* Build a form here.
*/
public function form()
{
$this->image('pay_image')
->move('dealer-pay/'.Carbon::now()->toDateString())
->saveFullUrl()
->removable(false)
->autoUpload();
}
}