复制常驻时,勾选批量复制

This commit is contained in:
Jerry Yan 2023-01-27 15:35:27 +08:00
parent 074e5e48e7
commit 275eeebd1d
9 changed files with 142 additions and 84 deletions

View File

@ -4,6 +4,7 @@ namespace App\Http\Controllers;
use App\Models\ProgramAppends;
use App\Models\Programs;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller as BaseController;
@ -36,8 +37,18 @@ class ProgramAppendConstructController extends BaseController
}
public function copy_view(Request $request, Programs $program) {
$programsId = Programs::query()->select("id")
->where("created_at", "<", $program->created_at->addWeeks(2))
->where("created_at", ">", $program->created_at->addWeeks(-2))
->pluck("id");
$broadcastList = ProgramAppends::query()->groupBy("name", "from")
->whereIn("program_id", $programsId)
->where("broadcast", "=", 1)
->select("name", "from")->selectRaw("max(id) as id")
->orderBy("id")->get();
return view("program.construct.append.copy_broadcast", [
"program" => $program,
"broadcastList" => $broadcastList,
]);
}
// endregion
@ -61,13 +72,15 @@ class ProgramAppendConstructController extends BaseController
public function copy_append(Request $request, Programs $program) {
$payload = $request->validate([
"id" => ["required", "numeric", "exists:App\Models\ProgramAppends,id"]
"ids" => ["required", "array", "exists:App\Models\ProgramAppends,id"]
]);
$original_append = ProgramAppends::query()->findOrFail($payload["id"]);
$append = $original_append->replicate();
$program->appends()->save($append);
$original_appends = ProgramAppends::query()->findMany($payload["ids"]);
$appends = $original_appends->map(function ($append) {
return $append->replicate();
});
$program->appends()->saveMany($appends);
return redirect(route("program.construct.append.list", [
"program"=>$append->program->id,
"program"=>$program->id,
]));
}
// endregion

View File

@ -0,0 +1,34 @@
<?php
namespace App\View\Components\Appends;
use App\Models\ProgramAppends;
use Illuminate\Support\Collection;
use Illuminate\View\Component;
class AppendList extends Component
{
/**
* @var ProgramAppends[]|Collection
*/
public $appends;
/**
* @var bool
*/
public $enableEdit;
/**
* @param $appends ProgramAppends|Collection
* @param bool $enableEdit
*/
public function __construct($appends, bool $enableEdit=true)
{
$this->appends = $appends;
$this->enableEdit = $enableEdit;
}
public function render()
{
return view('components.appends.list');
}
}

View File

@ -0,0 +1,32 @@
<?php
namespace App\View\Components\Appends;
use App\Models\ProgramAppends;
use Illuminate\View\Component;
class AppendListItem extends Component
{
/**
* @var ProgramAppends
*/
public $append;
/**
* @var bool
*/
public $enableEdit;
/**
* @param $append ProgramAppends
*/
public function __construct(ProgramAppends $append, bool $enableEdit=true)
{
$this->append = $append;
$this->enableEdit = $enableEdit;
}
public function render()
{
return view('components.appends.item');
}
}

View File

@ -0,0 +1,24 @@
<tr>
<td>
@if($enableEdit)
<a href="{{route("program.construct.append.edit", ["append"=>$append->id])}}">编辑</a>
@endif
<x-links.user_link :name="$append->from" :plt-id="$append->platform_id" :mid="$append->from_mid"></x-links.user_link>
</td>
<td>
@if($append->is_original)
点播
@else
追加
@endif
</td>
<td>
@if($append->is_original)
点播
@else
{{$append->name}}
@endif
</td>
<td>{{$append->price}}</td>
<td>{{$append->append}}</td>
</tr>

View File

@ -0,0 +1,16 @@
<table class="table-auto border-collapse w-full lg:border lg:border-black">
<thead>
<tr class="border border-black sticky bg-white lg:static top-0 left-0 right-0">
<td>老板</td>
<td>类型</td>
<td>要求</td>
<td>分值</td>
<td>补充说明</td>
</tr>
</thead>
<tbody>
@foreach($appends as $append)
<x-appends.append_list_item :append="$append" :enable-edit="$enableEdit"></x-appends.append_list_item>
@endforeach
</tbody>
</table>

View File

@ -25,17 +25,28 @@
@endif
</label>
@endif
<label class="block my-2" id="broadcast_select">
复制的名称
<input class="form-input border-0 border-b-2 w-full" autocomplete="off" type="text" name="name" value="{{ old('name') }}">
<input class="form-input border-0 border-b-2 w-full" id="broadcast_id" type="hidden" name="id" value="{{ old('id') }}">
<label>
复制的常驻留言,请选择:
<br>
@foreach($broadcastList as $broadcast)
<label>
<input type="checkbox" name="ids[]" value="{{$broadcast->id}}">
{{$broadcast->from}}】:{{$broadcast->name}}
</label>
<br>
@endforeach
</label>
@include("common.form_error")
@if(sizeof($broadcastList) <= 0)
<div class="block my-2 text-center">
无可复制内容
</div>
@else
<div class="block my-2 text-center">
<input class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" type="submit">
</div>
@endempty
</form>
@include("common.footer")
</body>
<script src="{{ mix('/js/component/broadcast_select.js') }}" rel="script"></script>
</html>

View File

@ -69,42 +69,7 @@
</form>
<div class="hidden lg:block lg:w-1/2">
<div>已有记录</div>
<table class="table-auto border-collapse w-full lg:border lg:border-black">
<thead>
<tr class="border border-black sticky bg-white lg:static top-0 left-0 right-0">
<td>老板</td>
<td>类型</td>
<td>要求</td>
<td>分值</td>
<td>补充说明</td>
</tr>
</thead>
<tbody>
@foreach($program->appends as $append)
<tr>
<td>
<x-links.user_link :name="$append->from" :plt-id="$append->platform_id" :mid="$append->from_mid"></x-links.user_link>
</td>
<td>
@if($append->is_original)
点播
@else
追加
@endif
</td>
<td>
@if($append->is_original)
点播
@else
{{$append->name}}
@endif
</td>
<td>{{$append->price}}</td>
<td>{{$append->append}}</td>
</tr>
@endforeach
</tbody>
</table>
<x-appends.append_list :appends="$program->appends" :enable-edit="false"></x-appends.append_list>
</div>
</div>
@include("common.footer")

View File

@ -9,43 +9,7 @@
@include("common.header")
<a href="{{route("program.construct.append.add", ["program"=>$program->id])}}">新增</a>
<a href="{{route("program.construct.append.copy", ["program"=>$program->id])}}">复制常驻留言</a>
<table class="table-auto border-collapse w-full lg:border lg:border-black">
<thead>
<tr class="border border-black sticky bg-white lg:static top-0 left-0 right-0">
<td>老板</td>
<td>类型</td>
<td>要求</td>
<td>分值</td>
<td>补充说明</td>
</tr>
</thead>
<tbody>
@foreach($appends as $append)
<tr>
<td>
<a href="{{route("program.construct.append.edit", ["append"=>$append->id])}}">编辑</a>
<x-links.user_link :name="$append->from" :plt-id="$append->platform_id" :mid="$append->from_mid"></x-links.user_link>
</td>
<td>
@if($append->is_original)
点播
@else
追加
@endif
</td>
<td>
@if($append->is_original)
点播
@else
{{$append->name}}
@endif
</td>
<td>{{$append->price}}</td>
<td>{{$append->append}}</td>
</tr>
@endforeach
</tbody>
</table>
<x-appends.append_list :appends="$appends"></x-appends.append_list>
@include("common.footer")
</body>
</html>

View File

@ -13,7 +13,6 @@ const mix = require('laravel-mix');
mix
.js('resources/js/component/from_select.js', 'public/js/component')
.js('resources/js/component/broadcast_select.js', 'public/js/component')
.js('resources/js/app.js', 'public/js')
.extract(['axios', 'lodash'])
.js('resources/js/webauthn.js', 'public/js')