You've already forked lubo_comment_query
样式3
This commit is contained in:
@@ -1,35 +1,93 @@
|
|||||||
<html lang="zh">
|
<html lang="zh">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>弹幕导入</title>
|
<title>弹幕导入 - 录播查询</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
||||||
</head>
|
</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")
|
@include("common.header")
|
||||||
<form class="w-full lg:w-1/2 lg:ml-6 border-2" action="" method="post" enctype="multipart/form-data">
|
|
||||||
@csrf
|
<main class="flex-grow container mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
||||||
<label class="block my-2">
|
<div class="max-w-3xl mx-auto">
|
||||||
BVID
|
<div class="md:flex md:items-center md:justify-between mb-8">
|
||||||
<input class="form-input border-0 border-b-2 w-full" type="text" name="video_bvid" required value="{{ old('video_bvid') }}">
|
<h1 class="text-2xl font-bold text-gray-900 dark:text-white">
|
||||||
</label>
|
弹幕导入
|
||||||
<label class="block my-2">
|
</h1>
|
||||||
弹幕类型
|
<a href="{{ url()->previous() }}" 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">
|
||||||
<span class="block form-input border-0 border-b-2 w-full">
|
<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>
|
||||||
<input type="radio" value="1" name="platform_id" checked>B站
|
返回
|
||||||
<input type="radio" value="2" name="platform_id" disabled>西瓜
|
</a>
|
||||||
<input type="radio" value="3" name="platform_id" disabled>抖音
|
</div>
|
||||||
</span>
|
|
||||||
</label>
|
<div class="bg-white dark:bg-gray-800 shadow rounded-lg overflow-hidden">
|
||||||
<label class="block my-2">
|
<form class="p-6 space-y-6" action="" method="post" enctype="multipart/form-data">
|
||||||
弹幕文件
|
@csrf
|
||||||
<input class="form-input border-0 border-b-2 w-full" multiple type="file" name="file[]" accept="text/xml">
|
|
||||||
</label>
|
<div>
|
||||||
@include("common.form_error")
|
<label for="video_bvid" class="block text-sm font-medium text-gray-700 dark:text-gray-300">BVID</label>
|
||||||
<div class="block my-2 text-center">
|
<input type="text" name="video_bvid" id="video_bvid" required value="{{ old('video_bvid') }}"
|
||||||
<input class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" type="submit">
|
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>
|
||||||
|
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">弹幕类型</label>
|
||||||
|
<div class="space-y-4 sm:flex sm:items-center sm:space-y-0 sm:space-x-10">
|
||||||
|
<div class="flex items-center">
|
||||||
|
<input id="platform_bilibili" name="platform_id" type="radio" value="1" checked
|
||||||
|
class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 dark:border-gray-600 dark:bg-gray-700">
|
||||||
|
<label for="platform_bilibili" class="ml-3 block text-sm font-medium text-gray-700 dark:text-gray-300">
|
||||||
|
B站
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center opacity-50 cursor-not-allowed">
|
||||||
|
<input id="platform_ixigua" name="platform_id" type="radio" value="2" disabled
|
||||||
|
class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 dark:border-gray-600 dark:bg-gray-700">
|
||||||
|
<label for="platform_ixigua" class="ml-3 block text-sm font-medium text-gray-700 dark:text-gray-300">
|
||||||
|
西瓜 (暂未开放)
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center opacity-50 cursor-not-allowed">
|
||||||
|
<input id="platform_douyin" name="platform_id" type="radio" value="3" disabled
|
||||||
|
class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 dark:border-gray-600 dark:bg-gray-700">
|
||||||
|
<label for="platform_douyin" class="ml-3 block text-sm font-medium text-gray-700 dark:text-gray-300">
|
||||||
|
抖音 (暂未开放)
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">弹幕文件 (支持批量)</label>
|
||||||
|
<div class="mt-1 flex justify-center px-6 pt-5 pb-6 border-2 border-gray-300 dark:border-gray-600 border-dashed rounded-md hover:border-indigo-500 transition-colors">
|
||||||
|
<div class="space-y-1 text-center">
|
||||||
|
<svg class="mx-auto h-12 w-12 text-gray-400" stroke="currentColor" fill="none" viewBox="0 0 48 48" aria-hidden="true">
|
||||||
|
<path d="M28 8H12a4 4 0 00-4 4v20m32-12v8m0 0v8a4 4 0 01-4 4H12a4 4 0 01-4-4v-4m32-4l-3.172-3.172a4 4 0 00-5.656 0L28 28M8 32l9.172-9.172a4 4 0 015.656 0L28 28m0 0l4 4m4-24h8m-4-4v8m-12 4h.02" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
||||||
|
</svg>
|
||||||
|
<div class="flex text-sm text-gray-600 dark:text-gray-400">
|
||||||
|
<label for="file-upload" class="relative cursor-pointer bg-white dark:bg-gray-800 rounded-md font-medium text-indigo-600 dark:text-indigo-400 hover:text-indigo-500 focus-within:outline-none focus-within:ring-2 focus-within:ring-offset-2 focus-within:ring-indigo-500">
|
||||||
|
<span>上传文件</span>
|
||||||
|
<input id="file-upload" name="file[]" multiple type="file" accept="text/xml" class="sr-only" onchange="document.getElementById('file-count').innerText = this.files.length + ' 个文件已选择'">
|
||||||
|
</label>
|
||||||
|
<p class="pl-1">或拖拽文件到这里</p>
|
||||||
|
</div>
|
||||||
|
<p class="text-xs text-gray-500 dark:text-gray-500">XML 格式</p>
|
||||||
|
<p class="text-sm text-indigo-600 font-medium" id="file-count"></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@include("common.form_error")
|
||||||
|
|
||||||
|
<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>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</main>
|
||||||
@include("common.footer")
|
@include("common.footer")
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -1,52 +1,83 @@
|
|||||||
<html lang="zh">
|
<html lang="zh">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>录播节目点播信息修改</title>
|
<title>复制常驻留言 - 录播查询</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
||||||
<script src="{{ mix('/js/manifest.js') }}" rel="script"></script>
|
<script src="{{ mix('/js/manifest.js') }}" rel="script"></script>
|
||||||
<link href="{{ asset('/css/vendor/picomplete/picomplete.css') }}" rel="stylesheet"/>
|
<link href="{{ asset('/css/vendor/picomplete/picomplete.css') }}" rel="stylesheet"/>
|
||||||
</head>
|
</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")
|
@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)
|
<main class="flex-grow container mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
||||||
<label class="block my-2">
|
<div class="max-w-3xl mx-auto">
|
||||||
结束图像
|
<div class="md:flex md:items-center md:justify-between mb-8">
|
||||||
@if(count($program->video_pivots) > 0 && $program->video_pivots->last()->stop_image)
|
<h1 class="text-2xl font-bold text-gray-900 dark:text-white">
|
||||||
<img src="{{$program->video_pivots->last()->stop_image}}" alt="结束图片">
|
复制常驻留言
|
||||||
@else
|
</h1>
|
||||||
<div>
|
<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">
|
||||||
<a href="{{route("program.construct.video.list", ["program"=>$program->id])}}"
|
<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>
|
||||||
class="block px-6 py-2 inline-block rounded-full bg-cyan-600 text-white">
|
返回列表
|
||||||
去建设
|
</a>
|
||||||
</a>
|
</div>
|
||||||
</div>
|
|
||||||
@endif
|
<div class="bg-white dark:bg-gray-800 shadow rounded-lg overflow-hidden">
|
||||||
</label>
|
<form class="p-6 space-y-6" action="" method="post" enctype="multipart/form-data">
|
||||||
@endif
|
@csrf
|
||||||
<div>
|
|
||||||
复制的常驻留言,请选择:
|
@if($program)
|
||||||
<br>
|
<div class="bg-gray-50 dark:bg-gray-700/30 rounded-lg p-4 mb-6">
|
||||||
@foreach($broadcastList as $broadcast)
|
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">结束图像参考</label>
|
||||||
<label>
|
@if(count($program->video_pivots) > 0 && $program->video_pivots->last()->stop_image)
|
||||||
<input type="checkbox" name="ids[]" value="{{$broadcast->id}}">
|
<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">
|
||||||
【{{$broadcast->from}}】:{{$broadcast->name}}
|
@else
|
||||||
</label>
|
<div class="text-sm text-gray-500 italic">暂无图像</div>
|
||||||
<br>
|
<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">去关联视频建设 →</a>
|
||||||
@endforeach
|
@endif
|
||||||
</div>
|
</div>
|
||||||
@include("common.form_error")
|
@endif
|
||||||
@if(sizeof($broadcastList) <= 0)
|
|
||||||
<div class="block my-2 text-center">
|
<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>
|
</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>
|
</div>
|
||||||
@endempty
|
</main>
|
||||||
</form>
|
|
||||||
@include("common.footer")
|
@include("common.footer")
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -1,78 +1,134 @@
|
|||||||
<html lang="zh">
|
<html lang="zh">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>录播节目点播信息修改</title>
|
<title>录播节目点播信息修改 - 录播查询</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
||||||
<script src="{{ mix('/js/manifest.js') }}" rel="script"></script>
|
<script src="{{ mix('/js/manifest.js') }}" rel="script"></script>
|
||||||
<link href="{{ asset('/css/vendor/picomplete/picomplete.css') }}" rel="stylesheet"/>
|
<link href="{{ asset('/css/vendor/picomplete/picomplete.css') }}" rel="stylesheet"/>
|
||||||
</head>
|
</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")
|
@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">
|
<main class="flex-grow container mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
||||||
<input type="hidden" name="id" value="{{$append->id}}">
|
<div class="max-w-7xl mx-auto">
|
||||||
@if($program)
|
<div class="md:flex md:items-center md:justify-between mb-8">
|
||||||
<label class="block my-2">
|
<h1 class="text-2xl font-bold text-gray-900 dark:text-white">
|
||||||
结束图像
|
点播/追加信息修改
|
||||||
@if(count($program->video_pivots) > 0 && $program->video_pivots->last()->stop_image)
|
</h1>
|
||||||
<img src="{{$program->video_pivots->first()->stop_image}}" alt="结束图片">
|
<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">
|
||||||
@else
|
<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>
|
||||||
<div>
|
返回列表
|
||||||
<a href="{{route("program.construct.video.list", ["program"=>$program->id])}}"
|
</a>
|
||||||
class="block px-6 py-2 inline-block rounded-full bg-cyan-600 text-white">
|
</div>
|
||||||
去建设
|
|
||||||
</a>
|
<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>
|
</div>
|
||||||
@endif
|
<div class="p-6 max-h-[80vh] overflow-y-auto">
|
||||||
</label>
|
<x-appends.append_list :appends="$program->appends" :enable-edit="false"></x-appends.append_list>
|
||||||
@endif
|
</div>
|
||||||
<label class="block my-2 mx-2">
|
</div>
|
||||||
追加内容(点播可不填)
|
</div>
|
||||||
<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>
|
</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>
|
||||||
</div>
|
</main>
|
||||||
@include("common.footer")
|
@include("common.footer")
|
||||||
</body>
|
|
||||||
<script src="{{ mix('/js/component/from_select.js') }}" rel="script"></script>
|
<script src="{{ mix('/js/component/from_select.js') }}" rel="script"></script>
|
||||||
</html>
|
</body>
|
||||||
|
</html>
|
||||||
@@ -1,15 +1,55 @@
|
|||||||
<html lang="zh">
|
<html lang="zh">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>录播节目点播信息维护</title>
|
<title>关联点播信息管理 - 录播查询</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
||||||
</head>
|
</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")
|
@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>
|
<main class="flex-grow container mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
||||||
<x-appends.append_list :appends="$appends"></x-appends.append_list>
|
<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")
|
@include("common.footer")
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -1,31 +1,64 @@
|
|||||||
<html lang="zh">
|
<html lang="zh">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>录播节目批量导入</title>
|
<title>录播节目批量导入 - 录播查询</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
||||||
</head>
|
</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")
|
@include("common.header")
|
||||||
<form class="w-full lg:w-1/2 lg:ml-6 border-2" action="" method="post" enctype="multipart/form-data">
|
|
||||||
@csrf
|
<main class="flex-grow container mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
||||||
<label class="block my-2">
|
<div class="max-w-3xl mx-auto">
|
||||||
节目单内容
|
<div class="md:flex md:items-center md:justify-between mb-8">
|
||||||
<textarea class="form-input border-0 border-b-2 w-full" rows="5" name="content" required>{{ old('content') }}</textarea>
|
<h1 class="text-2xl font-bold text-gray-900 dark:text-white">
|
||||||
</label>
|
批量导入节目单
|
||||||
<label class="block my-2">
|
</h1>
|
||||||
BVID
|
<a href="{{ route("program.construct.list") }}" 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">
|
||||||
<input class="form-input border-0 border-b-2 w-full" type="text" name="bvid" required value="{{ old('bvid') }}">
|
<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>
|
||||||
</label>
|
返回列表
|
||||||
@include("common.form_error")
|
</a>
|
||||||
<div class="block my-2 text-center">
|
</div>
|
||||||
<input class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" type="submit">
|
|
||||||
|
<div class="bg-white dark:bg-gray-800 shadow rounded-lg overflow-hidden">
|
||||||
|
<div class="px-6 py-4 bg-yellow-50 dark:bg-yellow-900/30 border-b border-yellow-100 dark:border-yellow-900/50">
|
||||||
|
<h3 class="text-sm font-medium text-yellow-800 dark:text-yellow-200">
|
||||||
|
使用说明
|
||||||
|
</h3>
|
||||||
|
<div class="mt-2 text-sm text-yellow-700 dark:text-yellow-300">
|
||||||
|
<p>请将整理好的节目单内容粘贴到下方文本框中。格式请参考既定规范(例如:时间轴 + 节目名)。</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<form class="p-6 space-y-6" action="" method="post" enctype="multipart/form-data">
|
||||||
|
@csrf
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label for="content" class="block text-sm font-medium text-gray-700 dark:text-gray-300">节目单内容</label>
|
||||||
|
<div class="mt-1">
|
||||||
|
<textarea id="content" name="content" rows="10" required class="shadow-sm focus:ring-indigo-500 focus:border-indigo-500 block w-full sm:text-sm border-gray-300 rounded-md dark:bg-gray-700 dark:border-gray-600 dark:text-white font-mono" placeholder="00:00 节目A 10:30 节目B...">{{ old('content') }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label for="bvid" class="block text-sm font-medium text-gray-700 dark:text-gray-300">关联视频 BVID</label>
|
||||||
|
<input type="text" name="bvid" id="bvid" required value="{{ old('bvid') }}"
|
||||||
|
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"
|
||||||
|
placeholder="BV...">
|
||||||
|
<p class="mt-1 text-xs text-gray-500 dark:text-gray-400">所有导入的节目将默认关联到此视频。</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@include("common.form_error")
|
||||||
|
|
||||||
|
<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>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="block my-2">
|
</main>
|
||||||
<a class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white"
|
|
||||||
href="{{ route("program.construct.list") }}">返回列表</a>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
@include("common.footer")
|
@include("common.footer")
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -1,53 +1,117 @@
|
|||||||
<html lang="zh">
|
<html lang="zh">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>录播节目修改</title>
|
<title>录播节目修改 - 录播查询</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
||||||
</head>
|
</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")
|
@include("common.header")
|
||||||
<form class="w-full lg:w-1/2 lg:ml-6 border-2" action="" method="post" enctype="multipart/form-data">
|
|
||||||
<input type="hidden" name="id" value="{{$program->id}}">
|
<main class="flex-grow container mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
||||||
<label class="block my-2">
|
<div class="max-w-3xl mx-auto">
|
||||||
节目名称
|
<div class="md:flex md:items-center md:justify-between mb-8">
|
||||||
<input class="form-input border-0 border-b-2 w-full" autocomplete="off" type="text" required name="name" value="{{ old("name", $program->name) }}">
|
<h1 class="text-2xl font-bold text-gray-900 dark:text-white">
|
||||||
</label>
|
@if($program->id) 编辑节目 @else 添加节目 @endif
|
||||||
<label class="block my-2">
|
</h1>
|
||||||
节目难度
|
<a href="{{ route("program.construct.list") }}" 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">
|
||||||
<input class="form-input border-0 border-b-2 w-full" autocomplete="off" type="text" name="difficulty" value="{{ old("difficulty", $program->difficulty) }}">
|
<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>
|
||||||
</label>
|
返回列表
|
||||||
<label class="block my-2">
|
</a>
|
||||||
节目要求
|
</div>
|
||||||
<input class="form-input border-0 border-b-2 w-full" autocomplete="off" type="text" name="desc" value="{{ old("desc", $program->desc) }}">
|
|
||||||
</label>
|
<div class="bg-white dark:bg-gray-800 shadow rounded-lg overflow-hidden">
|
||||||
<label class="block my-2">
|
<form class="p-6 space-y-6" action="" method="post" enctype="multipart/form-data">
|
||||||
是否结束维护
|
@csrf
|
||||||
<input class="form-checkbox" type="checkbox" name="status" value="1" @if(old("status", $program->status) == 1) checked @endif>
|
<input type="hidden" name="id" value="{{$program->id}}">
|
||||||
</label>
|
|
||||||
@include("common.form_error")
|
<div>
|
||||||
<div class="block my-2 text-center">
|
<label for="name" class="block text-sm font-medium text-gray-700 dark:text-gray-300">节目名称</label>
|
||||||
<input class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" type="submit">
|
<input type="text" name="name" id="name" required autocomplete="off" value="{{ old("name", $program->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>
|
||||||
|
<label for="difficulty" class="block text-sm font-medium text-gray-700 dark:text-gray-300">节目难度</label>
|
||||||
|
<input type="text" name="difficulty" id="difficulty" autocomplete="off" value="{{ old("difficulty", $program->difficulty) }}"
|
||||||
|
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>
|
||||||
|
<label for="desc" class="block text-sm font-medium text-gray-700 dark:text-gray-300">节目要求</label>
|
||||||
|
<input type="text" name="desc" id="desc" autocomplete="off" value="{{ old("desc", $program->desc) }}"
|
||||||
|
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-start">
|
||||||
|
<div class="flex items-center h-5">
|
||||||
|
<input id="status" name="status" type="checkbox" value="1" @if(old("status", $program->status) == 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">
|
||||||
|
</div>
|
||||||
|
<div class="ml-3 text-sm">
|
||||||
|
<label for="status" class="font-medium text-gray-700 dark:text-gray-300">结束维护</label>
|
||||||
|
<p class="text-gray-500 dark:text-gray-400">勾选后表示该节目已完成所有关联工作。</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@include("common.form_error")
|
||||||
|
|
||||||
|
<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-4 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>
|
||||||
|
|
||||||
|
@if($program->id)
|
||||||
|
<div class="mt-8 grid grid-cols-1 gap-4 sm:grid-cols-2">
|
||||||
|
<div class="relative rounded-lg border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800 px-6 py-5 shadow-sm flex items-center space-x-3 hover:border-gray-400 focus-within:ring-2 focus-within:ring-offset-2 focus-within:ring-indigo-500">
|
||||||
|
<div class="flex-shrink-0">
|
||||||
|
<span class="inline-flex items-center justify-center h-10 w-10 rounded-full bg-indigo-500 text-white">
|
||||||
|
<svg class="h-6 w-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"></path></svg>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="flex-1 min-w-0">
|
||||||
|
<a href="{{route("program.construct.video.list", ["program"=>$program->id])}}" class="focus:outline-none">
|
||||||
|
<span class="absolute inset-0" aria-hidden="true"></span>
|
||||||
|
<p class="text-sm font-medium text-gray-900 dark:text-white">关联视频列表</p>
|
||||||
|
<p class="text-sm text-gray-500 truncate">管理该节目对应的录播视频片段</p>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="relative rounded-lg border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800 px-6 py-5 shadow-sm flex items-center space-x-3 hover:border-gray-400 focus-within:ring-2 focus-within:ring-offset-2 focus-within:ring-indigo-500">
|
||||||
|
<div class="flex-shrink-0">
|
||||||
|
<span class="inline-flex items-center justify-center h-10 w-10 rounded-full bg-green-500 text-white">
|
||||||
|
<svg class="h-6 w-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path></svg>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="flex-1 min-w-0">
|
||||||
|
<a href="{{route("program.construct.append.list", ["program"=>$program->id])}}" class="focus:outline-none">
|
||||||
|
<span class="absolute inset-0" aria-hidden="true"></span>
|
||||||
|
<p class="text-sm font-medium text-gray-900 dark:text-white">关联点播老板列表</p>
|
||||||
|
<p class="text-sm text-gray-500 truncate">管理相关的点播和追加信息</p>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mt-8 flex justify-between">
|
||||||
|
<a class="inline-flex items-center px-4 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:bg-gray-700 dark:text-gray-200 dark:border-gray-600 dark:hover:bg-gray-600"
|
||||||
|
href="{{route("program.construct.edit", ["program"=>$program->id - 1])}}">
|
||||||
|
<svg class="h-5 w-5 mr-2 -ml-1 text-gray-500" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"></path></svg>
|
||||||
|
上一个
|
||||||
|
</a>
|
||||||
|
<a class="inline-flex items-center px-4 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:bg-gray-700 dark:text-gray-200 dark:border-gray-600 dark:hover:bg-gray-600"
|
||||||
|
href="{{route("program.construct.edit", ["program"=>$program->id + 1])}}">
|
||||||
|
下一个
|
||||||
|
<svg class="h-5 w-5 ml-2 -mr-1 text-gray-500" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
</div>
|
</div>
|
||||||
@if($program->id)
|
</main>
|
||||||
<div class="block my-2">
|
|
||||||
<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>
|
|
||||||
<a href="{{route("program.construct.append.list", ["program"=>$program->id])}}"
|
|
||||||
class="block px-6 py-2 inline-block rounded-full bg-cyan-600 text-white">
|
|
||||||
关联点播老板列表
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
@endif
|
|
||||||
</form>
|
|
||||||
@if($program->id)
|
|
||||||
<div class="w-full lg:w-1/2 lg:ml-6 flex justify-between px-4">
|
|
||||||
<a class="block px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" href="{{route("program.construct.edit", ["program"=>$program->id - 1])}}">上一个</a>
|
|
||||||
<a class="block px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" href="{{route("program.construct.edit", ["program"=>$program->id + 1])}}">下一个</a>
|
|
||||||
</div>
|
|
||||||
@endif
|
|
||||||
@include("common.footer")
|
@include("common.footer")
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -1,77 +1,121 @@
|
|||||||
<html lang="zh">
|
<html lang="zh">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>录播节目查询</title>
|
<title>节目建设 - 录播查询</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
||||||
</head>
|
</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")
|
@include("common.header")
|
||||||
<form class="form" action="">
|
|
||||||
<label for="keyword">查找节目关键词,空格隔开查找多个关键词</label>
|
<main class="flex-grow container mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
||||||
<input class="border border-black" type="text" name="keyword" id="keyword" value="{{$keyword}}">
|
<div class="max-w-7xl mx-auto">
|
||||||
<input class="border border-black" type="submit">
|
<div class="flex flex-col md:flex-row md:items-center md:justify-between mb-8 space-y-4 md:space-y-0">
|
||||||
</form>
|
<h1 class="text-2xl font-bold text-gray-900 dark:text-white">节目建设</h1>
|
||||||
<div class="block my-2">
|
<div class="flex space-x-4">
|
||||||
<a class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white"
|
<a 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"
|
||||||
href="{{ route("program.construct.add") }}">添加</a>
|
href="{{ route("program.construct.add") }}">
|
||||||
<a class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white"
|
<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>
|
||||||
href="{{ route("program.construct.batch_add") }}">节目单导入</a>
|
添加节目
|
||||||
</div>
|
</a>
|
||||||
<table class="table-auto border-collapse w-full lg:border lg:border-black">
|
<a 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"
|
||||||
<thead>
|
href="{{ route("program.construct.batch_add") }}">
|
||||||
<tr class="border border-black sticky bg-white lg:static top-0 left-0 right-0">
|
<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="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12"></path></svg>
|
||||||
<td>节目名称</td>
|
导入节目单
|
||||||
<td>点播及追加</td>
|
</a>
|
||||||
<td>节目开始</td>
|
</div>
|
||||||
<td>节目结束时的画面</td>
|
</div>
|
||||||
</tr>
|
|
||||||
</thead>
|
<form class="bg-white dark:bg-gray-800 p-6 rounded-xl shadow-sm mb-8 transition-colors duration-200" action="">
|
||||||
<tbody>
|
<label for="keyword" class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">查找节目关键词</label>
|
||||||
@foreach($programs as $program)
|
<div class="relative flex items-center">
|
||||||
<tr>
|
<input type="text" name="keyword" id="keyword" value="{{$keyword}}"
|
||||||
<td>
|
class="block flex-1 w-full rounded-l-lg border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-white shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:text-sm py-3"
|
||||||
<a href="{{route("program.construct.edit", ["program"=>$program->id])}}">编辑</a>
|
placeholder="输入关键词,空格隔开...">
|
||||||
<span title="节目">{{$program->name}}</span>
|
<button type="submit" class="inline-flex flex-shrink-0 whitespace-nowrap items-center px-6 py-3 border border-transparent text-base font-medium rounded-r-lg shadow-sm text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 transition-colors duration-200">
|
||||||
<span title="难度">{{$program->difficulty}}</span>
|
搜索
|
||||||
<span title="要求">{{$program->desc}}</span>
|
</button>
|
||||||
</td>
|
</div>
|
||||||
<td>
|
</form>
|
||||||
@foreach($program->appends as $append)
|
|
||||||
<x-append :append="$append"></x-append>
|
<div class="bg-white dark:bg-gray-800 shadow overflow-hidden rounded-lg">
|
||||||
@endforeach
|
<div class="overflow-x-auto">
|
||||||
</td>
|
<table class="min-w-full divide-y divide-gray-200 dark:divide-gray-700">
|
||||||
<td>
|
<thead class="bg-gray-50 dark:bg-gray-700">
|
||||||
@foreach($program->video_pivots as $video_pivot)
|
<tr>
|
||||||
<x-links.video_link :bvid="$video_pivot->video_bvid" :part="$video_pivot->start_part" :time="$video_pivot->start_time">
|
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">节目名称</th>
|
||||||
<div>{{$video_pivot->created_at}} P{{$video_pivot->start_part}}#{{$video_pivot->start_time}}</div>
|
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">点播及追加</th>
|
||||||
@if($video_pivot->start_image)
|
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">节目开始</th>
|
||||||
<img width="300" src="{{$video_pivot->start_image}}" alt="开始时的画面">
|
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">节目结束</th>
|
||||||
@else
|
</tr>
|
||||||
节目开始位置
|
</thead>
|
||||||
@endif
|
<tbody class="bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700">
|
||||||
</x-links.video_link>
|
@foreach($programs as $program)
|
||||||
@endforeach
|
<tr class="hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors">
|
||||||
</td>
|
<td class="px-6 py-4 align-top">
|
||||||
<td>
|
<div class="flex items-start">
|
||||||
@foreach($program->video_pivots as $video_pivot)
|
<a href="{{route("program.construct.edit", ["program"=>$program->id])}}" class="mr-3 text-indigo-600 hover:text-indigo-900 dark:hover:text-indigo-400">
|
||||||
<x-links.video_link :bvid="$video_pivot->video_bvid" :part="$video_pivot->stop_part" :time="$video_pivot->stop_time">
|
<svg class="h-5 w-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg>
|
||||||
<div>P{{$video_pivot->stop_part}}#{{$video_pivot->stop_time}}</div>
|
</a>
|
||||||
@if($video_pivot->start_image)
|
<div>
|
||||||
<img width="300" src="{{$video_pivot->stop_image}}" alt="结束时的画面">
|
<div class="text-sm font-medium text-gray-900 dark:text-white">{{$program->name}}</div>
|
||||||
@else
|
@if($program->difficulty)
|
||||||
节目结束位置
|
<div class="text-xs text-gray-500 mt-1">难度: {{$program->difficulty}}</div>
|
||||||
@endif
|
@endif
|
||||||
</x-links.video_link>
|
@if($program->desc)
|
||||||
@endforeach
|
<div class="text-xs text-gray-500 mt-1">{{$program->desc}}</div>
|
||||||
</td>
|
@endif
|
||||||
</tr>
|
</div>
|
||||||
@endforeach
|
</div>
|
||||||
</tbody>
|
</td>
|
||||||
</table>
|
<td class="px-6 py-4 align-top text-sm text-gray-500 dark:text-gray-400">
|
||||||
<div class="max-w xl:max-w-5xl lg:max-w-2xl md:max-w-lg mx-2 md:mx-auto sticky bottom-0">
|
@foreach($program->appends as $append)
|
||||||
{{$programs->onEachSide(1)->links()}}
|
<div class="mb-2">
|
||||||
</div>
|
<x-append :append="$append"></x-append>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
</td>
|
||||||
|
<td class="px-6 py-4 align-top text-sm">
|
||||||
|
@foreach($program->video_pivots as $video_pivot)
|
||||||
|
<div class="mb-4">
|
||||||
|
<x-links.video_link :bvid="$video_pivot->video_bvid" :part="$video_pivot->start_part" :time="$video_pivot->start_time">
|
||||||
|
<div class="text-xs text-gray-500 mb-1">{{$video_pivot->created_at}}</div>
|
||||||
|
<div class="text-indigo-600 hover:text-indigo-800">P{{$video_pivot->start_part}}#{{$video_pivot->start_time}}</div>
|
||||||
|
@if($video_pivot->start_image)
|
||||||
|
<img loading="lazy" class="mt-1 rounded border border-gray-200 w-32" src="{{$video_pivot->start_image}}" alt="Start">
|
||||||
|
@else
|
||||||
|
<span class="text-xs text-gray-400">无预览</span>
|
||||||
|
@endif
|
||||||
|
</x-links.video_link>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
</td>
|
||||||
|
<td class="px-6 py-4 align-top text-sm">
|
||||||
|
@foreach($program->video_pivots as $video_pivot)
|
||||||
|
<div class="mb-4">
|
||||||
|
<x-links.video_link :bvid="$video_pivot->video_bvid" :part="$video_pivot->stop_part" :time="$video_pivot->stop_time">
|
||||||
|
<div class="text-indigo-600 hover:text-indigo-800">P{{$video_pivot->stop_part}}#{{$video_pivot->stop_time}}</div>
|
||||||
|
@if($video_pivot->start_image)
|
||||||
|
<img loading="lazy" class="mt-1 rounded border border-gray-200 w-32" src="{{$video_pivot->stop_image}}" alt="End">
|
||||||
|
@else
|
||||||
|
<span class="text-xs text-gray-400">无预览</span>
|
||||||
|
@endif
|
||||||
|
</x-links.video_link>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mt-8">
|
||||||
|
{{$programs->onEachSide(1)->links()}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
@include("common.footer")
|
@include("common.footer")
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -1,70 +1,119 @@
|
|||||||
<html lang="zh">
|
<html lang="zh">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>录播节目关联视频位置修改</title>
|
<title>关联视频修改 - 录播查询</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
||||||
</head>
|
</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")
|
@include("common.header")
|
||||||
<form class="w-full lg:w-1/2 lg:ml-6 border-2" action="" method="post" enctype="multipart/form-data">
|
|
||||||
<input type="hidden" name="id" value="{{$program_video->id}}">
|
<main class="flex-grow container mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
||||||
<label class="block my-2">
|
<div class="max-w-3xl mx-auto">
|
||||||
BVID
|
<div class="md:flex md:items-center md:justify-between mb-8">
|
||||||
<input class="form-input border-0 border-b-2 w-full" @if($program_video->video_bvid) disabled @endif type="text" name="video_bvid" value="{{ old("video_bvid", $program_video->video_bvid) }}">
|
<h1 class="text-2xl font-bold text-gray-900 dark:text-white">
|
||||||
</label>
|
关联视频修改
|
||||||
<label class="block my-2">
|
</h1>
|
||||||
开始P数
|
<a href="{{ route("program.construct.video.list", ["program" => $program_video->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">
|
||||||
<input class="form-input border-0 border-b-2 w-full" type="number" name="start_part" value="{{ old("start_part", $program_video->start_part) }}">
|
<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>
|
||||||
</label>
|
返回列表
|
||||||
<label class="block my-2">
|
</a>
|
||||||
开始时间
|
</div>
|
||||||
<input class="form-input border-0 border-b-2 w-full" step="1" type="time" name="start_time" value="{{ old("start_time", $program_video->start_time) }}">
|
|
||||||
</label>
|
<div class="bg-white dark:bg-gray-800 shadow rounded-lg overflow-hidden">
|
||||||
<label class="block my-2">
|
<form class="p-6 space-y-6" action="" method="post" enctype="multipart/form-data">
|
||||||
开始图像
|
@csrf
|
||||||
@if($program_video->start_image)
|
<input type="hidden" name="id" value="{{$program_video->id}}">
|
||||||
<img src="{{$program_video->start_image}}" alt="开始图片">
|
|
||||||
@endif
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||||
<input class="form-input border-0 border-b-2 w-full" type="file" name="start_image">
|
<div class="col-span-1 md:col-span-2">
|
||||||
</label>
|
<label for="video_bvid" class="block text-sm font-medium text-gray-700 dark:text-gray-300">BVID</label>
|
||||||
<label class="block my-2">
|
<div class="mt-1 flex rounded-md shadow-sm">
|
||||||
结束P数
|
<input type="text" name="video_bvid" id="video_bvid" @if($program_video->video_bvid) disabled @endif value="{{ old("video_bvid", $program_video->video_bvid) }}"
|
||||||
<input class="form-input border-0 border-b-2 w-full" type="number" name="stop_part" value="{{ old("stop_part", $program_video->stop_part) }}">
|
class="flex-1 min-w-0 block w-full px-3 py-2 rounded-md border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-white focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm">
|
||||||
</label>
|
</div>
|
||||||
<label class="block my-2">
|
</div>
|
||||||
结束时间
|
|
||||||
<input class="form-input border-0 border-b-2 w-full" step="1" type="time" name="stop_time" value="{{ old("stop_time", $program_video->stop_time) }}">
|
<!-- Start Section -->
|
||||||
</label>
|
<div class="col-span-1 space-y-4 p-4 bg-gray-50 dark:bg-gray-700/30 rounded-lg border border-gray-200 dark:border-gray-600">
|
||||||
<label class="block my-2">
|
<h3 class="text-sm font-semibold text-gray-900 dark:text-white uppercase tracking-wider">开始节点</h3>
|
||||||
结束图像
|
<div>
|
||||||
@if($program_video->stop_image)
|
<label for="start_part" class="block text-sm font-medium text-gray-700 dark:text-gray-300">P数</label>
|
||||||
<img src="{{$program_video->stop_image}}" alt="结束图片">
|
<input type="number" name="start_part" id="start_part" value="{{ old("start_part", $program_video->start_part) }}"
|
||||||
@endif
|
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">
|
||||||
<input class="form-input border-0 border-b-2 w-full" type="file" name="stop_image">
|
</div>
|
||||||
</label>
|
<div>
|
||||||
@include("common.form_error")
|
<label for="start_time" class="block text-sm font-medium text-gray-700 dark:text-gray-300">时间点</label>
|
||||||
<div class="block my-2 text-center">
|
<input type="time" step="1" name="start_time" id="start_time" value="{{ old("start_time", $program_video->start_time) }}"
|
||||||
<input class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" type="submit">
|
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>
|
||||||
@if($program_video->video)
|
<div>
|
||||||
<div class="block my-2">
|
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300">预览图</label>
|
||||||
<a class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" target="_blank"
|
@if($program_video->start_image)
|
||||||
href="https://www.bilibili.com/video/{{$program_video->video_bvid}}?p={{$program_video->start_part}}&t={{$program_video->start_sec}}"
|
<img src="{{$program_video->start_image}}" alt="Start" class="mt-2 h-32 w-full object-cover rounded-md border border-gray-300 dark:border-gray-600">
|
||||||
title="P{{$program_video->start_part}}#{{$program_video->start_time}}"
|
@endif
|
||||||
>打开至开始位置</a>
|
<input type="file" name="start_image" class="mt-2 block w-full text-sm text-gray-500 file:mr-4 file:py-2 file:px-4 file:rounded-full file:border-0 file:text-sm file:font-semibold file:bg-indigo-50 file:text-indigo-700 hover:file:bg-indigo-100 dark:file:bg-indigo-900 dark:file:text-indigo-300">
|
||||||
<a class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" target="_blank"
|
</div>
|
||||||
href="https://www.bilibili.com/video/{{$program_video->video_bvid}}?p={{$program_video->stop_part}}&t={{$program_video->stop_sec}}"
|
</div>
|
||||||
title="P{{$program_video->stop_part}}#{{$program_video->stop_time}}"
|
|
||||||
>打开至结束位置</a>
|
<!-- Stop Section -->
|
||||||
@if($program_video->video->parts()->count() > 0)
|
<div class="col-span-1 space-y-4 p-4 bg-gray-50 dark:bg-gray-700/30 rounded-lg border border-gray-200 dark:border-gray-600">
|
||||||
<a class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white"
|
<h3 class="text-sm font-semibold text-gray-900 dark:text-white uppercase tracking-wider">结束节点</h3>
|
||||||
href="{{ url(route("program.construct.video.auto_fix_created_at", ["bvid" => $program_video->video_bvid])) }}"
|
<div>
|
||||||
>自动修复</a>
|
<label for="stop_part" class="block text-sm font-medium text-gray-700 dark:text-gray-300">P数</label>
|
||||||
|
<input type="number" name="stop_part" id="stop_part" value="{{ old("stop_part", $program_video->stop_part) }}"
|
||||||
|
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>
|
||||||
|
<label for="stop_time" class="block text-sm font-medium text-gray-700 dark:text-gray-300">时间点</label>
|
||||||
|
<input type="time" step="1" name="stop_time" id="stop_time" value="{{ old("stop_time", $program_video->stop_time) }}"
|
||||||
|
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>
|
||||||
|
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300">预览图</label>
|
||||||
|
@if($program_video->stop_image)
|
||||||
|
<img src="{{$program_video->stop_image}}" alt="Stop" class="mt-2 h-32 w-full object-cover rounded-md border border-gray-300 dark:border-gray-600">
|
||||||
|
@endif
|
||||||
|
<input type="file" name="stop_image" class="mt-2 block w-full text-sm text-gray-500 file:mr-4 file:py-2 file:px-4 file:rounded-full file:border-0 file:text-sm file:font-semibold file:bg-indigo-50 file:text-indigo-700 hover:file:bg-indigo-100 dark:file:bg-indigo-900 dark:file:text-indigo-300">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@include("common.form_error")
|
||||||
|
|
||||||
|
<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>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@if($program_video->video)
|
||||||
|
<div class="mt-6 flex flex-wrap gap-4 justify-center md:justify-start">
|
||||||
|
<a class="inline-flex items-center px-4 py-2 border border-gray-300 dark:border-gray-600 shadow-sm text-sm font-medium rounded-md 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"
|
||||||
|
target="_blank"
|
||||||
|
href="https://www.bilibili.com/video/{{$program_video->video_bvid}}?p={{$program_video->start_part}}&t={{$program_video->start_sec}}">
|
||||||
|
<svg class="h-4 w-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z"></path><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg>
|
||||||
|
预览开始位置
|
||||||
|
</a>
|
||||||
|
<a class="inline-flex items-center px-4 py-2 border border-gray-300 dark:border-gray-600 shadow-sm text-sm font-medium rounded-md 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"
|
||||||
|
target="_blank"
|
||||||
|
href="https://www.bilibili.com/video/{{$program_video->video_bvid}}?p={{$program_video->stop_part}}&t={{$program_video->stop_sec}}">
|
||||||
|
<svg class="h-4 w-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 10a1 1 0 011-1h4a1 1 0 011 1v4a1 1 0 01-1 1h-4a1 1 0 01-1-1v-4z"></path></svg>
|
||||||
|
预览结束位置
|
||||||
|
</a>
|
||||||
|
@if($program_video->video->parts()->count() > 0)
|
||||||
|
<a class="inline-flex items-center px-4 py-2 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-green-600 hover:bg-green-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-500"
|
||||||
|
href="{{ url(route("program.construct.video.auto_fix_created_at", ["bvid" => $program_video->video_bvid])) }}">
|
||||||
|
<svg class="h-4 w-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg>
|
||||||
|
自动修复时间
|
||||||
|
</a>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
@endif
|
</main>
|
||||||
</form>
|
|
||||||
@include("common.footer")
|
@include("common.footer")
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -1,64 +1,95 @@
|
|||||||
<html lang="zh">
|
<html lang="zh">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>录播节目关联视频位置查询</title>
|
<title>关联视频管理 - 录播查询</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
||||||
</head>
|
</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")
|
@include("common.header")
|
||||||
<div class="block my-2">
|
|
||||||
<a class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white"
|
<main class="flex-grow container mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
||||||
href="{{ route("program.construct.video.add", ["program"=>$program->id]) }}">添加</a>
|
<div class="max-w-7xl mx-auto">
|
||||||
</div>
|
<div class="flex flex-col md:flex-row md:items-center md:justify-between mb-8 space-y-4 md:space-y-0">
|
||||||
<table class="table-auto border-collapse w-full lg:border lg:border-black">
|
<div>
|
||||||
<thead>
|
<h1 class="text-2xl font-bold text-gray-900 dark:text-white">关联视频管理</h1>
|
||||||
<tr class="border border-black sticky bg-white lg:static top-0 left-0 right-0">
|
<p class="mt-1 text-sm text-gray-500 dark:text-gray-400">
|
||||||
<td>BVID</td>
|
当前节目:{{ $program->name }}
|
||||||
<td>节目开始时间</td>
|
</p>
|
||||||
<td>节目开始时的画面</td>
|
</div>
|
||||||
<td>节目结束时的画面</td>
|
<div class="flex space-x-3">
|
||||||
<td>操作</td>
|
<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">
|
||||||
</tr>
|
<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>
|
||||||
</thead>
|
返回节目
|
||||||
<tbody>
|
</a>
|
||||||
@foreach($videos as $video_pivot)
|
<a href="{{ route("program.construct.video.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">
|
||||||
<tr>
|
<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>
|
||||||
<td>
|
添加关联视频
|
||||||
<a class="underline" target="_blank"
|
</a>
|
||||||
href="https://www.bilibili.com/video/{{$video_pivot->video_bvid}}?p={{$video_pivot->start_part}}&t={{$video_pivot->start_sec}}"
|
</div>
|
||||||
title="P{{$video_pivot->start_part}}#{{$video_pivot->start_time}}"
|
</div>
|
||||||
>{{$video_pivot->video_bvid}}</a>
|
|
||||||
</td>
|
<div class="bg-white dark:bg-gray-800 shadow overflow-hidden rounded-lg">
|
||||||
<td>{{$video_pivot->created_at}}</td>
|
<div class="overflow-x-auto">
|
||||||
<td>
|
<table class="min-w-full divide-y divide-gray-200 dark:divide-gray-700">
|
||||||
<x-links.video_link :bvid="$video_pivot->video_bvid" :part="$video_pivot->start_part" :time="$video_pivot->start_time">
|
<thead class="bg-gray-50 dark:bg-gray-700">
|
||||||
<div>{{$video_pivot->created_at}} P{{$video_pivot->start_part}}#{{$video_pivot->start_time}}</div>
|
<tr>
|
||||||
@if($video_pivot->start_image)
|
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">BVID</th>
|
||||||
<img width="300" src="{{$video_pivot->start_image}}" alt="开始时的画面">
|
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">开始时间</th>
|
||||||
@else
|
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">开始画面</th>
|
||||||
节目开始位置
|
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">结束画面</th>
|
||||||
@endif
|
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">操作</th>
|
||||||
</x-links.video_link>
|
</tr>
|
||||||
</td>
|
</thead>
|
||||||
<td>
|
<tbody class="bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700">
|
||||||
<x-links.video_link :bvid="$video_pivot->video_bvid" :part="$video_pivot->stop_part" :time="$video_pivot->stop_time">
|
@foreach($videos as $video_pivot)
|
||||||
<div>P{{$video_pivot->stop_part}}#{{$video_pivot->stop_time}}</div>
|
<tr class="hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors">
|
||||||
@if($video_pivot->start_image)
|
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium">
|
||||||
<img width="300" src="{{$video_pivot->stop_image}}" alt="结束时的画面">
|
<a class="text-indigo-600 hover:text-indigo-900 dark:text-indigo-400 dark:hover:text-indigo-300 flex items-center"
|
||||||
@else
|
target="_blank"
|
||||||
节目结束位置
|
href="https://www.bilibili.com/video/{{$video_pivot->video_bvid}}?p={{$video_pivot->start_part}}&t={{$video_pivot->start_sec}}"
|
||||||
@endif
|
title="P{{$video_pivot->start_part}}#{{$video_pivot->start_time}}">
|
||||||
</x-links.video_link>
|
{{$video_pivot->video_bvid}}
|
||||||
</td>
|
<svg class="h-4 w-4 ml-1 text-gray-400" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"></path></svg>
|
||||||
<td>
|
</a>
|
||||||
<a class="text-blue-600 underline"
|
</td>
|
||||||
href="{{route("program.construct.video.edit", ["program_video" => $video_pivot->id])}}">编辑</a>
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500 dark:text-gray-400">
|
||||||
</td>
|
{{$video_pivot->created_at}}
|
||||||
</tr>
|
</td>
|
||||||
@endforeach
|
<td class="px-6 py-4 align-top text-sm">
|
||||||
</tbody>
|
<x-links.video_link :bvid="$video_pivot->video_bvid" :part="$video_pivot->start_part" :time="$video_pivot->start_time">
|
||||||
</table>
|
<div class="text-xs text-gray-500 mb-1">P{{$video_pivot->start_part}}#{{$video_pivot->start_time}}</div>
|
||||||
|
@if($video_pivot->start_image)
|
||||||
|
<img loading="lazy" class="h-20 w-32 object-cover rounded border border-gray-200 dark:border-gray-600" src="{{$video_pivot->start_image}}" alt="Start">
|
||||||
|
@else
|
||||||
|
<span class="text-xs text-gray-400 italic">无预览</span>
|
||||||
|
@endif
|
||||||
|
</x-links.video_link>
|
||||||
|
</td>
|
||||||
|
<td class="px-6 py-4 align-top text-sm">
|
||||||
|
<x-links.video_link :bvid="$video_pivot->video_bvid" :part="$video_pivot->stop_part" :time="$video_pivot->stop_time">
|
||||||
|
<div class="text-xs text-gray-500 mb-1">P{{$video_pivot->stop_part}}#{{$video_pivot->stop_time}}</div>
|
||||||
|
@if($video_pivot->start_image)
|
||||||
|
<img loading="lazy" class="h-20 w-32 object-cover rounded border border-gray-200 dark:border-gray-600" src="{{$video_pivot->stop_image}}" alt="End">
|
||||||
|
@else
|
||||||
|
<span class="text-xs text-gray-400 italic">无预览</span>
|
||||||
|
@endif
|
||||||
|
</x-links.video_link>
|
||||||
|
</td>
|
||||||
|
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium">
|
||||||
|
<a class="text-indigo-600 hover:text-indigo-900 dark:text-indigo-400 dark:hover:text-indigo-300"
|
||||||
|
href="{{route("program.construct.video.edit", ["program_video" => $video_pivot->id])}}">
|
||||||
|
编辑
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
@include("common.footer")
|
@include("common.footer")
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -1,40 +1,85 @@
|
|||||||
<html lang="zh">
|
<html lang="zh">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>录播节目关联视频位置修改</title>
|
<title>时间基准修复 - 录播查询</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
||||||
</head>
|
</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")
|
@include("common.header")
|
||||||
<form class="w-full lg:w-1/2 lg:ml-6 border-2" action="" method="post" enctype="multipart/form-data">
|
|
||||||
<div class="text-lg font-bold">时间基准信息</div>
|
<main class="flex-grow container mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
||||||
<input type="hidden" name="id" value="{{$program_video->id}}">
|
<div class="max-w-2xl mx-auto">
|
||||||
<label class="block my-2">
|
<div class="md:flex md:items-center md:justify-between mb-8">
|
||||||
BVID
|
<h1 class="text-2xl font-bold text-gray-900 dark:text-white">
|
||||||
<input class="form-input border-0 border-b-2 w-full" disabled type="text" name="video_bvid" value="{{ $program_video->video_bvid }}">
|
时间基准修复
|
||||||
</label>
|
</h1>
|
||||||
<label class="block my-2">
|
<a href="{{ url()->previous() }}" 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">
|
||||||
开始P数
|
<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>
|
||||||
<input class="form-input border-0 border-b-2 w-full" disabled type="number" name="start_part" value="{{ $program_video->start_part }}">
|
返回
|
||||||
</label>
|
</a>
|
||||||
<label class="block my-2">
|
</div>
|
||||||
开始时间
|
|
||||||
<input class="form-input border-0 border-b-2 w-full" disabled step="1" type="time" name="start_time" value="{{ $program_video->start_time }}">
|
<div class="bg-white dark:bg-gray-800 shadow rounded-lg overflow-hidden">
|
||||||
</label>
|
<div class="px-6 py-4 bg-blue-50 dark:bg-blue-900/30 border-b border-blue-100 dark:border-blue-900/50">
|
||||||
<label class="block my-2">
|
<div class="flex">
|
||||||
节目开打时间
|
<div class="flex-shrink-0">
|
||||||
<input class="form-input border-0 border-b-2 w-full" disabled type="datetime-local" step="1" name="created_at" value="{{ $program_video->created_at }}">
|
<svg class="h-5 w-5 text-blue-400" viewBox="0 0 20 20" fill="currentColor">
|
||||||
</label>
|
<path fill-rule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z" clip-rule="evenodd" />
|
||||||
<label class="block my-2">
|
</svg>
|
||||||
每P时间
|
</div>
|
||||||
<input class="form-input border-0 border-b-2 w-full" type="time" step="1" name="each_time" value="{{ old("each_time") }}">
|
<div class="ml-3 flex-1 md:flex md:justify-between">
|
||||||
</label>
|
<p class="text-sm text-blue-700 dark:text-blue-300">
|
||||||
@include("common.form_error")
|
此操作将基于当前设定的时间点,批量修复该 BVID 下所有关联节目的开始时间。
|
||||||
<div class="block my-2 text-center">
|
</p>
|
||||||
<input class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" type="submit" value="修复该录播下的所有节目开始时间">
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<form class="p-6 space-y-6" action="" method="post" enctype="multipart/form-data">
|
||||||
|
@csrf
|
||||||
|
<input type="hidden" name="id" value="{{$program_video->id}}">
|
||||||
|
|
||||||
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||||
|
<div>
|
||||||
|
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300">BVID</label>
|
||||||
|
<input type="text" disabled value="{{ $program_video->video_bvid }}"
|
||||||
|
class="mt-1 block w-full rounded-md border-gray-300 dark:border-gray-600 dark:bg-gray-700 bg-gray-50 dark:text-gray-400 shadow-sm sm:text-sm py-2">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300">参考 P 数</label>
|
||||||
|
<input type="number" disabled value="{{ $program_video->start_part }}"
|
||||||
|
class="mt-1 block w-full rounded-md border-gray-300 dark:border-gray-600 dark:bg-gray-700 bg-gray-50 dark:text-gray-400 shadow-sm sm:text-sm py-2">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300">参考时间点</label>
|
||||||
|
<input type="time" disabled step="1" value="{{ $program_video->start_time }}"
|
||||||
|
class="mt-1 block w-full rounded-md border-gray-300 dark:border-gray-600 dark:bg-gray-700 bg-gray-50 dark:text-gray-400 shadow-sm sm:text-sm py-2">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300">节目实际开始时间</label>
|
||||||
|
<input type="datetime-local" step="1" disabled value="{{ date('Y-m-d\TH:i:s', strtotime($program_video->created_at)) }}"
|
||||||
|
class="mt-1 block w-full rounded-md border-gray-300 dark:border-gray-600 dark:bg-gray-700 bg-gray-50 dark:text-gray-400 shadow-sm sm:text-sm py-2">
|
||||||
|
</div>
|
||||||
|
<div class="md:col-span-2">
|
||||||
|
<label for="each_time" class="block text-sm font-medium text-gray-700 dark:text-gray-300">每 P 均分时长 (可选)</label>
|
||||||
|
<input type="time" step="1" name="each_time" id="each_time" value="{{ old("each_time") }}"
|
||||||
|
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">
|
||||||
|
<p class="mt-1 text-xs text-gray-500 dark:text-gray-400">若不填写,将自动尝试计算或使用默认值。</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@include("common.form_error")
|
||||||
|
|
||||||
|
<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>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</main>
|
||||||
@include("common.footer")
|
@include("common.footer")
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -1,40 +1,85 @@
|
|||||||
<html lang="zh">
|
<html lang="zh">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>录播节目关联视频位置修改</title>
|
<title>时间基准修复 - 录播查询</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
||||||
</head>
|
</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")
|
@include("common.header")
|
||||||
<form class="w-full lg:w-1/2 lg:ml-6 border-2" action="" method="post" enctype="multipart/form-data">
|
|
||||||
<div class="text-lg font-bold">时间基准信息</div>
|
<main class="flex-grow container mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
||||||
<input type="hidden" name="id" value="{{$program_video->id}}">
|
<div class="max-w-2xl mx-auto">
|
||||||
<label class="block my-2">
|
<div class="md:flex md:items-center md:justify-between mb-8">
|
||||||
BVID
|
<h1 class="text-2xl font-bold text-gray-900 dark:text-white">
|
||||||
<input class="form-input border-0 border-b-2 w-full" disabled type="text" name="video_bvid" value="{{ $program_video->video_bvid }}">
|
时间基准修复
|
||||||
</label>
|
</h1>
|
||||||
<label class="block my-2">
|
<a href="{{ url()->previous() }}" 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">
|
||||||
开始P数
|
<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>
|
||||||
<input class="form-input border-0 border-b-2 w-full" disabled type="number" name="start_part" value="{{ $program_video->start_part }}">
|
返回
|
||||||
</label>
|
</a>
|
||||||
<label class="block my-2">
|
</div>
|
||||||
开始时间
|
|
||||||
<input class="form-input border-0 border-b-2 w-full" disabled step="1" type="time" name="start_time" value="{{ $program_video->start_time }}">
|
<div class="bg-white dark:bg-gray-800 shadow rounded-lg overflow-hidden">
|
||||||
</label>
|
<div class="px-6 py-4 bg-blue-50 dark:bg-blue-900/30 border-b border-blue-100 dark:border-blue-900/50">
|
||||||
<label class="block my-2">
|
<div class="flex">
|
||||||
节目开打时间
|
<div class="flex-shrink-0">
|
||||||
<input class="form-input border-0 border-b-2 w-full" disabled type="datetime-local" step="1" name="created_at" value="{{ $program_video->created_at }}">
|
<svg class="h-5 w-5 text-blue-400" viewBox="0 0 20 20" fill="currentColor">
|
||||||
</label>
|
<path fill-rule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z" clip-rule="evenodd" />
|
||||||
<label class="block my-2">
|
</svg>
|
||||||
每P时间
|
</div>
|
||||||
<input class="form-input border-0 border-b-2 w-full" type="time" step="1" name="each_time" value="{{ old("each_time") }}">
|
<div class="ml-3 flex-1 md:flex md:justify-between">
|
||||||
</label>
|
<p class="text-sm text-blue-700 dark:text-blue-300">
|
||||||
@include("common.form_error")
|
此操作将基于当前设定的时间点,批量修复该 BVID 下所有关联节目的开始时间。
|
||||||
<div class="block my-2 text-center">
|
</p>
|
||||||
<input class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" type="submit" value="修复该录播下的所有节目开始时间">
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<form class="p-6 space-y-6" action="" method="post" enctype="multipart/form-data">
|
||||||
|
@csrf
|
||||||
|
<input type="hidden" name="id" value="{{$program_video->id}}">
|
||||||
|
|
||||||
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||||
|
<div>
|
||||||
|
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300">BVID</label>
|
||||||
|
<input type="text" disabled value="{{ $program_video->video_bvid }}"
|
||||||
|
class="mt-1 block w-full rounded-md border-gray-300 dark:border-gray-600 dark:bg-gray-700 bg-gray-50 dark:text-gray-400 shadow-sm sm:text-sm py-2">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300">参考 P 数</label>
|
||||||
|
<input type="number" disabled value="{{ $program_video->start_part }}"
|
||||||
|
class="mt-1 block w-full rounded-md border-gray-300 dark:border-gray-600 dark:bg-gray-700 bg-gray-50 dark:text-gray-400 shadow-sm sm:text-sm py-2">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300">参考时间点</label>
|
||||||
|
<input type="time" disabled step="1" value="{{ $program_video->start_time }}"
|
||||||
|
class="mt-1 block w-full rounded-md border-gray-300 dark:border-gray-600 dark:bg-gray-700 bg-gray-50 dark:text-gray-400 shadow-sm sm:text-sm py-2">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300">节目实际开始时间</label>
|
||||||
|
<input type="datetime-local" step="1" disabled value="{{ date('Y-m-d\TH:i:s', strtotime($program_video->created_at)) }}"
|
||||||
|
class="mt-1 block w-full rounded-md border-gray-300 dark:border-gray-600 dark:bg-gray-700 bg-gray-50 dark:text-gray-400 shadow-sm sm:text-sm py-2">
|
||||||
|
</div>
|
||||||
|
<div class="md:col-span-2">
|
||||||
|
<label for="each_time" class="block text-sm font-medium text-gray-700 dark:text-gray-300">每 P 均分时长 (可选)</label>
|
||||||
|
<input type="time" step="1" name="each_time" id="each_time" value="{{ old("each_time") }}"
|
||||||
|
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">
|
||||||
|
<p class="mt-1 text-xs text-gray-500 dark:text-gray-400">若不填写,将自动尝试计算或使用默认值。</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@include("common.form_error")
|
||||||
|
|
||||||
|
<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>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</main>
|
||||||
@include("common.footer")
|
@include("common.footer")
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -1,37 +1,84 @@
|
|||||||
<html lang="zh">
|
<html lang="zh">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>登录</title>
|
<title>登录 - 录播查询</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
||||||
<script src="{{ mix('/js/manifest.js') }}" rel="script"></script>
|
<script src="{{ mix('/js/manifest.js') }}" rel="script"></script>
|
||||||
</head>
|
</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")
|
@include("common.header")
|
||||||
<form class="w-full lg:w-1/2 border-2 mx-auto my-2" id="webauthn_login_form" action="" method="post" enctype="multipart/form-data">
|
|
||||||
<div class="block text-lg font-bold ml-4 mt-2">登录</div>
|
<main class="flex-grow flex items-center justify-center px-4 sm:px-6 lg:px-8 py-12">
|
||||||
@csrf
|
<div class="max-w-md w-full space-y-8 bg-white dark:bg-gray-800 p-8 rounded-xl shadow-lg border border-gray-100 dark:border-gray-700">
|
||||||
<label class="block my-2">
|
<div>
|
||||||
用户名
|
<h2 class="mt-2 text-center text-3xl font-extrabold text-gray-900 dark:text-white">
|
||||||
<input class="form-input border-0 border-b-2 w-full" type="text" name="username" value="{{ old("username") }}" placeholder="用户名或邮箱">
|
登录账号
|
||||||
</label>
|
</h2>
|
||||||
<label class="block my-2">
|
<p class="mt-2 text-center text-sm text-gray-600 dark:text-gray-400">
|
||||||
密码
|
或者
|
||||||
<input class="form-input border-0 border-b-2 w-full" type="password" name="password" value="{{ old("password") }}" placeholder="密码">
|
<a href="{{ route('register') }}" class="font-medium text-indigo-600 hover:text-indigo-500 dark:text-indigo-400 dark:hover:text-indigo-300">
|
||||||
</label>
|
注册新账号
|
||||||
<label class="block my-4">
|
</a>
|
||||||
记住密码
|
</p>
|
||||||
<input class="form-checkbox" type="checkbox" name="remember" @if(old("remember") == 1) checked @endif value="1">
|
</div>
|
||||||
</label>
|
|
||||||
@include("common.form_error")
|
<form class="mt-8 space-y-6" id="webauthn_login_form" action="" method="post" enctype="multipart/form-data">
|
||||||
<div class="block my-2 text-center">
|
@csrf
|
||||||
<input class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" type="submit" value="登录">
|
<div class="rounded-md shadow-sm -space-y-px">
|
||||||
<a class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" id="do_webauthn_login" href="javascript: void 0">
|
<div>
|
||||||
免输入登录<sup class="text-xs bg-yellow-600 text-white">Alpha</sup>
|
<label for="username" class="sr-only">用户名 / 邮箱</label>
|
||||||
</a>
|
<input id="username" name="username" type="text" autocomplete="username" required value="{{ old("username") }}"
|
||||||
|
class="appearance-none rounded-none relative block w-full px-3 py-2 border border-gray-300 dark:border-gray-600 placeholder-gray-500 text-gray-900 dark:text-white dark:bg-gray-700 rounded-t-md focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 focus:z-10 sm:text-sm"
|
||||||
|
placeholder="用户名或邮箱">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label for="password" class="sr-only">密码</label>
|
||||||
|
<input id="password" name="password" type="password" autocomplete="current-password" required value="{{ old("password") }}"
|
||||||
|
class="appearance-none rounded-none relative block w-full px-3 py-2 border border-gray-300 dark:border-gray-600 placeholder-gray-500 text-gray-900 dark:text-white dark:bg-gray-700 rounded-b-md focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 focus:z-10 sm:text-sm"
|
||||||
|
placeholder="密码">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex items-center justify-between">
|
||||||
|
<div class="flex items-center">
|
||||||
|
<input id="remember_me" name="remember" type="checkbox" value="1" @if(old("remember") == 1) checked @endif
|
||||||
|
class="h-4 w-4 text-indigo-600 focus:ring-indigo-500 border-gray-300 rounded dark:bg-gray-700 dark:border-gray-600">
|
||||||
|
<label for="remember_me" class="ml-2 block text-sm text-gray-900 dark:text-gray-300">
|
||||||
|
记住密码
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="text-sm">
|
||||||
|
<a href="#" class="font-medium text-indigo-600 hover:text-indigo-500 dark:text-indigo-400 dark:hover:text-indigo-300">
|
||||||
|
忘记密码?
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@include("common.form_error")
|
||||||
|
|
||||||
|
<div class="flex flex-col gap-3">
|
||||||
|
<button type="submit" class="group relative w-full flex justify-center py-2 px-4 border border-transparent 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">
|
||||||
|
<span class="absolute left-0 inset-y-0 flex items-center pl-3">
|
||||||
|
<svg class="h-5 w-5 text-indigo-500 group-hover:text-indigo-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
|
||||||
|
<path fill-rule="evenodd" d="M5 9V7a5 5 0 0110 0v2a2 2 0 012 2v5a2 2 0 01-2 2H5a2 2 0 01-2-2v-5a2 2 0 012-2zm8-2v2H7V7a3 3 0 016 0z" clip-rule="evenodd" />
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
登录
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button type="button" id="do_webauthn_login" class="group relative w-full flex justify-center py-2 px-4 border border-gray-300 dark:border-gray-600 text-sm font-medium rounded-md text-gray-700 dark:text-gray-200 bg-white dark:bg-gray-700 hover:bg-gray-50 dark:hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
|
||||||
|
免输入登录 (Passkey)
|
||||||
|
<span class="ml-2 inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200">
|
||||||
|
Alpha
|
||||||
|
</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</main>
|
||||||
@include("common.footer")
|
@include("common.footer")
|
||||||
</body>
|
|
||||||
<script src="{{ mix('/js/webauthn.js') }}" rel="script"></script>
|
<script src="{{ mix('/js/webauthn.js') }}" rel="script"></script>
|
||||||
</html>
|
</body>
|
||||||
|
</html>
|
||||||
@@ -1,32 +1,65 @@
|
|||||||
<html lang="zh">
|
<html lang="zh">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>注册</title>
|
<title>注册 - 录播查询</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
<link href="{{ mix('/css/app.css') }}" rel="stylesheet"/>
|
||||||
</head>
|
</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")
|
@include("common.header")
|
||||||
<form class="w-full lg:w-1/2 border-2 mx-auto my-2" action="" method="post" enctype="multipart/form-data">
|
|
||||||
<div class="block text-lg font-bold ml-4 mt-2">注册</div>
|
<main class="flex-grow flex items-center justify-center px-4 sm:px-6 lg:px-8 py-12">
|
||||||
@csrf
|
<div class="max-w-md w-full space-y-8 bg-white dark:bg-gray-800 p-8 rounded-xl shadow-lg border border-gray-100 dark:border-gray-700">
|
||||||
<label class="block my-2">
|
<div>
|
||||||
用户名
|
<h2 class="mt-2 text-center text-3xl font-extrabold text-gray-900 dark:text-white">
|
||||||
<input class="form-input border-0 border-b-2 w-full" type="text" name="name" value="{{ old("name") }}" placeholder="用户名">
|
创建新账号
|
||||||
</label>
|
</h2>
|
||||||
<label class="block my-2">
|
<p class="mt-2 text-center text-sm text-gray-600 dark:text-gray-400">
|
||||||
邮箱
|
已有账号?
|
||||||
<input class="form-input border-0 border-b-2 w-full" type="email" name="email" value="{{ old("email") }}" placeholder="邮箱">
|
<a href="{{ route('login') }}" class="font-medium text-indigo-600 hover:text-indigo-500 dark:text-indigo-400 dark:hover:text-indigo-300">
|
||||||
</label>
|
直接登录
|
||||||
<label class="block my-2">
|
</a>
|
||||||
密码
|
</p>
|
||||||
<input class="form-input border-0 border-b-2 w-full" minlength="5" type="password" name="password" value="{{ old("password") }}" placeholder="密码">
|
</div>
|
||||||
</label>
|
|
||||||
@include("common.form_error")
|
<form class="mt-8 space-y-6" action="" method="post" enctype="multipart/form-data">
|
||||||
<div class="block my-2 text-center">
|
@csrf
|
||||||
<input class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" type="submit" value="注册">
|
<div class="rounded-md shadow-sm -space-y-px">
|
||||||
|
<div>
|
||||||
|
<label for="name" class="sr-only">用户名</label>
|
||||||
|
<input id="name" name="name" type="text" autocomplete="username" required value="{{ old("name") }}"
|
||||||
|
class="appearance-none rounded-none relative block w-full px-3 py-2 border border-gray-300 dark:border-gray-600 placeholder-gray-500 text-gray-900 dark:text-white dark:bg-gray-700 rounded-t-md focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 focus:z-10 sm:text-sm"
|
||||||
|
placeholder="用户名">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label for="email" class="sr-only">邮箱</label>
|
||||||
|
<input id="email" name="email" type="email" autocomplete="email" required value="{{ old("email") }}"
|
||||||
|
class="appearance-none rounded-none relative block w-full px-3 py-2 border border-gray-300 dark:border-gray-600 placeholder-gray-500 text-gray-900 dark:text-white dark:bg-gray-700 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 focus:z-10 sm:text-sm"
|
||||||
|
placeholder="邮箱">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label for="password" class="sr-only">密码</label>
|
||||||
|
<input id="password" name="password" type="password" autocomplete="new-password" required minlength="5" value="{{ old("password") }}"
|
||||||
|
class="appearance-none rounded-none relative block w-full px-3 py-2 border border-gray-300 dark:border-gray-600 placeholder-gray-500 text-gray-900 dark:text-white dark:bg-gray-700 rounded-b-md focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 focus:z-10 sm:text-sm"
|
||||||
|
placeholder="密码 (至少5位)">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@include("common.form_error")
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<button type="submit" class="group relative w-full flex justify-center py-2 px-4 border border-transparent 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">
|
||||||
|
<span class="absolute left-0 inset-y-0 flex items-center pl-3">
|
||||||
|
<svg class="h-5 w-5 text-indigo-500 group-hover:text-indigo-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
|
||||||
|
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd" />
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
注册
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</main>
|
||||||
@include("common.footer")
|
@include("common.footer")
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
Reference in New Issue
Block a user