diff --git a/.gitignore b/.gitignore
index eb003b0..e13d5a8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
/node_modules
/public/hot
/public/storage
+/public/uploads
/storage/*.key
/vendor
.env
diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php
index bf4873e..f7b682d 100644
--- a/app/Console/Kernel.php
+++ b/app/Console/Kernel.php
@@ -2,37 +2,32 @@
namespace App\Console;
+use App\Mail\Conference\ConferenceReminder;
+use App\Mail\Course\CourseReminder;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
-use App\Models\CourseRecord;
-use App\Models\Course;
-use Illuminate\Support\Facades\Mail;
-use App\Mail\CourseReminder;
class Kernel extends ConsoleKernel
{
/**
* Define the application's command schedule.
*
- * @param \Illuminate\Console\Scheduling\Schedule $schedule
+ * @param Schedule $schedule
* @return void
*/
- protected function schedule(Schedule $schedule)
+ protected function schedule(Schedule $schedule): void
{
$schedule->command('queue:work --tries=3 --stop-when-empty')->withoutOverlapping()->everyMinute();
$schedule->call(function () {
- $course = Course::where('date', now()->addDay()->toDateString())->first();
- if($course) {
- foreach($course->users as $user) {
- Mail::to($user->email)->send(new CourseReminder($course, $user));
- }
- }
- })->daily()
+ CourseReminder::sendEmail();
+ })->dailyAt('19:00');
+
+ // 登山研討會前一天晚上七點發送 email 提醒報名者
+ $schedule->call(function () {
+ ConferenceReminder::sendEmail();
+ })->dailyAt('19:00')
->when(function () {
- $course = Course::where('date', '>', now()->toDateString())->first();
- if($course) {
- return $course->date === now()->addDay()->toDateString();
- }
+ return now()->format('Y-m-d') === '2024-10-25';
});
}
@@ -41,9 +36,9 @@ protected function schedule(Schedule $schedule)
*
* @return void
*/
- protected function commands()
+ protected function commands(): void
{
- $this->load(__DIR__.'/Commands');
+ $this->load(__DIR__ . '/Commands');
require base_path('routes/console.php');
}
diff --git a/app/Enums/Common.php b/app/Enums/Common.php
index 19fa296..308eec6 100644
--- a/app/Enums/Common.php
+++ b/app/Enums/Common.php
@@ -3,5 +3,8 @@
namespace App\Enums;
enum Common: int
{
- case SYSTEM = 0;
+ /**
+ * 系統寫入的使用者
+ */
+ case SYSTEM_USER = 0;
}
diff --git a/app/Enums/Gender.php b/app/Enums/Gender.php
new file mode 100644
index 0000000..2211fed
--- /dev/null
+++ b/app/Enums/Gender.php
@@ -0,0 +1,29 @@
+ '男',
+ self::FEMALE => '女',
+ };
+ }
+}
diff --git a/app/Enums/Identity.php b/app/Enums/Identity.php
new file mode 100644
index 0000000..a3f71cd
--- /dev/null
+++ b/app/Enums/Identity.php
@@ -0,0 +1,32 @@
+ '學生',
+ self::SOCIAL => '社會人士',
+ };
+ }
+}
diff --git a/app/Enums/LoginMethod.php b/app/Enums/LoginMethod.php
new file mode 100644
index 0000000..53196db
--- /dev/null
+++ b/app/Enums/LoginMethod.php
@@ -0,0 +1,11 @@
+ '非社員',
+ self::MEMBER => '社員',
+ self::CLUB_LEADER => '社長',
+ self::VICE_CLUB_LEADER => '副社長',
+ self::GUIDE_LEADER => '嚮導組組長',
+ self::GUIDE_MEMBER => '嚮導組組員',
+ self::TECH_LEADER => '技術組組長',
+ self::TECH_MEMBER => '技術組組員',
+ self::EQUIPMENT_LEADER => '器材組組長',
+ self::EQUIPMENT_MEMBER => '器材組組員',
+ self::MEDICAL_LEADER => '醫藥組組長',
+ self::MEDICAL_MEMBER => '醫藥組組員',
+ self::SECRETARY_LEADER => '文書組組長',
+ self::SECRETARY_MEMBER => '文書組組員',
+ self::DESIGN => '美宣',
+ self::WEB_ADMIN => '網管',
+ self::TREASURER => '財務長',
+ self::SAFETY_LEADER => '山防組組長',
+ self::SAFETY_MEMBER => '山防組組員',
+ };
+ }
+}
diff --git a/app/Http/Controllers/CourseController.php b/app/Http/Controllers/CourseController.php
index e7aa304..81d38eb 100644
--- a/app/Http/Controllers/CourseController.php
+++ b/app/Http/Controllers/CourseController.php
@@ -2,10 +2,12 @@
namespace App\Http\Controllers;
+use App\Mail\Course\CourseRegister;
use App\Models\Course;
use App\Models\CourseRecord;
use App\Traits\ImageTrait;
use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Mail;
@@ -19,7 +21,7 @@ class CourseController extends Controller
*/
public function index()
{
- $courses = Course::whereNotNull('videoURL')->orderBy('date','desc')->get();
+ $courses = Course::whereNotNull('videoURL')->orderBy('start_date','desc')->get();
return view('course.course', ['courses' => $courses]);
}
@@ -50,7 +52,8 @@ public function store(Request $request)
$course = new Course();
$course->title = $request->input('title');
$course->description = $request->input('description');
- $course->date = $request->input('date');
+ $course->start_date = $request->input('start_date');
+ $course->end_date = $request->input('end_date');
$course->speaker = $request->input('speaker');
$course->location = $request->input('location');
$course->image = $this->storeImage($file, $folder_name, $name);
@@ -60,6 +63,8 @@ public function store(Request $request)
if($request->input('pptURL')) {
$course->pptURL = $request->input('pptURL');
}
+ $course->create_user = Auth::user()->id;
+ $course->modify_user = Auth::user()->id;
$course->save();
@@ -77,8 +82,8 @@ public function showRegister()
{
$courses = Course::where('videoURL', null)
- ->whereDate('date', '>=' , now()->toDateString())
- ->orderBy('date','asc')
+ ->whereDate('start_date', '>=' , now()->toDateString())
+ ->orderBy('start_date','asc')
->get();
@@ -96,7 +101,7 @@ public function register($id) {
$msg = auth()->user()->name . '「' . $courseRecord->course->title. '」' . '社課報名完成';
Mail::to($courseRecord->user->email)
- ->later(now()->addSeconds(5), new \App\Mail\Course($courseRecord));
+ ->later(now()->addSeconds(5), new CourseRegister($courseRecord));
return redirect()->back()->with('status', $msg);
}
@@ -145,7 +150,8 @@ public function update(Request $request, $id)
$course->title = $request->input('title');
$course->description = $request->input('description');
- $course->date = $request->input('date');
+ $course->start_date = $request->input('start_date');
+ $course->end_date = $request->input('end_date');
$course->speaker = $request->input('speaker');
$course->location = $request->input('location');
@@ -155,6 +161,7 @@ public function update(Request $request, $id)
if($request->input('pptURL')) {
$course->pptURL = $request->input('pptURL');
}
+ $course->modify_user = Auth::user()->id;
$course->update();
return redirect()->route('course.showRegister')->with('status','社課更新成功');
diff --git a/app/Http/Controllers/PortalLoginController.php b/app/Http/Controllers/PortalLoginController.php
index f4a76fb..74aa476 100644
--- a/app/Http/Controllers/PortalLoginController.php
+++ b/app/Http/Controllers/PortalLoginController.php
@@ -3,8 +3,11 @@
namespace App\Http\Controllers;
use App\Enums\Common;
+use App\Enums\LoginMethod;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Log;
+use Laravel\Socialite\Facades\Socialite;
class PortalLoginController extends Controller
{
@@ -16,43 +19,39 @@ public function index()
public function redirectToProvider()
{
- return \Socialite::with('portal')->redirect();
+ return Socialite::with('portal')->redirect();
}
- public function handleProviderCallback()
+ public function handleProviderCallback(): \Illuminate\Http\RedirectResponse
{
- $user_portal = \Socialite::with('portal')->stateless()->user();
- // 幹部名單
-
- // 社員 => 0, 社長 => 1, 副社長 => 2, 嚮導組組長 => 3, 嚮導組組員 => 4,
- // 技術組組長 => 5, 技術組組員 => 6, 器材組組長 => 7, 器材組組員 => 8, 醫藥組組長 => 9,
- // 醫藥組組員 => 10, 文書組組長 => 11, 文書組組員 => 12, 美宣 => 13, 網管 => 14,
- // 財務長 => 15, 山防組組長 => 16
-
- // $position = ["社員", "社長", "副社長", "嚮導組組長", "嚮導組組員",
- // '技術組組長', '技術組組員', '器材組組長', '器材組組員', '醫藥組組長',
- // '醫藥組組員', '文書組組長', '文書組組員', '美宣', '網管',
- // '財務長', '山防組組長' ];
-
- $checkExist = User::where('id', $user_portal->user['id'])->first();
-
- if (is_null($checkExist)) {
+ $user_portal = Socialite::with('portal')->stateless()->user();
+ Log::debug('user login, user array: ', array($user_portal));
+ $existUser = User::where('student_id', $user_portal->user['studentId'])->first();
+ if (is_null($existUser)) {
$user = new User();
- $user->id = $user_portal->user['id'];
- $user->identifier = $user_portal->user['studentId'];
+ $user->student_id = $user_portal->user['studentId'];
$user->name_zh = $user_portal->user['chineseName'];
$user->name_en = $user_portal->user['englishName'];
$user->email = $user_portal->user['email'];
- $user->phone = $user->phone ?? $user_portal->user['mobilePhone'];
+ $user->phone = $user_portal->user['mobilePhone'] ?? null;
$user->personal_id = $user_portal->user['personalId'];
$user->gender = $user_portal->user['gender'];
- $user->create_user = Common::SYSTEM;
- $user->modify_user = Common::SYSTEM;
+ $user->birthday = $user_portal->user['birthday'];
+ $user->login_method = LoginMethod::PORTAL;
+ $user->create_user = Common::SYSTEM_USER;
+ $user->modify_user = Common::SYSTEM_USER;
$user->save();
-
- $checkExist = User::where('id', $user_portal->user['id'])->first(); // 指向不成功,所以再查一次
+ Auth::login($user);
+ } else {
+ // 之前登入的人若沒有以下資料,要重新寫入
+ $existUser->phone = $existUser->phone ?? ($user_portal->user['mobilePhone'] ?? null);
+ $existUser->personal_id = $existUser->personal_id ?? $user_portal->user['personalId'];
+ $existUser->gender = $existUser->gender ?? $user_portal->user['gender'];
+ $existUser->birthday = $existUser->birthday ?? $user_portal->user['birthday'];
+ $existUser->login_method = $existUser->login_method ?? LoginMethod::PORTAL;
+ $existUser->save();
+ Auth::login($existUser);
}
- Auth::login($checkExist);
if (session()->has('previous_page')) {
$url = session('previous_page');
@@ -63,7 +62,7 @@ public function handleProviderCallback()
return redirect()->route('index');
}
- public function logout()
+ public function logout(): \Illuminate\Http\RedirectResponse
{
// 將目前使用者登出
Auth::logout();
diff --git a/app/Http/Controllers/RecordController.php b/app/Http/Controllers/RecordController.php
index 84491be..b640e43 100644
--- a/app/Http/Controllers/RecordController.php
+++ b/app/Http/Controllers/RecordController.php
@@ -86,10 +86,10 @@ public function store(Request $request)
/**
* Display the specified resource.
*
- * @param int $id
+ * @param $id
* @return \Illuminate\Http\Response
*/
- public function show(int $id)
+ public function show($id)
{
$record = Record::findOrFail($id);
$category_array = ["中級山", "高山", "溯溪"];
diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php
index 264befc..33a43f1 100644
--- a/app/Http/Controllers/UserController.php
+++ b/app/Http/Controllers/UserController.php
@@ -2,27 +2,27 @@
namespace App\Http\Controllers;
-use Illuminate\Http\Request;
use App\Models\User;
+use Illuminate\Contracts\Foundation\Application;
+use Illuminate\Contracts\View\Factory;
+use Illuminate\Contracts\View\View;
+use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class UserController extends Controller
{
- const POSITION = ["社員", "社長", "副社長", "嚮導組組長", "嚮導組組員",
- '技術組組長', '技術組組員', '器材組組長', '器材組組長', '醫藥組組長',
- '醫藥組組員', '文書組組長', '文書組組員', '美宣', '網管',
- '財務長', '山防組組長', '山防組組員'];
+ const POSITION = 'general_user';
+ protected string $paginationTheme = 'bootstrap';
+
/**
* Display a listing of the resource.
*
- * @return \Illuminate\Http\Response
+ * @return Application|Factory|View
*/
public function index()
{
- $position = self::POSITION;
-
- $users = User::orderBy('created_at','asc')->get();
- return view('user.user', compact('users', 'position'));
+ $users = User::orderBy('created_at','asc')->paginate(10);
+ return view('user.userList', compact('users'));
}
/**
@@ -61,9 +61,10 @@ public function show($id)
if(!$this->checkUser($id)) {
return redirect()->route('index');
}
- return view('user.information', compact('user', 'position'));
+ return view('user.information', compact('user'));
}
+
/**
* Show the form for editing the specified resource.
*
@@ -73,9 +74,8 @@ public function show($id)
public function edit($id)
{
$user = User::findOrFail($id);
- $position = self::POSITION;
- return(view('user.edit', compact('user', 'position')));
+ return(view('user.edit', compact('user')));
}
/**
diff --git a/app/Http/Livewire/Conference/Form.php b/app/Http/Livewire/Conference/Form.php
new file mode 100644
index 0000000..0f50ad2
--- /dev/null
+++ b/app/Http/Livewire/Conference/Form.php
@@ -0,0 +1,166 @@
+ 'required|string|max:255',
+ 'isVegetarian' => 'required|boolean',
+ 'gender' => 'required|in:1,2',
+ 'phone' => 'required|digits:10',
+ 'email' => 'required|email|max:255',
+ 'identity' => 'required|in:student,social',
+ ];
+
+ public array $messages = [
+ 'name.required' => '姓名為必填',
+ 'isVegetarian.required' => '是否吃素為必填',
+ 'phone.required' => '手機為必填',
+ 'phone.digits' => '手機格式錯誤',
+ 'gender.required' => '性別為必填',
+ 'email.required' => 'Email 為必填',
+ 'email.email' => 'Email 格式錯誤',
+ 'identity.required' => '身份為必填',
+ 'schoolName.required' => '校名為必填',
+ 'department.required' => '系級為必填',
+ ];
+
+ protected $listeners = [
+ 'userSelected' => 'handleUserSelected',
+ ];
+
+ public function handleUserSelected($conferenceUserId): void
+ {
+ $this->conferenceUser = ConferenceUser::findOrFail($conferenceUserId);
+ $this->name = $this->conferenceUser->name;
+ $this->phone = $this->conferenceUser->phone;
+ $this->gender = $this->conferenceUser->gender;
+ $this->isVegetarian = $this->conferenceUser->is_vegetarian;
+ $this->email = $this->conferenceUser->email;
+ $this->identity = $this->conferenceUser->identity;
+ $this->schoolName = $this->conferenceUser->school_name;
+ $this->department = $this->conferenceUser->department;
+ $this->isDone = false;
+ }
+
+ /**
+ * 若身份為學生,則增加校名與系級必填的規則
+ *
+ * @param $identity
+ * @return void
+ */
+ public function updateRuleByIdentity($identity): void
+ {
+ if ($identity == Identity::STUDENT->value) {
+ $this->rules['schoolName'] = 'required|string|max:255';
+ $this->rules['department'] = 'required|string|max:255';
+ } else {
+ unset($this->rules['schoolName']);
+ unset($this->rules['department']);
+ }
+ }
+
+ public function submit(): void
+ {
+ $this->updateRuleByIdentity($this->identity);
+ $this->validate();
+
+ if (Mode::CREATE == $this->mode || (Mode::EDIT == $this->mode && !$this->isOriginalEmail())) {
+ $existingUser = ConferenceUser::where('email', $this->email)->first();
+ if ($existingUser) {
+ $this->addError('email', '此電子郵件已註冊過');
+ return;
+ }
+ }
+
+ $conferenceUser = $this->saveConferenceUser();
+ $this->sendSuccessEmail($conferenceUser);
+
+ if (Mode::CREATE == $this->mode) {
+ $registerOrEdit = '送出';
+ $this->reset();
+ $this->mode = Mode::CREATE;
+ } else {
+ $registerOrEdit = '修改';
+ }
+
+ $successMessage = '成功' . $registerOrEdit . '報名資訊!已將您的報名資訊寄送至您的信箱,請確認您的信箱。';
+ $this->isDone = true;
+ session()->flash('status', $successMessage);
+ }
+
+ public function render(): \Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Contracts\Foundation\Application
+ {
+ return view('livewire.conference.form');
+ }
+
+ private function isOriginalEmail(): bool
+ {
+ return $this->conferenceUser->email == $this->email;
+ }
+
+ /**
+ * 儲存或是編輯 conferenceUser
+ *
+ * @return ConferenceUser
+ */
+ private function saveConferenceUser(): ConferenceUser
+ {
+ $conferenceUser = Mode::CREATE == $this->mode ? new ConferenceUser() : $this->conferenceUser;
+
+ $conferenceUser->name = $this->name;
+ $conferenceUser->is_vegetarian = $this->isVegetarian;
+ $conferenceUser->gender = $this->gender;
+ $conferenceUser->phone = $this->phone;
+ $conferenceUser->email = $this->email;
+ $conferenceUser->identity = $this->identity;
+
+ // 若更新成 SOCIAL 校名與系級要設為空
+ if (Identity::SOCIAL->value == $this->identity) {
+ $conferenceUser->school_name = null;
+ $conferenceUser->department = null;
+ } else {
+ $conferenceUser->school_name = $this->schoolName;
+ $conferenceUser->department = $this->department;
+ }
+
+ $conferenceUser->save();
+ return $conferenceUser;
+ }
+
+ /**
+ * 發送報名或是編輯成功的 email
+ *
+ * @param ConferenceUser $conferenceUser
+ * @return void
+ */
+ private function sendSuccessEmail(ConferenceUser $conferenceUser): void
+ {
+ Mail::to($conferenceUser->email)->queue(new ConferenceRegister($conferenceUser, $this->mode));
+ Log::info('send conference register email to ' . $conferenceUser->email . ', mode: ' . $this->mode->value);
+ }
+}
diff --git a/app/Http/Livewire/Conference/Result.php b/app/Http/Livewire/Conference/Result.php
new file mode 100644
index 0000000..e59404f
--- /dev/null
+++ b/app/Http/Livewire/Conference/Result.php
@@ -0,0 +1,21 @@
+paginate(10);
+ return view('livewire.conference.result', [
+ 'conferenceUsers' => $conferenceUsers,
+ ]);
+ }
+}
diff --git a/app/Http/Livewire/Conference/Search.php b/app/Http/Livewire/Conference/Search.php
new file mode 100644
index 0000000..ef79f67
--- /dev/null
+++ b/app/Http/Livewire/Conference/Search.php
@@ -0,0 +1,137 @@
+ 'required|email',
+ ];
+
+ public array $messages = [
+ 'email.required' => 'Email 為必填',
+ 'email.email' => 'Email 格式錯誤',
+ ];
+
+ public function render(): \Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Contracts\Foundation\Application
+ {
+ return view('livewire.conference.search');
+ }
+
+ public function mount()
+ {
+ $this->lastSentAt = null;
+ }
+
+ public function submit(): void
+ {
+ $this->validate();
+ // 若重複查詢相同的信箱,要先判斷 30 秒內是否有發過驗證碼
+ if ($this->originEmail == $this->email) {
+ if (!$this->hasSendVerification()) {
+ $this->sendVerificationCodeToUser();
+ session()->flash('status', '查詢成功,已將驗證碼寄到您的信箱,請確認您的信箱,並於下方輸入驗證碼。');
+ }
+ return;
+ }
+ $this->conferenceUser = ConferenceUser::where('email', $this->email)->first();
+ if (!$this->conferenceUser) {
+ $this->addError('email', '查無此 email 的報名資訊');
+ return;
+ }
+ $this->originEmail = $this->email;
+ $this->sendVerificationCodeToUser();
+ session()->flash('status', '查詢成功,已將驗證碼寄到您的信箱,請確認您的信箱,並於下方輸入驗證碼。');
+ }
+
+ private function sendVerificationCodeToUser(): void
+ {
+ $this->verificationCode = rand(100000, 999999);
+ $this->verificationCodeCreatedAt = now();
+ $this->isVerificationCodeUsed = false;
+ $subject = '「第二十五屆全國大專校院登山運動研討會」報名資料查詢驗證';
+ Mail::to($this->email)->queue(new VerificationCodeMail($subject, $this->verificationCode));
+ $this->lastSentAt = Carbon::now();
+ }
+
+ public function resendVerificationCodeToUser(): void
+ {
+ if (!$this->hasSendVerification()) {
+ $this->sendVerificationCodeToUser();
+ session()->flash('status', '重新寄送成功,已重新寄送驗證碼到您的信箱,請確認您的信箱,並於下方輸入驗證碼。');
+ }
+ }
+
+ /**
+ * 判斷驗證碼是否在 30 秒內重複寄出
+ *
+ * @return bool
+ */
+ private function hasSendVerification(): bool
+ {
+ $now = Carbon::now();
+ $remainTime = $this->resendCoolDown - $now->diffInSeconds($this->lastSentAt);
+ if ($this->lastSentAt && $now->diffInSeconds($this->lastSentAt) < $this->resendCoolDown) {
+ session()->forget('status');
+ session()->flash('warning', '請稍等 ' . $remainTime . ' 秒後,再點選重新寄送驗證碼。');
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * 比對輸入的驗證碼是否正確,
+ *
+ * @return void
+ */
+ public function submitVerificationCode(): void
+ {
+ if ($this->verificationCodeInput != $this->verificationCode) {
+ session()->forget('status');
+ session()->flash('warning', '驗證碼錯誤,請重試。');
+ $this->isValid = false;
+ return;
+ }
+
+ if ($this->isVerificationCodeUsed) {
+ session()->forget('status');
+ session()->flash('warning', '驗證碼已失效,請重試。');
+ $this->isValid = false;
+ return;
+ }
+
+ if (now()->diffInMinutes($this->verificationCodeCreatedAt) > 5) {
+ session()->forget('status');
+ session()->flash('warning', '驗證碼已失效,請重試。');
+ $this->isValid = false;
+ return;
+ }
+
+ $this->isVerificationCodeUsed = true;
+ session()->flash('status', '驗證碼正確,請確認您的報名資訊。');
+ $this->emit('userSelected', $this->conferenceUser->id);
+ $this->isValid = true;
+ }
+}
diff --git a/app/Http/Livewire/JudgementComponent/Form.php b/app/Http/Livewire/JudgementComponent/Form.php
index dc99428..72e598b 100644
--- a/app/Http/Livewire/JudgementComponent/Form.php
+++ b/app/Http/Livewire/JudgementComponent/Form.php
@@ -2,6 +2,7 @@
namespace App\Http\Livewire\JudgementComponent;
+use App\Enums\Mode;
use App\Models\Judgement;
use Illuminate\Support\Facades\Auth;
use Livewire\Component;
@@ -82,7 +83,7 @@ class Form extends Component
public function mount($mode)
{
$this->mode = $mode;
- if ($this->mode == 'edit') {
+ if ($this->mode == Mode::EDIT->value) {
$this->judgementUpdated = Judgement::findOrFail($this->judgementId);
$this->name = $this->judgementUpdated->name;
@@ -105,7 +106,7 @@ public function submit()
return;
}
- $judgement = $this->mode == 'edit' ? $this->judgementUpdated : new Judgement();
+ $judgement = $this->mode == Mode::EDIT->value ? $this->judgementUpdated : new Judgement();
$judgement->name = $this->name;
$judgement->normal_day = $this->normal_day;
$judgement->abnormal_day = $this->abnormal_day;
@@ -119,7 +120,7 @@ public function submit()
$judgement->score = $this->totalScore;
$judgement->result_level = $this->resultLevel;
$judgement->modify_user = Auth::id();
- if ($this->mode == 'edit') {
+ if ($this->mode == Mode::EDIT->value) {
$judgement->update();
return redirect()->route('judgement.index')->with('status','評分紀錄更新成功');
}
diff --git a/app/Http/Livewire/RecordComponent/Page.php b/app/Http/Livewire/RecordComponent/Page.php
new file mode 100644
index 0000000..a061103
--- /dev/null
+++ b/app/Http/Livewire/RecordComponent/Page.php
@@ -0,0 +1,39 @@
+paginate($this->amountOfPages);
+
+// 定義 $category_array
+ $category_array = ["中級山", "高山", "溯溪"];
+
+ return view('livewire.record-component.page', [
+ 'records' => $records,
+ 'category_array' => $category_array,
+ ]);
+ }
+
+ /**
+ * 觸發滾動到頂端
+ * @return void
+ */
+ public function updatedPage()
+ {
+ $this->dispatchBrowserEvent('scroll-to-top');
+ }
+
+}
diff --git a/app/Http/Livewire/SidebarMenu.php b/app/Http/Livewire/SidebarMenu.php
new file mode 100644
index 0000000..3e12aa1
--- /dev/null
+++ b/app/Http/Livewire/SidebarMenu.php
@@ -0,0 +1,13 @@
+users = User::orderBy('created_at','asc')->get();
+ }
+
+ public function roleChanged($userId, $role): void
+ {
+// $user = User::findOrFail($userId);
+// $user->role = $role;
+// $user->save();
+//
+// session()->flash('status', $user->name_zh . '的角色更新成功');
+// $this->mount();
+ }
+ public function render(): \Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Contracts\Foundation\Application
+ {
+ return view('livewire.user.user-list');
+ }
+}
diff --git a/app/Http/Middleware/UserMiddleware.php b/app/Http/Middleware/UserMiddleware.php
index 290770a..47e11cc 100644
--- a/app/Http/Middleware/UserMiddleware.php
+++ b/app/Http/Middleware/UserMiddleware.php
@@ -2,6 +2,7 @@
namespace App\Http\Middleware;
+use App\Enums\Role;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
@@ -16,12 +17,12 @@ class UserMiddleware
*/
public function handle(Request $request, Closure $next)
{
- if (Auth::check() && Auth::user()->role > 0) {
+ if (Auth::check() && Auth::user()->role > Role::MEMBER->value) {
return $next($request);
}
else{
return redirect()->route('portal.index')->with('status','您並無權限進行此操作,請先登入。');
}
-
+
}
}
diff --git a/app/Mail/Conference/ConferenceRegister.php b/app/Mail/Conference/ConferenceRegister.php
new file mode 100644
index 0000000..3535cff
--- /dev/null
+++ b/app/Mail/Conference/ConferenceRegister.php
@@ -0,0 +1,46 @@
+conferenceUser = $conferenceUser;
+ $this->mode = $mode;
+ }
+
+ /**
+ * Build the message.
+ *
+ * @return $this
+ */
+ public function build(): static
+ {
+ $registerOrEdit = Mode::CREATE == $this->mode ? '報名' : '資料修改';
+ $subject = '「第二十五屆全國大專校院登山運動研討會」' . $registerOrEdit . '成功';
+
+ return $this->from(config('mail.from.address'), config('mail.from.name'))
+ ->view('mail.conference.conferenceRegister')
+ ->subject($subject)
+ ->with(['conferenceUser' => $this->conferenceUser,]
+ );
+ }
+}
diff --git a/app/Mail/Conference/ConferenceReminder.php b/app/Mail/Conference/ConferenceReminder.php
new file mode 100644
index 0000000..479cd75
--- /dev/null
+++ b/app/Mail/Conference/ConferenceReminder.php
@@ -0,0 +1,56 @@
+from(config('mail.from.address'), config('mail.from.name'))
+ ->view('mail.conference.conferenceReminder')
+ ->subject($subject);
+ }
+
+ /**
+ * 研討會的前一天發送提醒的信件
+ *
+ * @return void
+ */
+ public static function sendEmail(): void
+ {
+ $conferenceUsers = ConferenceUser::all();
+ if ($conferenceUsers->isEmpty()) {
+ return;
+ }
+ foreach ($conferenceUsers as $conferenceUser) {
+ Mail::to($conferenceUser->email)->queue(new ConferenceReminder());
+ Log::info('send conference reminder email to ' . $conferenceUser->email);
+ }
+ }
+}
diff --git a/app/Mail/Course.php b/app/Mail/Course.php
deleted file mode 100644
index ab2784e..0000000
--- a/app/Mail/Course.php
+++ /dev/null
@@ -1,45 +0,0 @@
-courseRecord = $courseRecord;
- }
-
- /**
- * Build the message.
- *
- * @return $this
- */
- public function build()
- {
- return $this->from('ncumt40@gmail.com')
- ->view('mail.notifyCourse')
- ->subject( '「' . $this->courseRecord->course->title . '」' . '報名完成')
- ->with([
- 'title' => $this->courseRecord->course->title,
- 'name' => $this->courseRecord->user->name_zh,
- 'date' => $this->courseRecord->course->date,
- 'speaker' => $this->courseRecord->course->speaker,
- 'location' => $this->courseRecord->course->location,
- ]);
- }
-}
diff --git a/app/Mail/Course/CourseRegister.php b/app/Mail/Course/CourseRegister.php
new file mode 100644
index 0000000..c87f21c
--- /dev/null
+++ b/app/Mail/Course/CourseRegister.php
@@ -0,0 +1,46 @@
+courseRecord = $courseRecord;
+ }
+
+ /**
+ * Build the message.
+ *
+ * @return $this
+ */
+ public function build(): static
+ {
+ $date = DateFormatter::formatRange($this->courseRecord->course->start_date, $this->courseRecord->course->end_date);
+ return $this->from('ncumt40@gmail.com')
+ ->view('mail.course.notifyCourse')
+ ->subject('「' . $this->courseRecord->course->title . '」' . '報名完成')
+ ->with([
+ 'title' => $this->courseRecord->course->title,
+ 'name' => $this->courseRecord->user->name_zh,
+ 'date' => $date,
+ 'speaker' => $this->courseRecord->course->speaker,
+ 'location' => $this->courseRecord->course->location,
+ ]);
+ }
+}
diff --git a/app/Mail/Course/CourseReminder.php b/app/Mail/Course/CourseReminder.php
new file mode 100644
index 0000000..5287d19
--- /dev/null
+++ b/app/Mail/Course/CourseReminder.php
@@ -0,0 +1,74 @@
+course = $course;
+ $this->user = $user;
+ }
+
+ /**
+ * Build the message.
+ *
+ * @return $this
+ */
+ public function build(): static
+ {
+ $date = DateFormatter::formatRange($this->course->start_date, $this->course->end_date);
+ return $this->from('ncumt40@gmail.com')
+ ->subject('「' . $this->course->title . '」' . '報名提醒')
+ ->view('mail.course.remindCourse')
+ ->with([
+ 'title' => $this->course->title,
+ 'name' => $this->user->name_zh,
+ 'date' => $date,
+ 'speaker' => $this->course->speaker,
+ 'location' => $this->course->location,
+ ]);
+ }
+
+ /**
+ * 社課前一天寄送報名提醒
+ * @return void
+ */
+ public static function sendEmail(): void
+ {
+ $courses = Course::where('start_date', now()->addDay()->toDateString())->get();
+
+ if ($courses->isEmpty()) {
+ return;
+ }
+ foreach ($courses as $course) {
+ if ($course->users->isEmpty()) {
+ continue;
+ }
+ foreach ($course->users as $user) {
+ Mail::to($user->email)->send(new CourseReminder($course, $user));
+ Log::info('Sending email to ' . $user->email . ', course title: ' . $course->title);
+ }
+ }
+ }
+}
diff --git a/app/Mail/CourseReminder.php b/app/Mail/CourseReminder.php
deleted file mode 100644
index cbce7fa..0000000
--- a/app/Mail/CourseReminder.php
+++ /dev/null
@@ -1,48 +0,0 @@
-course = $course;
- $this->user = $user;
- }
-
- /**
- * Build the message.
- *
- * @return $this
- */
- public function build()
- {
- return $this->from('ncumt40@gmail.com')
- ->view('mail.remindCourse')
- ->subject( '「' . $this->course->title . '」' . '報名提醒')
- ->with([
- 'title' => $this->course->title,
- 'name' => $this->user->name_zh,
- 'date' => $this->course->date,
- 'speaker' => $this->course->speaker,
- 'location' => $this->course->location,
- ]);
- }
-}
diff --git a/app/Mail/VerificationCodeMail.php b/app/Mail/VerificationCodeMail.php
new file mode 100644
index 0000000..a5f5dbf
--- /dev/null
+++ b/app/Mail/VerificationCodeMail.php
@@ -0,0 +1,39 @@
+subject = $subject;
+ $this->verificationCode = $verificationCode;
+ }
+
+ /**
+ * Build the message.
+ *
+ * @return $this
+ */
+ public function build(): static
+ {
+ return $this->from(config('mail.from.address'), config('mail.from.name'))
+ ->subject($this->subject)
+ ->view('mail.verificationCode')
+ ->with(['code' => $this->verificationCode]);
+ }
+}
diff --git a/app/Models/ConferenceUser.php b/app/Models/ConferenceUser.php
new file mode 100644
index 0000000..de0b93e
--- /dev/null
+++ b/app/Models/ConferenceUser.php
@@ -0,0 +1,11 @@
+hasMany(CourseRecord::class);
}
- public function users() {
+ public function users(): \Illuminate\Database\Eloquent\Relations\BelongsToMany
+ {
return $this->belongsToMany(User::class, 'course_records', 'course_id', 'user_id');
}
}
+
diff --git a/app/Models/User.php b/app/Models/User.php
index 2b8e58b..97c8204 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -2,32 +2,15 @@
namespace App\Models;
-use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
-use App\Models\Post;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
- // public function getRoleAttribute()
- // {
- // // 定義索引值到文字形式角色的映射
- // $roles = [
- // 1 => '社員',
- // 2 => '幹部',
-
- // ];
- // 社員 => 0, 社長 => 1, 副社長 => 2, 嚮導組組長 => 3, 嚮導組組員 => 4,
- // 技術組組長 => 5, 技術組組員 => 6, 器材組組長 => 7, 器材組組員 => 8, 醫藥組組長 => 9,
- // 醫藥組組員 => 10, 文書組組長 => 11, 文書組組員 => 12, 美宣 => 13, 網管 => 14,
- // 財務長 => 15, 山防組組長 => 16
- // return $roles[$this->attributes['role']] ?? '未知角色';
- // }
-
/**
* The attributes that are mass assignable.
*
@@ -61,4 +44,16 @@ public function post() {
protected $casts = [
'email_verified_at' => 'datetime',
];
+
+ public function isValidIdentifiers(array $studentIds): bool
+ {
+ return in_array($this->student_id, $studentIds);
+ }
+
+ /*更新 modify_user 和 updated_at 字段,抽成共用*/
+ public function setModifiedUser()
+ {
+ $this->modify_user = auth()->user()->id;
+ $this->updated_at = now();
+ }
}
diff --git a/app/Utils/DateFormatter.php b/app/Utils/DateFormatter.php
new file mode 100644
index 0000000..e4e493c
--- /dev/null
+++ b/app/Utils/DateFormatter.php
@@ -0,0 +1,34 @@
+
+ * 轉換日期格式
+ * ex: 傳入 2024-09-07 19:00, 2024-09-07 21:00,會轉換成 2024-09-07 19:00 - 21:00
+ *
+ * >
+ *
+ * @param string|Carbon|null $start_date
+ * @param string|Carbon|null $end_date
+ * @return string
+ */
+ public static function formatRange(Carbon|string|null $start_date, Carbon|string|null $end_date): string
+ {
+ // 轉成 Carbon
+ $start_date = $start_date instanceof Carbon ? $start_date : Carbon::parse($start_date);
+ $end_date = $end_date instanceof Carbon ? $end_date : Carbon::parse($end_date);
+
+ if ($start_date->format('Y.m.d') == $end_date->format('Y.m.d')) {
+ // 同一天
+ return $start_date->format('Y.m.d H:i') . ' - ' . $end_date->format('H:i');
+ } else {
+ // 不同天
+ return $start_date->format('Y.m.d H:i') . ' - ' . $end_date->format('Y.m.d H:i');
+ }
+ }
+}
diff --git a/database/migrations/2024_08_10_205909_create_conference_user_table.php b/database/migrations/2024_08_10_205909_create_conference_user_table.php
new file mode 100644
index 0000000..2f618b5
--- /dev/null
+++ b/database/migrations/2024_08_10_205909_create_conference_user_table.php
@@ -0,0 +1,39 @@
+id()->comment('主鍵');
+ $table->string('name')->comment('姓名'); // 姓名
+ $table->boolean('is_vegetarian')->default(false)->comment('是否吃素 0:否, 1:是'); // 是否吃素
+ $table->smallInteger('gender')->comment('性別 0:男, 1:女');
+ $table->string('phone')->comment('手機'); // 手機
+ $table->string('email')->unique()->comment('電子郵件'); // Email
+ $table->enum('identity', ['student', 'social'])->comment('參加身份(學生/社會人士)'); // 參加身份
+ $table->string('school_name')->nullable()->comment('校名'); // 校名
+ $table->string('department')->nullable()->comment('系級'); // 系級
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('conference_users');
+ }
+}
diff --git a/database/migrations/2024_09_03_214450_modify_users_table.php b/database/migrations/2024_09_03_214450_modify_users_table.php
new file mode 100644
index 0000000..c77a504
--- /dev/null
+++ b/database/migrations/2024_09_03_214450_modify_users_table.php
@@ -0,0 +1,43 @@
+dropUnique('users_email_unique');
+ $table->boolean('has_long_experience')->default(false)->nullable()->comment('是否有長程經驗');
+ $table->boolean('has_river_experience')->default(false)->nullable()->comment('是否有溯溪經驗');
+ $table->string('login_method')->nullable()->comment('登入方式');
+ $table->smallInteger('river_guard')->default(0)->comment('0:非溪嚮, 1:溪嚮');
+ $table->renameColumn('identifier', 'student_id');
+ $table->unique('student_id', 'users_student_id_unique');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down(): void
+ {
+ Schema::table('users', function (Blueprint $table) {
+ $table->dropColumn('has_long_experience');
+ $table->dropColumn('has_river_experience');
+ $table->dropColumn('login_method');
+ $table->dropColumn('river_guard');
+ $table->dropUnique('users_student_id_unique');
+ $table->renameColumn('student_id', 'identifier');
+ });
+ }
+}
diff --git a/database/migrations/2024_09_07_210527_add_birthday_columns_to_users_table.php b/database/migrations/2024_09_07_210527_add_birthday_columns_to_users_table.php
new file mode 100644
index 0000000..34cf89a
--- /dev/null
+++ b/database/migrations/2024_09_07_210527_add_birthday_columns_to_users_table.php
@@ -0,0 +1,32 @@
+string('birthday')->nullable()->comment('生日');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('users', function (Blueprint $table) {
+ $table->dropColumn('birthday');
+ });
+ }
+}
diff --git a/database/migrations/2024_09_07_213633_add_start_date_and_end_date_to_courses_table.php b/database/migrations/2024_09_07_213633_add_start_date_and_end_date_to_courses_table.php
new file mode 100644
index 0000000..37a3ccc
--- /dev/null
+++ b/database/migrations/2024_09_07_213633_add_start_date_and_end_date_to_courses_table.php
@@ -0,0 +1,35 @@
+date('date')->nullable()->change();
+ $table->dateTime('start_date')->nullable()->comment('課程開始時間');
+ $table->dateTime('end_date')->nullable()->comment('課程結束時間');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('courses', function (Blueprint $table) {
+ $table->dropColumn('start_date');
+ $table->dropColumn('end_date');
+ });
+ }
+}
diff --git a/public/assets/css/404.css b/public/assets/css/404.css
new file mode 100644
index 0000000..6cb522f
--- /dev/null
+++ b/public/assets/css/404.css
@@ -0,0 +1,95 @@
+.container-fluid {
+ padding: 0;
+ position: relative;
+ height: 90vh;
+ overflow: hidden;
+}
+.crop {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ opacity: 0.8;
+ filter: brightness(0.8) contrast(1.1);
+}
+.overlay {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ color: white;
+ text-align: center;
+ width: 100%;
+ height: auto;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ z-index: 1;
+}
+.overlay h1 {
+ font-size: 7rem;
+ font-weight: 500;
+ margin: 0;
+}
+.overlay p {
+ font-size: 4rem;
+ font-weight: 600;
+ margin-top: 5px;
+ margin-bottom: 150px;
+}
+.overlay a {
+ display: inline-block;
+ padding: 10px 20px;
+ font-size: 1.2rem;
+ font-weight: 450;
+ color: #000000;
+ background-color: rgba(255, 255, 255, 0.8);
+ text-decoration: none;
+ border-radius: 5px;
+ transition: background-color 0.3s, color 0.3s;
+}
+.overlay a:hover {
+ background-color: gray;
+ color: white;
+}
+.gif-container {
+ position: absolute;
+ bottom: 20px;
+ right: 20px;
+ z-index: 2;
+ display: none;
+}
+.gif-container img {
+ width: 100px;
+ height: auto;
+}
+.fullscreen-gif-container {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100vw;
+ height: 100vh;
+ background: rgba(0, 0, 0, 0.7);
+ display: none;
+ align-items: center;
+ justify-content: center;
+ z-index: 3;
+}
+.fullscreen-gif-container img {
+ width: 100vw;
+ height: 100vh;
+ max-height: 100vh;
+ object-fit: contain;
+}
+
+@media (max-width: 768px) {
+ .overlay h1 {
+ font-size: 5.5rem;
+ }
+ .overlay p {
+ font-size: 3rem;
+ }
+ .overlay a {
+ font-size: 1rem;
+ }
+}
diff --git a/public/assets/css/main.css b/public/assets/css/main.css
index 8bf3bf3..ea7c5f4 100755
--- a/public/assets/css/main.css
+++ b/public/assets/css/main.css
@@ -1207,6 +1207,68 @@ section {
}
}
+.contact .createRecordForm {
+ box-shadow: 0 0 30px rgba(var(--color-black-rgb), 0.1);
+ padding: 30px;
+ background: var(--color-white);
+}
+
+@media (max-width: 640px) {
+ .contact .createRecordForm {
+ padding: 20px;
+ }
+}
+
+.contact .createRecordForm .error-message {
+ display: none;
+ color: var(--color-white);
+ background: var(--color-red);
+ text-align: left;
+ padding: 15px;
+ font-weight: 600;
+}
+
+.contact .createRecordForm .result-message {
+
+ color: #f55b6a;
+ text-align: center;
+ font-size: 30px;
+ letter-spacing: 0.1em;
+ font-weight: 600;
+}
+
+.contact .createRecordForm .error-message br + br {
+ margin-top: 25px;
+}
+
+.contact .createRecordForm .sent-message {
+ display: none;
+ color: var(--color-white);
+ background: var(--color-green);
+ text-align: center;
+ padding: 15px;
+ font-weight: 600;
+}
+
+.contact .createRecordForm .loading {
+ display: none;
+ background: var(--color-white);
+ text-align: center;
+ padding: 15px;
+}
+
+.contact .createRecordForm .loading:before {
+ content: "";
+ display: inline-block;
+ border-radius: 50%;
+ width: 24px;
+ height: 24px;
+ margin: 0 10px -6px 0;
+ border: 3px solid var(--color-green);
+ border-top-color: var(--color-white);
+ animation: animate-loading 1s linear infinite;
+}
+
.contact .createRecordForm .form-group {
margin-bottom: 20px;
}
@@ -1533,3 +1595,57 @@ button.black[type=submit] {
text-indent: 2em;
text-align: justify;
}
+/*紀錄*/
+
+/*圖片*/
+.record-img {
+ width: 100%;
+ height: auto;
+ object-fit: cover;
+ padding: 0 16px; /* 左右寬度 */
+ margin: 9px 0; /* 上下間距 */
+ border-radius: 5%; /*導角*/
+}
+
+.record-description {
+ text-align: left;
+ line-height: 2.5;
+}
+
+/* 基本按鈕樣式 */
+.record-btn {
+ width: 150px;
+ height: 50px;
+ font-size: 1rem;
+ border-radius: 4px;
+ background-color: #343a40;
+ color: #ffffff;
+ border: 2px solid transparent;
+ transition: all 0.3s ease; /* 平滑過渡效果 */
+}
+
+.record-btn:hover {
+ background-color: #ffffff;
+ color: #343a40;
+ border-color: #343a40;
+}
+
+/* 螢幕寬度大於等於768px時的按鈕樣式 */
+@media (min-width: 768px) {
+ .record-btn {
+ width: 200px;
+ height: 60px;
+ font-size: 1.2rem;
+ }
+}
+
+/*紀錄標籤字型*/
+.record-meta {
+ font-size: 16px;
+ letter-spacing: 0.07rem;
+ text-transform: uppercase;
+ font-weight: 600;
+ font-family: var(--font-secondary);
+ color: rgba(var(--color-black-rgb), 0.4);
+ margin-bottom: 10px;
+}
diff --git a/public/assets/css/sidebar.css b/public/assets/css/sidebar.css
new file mode 100644
index 0000000..a7486e1
--- /dev/null
+++ b/public/assets/css/sidebar.css
@@ -0,0 +1,37 @@
+
+/* 側邊欄設置 */
+#sidebar {
+ position: fixed; /* 固定在頁面右側 */
+ top: 50%; /* 垂直居中 */
+ right: 0;
+ transform: translateY(-50%); /* 垂直居中調整 */
+ width: 200px; /* 調整寬度 */
+ height: auto; /* 自適應高度 */
+ background-color: #f8f9fa; /* 調整背景顏色 */
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); /* 陰影效果 */
+ z-index: 900; /* 確保在主要內容之前 */
+}
+
+/* 側邊欄列表樣式 */
+#sidebar ul {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+#sidebar ul li {
+ border-bottom: 1px solid #ddd; /* 分隔線 */
+}
+
+#sidebar ul li a {
+ display: block;
+ padding: 15px;
+ text-decoration: none;
+ color: #333; /* 調整文字顏色 */
+ transition: background-color 0.3s ease;
+}
+
+#sidebar ul li a:hover {
+ background-color: #eee; /* 滑鼠懸停時的背景顏色 */
+}
+
diff --git a/public/assets/img/404_1.jpg b/public/assets/img/404_1.jpg
new file mode 100644
index 0000000..dea8eeb
Binary files /dev/null and b/public/assets/img/404_1.jpg differ
diff --git a/public/assets/img/404_2.jpg b/public/assets/img/404_2.jpg
new file mode 100644
index 0000000..290c2ec
Binary files /dev/null and b/public/assets/img/404_2.jpg differ
diff --git a/public/assets/img/404_3.jpg b/public/assets/img/404_3.jpg
new file mode 100644
index 0000000..28ce22e
Binary files /dev/null and b/public/assets/img/404_3.jpg differ
diff --git a/public/assets/img/404_4.jpg b/public/assets/img/404_4.jpg
new file mode 100644
index 0000000..9848aa5
Binary files /dev/null and b/public/assets/img/404_4.jpg differ
diff --git a/public/assets/img/nyancat.gif b/public/assets/img/nyancat.gif
new file mode 100644
index 0000000..5e94071
Binary files /dev/null and b/public/assets/img/nyancat.gif differ
diff --git a/public/assets/img/nyancat_fullscreen.gif b/public/assets/img/nyancat_fullscreen.gif
new file mode 100644
index 0000000..8eee115
Binary files /dev/null and b/public/assets/img/nyancat_fullscreen.gif differ
diff --git a/public/js/app.js b/public/js/app.js
index 86fa03d..98ea3f9 100755
--- a/public/js/app.js
+++ b/public/js/app.js
@@ -2143,7 +2143,7 @@ __webpack_require__.r(__webpack_exports__);
var my_map = {
// <-- add this line to declare the object
display: function display() {
- // <-- add this line to declare a method
+ // <-- add this line to declare a method
var map = new ol__WEBPACK_IMPORTED_MODULE_1__["default"]({
target: 'map',
@@ -2173,7 +2173,7 @@ var my_map = {
}),
style: new ol_style_js__WEBPACK_IMPORTED_MODULE_9__["default"]({
image: new ol_style_js__WEBPACK_IMPORTED_MODULE_10__["default"]({
- src: "assets/img/ncumt.png"
+ src: "assets/img/favicon.png"
}),
text: new ol_style_js__WEBPACK_IMPORTED_MODULE_11__["default"]({
font: '20px 微軟正黑體',
@@ -63706,7 +63706,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
-/******/
+/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
@@ -63720,20 +63720,20 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
/******/ loaded: false,
/******/ exports: {}
/******/ };
-/******/
+/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-/******/
+/******/
/******/ // Flag the module as loaded
/******/ module.loaded = true;
-/******/
+/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
-/******/
+/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = __webpack_modules__;
-/******/
+/******/
/************************************************************************/
/******/ /* webpack/runtime/chunk loaded */
/******/ (() => {
@@ -63766,7 +63766,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
/******/ return result;
/******/ };
/******/ })();
-/******/
+/******/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
@@ -63778,7 +63778,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
/******/ }
/******/ };
/******/ })();
-/******/
+/******/
/******/ /* webpack/runtime/global */
/******/ (() => {
/******/ __webpack_require__.g = (function() {
@@ -63790,12 +63790,12 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
/******/ }
/******/ })();
/******/ })();
-/******/
+/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
-/******/
+/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
@@ -63806,7 +63806,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
-/******/
+/******/
/******/ /* webpack/runtime/node module decorator */
/******/ (() => {
/******/ __webpack_require__.nmd = (module) => {
@@ -63815,11 +63815,11 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
/******/ return module;
/******/ };
/******/ })();
-/******/
+/******/
/******/ /* webpack/runtime/jsonp chunk loading */
/******/ (() => {
/******/ // no baseURI
-/******/
+/******/
/******/ // object to store loaded and loading chunks
/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
@@ -63827,19 +63827,19 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
/******/ "/js/app": 0,
/******/ "css/app": 0
/******/ };
-/******/
+/******/
/******/ // no chunk on demand loading
-/******/
+/******/
/******/ // no prefetching
-/******/
+/******/
/******/ // no preloaded
-/******/
+/******/
/******/ // no HMR
-/******/
+/******/
/******/ // no HMR manifest
-/******/
+/******/
/******/ __webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);
-/******/
+/******/
/******/ // install a JSONP callback for chunk loading
/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
/******/ var [chunkIds, moreModules, runtime] = data;
@@ -63864,20 +63864,20 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
/******/ }
/******/ return __webpack_require__.O(result);
/******/ }
-/******/
+/******/
/******/ var chunkLoadingGlobal = self["webpackChunk"] = self["webpackChunk"] || [];
/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
/******/ })();
-/******/
+/******/
/************************************************************************/
-/******/
+/******/
/******/ // startup
/******/ // Load entry module and return exports
/******/ // This entry module depends on other loaded chunks and execution need to be delayed
/******/ __webpack_require__.O(undefined, ["css/app"], () => (__webpack_require__("./resources/js/app.js")))
/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["css/app"], () => (__webpack_require__("./resources/css/app.css")))
/******/ __webpack_exports__ = __webpack_require__.O(__webpack_exports__);
-/******/
+/******/
/******/ })()
-;
\ No newline at end of file
+;
diff --git a/public/js/map.js b/public/js/map.js
index 996c863..178d94d 100644
--- a/public/js/map.js
+++ b/public/js/map.js
@@ -44078,7 +44078,7 @@ const VERSION = '7.4.0';
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
-/******/
+/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
@@ -44092,14 +44092,14 @@ const VERSION = '7.4.0';
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
-/******/
+/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-/******/
+/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
-/******/
+/******/
/************************************************************************/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
@@ -44112,12 +44112,12 @@ const VERSION = '7.4.0';
/******/ }
/******/ };
/******/ })();
-/******/
+/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
-/******/
+/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
@@ -44128,7 +44128,7 @@ const VERSION = '7.4.0';
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
-/******/
+/******/
/************************************************************************/
var __webpack_exports__ = {};
// This entry need to be wrapped in an IIFE because it need to be in strict mode.
@@ -44168,7 +44168,7 @@ __webpack_require__.r(__webpack_exports__);
var my_map = {
// <-- add this line to declare the object
display: function display() {
- // <-- add this line to declare a method
+ // <-- add this line to declare a method
var map = new ol__WEBPACK_IMPORTED_MODULE_1__["default"]({
target: 'map',
@@ -44198,7 +44198,7 @@ var my_map = {
}),
style: new ol_style_js__WEBPACK_IMPORTED_MODULE_9__["default"]({
image: new ol_style_js__WEBPACK_IMPORTED_MODULE_10__["default"]({
- src: "assets/img/ncumt.png"
+ src: "assets/img/favicon.png"
}),
text: new ol_style_js__WEBPACK_IMPORTED_MODULE_11__["default"]({
font: '20px 微軟正黑體',
@@ -44224,4 +44224,4 @@ var my_map = {
})();
/******/ })()
-;
\ No newline at end of file
+;
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/1.\344\270\255\345\244\256\351\207\221\347\244\246_1724145772.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/1.\344\270\255\345\244\256\351\207\221\347\244\246_1724145772.jpg"
new file mode 100644
index 0000000..a5406df
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/1.\344\270\255\345\244\256\351\207\221\347\244\246_1724145772.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/1.\345\207\272\347\231\274\357\274\214\345\276\210\346\274\202\344\272\256_1724145909.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/1.\345\207\272\347\231\274\357\274\214\345\276\210\346\274\202\344\272\256_1724145909.jpg"
new file mode 100644
index 0000000..e2be36c
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/1.\345\207\272\347\231\274\357\274\214\345\276\210\346\274\202\344\272\256_1724145909.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/1.\345\223\201\345\213\262\345\216\273\345\211\203\351\240\255_1724144704.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/1.\345\223\201\345\213\262\345\216\273\345\211\203\351\240\255_1724144704.jpg"
new file mode 100644
index 0000000..4e85ff3
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/1.\345\223\201\345\213\262\345\216\273\345\211\203\351\240\255_1724144704.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/1.\345\244\247\346\265\256\347\257\211\346\251\213_1724145262.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/1.\345\244\247\346\265\256\347\257\211\346\251\213_1724145262.jpg"
new file mode 100644
index 0000000..b1574f2
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/1.\345\244\247\346\265\256\347\257\211\346\251\213_1724145262.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/1.\346\262\231\346\262\231\346\213\211\346\257\224_1724145649.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/1.\346\262\231\346\262\231\346\213\211\346\257\224_1724145649.jpg"
new file mode 100644
index 0000000..01e21ab
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/1.\346\262\231\346\262\231\346\213\211\346\257\224_1724145649.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/1.\350\225\250\346\265\267\347\265\225\344\272\206_1724145683.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/1.\350\225\250\346\265\267\347\265\225\344\272\206_1724145683.jpg"
new file mode 100644
index 0000000..3ad2c72
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/1.\350\225\250\346\265\267\347\265\225\344\272\206_1724145683.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/1.\351\247\220\345\234\250\346\211\200\346\227\201\345\217\244\351\201\223\346\234\211\351\220\265\347\265\262\347\266\262_1724145549.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/1.\351\247\220\345\234\250\346\211\200\346\227\201\345\217\244\351\201\223\346\234\211\351\220\265\347\265\262\347\266\262_1724145549.jpg"
new file mode 100644
index 0000000..55fe15c
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/1.\351\247\220\345\234\250\346\211\200\346\227\201\345\217\244\351\201\223\346\234\211\351\220\265\347\265\262\347\266\262_1724145549.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/10.\345\215\201\351\207\214_1724144945.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/10.\345\215\201\351\207\214_1724144945.jpg"
new file mode 100644
index 0000000..002dca1
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/10.\345\215\201\351\207\214_1724144945.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/10.\346\204\217\350\245\277\346\213\211\344\275\217\345\234\250\346\211\200\345\211\215\346\272\252\346\272\235\344\275\216\347\271\236_1724145406.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/10.\346\204\217\350\245\277\346\213\211\344\275\217\345\234\250\346\211\200\345\211\215\346\272\252\346\272\235\344\275\216\347\271\236_1724145406.jpg"
new file mode 100644
index 0000000..1467cbd
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/10.\346\204\217\350\245\277\346\213\211\344\275\217\345\234\250\346\211\200\345\211\215\346\272\252\346\272\235\344\275\216\347\271\236_1724145406.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/11.\346\204\217\350\245\277\346\213\211\351\247\220\345\234\250\346\211\200_1724145424.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/11.\346\204\217\350\245\277\346\213\211\351\247\220\345\234\250\346\211\200_1724145424.jpg"
new file mode 100644
index 0000000..2dd235f
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/11.\346\204\217\350\245\277\346\213\211\351\247\220\345\234\250\346\211\200_1724145424.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/11.\347\237\263\346\264\236\346\272\252\350\260\267_1724144958.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/11.\347\237\263\346\264\236\346\272\252\350\260\267_1724144958.jpg"
new file mode 100644
index 0000000..8d1bd75
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/11.\347\237\263\346\264\236\346\272\252\350\260\267_1724144958.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/12.\346\204\217\350\245\277\346\213\211\345\264\251\345\243\201_1724145438.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/12.\346\204\217\350\245\277\346\213\211\345\264\251\345\243\201_1724145438.jpg"
new file mode 100644
index 0000000..ba7b1b7
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/12.\346\204\217\350\245\277\346\213\211\345\264\251\345\243\201_1724145438.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/12.\346\212\261\345\264\226\345\261\261\345\261\213_1724144972.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/12.\346\212\261\345\264\226\345\261\261\345\261\213_1724144972.jpg"
new file mode 100644
index 0000000..a730848
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/12.\346\212\261\345\264\226\345\261\261\345\261\213_1724144972.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/13.\346\204\217\350\245\277\346\213\211\345\220\212\346\251\213_1724145455.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/13.\346\204\217\350\245\277\346\213\211\345\220\212\346\251\213_1724145455.jpg"
new file mode 100644
index 0000000..7650b57
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/13.\346\204\217\350\245\277\346\213\211\345\220\212\346\251\213_1724145455.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/13.\346\241\214\345\255\220\346\226\267\346\216\211_1724145002.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/13.\346\241\214\345\255\220\346\226\267\346\216\211_1724145002.jpg"
new file mode 100644
index 0000000..f6156cd
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/13.\346\241\214\345\255\220\346\226\267\346\216\211_1724145002.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/14.\344\273\260\346\234\233\346\226\260\345\272\267\345\261\261_1724145032.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/14.\344\273\260\346\234\233\346\226\260\345\272\267\345\261\261_1724145032.jpg"
new file mode 100644
index 0000000..7526cda
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/14.\344\273\260\346\234\233\346\226\260\345\272\267\345\261\261_1724145032.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/14.\351\226\213\347\271\251\351\201\216\345\264\251\345\243\201_1724145470.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/14.\351\226\213\347\271\251\351\201\216\345\264\251\345\243\201_1724145470.jpg"
new file mode 100644
index 0000000..ee186db
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/14.\351\226\213\347\271\251\351\201\216\345\264\251\345\243\201_1724145470.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/15.\345\241\224\351\201\224\350\212\254\346\272\252\345\272\225_1724145496.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/15.\345\241\224\351\201\224\350\212\254\346\272\252\345\272\225_1724145496.jpg"
new file mode 100644
index 0000000..4d177c6
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/15.\345\241\224\351\201\224\350\212\254\346\272\252\345\272\225_1724145496.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/15.\346\253\273\346\251\213_1724145053.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/15.\346\253\273\346\251\213_1724145053.jpg"
new file mode 100644
index 0000000..92870e7
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/15.\346\253\273\346\251\213_1724145053.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/16.\346\262\231\346\225\246\351\232\247\351\201\223_1724145070.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/16.\346\262\231\346\225\246\351\232\247\351\201\223_1724145070.jpg"
new file mode 100644
index 0000000..89ea816
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/16.\346\262\231\346\225\246\351\232\247\351\201\223_1724145070.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/16.\346\264\227\346\276\241\345\276\214_1724145499.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/16.\346\264\227\346\276\241\345\276\214_1724145499.jpg"
new file mode 100644
index 0000000..108b98a
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/16.\346\264\227\346\276\241\345\276\214_1724145499.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/17.\346\211\230\351\246\254\346\226\257\351\247\220\345\234\250\346\211\200_1724145516.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/17.\346\211\230\351\246\254\346\226\257\351\247\220\345\234\250\346\211\200_1724145516.jpg"
new file mode 100644
index 0000000..2583709
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/17.\346\211\230\351\246\254\346\226\257\351\247\220\345\234\250\346\211\200_1724145516.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/17.\346\226\260\345\262\241\345\220\212\346\251\213_1724145080.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/17.\346\226\260\345\262\241\345\220\212\346\251\213_1724145080.jpg"
new file mode 100644
index 0000000..ea39202
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/17.\346\226\260\345\262\241\345\220\212\346\251\213_1724145080.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/18.\345\264\251\345\243\201\357\274\214\346\234\211\347\271\251_1724145097.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/18.\345\264\251\345\243\201\357\274\214\346\234\211\347\271\251_1724145097.jpg"
new file mode 100644
index 0000000..bd20565
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/18.\345\264\251\345\243\201\357\274\214\346\234\211\347\271\251_1724145097.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/19.\345\244\232\347\276\216\351\272\227_1724145110.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/19.\345\244\232\347\276\216\351\272\227_1724145110.jpg"
new file mode 100644
index 0000000..41eb579
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/19.\345\244\232\347\276\216\351\272\227_1724145110.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/2.\344\270\273\345\263\260_1724145921.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/2.\344\270\273\345\263\260_1724145921.jpg"
new file mode 100644
index 0000000..a861db3
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/2.\344\270\273\345\263\260_1724145921.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/2.\344\275\216\347\271\236\345\244\247\345\210\206\347\200\221\345\270\203_1724145273.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/2.\344\275\216\347\271\236\345\244\247\345\210\206\347\200\221\345\270\203_1724145273.jpg"
new file mode 100644
index 0000000..4d2540e
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/2.\344\275\216\347\271\236\345\244\247\345\210\206\347\200\221\345\270\203_1724145273.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/2.\345\215\227\345\256\211\347\231\273\345\261\261\345\217\243_1724144820.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/2.\345\215\227\345\256\211\347\231\273\345\261\261\345\217\243_1724144820.jpg"
new file mode 100644
index 0000000..56a3514
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/2.\345\215\227\345\256\211\347\231\273\345\261\261\345\217\243_1724144820.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/2.\345\244\247\346\260\264\347\252\237\351\247\220\345\234\250\346\211\200_1724145700.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/2.\345\244\247\346\260\264\347\252\237\351\247\220\345\234\250\346\211\200_1724145700.jpg"
new file mode 100644
index 0000000..a8a130b
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/2.\345\244\247\346\260\264\347\252\237\351\247\220\345\234\250\346\211\200_1724145700.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/2.\345\261\261\345\255\227\345\237\272\347\237\263_1724145562.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/2.\345\261\261\345\255\227\345\237\272\347\237\263_1724145562.jpg"
new file mode 100644
index 0000000..69c05c3
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/2.\345\261\261\345\255\227\345\237\272\347\237\263_1724145562.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/2.\347\254\254\344\270\200\345\264\251\346\235\261\351\202\212_1724145795.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/2.\347\254\254\344\270\200\345\264\251\346\235\261\351\202\212_1724145795.jpg"
new file mode 100644
index 0000000..94c65d1
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/2.\347\254\254\344\270\200\345\264\251\346\235\261\351\202\212_1724145795.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/20.\350\262\223\351\240\255\351\267\271_1724145123.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/20.\350\262\223\351\240\255\351\267\271_1724145123.jpg"
new file mode 100644
index 0000000..221832d
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/20.\350\262\223\351\240\255\351\267\271_1724145123.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/21.\344\277\257\347\236\260\345\244\247\345\210\206_1724145139.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/21.\344\277\257\347\236\260\345\244\247\345\210\206_1724145139.jpg"
new file mode 100644
index 0000000..debc2ac
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/21.\344\277\257\347\236\260\345\244\247\345\210\206_1724145139.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/22.\350\217\257\345\267\264\350\253\276\347\231\273\345\261\261\345\217\243\346\260\264\346\272\220_1724145154.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/22.\350\217\257\345\267\264\350\253\276\347\231\273\345\261\261\345\217\243\346\260\264\346\272\220_1724145154.jpg"
new file mode 100644
index 0000000..994ed0f
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/22.\350\217\257\345\267\264\350\253\276\347\231\273\345\261\261\345\217\243\346\260\264\346\272\220_1724145154.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/23.\345\244\247\345\210\206\345\220\212\346\251\213_1724145169.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/23.\345\244\247\345\210\206\345\220\212\346\251\213_1724145169.jpg"
new file mode 100644
index 0000000..4b9e818
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/23.\345\244\247\345\210\206\345\220\212\346\251\213_1724145169.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/24.\345\244\247\345\210\206\345\261\261\345\261\213_1724145184.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/24.\345\244\247\345\210\206\345\261\261\345\261\213_1724145184.jpg"
new file mode 100644
index 0000000..b9180af
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/24.\345\244\247\345\210\206\345\261\261\345\261\213_1724145184.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/25.\351\247\220\345\234\250\346\211\200\345\245\275\345\244\232\345\261\244_1724145199.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/25.\351\247\220\345\234\250\346\211\200\345\245\275\345\244\232\345\261\244_1724145199.jpg"
new file mode 100644
index 0000000..2b7c82a
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/25.\351\247\220\345\234\250\346\211\200\345\245\275\345\244\232\345\261\244_1724145199.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/26.\345\275\210\350\227\245\345\272\253_1724145211.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/26.\345\275\210\350\227\245\345\272\253_1724145211.jpg"
new file mode 100644
index 0000000..051acdd
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/26.\345\275\210\350\227\245\345\272\253_1724145211.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/3.\344\275\263\345\277\203_1724144838.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/3.\344\275\263\345\277\203_1724144838.jpg"
new file mode 100644
index 0000000..e77db4b
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/3.\344\275\263\345\277\203_1724144838.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/3.\345\241\224\345\241\224\345\212\240_1724145934.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/3.\345\241\224\345\241\224\345\212\240_1724145934.jpg"
new file mode 100644
index 0000000..1812fa1
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/3.\345\241\224\345\241\224\345\212\240_1724145934.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/3.\345\244\247\346\260\264\347\252\237_1724145713.JPG" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/3.\345\244\247\346\260\264\347\252\237_1724145713.JPG"
new file mode 100644
index 0000000..29c0166
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/3.\345\244\247\346\260\264\347\252\237_1724145713.JPG" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/3.\345\261\225\346\234\233\345\244\247\345\210\206\347\200\221\345\270\203_1724145302.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/3.\345\261\225\346\234\233\345\244\247\345\210\206\347\200\221\345\270\203_1724145302.jpg"
new file mode 100644
index 0000000..aa819b9
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/3.\345\261\225\346\234\233\345\244\247\345\210\206\347\200\221\345\270\203_1724145302.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/3.\347\254\254\344\270\200\345\264\251\350\245\277\351\202\212_1724145822.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/3.\347\254\254\344\270\200\345\264\251\350\245\277\351\202\212_1724145822.jpg"
new file mode 100644
index 0000000..a6457a3
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/3.\347\254\254\344\270\200\345\264\251\350\245\277\351\202\212_1724145822.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/3.\347\261\263\351\233\205\346\241\221\346\272\252_1724145589.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/3.\347\261\263\351\233\205\346\241\221\346\272\252_1724145589.jpg"
new file mode 100644
index 0000000..24236fc
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/3.\347\261\263\351\233\205\346\241\221\346\272\252_1724145589.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/4.\345\244\247\346\260\264\347\252\237\345\261\261_1724145725.JPG" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/4.\345\244\247\346\260\264\347\252\237\345\261\261_1724145725.JPG"
new file mode 100644
index 0000000..ec416d3
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/4.\345\244\247\346\260\264\347\252\237\345\261\261_1724145725.JPG" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/4.\345\244\252\351\255\257\351\202\243\346\226\257_1724145607.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/4.\345\244\252\351\255\257\351\202\243\346\226\257_1724145607.jpg"
new file mode 100644
index 0000000..ce3b299
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/4.\345\244\252\351\255\257\351\202\243\346\226\257_1724145607.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/4.\346\211\255\346\233\262\346\251\213\346\235\261\345\201\264_1724145838.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/4.\346\211\255\346\233\262\346\251\213\346\235\261\345\201\264_1724145838.jpg"
new file mode 100644
index 0000000..738a30d
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/4.\346\211\255\346\233\262\346\251\213\346\235\261\345\201\264_1724145838.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/4.\346\213\211\345\217\244\346\213\211\351\247\220\345\234\250\346\211\200_1724145316.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/4.\346\213\211\345\217\244\346\213\211\351\247\220\345\234\250\346\211\200_1724145316.jpg"
new file mode 100644
index 0000000..ef6c589
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/4.\346\213\211\345\217\244\346\213\211\351\247\220\345\234\250\346\211\200_1724145316.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/4.\347\223\246\346\213\211\347\261\263\345\261\261\345\261\213_1724144858.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/4.\347\223\246\346\213\211\347\261\263\345\261\261\345\261\213_1724144858.jpg"
new file mode 100644
index 0000000..2321ef9
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/4.\347\223\246\346\213\211\347\261\263\345\261\261\345\261\213_1724144858.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/5.\346\211\255\346\233\262\346\251\213\350\245\277\345\201\264_1724145854.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/5.\346\211\255\346\233\262\346\251\213\350\245\277\345\201\264_1724145854.jpg"
new file mode 100644
index 0000000..2efef44
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/5.\346\211\255\346\233\262\346\251\213\350\245\277\345\201\264_1724145854.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/5.\346\213\211\345\217\244\346\213\211\346\251\213_1724145327.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/5.\346\213\211\345\217\244\346\213\211\346\251\213_1724145327.jpg"
new file mode 100644
index 0000000..aa658d1
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/5.\346\213\211\345\217\244\346\213\211\346\251\213_1724145327.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/5.\347\247\200\345\247\221\345\235\252_1724145739.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/5.\347\247\200\345\247\221\345\235\252_1724145739.jpg"
new file mode 100644
index 0000000..1337cb9
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/5.\347\247\200\345\247\221\345\235\252_1724145739.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/5.\347\261\263\344\272\236\346\241\221\346\272\252C4_1724145622.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/5.\347\261\263\344\272\236\346\241\221\346\272\252C4_1724145622.jpg"
new file mode 100644
index 0000000..8b9c890
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/5.\347\261\263\344\272\236\346\241\221\346\272\252C4_1724145622.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/5.\347\266\240\351\247\220\345\234\250\346\211\200_1724144876.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/5.\347\266\240\351\247\220\345\234\250\346\211\200_1724144876.jpg"
new file mode 100644
index 0000000..58c1701
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/5.\347\266\240\351\247\220\345\234\250\346\211\200_1724144876.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/6.\344\275\216\347\271\236\351\226\213\345\247\213_1724145349.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/6.\344\275\216\347\271\236\351\226\213\345\247\213_1724145349.jpg"
new file mode 100644
index 0000000..1ca003f
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/6.\344\275\216\347\271\236\351\226\213\345\247\213_1724145349.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/6.\347\254\254\344\270\211\345\264\251\345\243\201_1724145867.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/6.\347\254\254\344\270\211\345\264\251\345\243\201_1724145867.jpg"
new file mode 100644
index 0000000..c8d2c6e
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/6.\347\254\254\344\270\211\345\264\251\345\243\201_1724145867.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/6.\347\266\240\351\247\220\345\234\250\346\211\200_1724144881.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/6.\347\266\240\351\247\220\345\234\250\346\211\200_1724144881.jpg"
new file mode 100644
index 0000000..1e7c9ba
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/6.\347\266\240\351\247\220\345\234\250\346\211\200_1724144881.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/7.\345\234\237\350\221\233\345\264\251\345\243\201\344\275\216\347\271\236\350\267\257\345\245\275\350\265\260\357\274\214\350\267\257\345\237\272\346\230\216\351\241\257_1724145362.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/7.\345\234\237\350\221\233\345\264\251\345\243\201\344\275\216\347\271\236\350\267\257\345\245\275\350\265\260\357\274\214\350\267\257\345\237\272\346\230\216\351\241\257_1724145362.jpg"
new file mode 100644
index 0000000..49a8ffc
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/7.\345\234\237\350\221\233\345\264\251\345\243\201\344\275\216\347\271\236\350\267\257\345\245\275\350\265\260\357\274\214\350\267\257\345\237\272\346\230\216\351\241\257_1724145362.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/7.\345\244\232\345\234\237\350\242\236_1724144895.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/7.\345\244\232\345\234\237\350\242\236_1724144895.jpg"
new file mode 100644
index 0000000..637f1bb
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/7.\345\244\232\345\234\237\350\242\236_1724144895.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/7.\347\254\254\345\233\233\345\264\251\345\243\201_1724145879.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/7.\347\254\254\345\233\233\345\264\251\345\243\201_1724145879.jpg"
new file mode 100644
index 0000000..0f5d799
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/7.\347\254\254\345\233\233\345\264\251\345\243\201_1724145879.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/8.\345\261\261\351\231\260_1724144914.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/8.\345\261\261\351\231\260_1724144914.jpg"
new file mode 100644
index 0000000..06a3e29
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/8.\345\261\261\351\231\260_1724144914.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/8.\346\216\245\345\233\236\345\217\244\351\201\223_1724145375.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/8.\346\216\245\345\233\236\345\217\244\351\201\223_1724145375.jpg"
new file mode 100644
index 0000000..28b1504
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/8.\346\216\245\345\233\236\345\217\244\351\201\223_1724145375.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/9.\345\215\241\351\233\267\345\215\241\346\226\257_1724144928.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/9.\345\215\241\351\233\267\345\215\241\346\226\257_1724144928.jpg"
new file mode 100644
index 0000000..3fc5f9f
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/9.\345\215\241\351\233\267\345\215\241\346\226\257_1724144928.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/9.\345\234\237\350\221\233\351\247\220\345\234\250\346\211\200_1724145392.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/9.\345\234\237\350\221\233\351\247\220\345\234\250\346\211\200_1724145392.jpg"
new file mode 100644
index 0000000..172fb15
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\261/9.\345\234\237\350\221\233\351\247\220\345\234\250\346\211\200_1724145392.jpg" differ
diff --git "a/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\2611724145997.jpg" "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\2611724145997.jpg"
new file mode 100644
index 0000000..4b71013
Binary files /dev/null and "b/public/uploads/images/records/\346\227\245\345\205\253\351\200\232\351\227\234\345\267\241\347\246\256\343\200\201\345\244\252\351\255\257\347\264\215\346\226\257\343\200\201\345\205\253\351\200\232\351\227\234\344\270\212\347\216\211\345\261\2611724145997.jpg" differ
diff --git a/repositories/laravel-socialite-portal-provider/src/PortalBaseProvider.php b/repositories/laravel-socialite-portal-provider/src/PortalBaseProvider.php
index 4c678b4..49ddc72 100644
--- a/repositories/laravel-socialite-portal-provider/src/PortalBaseProvider.php
+++ b/repositories/laravel-socialite-portal-provider/src/PortalBaseProvider.php
@@ -2,11 +2,11 @@
namespace Ncucc\Portal;
+use GuzzleHttp\ClientInterface;
+use Illuminate\Support\Arr;
use Laravel\Socialite\Two\AbstractProvider;
use Laravel\Socialite\Two\ProviderInterface;
use Laravel\Socialite\Two\User;
-use GuzzleHttp\ClientInterface;
-use Illuminate\Support\Arr;
class PortalBaseProvider extends AbstractProvider implements ProviderInterface
{
@@ -29,7 +29,7 @@ class PortalBaseProvider extends AbstractProvider implements ProviderInterface
/**
* {@inheritdoc}
*/
- protected function getAuthUrl($state)
+ protected function getAuthUrl($state): string
{
return $this->buildAuthUrlFromBase(self::PORTAL_BASE_URL . '/oauth2/authorization', $state);
}
@@ -45,7 +45,7 @@ protected function getTokenUrl()
/**
* {@inheritdoc}
*/
- protected function getUserByToken($token)
+ protected function getUserByToken($token): array
{
$userUrl = self::PORTAL_BASE_URL . '/apis/oauth/v1/info';
@@ -65,7 +65,7 @@ protected function getUserByToken($token)
* @param string $code
* @return array
*/
- public function getAccessTokenResponse($code)
+ public function getAccessTokenResponse($code): array
{
$postKey = (version_compare(ClientInterface::MAJOR_VERSION, '6') === 1) ? 'form_params' : 'body';
@@ -81,7 +81,7 @@ public function getAccessTokenResponse($code)
/**
* {@inheritdoc}
*/
- protected function mapUserToObject(array $user)
+ protected function mapUserToObject(array $user): User
{
return (new User)->setRaw($user)->map([
'id' => $user['identifier'],
@@ -94,7 +94,7 @@ protected function mapUserToObject(array $user)
/**
* {@inheritdoc}
*/
- protected function getTokenFields($code)
+ protected function getTokenFields($code): array
{
return parent::getTokenFields($code) + ['grant_type' => 'authorization_code'];
}
diff --git a/resources/js/components/map.js b/resources/js/components/map.js
index 46f5fab..b5a345b 100644
--- a/resources/js/components/map.js
+++ b/resources/js/components/map.js
@@ -10,7 +10,7 @@ import Point from 'ol/geom/Point';
import {Icon,Fill, Stroke, Circle, Text, Style} from 'ol/style.js';
var my_map = { // <-- add this line to declare the object
- display: function () { // <-- add this line to declare a method
+ display: function () { // <-- add this line to declare a method
const map = new Map({
target: 'map',
@@ -39,7 +39,7 @@ var my_map = { // <-- add this line to declare the object
name: '結城山',
}),
];
-
+
for (var i = 0; i < position_array.length; i++) {
const marker = new VectorLayer({
@@ -48,7 +48,7 @@ var my_map = { // <-- add this line to declare the object
}),
style: new Style({
image: new Icon({
- src: "assets/img/ncumt.png",
+ src: "assets/img/favicon.png",
}),
text: new Text({
font: '20px 微軟正黑體',
@@ -68,7 +68,7 @@ var my_map = { // <-- add this line to declare the object
})
map.addLayer(marker);
}
-
+
} // <-- close the method
}; // <-- close the object
-export default my_map; // <-- and export the object
\ No newline at end of file
+export default my_map; // <-- and export the object
diff --git a/resources/views/404.blade.php b/resources/views/404.blade.php
new file mode 100644
index 0000000..dadf6f5
--- /dev/null
+++ b/resources/views/404.blade.php
@@ -0,0 +1,51 @@
+@extends('basic.main')
+@section('title', '404')
+
+@section('content')
+ @push('styles')
+
+ @endpush
+
+
+
+
糟糕,迷路了
+
此網頁不存在
+
返回首頁
+
+
+
+
+
+
+
+
+
+ {{--NyanCat小彩蛋--}}
+
+
+@endsection
diff --git a/resources/views/basic/main.blade.php b/resources/views/basic/main.blade.php
index df5e215..67532f1 100644
--- a/resources/views/basic/main.blade.php
+++ b/resources/views/basic/main.blade.php
@@ -12,7 +12,7 @@
-
+
@@ -53,6 +53,7 @@
@livewireStyles
+ @stack('styles')
- @if(Auth::user()->role > 0)
+ @if(Auth::user()->role > App\Enums\Role::MEMBER->value)
新增紀錄
@endif
@@ -52,7 +62,7 @@
@endguest
@auth
- @if(Auth::user()->role > 0)
+ @if(Auth::user()->role > App\Enums\Role::MEMBER->value)
FAQ
@@ -64,15 +74,15 @@ class="bi bi-chevron-down dropdown-indicator">
@auth
- @if(Auth::user()->role > 0)
+ @if(Auth::user()->role > App\Enums\Role::MEMBER->value)
幹部專區
@endif
@@ -86,9 +96,9 @@ class="bi bi-chevron-down dropdown-indicator">
{{Auth::user()->name_zh . ' 您好'}}
@endif
diff --git a/resources/views/conference/register.blade.php b/resources/views/conference/register.blade.php
new file mode 100644
index 0000000..ba75ae4
--- /dev/null
+++ b/resources/views/conference/register.blade.php
@@ -0,0 +1,52 @@
+@extends('basic.main')
+
+@section('title', '大專登山研討會報名')
+
+@section('content')
+
+@endsection
diff --git a/resources/views/conference/result.blade.php b/resources/views/conference/result.blade.php
new file mode 100644
index 0000000..19f1a93
--- /dev/null
+++ b/resources/views/conference/result.blade.php
@@ -0,0 +1,17 @@
+@extends('basic.main')
+
+@section('title', '報名結果')
+
+@section('content')
+
+@endsection
diff --git a/resources/views/conference/searchAndEdit.blade.php b/resources/views/conference/searchAndEdit.blade.php
new file mode 100644
index 0000000..2a3569b
--- /dev/null
+++ b/resources/views/conference/searchAndEdit.blade.php
@@ -0,0 +1,19 @@
+@extends('basic.main')
+
+@section('title', '查詢報名資訊')
+
+@section('content')
+
+@endsection
diff --git a/resources/views/course/allRecords.blade.php b/resources/views/course/allRecords.blade.php
index fa6cb15..25ae038 100644
--- a/resources/views/course/allRecords.blade.php
+++ b/resources/views/course/allRecords.blade.php
@@ -33,7 +33,7 @@
-
+
@@ -49,20 +49,20 @@
@foreach($courseRecords as $courseRecord)
- {{ $courseRecord->user->identifier }}
+ {{ $courseRecord->user->student_id }}
{{ $courseRecord->user->name_zh }}
- {{ $courseRecord->user->email }}
- {{ $courseRecord->created_at }}
+ {{ $courseRecord->user->email }}
+ {{ $courseRecord->created_at }}
@endforeach
-
+
@endif
-
-
-
-@endsection
\ No newline at end of file
+
+
+
+@endsection
diff --git a/resources/views/course/course.blade.php b/resources/views/course/course.blade.php
index f423a75..3f072af 100644
--- a/resources/views/course/course.blade.php
+++ b/resources/views/course/course.blade.php
@@ -1,3 +1,4 @@
+@php use App\Utils\DateFormatter; @endphp
@extends('basic.main')
@section('title', '社課影片')
@@ -18,7 +19,7 @@
-
+
diff --git a/resources/views/judgement/index.blade.php b/resources/views/judgement/index.blade.php
index 7f350ff..d8fd8ef 100644
--- a/resources/views/judgement/index.blade.php
+++ b/resources/views/judgement/index.blade.php
@@ -14,7 +14,7 @@
-
+
diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php
deleted file mode 100644
index 237cdd3..0000000
--- a/resources/views/layouts/app.blade.php
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
-
-
-
-
-
中央大學登山社 - @yield('title')
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- @livewireStyles
-
-
-
-
- @include('basic.navbar')
-
- {{ $slot }}
-
- @livewireScripts
- @include('basic.footer')
-
-
diff --git a/resources/views/livewire/conference/form.blade.php b/resources/views/livewire/conference/form.blade.php
new file mode 100644
index 0000000..6582a32
--- /dev/null
+++ b/resources/views/livewire/conference/form.blade.php
@@ -0,0 +1,122 @@
+@php
+ use App\Enums\Gender;
+ use App\Enums\Identity;
+@endphp
+
+
diff --git a/resources/views/livewire/conference/result.blade.php b/resources/views/livewire/conference/result.blade.php
new file mode 100644
index 0000000..574045b
--- /dev/null
+++ b/resources/views/livewire/conference/result.blade.php
@@ -0,0 +1,43 @@
+@php
+ use App\Enums\Gender;
+ use App\Enums\Identity;
+@endphp
+
+
+
+
+ 姓名
+ 性別
+ 是否素食
+ 電話
+ Email
+ 身份
+ 校名
+ 系級
+
+
+
+ @foreach($conferenceUsers as $conferenceUser)
+
+ {{ $conferenceUser->name }}
+ {{ Gender::from($conferenceUser->gender)->toChinese() }}
+ {{ $conferenceUser->is_vegetarian ? '是' : '否' }}
+ {{ $conferenceUser->phone }}
+ {{ $conferenceUser->email }}
+ {{ Identity::from($conferenceUser->identity)->toChinese() }}
+ @if(Identity::STUDENT->value == $conferenceUser->identity)
+ {{ $conferenceUser->school_name }}
+ {{ $conferenceUser->department }}
+ @else
+
+
+ @endif
+
+ @endforeach
+
+
+
+ {{ $conferenceUsers->links() }}
+
+
+
diff --git a/resources/views/livewire/conference/search.blade.php b/resources/views/livewire/conference/search.blade.php
new file mode 100644
index 0000000..1c172b6
--- /dev/null
+++ b/resources/views/livewire/conference/search.blade.php
@@ -0,0 +1,50 @@
+
+
diff --git a/resources/views/livewire/record-component/page.blade.php b/resources/views/livewire/record-component/page.blade.php
new file mode 100644
index 0000000..141d26d
--- /dev/null
+++ b/resources/views/livewire/record-component/page.blade.php
@@ -0,0 +1,63 @@
+
+ @foreach($records as $record)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ $record->name }}
+
+ {{ $category_array[$record->category] }}
+ •
+ @php
+ $startYear = \Carbon\Carbon::parse($record->start_date)->format('Y');
+ $endYear = \Carbon\Carbon::parse($record->end_date)->format('Y');
+ $startMonth = \Carbon\Carbon::parse($record->start_date)->format('m');
+ $endMonth = \Carbon\Carbon::parse($record->end_date)->format('m');
+ @endphp
+
+ @if($startYear != $endYear)
+ {{ \Carbon\Carbon::parse($record->start_date)->format('Y.m.d') }} - {{ \Carbon\Carbon::parse($record->end_date)->format('Y.m.d') }}
+ @else
+ @if($startMonth != $endMonth)
+ {{ \Carbon\Carbon::parse($record->start_date)->format('Y.m.d') }} - {{ \Carbon\Carbon::parse($record->end_date)->format('m.d') }}
+ @else
+ {{ \Carbon\Carbon::parse($record->start_date)->format('Y.m.d') }} - {{ \Carbon\Carbon::parse($record->end_date)->format('d') }}
+ @endif
+ @endif
+
+
+
{{ $record->description }}
+
詳細內容
+
+
+
+
+
+
+ @endforeach
+
+
+
+ {{ $records->links() }}
+
+
+
+
+
diff --git a/resources/views/livewire/sidebar-menu.blade.php b/resources/views/livewire/sidebar-menu.blade.php
new file mode 100644
index 0000000..6d3a3d3
--- /dev/null
+++ b/resources/views/livewire/sidebar-menu.blade.php
@@ -0,0 +1,10 @@
+
diff --git a/resources/views/livewire/user/user-list.blade.php b/resources/views/livewire/user/user-list.blade.php
new file mode 100644
index 0000000..4cc1128
--- /dev/null
+++ b/resources/views/livewire/user/user-list.blade.php
@@ -0,0 +1,60 @@
+@php use App\Enums\Role; @endphp
+
+
+ @if (session()->has('status'))
+
+ {{ session('status') }}
+
+ @endif
+
+
+ #
+ 學號
+ 名稱
+ 電子信箱
+ 暱稱
+ 角色
+
+ @auth
+ @if(Auth::user()->role == Role::WEB_ADMIN->value)
+ 編輯
+ @endif
+ @endauth
+
+
+
+ @if (!$users->count())
+
+ count() }}>目前尚無使用者
+
+ @else
+ @foreach($users as $user)
+
+ {{ $loop->index + 1 }}
+ {{ $user->student_id }}
+ {{ $user->name_zh }}
+ {{ $user->email }}
+ {{ $user->nickname }}
+
+
+
+ @foreach(Role::cases() as $role)
+ role == $role->value ? 'selected' : '' }}>
+ {{ $role->toChinese() }}
+
+ @endforeach
+
+
+
+ @if(Auth::user()->role == Role::WEB_ADMIN->value)
+
+
+
+ @endif
+
+ @endforeach
+ @endif
+
+
diff --git a/resources/views/mail/conference/conferenceRegister.blade.php b/resources/views/mail/conference/conferenceRegister.blade.php
new file mode 100644
index 0000000..22ec7b2
--- /dev/null
+++ b/resources/views/mail/conference/conferenceRegister.blade.php
@@ -0,0 +1,22 @@
+
+
親愛的山友:
+
+
以下是您的報名資訊,請確認資料是否正確。
+
+
表單名稱:2024 第二十五屆全國大專校院登山運動研討會報名表
+
+ 姓名 : {{ $conferenceUser->name }}
+ 性別 : {{ App\Enums\Gender::MALE->value == $conferenceUser->gender ? '男' : '女' }}
+ 手機 : {{ $conferenceUser->phone }}
+ 葷素:{{ $conferenceUser->is_vegetarian ? '素' : '葷' }}
+ E-mail : {{ $conferenceUser->email }}
+ @if(App\Enums\Identity::STUDENT->value == $conferenceUser->identity)
+ 參加講習之身份 : 學生
+ 校名 : {{ $conferenceUser->school_name }}
+ 系別/年級 : {{ $conferenceUser->department }}
+ @else
+ 參加講習之身份 : 社會人士
+ @endif
+
+ @include('mail.conference.fixInformation')
+
diff --git a/resources/views/mail/conference/conferenceReminder.blade.php b/resources/views/mail/conference/conferenceReminder.blade.php
new file mode 100644
index 0000000..542de02
--- /dev/null
+++ b/resources/views/mail/conference/conferenceReminder.blade.php
@@ -0,0 +1,6 @@
+
+
親愛的山友:
+
+
提醒您有報名第二十五屆全國大專校院登山運動研討會,請記得來參加。
+ @include('mail.conference.fixInformation')
+
diff --git a/resources/views/mail/conference/fixInformation.blade.php b/resources/views/mail/conference/fixInformation.blade.php
new file mode 100644
index 0000000..603a7d7
--- /dev/null
+++ b/resources/views/mail/conference/fixInformation.blade.php
@@ -0,0 +1,27 @@
+
會議資訊
+
+
+
聯絡資訊
+
+
+
主辦及贊助單位
+
+ 指導單位:教育部體育署
+ 主辦單位:中華民國健行登山會
+ 承辦單位:國立中央大學登山社
+ 贊助單位:歐都納戶外體育基金會
+
diff --git a/resources/views/mail/course/notifyCourse.blade.php b/resources/views/mail/course/notifyCourse.blade.php
new file mode 100644
index 0000000..78be4f4
--- /dev/null
+++ b/resources/views/mail/course/notifyCourse.blade.php
@@ -0,0 +1,11 @@
+
+
{{ $name }},社課報名完成
+
社課名稱:{{ $title }}
+
講者:{{ $speaker }}
+
時間:{{ $date }}
+
地點:{{ $location }}
+
國立中央大學登山社,感謝您的報名,屆時請準時來上課喔
+
若有任何問題,歡迎私訊粉絲專頁
+
+
+
diff --git a/resources/views/mail/course/remindCourse.blade.php b/resources/views/mail/course/remindCourse.blade.php
new file mode 100644
index 0000000..9085901
--- /dev/null
+++ b/resources/views/mail/course/remindCourse.blade.php
@@ -0,0 +1,9 @@
+
+
{{ $name }},您好
+
提醒您明天有報名「{{ $title }}」社課,請記得來參加😇
+
講者:{{ $speaker }}
+
時間:{{ $date }}
+
地點:{{ $location }}
+
若有任何問題,歡迎私訊粉絲專頁
+
+
diff --git a/resources/views/mail/notifyCourse.blade.php b/resources/views/mail/notifyCourse.blade.php
deleted file mode 100644
index 2592bf5..0000000
--- a/resources/views/mail/notifyCourse.blade.php
+++ /dev/null
@@ -1,9 +0,0 @@
-
{{ $name }},社課報名完成
-
社課名稱:{{ $title }}
-
講者:{{ $speaker }}
-
日期:{{ $date }} 晚上七點
-
地點:{{ $location }}
-
國立中央大學登山社,感謝您的報名,屆時請準時來上課喔
-
若有任何問題,歡迎私訊粉絲專頁
-
-
diff --git a/resources/views/mail/remindCourse.blade.php b/resources/views/mail/remindCourse.blade.php
deleted file mode 100644
index f9a064c..0000000
--- a/resources/views/mail/remindCourse.blade.php
+++ /dev/null
@@ -1,8 +0,0 @@
-
{{ $name }},您好
-
提醒您明天有報名「{{ $title }}」社課,請記得來參加😇
-
講者:{{ $speaker }}
-
日期:{{ $date }} 晚上七點
-
地點:{{ $location }}
-
若有任何問題,歡迎私訊粉絲專頁
-
-
diff --git a/resources/views/mail/test.blade.php b/resources/views/mail/test.blade.php
deleted file mode 100644
index 6653b74..0000000
--- a/resources/views/mail/test.blade.php
+++ /dev/null
@@ -1,2 +0,0 @@
-
羅向榮
-
謝謝你,你好帥
\ No newline at end of file
diff --git a/resources/views/mail/verificationCode.blade.php b/resources/views/mail/verificationCode.blade.php
new file mode 100644
index 0000000..18baf53
--- /dev/null
+++ b/resources/views/mail/verificationCode.blade.php
@@ -0,0 +1,3 @@
+
您的驗證碼是:{{ $code }}
+
請在 5 分鐘內輸入驗證碼進行驗證。
+
如非本人操作請忽略,請勿分享給任何人。
diff --git a/resources/views/record/record.blade.php b/resources/views/record/record.blade.php
index f359162..3beafc9 100644
--- a/resources/views/record/record.blade.php
+++ b/resources/views/record/record.blade.php
@@ -1,43 +1,25 @@
@extends('basic.main')
-@section('title', '行程紀錄')
+@section('title', '行程紀錄')
@section('content')
-
-
-
+
-@endsection
\ No newline at end of file
+@endsection
diff --git a/resources/views/user/information.blade.php b/resources/views/user/information.blade.php
index 8689069..06c1e09 100644
--- a/resources/views/user/information.blade.php
+++ b/resources/views/user/information.blade.php
@@ -1,83 +1,497 @@
@extends('basic.main')
-@section('title', '個人資料')
+@section('title', '個人資料')
@section('content')
+
+ @push('styles')
+
+ @endpush
+
+ @livewire('sidebar-menu')
+
+
+