This commit is contained in:
2025-12-09 12:50:21 +08:00
parent 14f6a468ef
commit 6a78996b8a
13 changed files with 1064 additions and 488 deletions

View File

@@ -1,52 +1,83 @@
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>录播节目点播信息修改</title>
<title>复制常驻留言 - 录播查询</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
<script src="{{ mix('/js/manifest.js') }}" rel="script"></script>
<link href="{{ asset('/css/vendor/picomplete/picomplete.css') }}" rel="stylesheet"/>
</head>
<body>
<body class="bg-gray-50 dark:bg-gray-900 min-h-screen flex flex-col text-gray-900 dark:text-gray-100">
@include("common.header")
<form class="w-full lg:w-1/2 lg:ml-6 border-2" action="" method="post" enctype="multipart/form-data">
@if($program)
<label class="block my-2">
结束图像
@if(count($program->video_pivots) > 0 && $program->video_pivots->last()->stop_image)
<img src="{{$program->video_pivots->last()->stop_image}}" alt="结束图片">
@else
<div>
<a href="{{route("program.construct.video.list", ["program"=>$program->id])}}"
class="block px-6 py-2 inline-block rounded-full bg-cyan-600 text-white">
去建设
</a>
</div>
@endif
</label>
@endif
<div>
复制的常驻留言,请选择:
<br>
@foreach($broadcastList as $broadcast)
<label>
<input type="checkbox" name="ids[]" value="{{$broadcast->id}}">
{{$broadcast->from}}】:{{$broadcast->name}}
</label>
<br>
@endforeach
</div>
@include("common.form_error")
@if(sizeof($broadcastList) <= 0)
<div class="block my-2 text-center">
无可复制内容
<main class="flex-grow container mx-auto px-4 sm:px-6 lg:px-8 py-8">
<div class="max-w-3xl mx-auto">
<div class="md:flex md:items-center md:justify-between mb-8">
<h1 class="text-2xl font-bold text-gray-900 dark:text-white">
复制常驻留言
</h1>
<a href="{{ route("program.construct.append.list", ["program"=>$program->id]) }}" class="mt-4 md:mt-0 inline-flex items-center text-sm text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200">
<svg class="h-4 w-4 mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 19l-7-7m0 0l7-7m-7 7h18"></path></svg>
返回列表
</a>
</div>
<div class="bg-white dark:bg-gray-800 shadow rounded-lg overflow-hidden">
<form class="p-6 space-y-6" action="" method="post" enctype="multipart/form-data">
@csrf
@if($program)
<div class="bg-gray-50 dark:bg-gray-700/30 rounded-lg p-4 mb-6">
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">结束图像参考</label>
@if(count($program->video_pivots) > 0 && $program->video_pivots->last()->stop_image)
<img src="{{$program->video_pivots->last()->stop_image}}" alt="结束图片" class="h-32 w-auto object-cover rounded border border-gray-200 dark:border-gray-600">
@else
<div class="text-sm text-gray-500 italic">暂无图像</div>
<a href="{{route("program.construct.video.list", ["program"=>$program->id])}}" class="mt-2 inline-flex items-center text-xs text-indigo-600 hover:text-indigo-900">去关联视频建设 &rarr;</a>
@endif
</div>
@endif
<div>
<h3 class="text-lg font-medium leading-6 text-gray-900 dark:text-white mb-4">选择要复制的留言</h3>
@if(sizeof($broadcastList) <= 0)
<div class="text-center py-8 text-gray-500 dark:text-gray-400">
暂无可复制的内容
</div>
@else
<div class="space-y-3 max-h-96 overflow-y-auto border border-gray-200 dark:border-gray-700 rounded-md p-4">
@foreach($broadcastList as $broadcast)
<div class="relative flex items-start">
<div class="flex items-center h-5">
<input id="broadcast-{{$broadcast->id}}" name="ids[]" value="{{$broadcast->id}}" type="checkbox"
class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded dark:bg-gray-700 dark:border-gray-600">
</div>
<div class="ml-3 text-sm">
<label for="broadcast-{{$broadcast->id}}" class="font-medium text-gray-700 dark:text-gray-300">
{{$broadcast->from}}
</label>
<p class="text-gray-500 dark:text-gray-400">{{$broadcast->name}}</p>
</div>
</div>
@endforeach
</div>
@endif
</div>
@include("common.form_error")
@if(sizeof($broadcastList) > 0)
<div class="flex items-center justify-end pt-4 border-t border-gray-200 dark:border-gray-700">
<button type="submit" class="inline-flex justify-center py-2 px-6 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
确认复制
</button>
</div>
@endif
</form>
</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>
</main>
@include("common.footer")
</body>
</html>
</html>

View File

@@ -1,78 +1,134 @@
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>录播节目点播信息修改</title>
<title>录播节目点播信息修改 - 录播查询</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
<script src="{{ mix('/js/manifest.js') }}" rel="script"></script>
<link href="{{ asset('/css/vendor/picomplete/picomplete.css') }}" rel="stylesheet"/>
</head>
<body>
<body class="bg-gray-50 dark:bg-gray-900 min-h-screen flex flex-col text-gray-900 dark:text-gray-100">
@include("common.header")
<div class="flex gap-3 px-3">
<form class="w-full lg:w-1/2 border-2" action="" method="post" enctype="multipart/form-data">
<input type="hidden" name="id" value="{{$append->id}}">
@if($program)
<label class="block my-2">
结束图像
@if(count($program->video_pivots) > 0 && $program->video_pivots->last()->stop_image)
<img src="{{$program->video_pivots->first()->stop_image}}" alt="结束图片">
@else
<div>
<a href="{{route("program.construct.video.list", ["program"=>$program->id])}}"
class="block px-6 py-2 inline-block rounded-full bg-cyan-600 text-white">
去建设
</a>
<main class="flex-grow container mx-auto px-4 sm:px-6 lg:px-8 py-8">
<div class="max-w-7xl mx-auto">
<div class="md:flex md:items-center md:justify-between mb-8">
<h1 class="text-2xl font-bold text-gray-900 dark:text-white">
点播/追加信息修改
</h1>
<a href="{{ route('program.construct.append.list', ['program'=>$program->id]) }}" class="mt-4 md:mt-0 inline-flex items-center text-sm text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200">
<svg class="h-4 w-4 mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 19l-7-7m0 0l7-7m-7 7h18"></path></svg>
返回列表
</a>
</div>
<div class="flex flex-col lg:flex-row gap-8">
<!-- Left Column: Form -->
<div class="w-full lg:w-1/2">
<div class="bg-white dark:bg-gray-800 shadow rounded-lg overflow-hidden">
<form class="p-6 space-y-6" action="" method="post" enctype="multipart/form-data">
@csrf
<input type="hidden" name="id" value="{{$append->id}}">
@if($program)
<div>
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">结束图像预览</label>
@if(count($program->video_pivots) > 0 && $program->video_pivots->last()->stop_image)
<div class="rounded-lg border border-gray-200 dark:border-gray-700 overflow-hidden">
<img src="{{$program->video_pivots->last()->stop_image}}" alt="结束图片" class="w-full h-auto object-cover">
</div>
<p class="mt-1 text-xs text-gray-500">仅供参考,用于确认点播内容是否正确。</p>
@else
<div class="rounded-lg border-2 border-dashed border-gray-300 dark:border-gray-600 p-6 text-center">
<span class="block text-sm text-gray-500 dark:text-gray-400 mb-2">暂无结束图像</span>
<a href="{{route("program.construct.video.list", ["program"=>$program->id])}}"
class="inline-flex items-center px-4 py-2 border border-transparent text-xs font-medium rounded-full shadow-sm text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none">
去关联视频建设
</a>
</div>
@endif
</div>
@endif
<div>
<label for="name" class="block text-sm font-medium text-gray-700 dark:text-gray-300">追加内容(点播可不填)</label>
<input type="text" name="name" id="name" autocomplete="off" value="{{ old('name', $append->name) }}"
class="mt-1 block w-full rounded-md border-gray-300 dark:border-gray-600 dark:bg-gray-700 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:text-sm py-2">
</div>
<div id="from_select">
<label for="from" class="block text-sm font-medium text-gray-700 dark:text-gray-300">点播老板</label>
<input type="text" name="from" id="from" autocomplete="off" value="{{ old('from', $append->from) }}"
class="mt-1 block w-full rounded-md border-gray-300 dark:border-gray-600 dark:bg-gray-700 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:text-sm py-2">
</div>
<div class="flex items-center">
<input id="is_original" name="is_original" type="checkbox" value="1" @if(old('is_original', $append->is_original) == 1) checked @endif
class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded dark:bg-gray-700 dark:border-gray-600">
<label for="is_original" class="ml-2 block text-sm text-gray-900 dark:text-gray-300">
纯点播(非追加内容)
</label>
</div>
<div>
<label for="price" class="block text-sm font-medium text-gray-700 dark:text-gray-300">SC 金额 ()</label>
<div class="mt-1 relative rounded-md shadow-sm">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<span class="text-gray-500 sm:text-sm">¥</span>
</div>
<input type="number" name="price" id="price" step="0.5" value="{{ old('price', $append->price) }}"
class="focus:ring-indigo-500 focus:border-indigo-500 block w-full pl-7 pr-12 sm:text-sm border-gray-300 dark:border-gray-600 dark:bg-gray-700 rounded-md py-2" placeholder="0.00">
</div>
</div>
<div>
<label for="append" class="block text-sm font-medium text-gray-700 dark:text-gray-300">补充说明</label>
<input type="text" name="append" id="append" autocomplete="off" value="{{ old('append', $append->append) }}"
class="mt-1 block w-full rounded-md border-gray-300 dark:border-gray-600 dark:bg-gray-700 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:text-sm py-2">
</div>
@include("common.form_error")
<div class="flex items-center justify-between pt-4 border-t border-gray-200 dark:border-gray-700">
@if(count($program->video_pivots) > 0)
<div class="flex space-x-2">
<a class="text-xs text-indigo-600 hover:text-indigo-900 dark:text-indigo-400 dark:hover:text-indigo-300" target="_blank"
href="https://www.bilibili.com/video/{{$program->video_pivots->first()->video_bvid}}?p={{$program->video_pivots->first()->start_part}}&t={{$program->video_pivots->first()->start_sec}}">
预览开始
</a>
<span class="text-gray-300">|</span>
<a class="text-xs text-indigo-600 hover:text-indigo-900 dark:text-indigo-400 dark:hover:text-indigo-300" target="_blank"
href="https://www.bilibili.com/video/{{$program->video_pivots->last()->video_bvid}}?p={{$program->video_pivots->last()->stop_part}}&t={{$program->video_pivots->last()->stop_sec}}">
预览结束
</a>
</div>
@else
<div></div>
@endif
<button type="submit" class="inline-flex justify-center py-2 px-6 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
提交
</button>
</div>
</form>
</div>
</div>
<!-- Right Column: Existing List -->
<div class="hidden lg:block lg:w-1/2">
<div class="bg-white dark:bg-gray-800 shadow rounded-lg overflow-hidden sticky top-24">
<div class="px-6 py-4 border-b border-gray-200 dark:border-gray-700">
<h3 class="text-lg font-medium leading-6 text-gray-900 dark:text-white">已有记录</h3>
</div>
@endif
</label>
@endif
<label class="block my-2 mx-2">
追加内容(点播可不填)
<input class="form-input border-0 border-b-2 w-full" autocomplete="off" type="text" name="name" value="{{ old('name', $append->name) }}">
</label>
<label class="block my-2 mx-2" id="from_select">
点播老板
<input class="form-input border-0 border-b-2 w-full" autocomplete="off" type="text" name="from" value="{{ old('from', $append->from) }}">
</label>
<label class="block my-2 mx-2">
是否点播(不是追加)
<input class="form-checkbox" type="checkbox" name="is_original" value="1" @if(old('is_original', $append->is_original) == 1) checked @endif>
</label>
<label class="block my-2 mx-2">
<input class="form-input border-0 border-b-2 w-full" type="number" step="0.5" name="price" value="{{ old('price', $append->price) }}">
</label>
<label class="block my-2 mx-2">
补充说明
<input class="form-input border-0 border-b-2 w-full" autocomplete="off" type="text" name="append" value="{{ old('append', $append->append) }}">
</label>
@include("common.form_error")
<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 class="p-6 max-h-[80vh] overflow-y-auto">
<x-appends.append_list :appends="$program->appends" :enable-edit="false"></x-appends.append_list>
</div>
</div>
</div>
</div>
<div class="block my-2">
@if(count($program->video_pivots) > 0)
<a class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" target="_blank"
href="https://www.bilibili.com/video/{{$program->video_pivots->first()->video_bvid}}?p={{$program->video_pivots->first()->start_part}}&t={{$program->video_pivots->first()->start_sec}}"
title="P{{$program->video_pivots->first()->start_part}}#{{$program->video_pivots->first()->start_time}}"
>打开至开始位置</a>
<a class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" target="_blank"
href="https://www.bilibili.com/video/{{$program->video_pivots->last()->video_bvid}}?p={{$program->video_pivots->last()->stop_part}}&t={{$program->video_pivots->last()->stop_sec}}"
title="P{{$program->video_pivots->last()->stop_part}}#{{$program->video_pivots->last()->stop_time}}"
>打开至结束位置</a>
@endif
<a class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white"
href="{{route('program.construct.append.list', ['program'=>$program->id])}}"
>返回列表</a>
</div>
</form>
<div class="hidden lg:block lg:w-1/2">
<div>已有记录</div>
<x-appends.append_list :appends="$program->appends" :enable-edit="false"></x-appends.append_list>
</div>
</div>
</main>
@include("common.footer")
</body>
<script src="{{ mix('/js/component/from_select.js') }}" rel="script"></script>
</html>
</body>
</html>

View File

@@ -1,15 +1,55 @@
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>录播节目点播信息维护</title>
<title>关联点播信息管理 - 录播查询</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
</head>
<body>
<body class="bg-gray-50 dark:bg-gray-900 min-h-screen flex flex-col text-gray-900 dark:text-gray-100">
@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>
<x-appends.append_list :appends="$appends"></x-appends.append_list>
<main class="flex-grow container mx-auto px-4 sm:px-6 lg:px-8 py-8">
<div class="max-w-4xl mx-auto">
<div class="flex flex-col md:flex-row md:items-center md:justify-between mb-8 space-y-4 md:space-y-0">
<div>
<h1 class="text-2xl font-bold text-gray-900 dark:text-white">点播/追加信息管理</h1>
<p class="mt-1 text-sm text-gray-500 dark:text-gray-400">
当前节目:{{ $program->name }}
</p>
</div>
<div class="flex flex-wrap gap-3">
<a href="{{ route("program.construct.edit", ["program"=>$program->id]) }}" class="inline-flex items-center px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm text-sm font-medium text-gray-700 dark:text-gray-200 bg-white dark:bg-gray-800 hover:bg-gray-50 dark:hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
<svg class="h-4 w-4 mr-1.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 17l-5-5m0 0l5-5m-5 5h12"></path></svg>
返回节目
</a>
<a href="{{ route("program.construct.append.copy", ["program"=>$program->id]) }}" class="inline-flex items-center px-4 py-2 border border-indigo-600 rounded-md shadow-sm text-sm font-medium text-indigo-600 bg-white hover:bg-indigo-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:bg-gray-800 dark:text-indigo-400 dark:border-indigo-500 dark:hover:bg-gray-700">
<svg class="h-4 w-4 mr-1.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7v8a2 2 0 002 2h6M8 7V5a2 2 0 012-2h4.586a1 1 0 01.707.293l4.414 4.414a1 1 0 01.293.707V15a2 2 0 01-2 2h-2M8 7H6a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2v-2"></path></svg>
复制常驻
</a>
<a href="{{ route("program.construct.append.add", ["program"=>$program->id]) }}" class="inline-flex items-center px-4 py-2 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
<svg class="h-4 w-4 mr-1.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4"></path></svg>
新增条目
</a>
</div>
</div>
<div class="bg-white dark:bg-gray-800 shadow rounded-lg overflow-hidden">
<div class="px-4 py-5 sm:p-6">
@if(count($appends) > 0)
<div class="space-y-4">
<x-appends.append_list :appends="$appends"></x-appends.append_list>
</div>
@else
<div class="text-center py-10">
<svg class="mx-auto h-12 w-12 text-gray-400" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path></svg>
<h3 class="mt-2 text-sm font-medium text-gray-900 dark:text-white">暂无点播/追加信息</h3>
<p class="mt-1 text-sm text-gray-500 dark:text-gray-400">点击上方按钮添加新的条目。</p>
</div>
@endif
</div>
</div>
</div>
</main>
@include("common.footer")
</body>
</html>
</html>