generated from liutk/owl-admin-base
Merge branch 'main' of https://gitea.hmily.club/pdkj/store-manage into main
commit
8f7cd01505
|
|
@ -20,6 +20,74 @@ class LedgerController extends AdminController
|
|||
{
|
||||
protected string $serviceName = LedgerService::class;
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
if ($this->actionOfGetData()) {
|
||||
/** @var \App\Models\Ledger */
|
||||
$ledger = Ledger::findOrFail($id);
|
||||
$ledger->load(['store', 'items.type']);
|
||||
|
||||
return $this->response()->success(
|
||||
array_merge($ledger->toArray(), [
|
||||
'items_property' => collect($ledger->items)->map(fn ($item) => [
|
||||
['label' => '类型', 'content' => $item->type?->name ?? '-'],
|
||||
['label' => '销售', 'content' => $item->sales],
|
||||
['label' => $item->ledger_item_type_id === 'ledger_item_type_other' ? '支出' : '兑奖', 'content' => $item->expenditure],
|
||||
])->collapse()->all()
|
||||
])
|
||||
);
|
||||
}
|
||||
|
||||
$detail = amis()
|
||||
->Card()
|
||||
->className('base-form')
|
||||
->header(['title' => __('admin.detail')])
|
||||
->body($this->detail())
|
||||
->toolbar([$this->backButton()]);
|
||||
|
||||
$page = $this->basePage()->body($detail);
|
||||
|
||||
return $this->response()->success($page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 审核
|
||||
*/
|
||||
public function approval($id, Request $request)
|
||||
{
|
||||
$validator = Validator::make(
|
||||
data: $request->all(),
|
||||
rules: [
|
||||
'approval_result' => ['bail', 'required', Rule::in([1, 2])],
|
||||
'failed_reason' => ['bail', 'required_if:approval_result,2'],
|
||||
],
|
||||
attributes: [
|
||||
'approval_result' => __('finance.ledger.approval_result'),
|
||||
'failed_reason' => __('finance.ledger.failed_reason'),
|
||||
],
|
||||
);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->response()->fail($validator->errors()->first());
|
||||
}
|
||||
|
||||
$ledger = Ledger::findOrFail($id);
|
||||
|
||||
if ($ledger->ledger_status !== LedgerStatus::Processing) {
|
||||
return $this->response()->fail('上报数据不是待审核状态');
|
||||
}
|
||||
|
||||
if ($request->input('approval_result') == 1) {
|
||||
$ledger->ledger_status = LedgerStatus::Passed;
|
||||
} else {
|
||||
$ledger->ledger_status = LedgerStatus::Rejected;
|
||||
}
|
||||
|
||||
$ledger->save();
|
||||
|
||||
return $this->response()->success(null, '操作成功');
|
||||
}
|
||||
|
||||
public function list(): Page
|
||||
{
|
||||
$crud = $this->baseCRUD()
|
||||
|
|
@ -96,7 +164,7 @@ class LedgerController extends AdminController
|
|||
public function detail(): Form
|
||||
{
|
||||
return $this->baseDetail()->title()->body([
|
||||
amis()->Property()->title('上报数据')->column(2)->items([
|
||||
amis()->Property()->column(2)->items([
|
||||
['label' => __('finance.ledger.date'), 'content' => '${date}'],
|
||||
['label' => __('finance.ledger.store'), 'content' => '${store.title}'],
|
||||
['label' => __('finance.ledger.sales'), 'content' => '${sales}'],
|
||||
|
|
@ -105,50 +173,17 @@ class LedgerController extends AdminController
|
|||
['label' => __('finance.ledger.actual_commission'), 'content' => '${actual_commission}'],
|
||||
['label' => __('finance.ledger.expected_income'), 'content' => '${expected_income}'],
|
||||
['label' => __('finance.ledger.actual_income'), 'content' => '${actual_income}'],
|
||||
[
|
||||
'label' => '上报数据',
|
||||
'content' => amis()->Property()->source('${items_property}'),
|
||||
'span' => 2
|
||||
],
|
||||
['label' => __('finance.ledger.photos'), 'content' => amis()->Images()->enlargeAble()->source('${photos}')->enlargeWithGallary(), 'span' => 2],
|
||||
['label' => __('finance.ledger.ledger_status'), 'content' => amis()->Mapping()->map(LedgerStatus::labelMap())->value('${ledger_status}'), 'span' => 2],
|
||||
]),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 审核
|
||||
*/
|
||||
public function approval($id, Request $request)
|
||||
{
|
||||
$validator = Validator::make(
|
||||
data: $request->all(),
|
||||
rules: [
|
||||
'approval_result' => ['bail', 'required', Rule::in([1, 2])],
|
||||
'failed_reason' => ['bail', 'required_if:approval_result,2'],
|
||||
],
|
||||
attributes: [
|
||||
'approval_result' => __('finance.ledger.approval_result'),
|
||||
'failed_reason' => __('finance.ledger.failed_reason'),
|
||||
],
|
||||
);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->response()->fail($validator->errors()->first());
|
||||
}
|
||||
|
||||
$ledger = Ledger::findOrFail($id);
|
||||
|
||||
if ($ledger->ledger_status !== LedgerStatus::Processing) {
|
||||
return $this->response()->fail('上报数据不是待审核状态');
|
||||
}
|
||||
|
||||
if ($request->input('approval_result') == 1) {
|
||||
$ledger->ledger_status = LedgerStatus::Passed;
|
||||
} else {
|
||||
$ledger->ledger_status = LedgerStatus::Rejected;
|
||||
}
|
||||
|
||||
$ledger->save();
|
||||
|
||||
return $this->response()->success(null, '操作成功');
|
||||
}
|
||||
|
||||
protected function rowApprovalButton()
|
||||
{
|
||||
return amis()->DialogAction()->icon('fa-regular fa-check-circle')->label(__('finance.ledger.approval'))->level('link')->dialog(
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ use Illuminate\Database\Eloquent\Casts\Attribute;
|
|||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
|
||||
class Ledger extends Model
|
||||
{
|
||||
|
|
@ -40,6 +41,11 @@ class Ledger extends Model
|
|||
return $this->belongsTo(Store::class);
|
||||
}
|
||||
|
||||
public function items(): HasMany
|
||||
{
|
||||
return $this->hasMany(LedgerItem::class);
|
||||
}
|
||||
|
||||
protected function photos(): Attribute
|
||||
{
|
||||
return Attribute::make(
|
||||
|
|
|
|||
|
|
@ -0,0 +1,39 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Traits\HasDateTimeFormatter;
|
||||
use EloquentFilter\Filterable;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
|
||||
class LedgerItem extends Model
|
||||
{
|
||||
use Filterable, HasDateTimeFormatter, HasFactory;
|
||||
|
||||
protected $casts = [
|
||||
'date' => 'date',
|
||||
'approved' => 'bool',
|
||||
];
|
||||
|
||||
protected $fillable = [
|
||||
'ledger_id',
|
||||
'ledger_item_type_id',
|
||||
'store_id',
|
||||
'date',
|
||||
'sales',
|
||||
'expenditure',
|
||||
'approved',
|
||||
];
|
||||
|
||||
public function ledger(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Ledger::class);
|
||||
}
|
||||
|
||||
public function type(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Keyword::class, 'ledger_item_type_id', 'key');
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('ledger_items', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->foreignId('ledger_id')->comment('上报数据ID');
|
||||
$table->string('ledger_item_type_id')->comment('上报数据类型, keywords.ledger_item_type');
|
||||
$table->foreignId('store_id')->comment('门店ID');
|
||||
$table->date('date')->comment('日期');
|
||||
$table->decimal('sales', 10, 2)->comment('销量');
|
||||
$table->decimal('expenditure', 10, 2)->comment('支出');
|
||||
$table->boolean('approved')->default(false)->comment('是否审核通过');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('ledger_items');
|
||||
}
|
||||
};
|
||||
|
|
@ -70,7 +70,19 @@ class KeywordSeeder extends Seeder
|
|||
[
|
||||
'key' => 'lottery_type',
|
||||
'name' => '彩种类型',
|
||||
'children' => ['大乐透', '七星彩', '排列三', '排列五', '合买', '即开'],
|
||||
'children' => [
|
||||
['name' => '大乐透', 'value' => 'ledger_item_type_1'],
|
||||
['name' => '七星彩', 'value' => 'ledger_item_type_2'],
|
||||
['name' => '排列三', 'value' => 'ledger_item_type_3'],
|
||||
['name' => '排列五', 'value' => 'ledger_item_type_4'],
|
||||
['name' => '合买', 'value' => 'ledger_item_type_5'],
|
||||
['name' => '即开', 'value' => 'ledger_item_type_6'],
|
||||
],
|
||||
],
|
||||
[
|
||||
'key' => 'ledger_item_type',
|
||||
'name' => '上报数据类型',
|
||||
'children' => ['大乐透', '七星彩', '排列三', '排列五', '合买', '即开', ['key' => 'ledger_item_type_other', 'name' => '其他']],
|
||||
],
|
||||
];
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue