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)