From 28d68664df3f2b9de13306ecb2dde00109b49a35 Mon Sep 17 00:00:00 2001 From: lion <120344285@qq.com> Date: Wed, 10 Jun 2026 10:25:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Admin/BannerController.php | 38 ++++++++++++++++--- .../Controllers/Miniapp/BannerController.php | 1 + .../Controllers/Miniapp/CourseController.php | 31 +++++++++++++-- app/Models/Banner.php | 10 +++++ app/Support/Miniapp/MiniappPresenter.php | 23 +++++++++++ ...10_000001_add_news_id_to_banners_table.php | 24 ++++++++++++ ...ut-B6koRwrB.js => AdminLayout-CmJWIASx.js} | 2 +- ...eView-1YbTnsz1.js => HomeView-mvCKuaF_.js} | 2 +- ...D53SL5wL.js => RichTextEditor-x18LQ7sl.js} | 2 +- ...sk2.js => TeacherDetailDialog-D2RZTClS.js} | 2 +- ...ies-BQAd6xP6.js => activities-6KKyhCfI.js} | 2 +- public/admin/assets/activities-BQCZHPzN.css | 1 + public/admin/assets/activities-BcXk3M8s.js | 1 + public/admin/assets/activities-DQLFKsuI.js | 1 - public/admin/assets/activities-DrhGy18S.css | 1 - ...ist-CBoToEFo.js => admin-list-DjncsyJC.js} | 0 ...{assets-BPprYL-V.js => assets-D6Wf6qf8.js} | 2 +- public/admin/assets/audit-logs-C7aOILQj.js | 1 + public/admin/assets/audit-logs-DuNUv_ZT.js | 1 - public/admin/assets/banners-BU8fLCf-.js | 1 + public/admin/assets/banners-BxLn_SEP.js | 1 - public/admin/assets/banners-Bx_QyLV1.css | 1 + public/admin/assets/banners-DqMb6tvy.css | 1 - public/admin/assets/courses-2_zmOKB3.css | 1 + ...ourses-BSRvSuD5.js => courses-CU1ur7hT.js} | 2 +- public/admin/assets/courses-Cq2fbA5M.js | 16 -------- public/admin/assets/courses-D2cYE17y.css | 1 - public/admin/assets/courses-DjBEXRVf.js | 16 ++++++++ public/admin/assets/crawler-DhaAvVZa.css | 1 + public/admin/assets/crawler-UaAQ0yd9.js | 1 - public/admin/assets/crawler-VOFlHV61.css | 1 - public/admin/assets/crawler-qUieJ7iU.js | 1 + ...ort-DWSNzQbE.js => csv-export-DySaEp8z.js} | 2 +- public/admin/assets/dashboard-BdAkB3HZ.js | 1 - ...rd-DztDhF2i.css => dashboard-Bt0iYPFd.css} | 2 +- public/admin/assets/dashboard-D6AICzhj.js | 1 + public/admin/assets/demands-B4jlN7V0.js | 1 - public/admin/assets/demands-Bfo8HgDm.css | 1 + public/admin/assets/demands-Byb97vq_.css | 1 - public/admin/assets/demands-C27xAAgL.js | 1 + ...emands-WEhMEFhp.js => demands-O1oysh2P.js} | 2 +- public/admin/assets/dict-BLeswU9x.js | 1 + .../{dict-DoDYCi7z.js => dict-BbzaBtNg.js} | 2 +- public/admin/assets/dict-C0QvHslM.js | 1 - public/admin/assets/dict-CtFGbsn1.css | 1 + public/admin/assets/dict-kRNWqCBz.css | 1 - public/admin/assets/grid-members-CZn-Nvwb.js | 1 + public/admin/assets/grid-members-kK4ywtCt.js | 1 - .../{index-DPkd2m0V.js => index-C2NqsgBl.js} | 4 +- .../{login-Dwd_yneU.js => login-BvR3EfWH.js} | 2 +- public/admin/assets/map-BRMxxZmu.css | 1 - public/admin/assets/map-C9vbPZDv.css | 1 + public/admin/assets/map-CZOI_BLJ.js | 1 + public/admin/assets/map-YNdpK7nx.js | 1 - public/admin/assets/menus-BZHYkYOm.js | 1 + .../{menus-DmW1hoEc.js => menus-LdpPkaJO.js} | 2 +- public/admin/assets/menus-RoE2ITPm.js | 1 - public/admin/assets/news-0Vj6195l.js | 1 + public/admin/assets/news-BY4O5zYe.css | 1 - public/admin/assets/news-CdD2A1iT.css | 1 + public/admin/assets/news-CytEwMH3.js | 1 - .../{news-5T8kk3ij.js => news-RzJV9AFb.js} | 2 +- ...apers-ClX7jOH9.css => papers-CwDRos1z.css} | 2 +- public/admin/assets/papers-D5jlonKg.js | 1 + public/admin/assets/papers-lsb4N7Cn.js | 1 - ...qHY.js => research-directions-CxZCw4uA.js} | 2 +- .../assets/research-directions-X1354oh6.js | 1 - .../assets/research-directions-jO1al2-_2.js | 1 + public/admin/assets/roles-07VaKZ7w.css | 1 + public/admin/assets/roles-B_Rgis2K.css | 1 - .../{roles-DTsz1LFJ.js => roles-CRoSKIEJ.js} | 2 +- public/admin/assets/roles-Cs66D3Lz.js | 1 + public/admin/assets/roles-DM9-8Ofl.js | 1 - public/admin/assets/students-CRTOeF77.js | 1 + public/admin/assets/students-CX4D8gv2.css | 1 - public/admin/assets/students-DtPl3SFp.js | 1 - public/admin/assets/students-zQQiNUZE.css | 1 + ...ar-By0_CBs7.js => teacherStar-DhP_EdY6.js} | 0 ...chers-Bl3NKSTv.js => teachers-2mIYLbdk.js} | 2 +- public/admin/assets/teachers-B7diaGQS.js | 1 + public/admin/assets/teachers-BYMRyu2A.css | 1 + public/admin/assets/teachers-CGzqWDzH.css | 1 - public/admin/assets/teachers-DQcrzQXQ.js | 1 - ...ap-C1r4KM1g.js => tiandituMap-B0Q-vV8c.js} | 0 public/admin/assets/universities-B-jyaHW9.js | 1 - public/admin/assets/universities-BvG6lNmz.js | 1 + ...PKgv8R0n.css => universities-CgFKfS7U.css} | 2 +- public/admin/assets/usePageLoad-BucTP1_8.js | 1 + public/admin/assets/usePageLoad-DFTLo_Lv.js | 1 - .../{users-DvEJYmzs.js => users-2gZnovFO.js} | 2 +- public/admin/assets/users-BUxUEQbC.js | 1 - public/admin/assets/users-C4ofrOBN.js | 1 + public/admin/index.html | 2 +- 93 files changed, 187 insertions(+), 78 deletions(-) create mode 100644 database/migrations/2026_06_10_000001_add_news_id_to_banners_table.php rename public/admin/assets/{AdminLayout-B6koRwrB.js => AdminLayout-CmJWIASx.js} (97%) rename public/admin/assets/{HomeView-1YbTnsz1.js => HomeView-mvCKuaF_.js} (94%) rename public/admin/assets/{RichTextEditor-D53SL5wL.js => RichTextEditor-x18LQ7sl.js} (99%) rename public/admin/assets/{TeacherDetailDialog-DpQnTsk2.js => TeacherDetailDialog-D2RZTClS.js} (97%) rename public/admin/assets/{activities-BQAd6xP6.js => activities-6KKyhCfI.js} (91%) create mode 100644 public/admin/assets/activities-BQCZHPzN.css create mode 100644 public/admin/assets/activities-BcXk3M8s.js delete mode 100644 public/admin/assets/activities-DQLFKsuI.js delete mode 100644 public/admin/assets/activities-DrhGy18S.css rename public/admin/assets/{admin-list-CBoToEFo.js => admin-list-DjncsyJC.js} (100%) rename public/admin/assets/{assets-BPprYL-V.js => assets-D6Wf6qf8.js} (94%) create mode 100644 public/admin/assets/audit-logs-C7aOILQj.js delete mode 100644 public/admin/assets/audit-logs-DuNUv_ZT.js create mode 100644 public/admin/assets/banners-BU8fLCf-.js delete mode 100644 public/admin/assets/banners-BxLn_SEP.js create mode 100644 public/admin/assets/banners-Bx_QyLV1.css delete mode 100644 public/admin/assets/banners-DqMb6tvy.css create mode 100644 public/admin/assets/courses-2_zmOKB3.css rename public/admin/assets/{courses-BSRvSuD5.js => courses-CU1ur7hT.js} (91%) delete mode 100644 public/admin/assets/courses-Cq2fbA5M.js delete mode 100644 public/admin/assets/courses-D2cYE17y.css create mode 100644 public/admin/assets/courses-DjBEXRVf.js create mode 100644 public/admin/assets/crawler-DhaAvVZa.css delete mode 100644 public/admin/assets/crawler-UaAQ0yd9.js delete mode 100644 public/admin/assets/crawler-VOFlHV61.css create mode 100644 public/admin/assets/crawler-qUieJ7iU.js rename public/admin/assets/{csv-export-DWSNzQbE.js => csv-export-DySaEp8z.js} (99%) delete mode 100644 public/admin/assets/dashboard-BdAkB3HZ.js rename public/admin/assets/{dashboard-DztDhF2i.css => dashboard-Bt0iYPFd.css} (86%) create mode 100644 public/admin/assets/dashboard-D6AICzhj.js delete mode 100644 public/admin/assets/demands-B4jlN7V0.js create mode 100644 public/admin/assets/demands-Bfo8HgDm.css delete mode 100644 public/admin/assets/demands-Byb97vq_.css create mode 100644 public/admin/assets/demands-C27xAAgL.js rename public/admin/assets/{demands-WEhMEFhp.js => demands-O1oysh2P.js} (89%) create mode 100644 public/admin/assets/dict-BLeswU9x.js rename public/admin/assets/{dict-DoDYCi7z.js => dict-BbzaBtNg.js} (92%) delete mode 100644 public/admin/assets/dict-C0QvHslM.js create mode 100644 public/admin/assets/dict-CtFGbsn1.css delete mode 100644 public/admin/assets/dict-kRNWqCBz.css create mode 100644 public/admin/assets/grid-members-CZn-Nvwb.js delete mode 100644 public/admin/assets/grid-members-kK4ywtCt.js rename public/admin/assets/{index-DPkd2m0V.js => index-C2NqsgBl.js} (99%) rename public/admin/assets/{login-Dwd_yneU.js => login-BvR3EfWH.js} (96%) delete mode 100644 public/admin/assets/map-BRMxxZmu.css create mode 100644 public/admin/assets/map-C9vbPZDv.css create mode 100644 public/admin/assets/map-CZOI_BLJ.js delete mode 100644 public/admin/assets/map-YNdpK7nx.js create mode 100644 public/admin/assets/menus-BZHYkYOm.js rename public/admin/assets/{menus-DmW1hoEc.js => menus-LdpPkaJO.js} (81%) delete mode 100644 public/admin/assets/menus-RoE2ITPm.js create mode 100644 public/admin/assets/news-0Vj6195l.js delete mode 100644 public/admin/assets/news-BY4O5zYe.css create mode 100644 public/admin/assets/news-CdD2A1iT.css delete mode 100644 public/admin/assets/news-CytEwMH3.js rename public/admin/assets/{news-5T8kk3ij.js => news-RzJV9AFb.js} (83%) rename public/admin/assets/{papers-ClX7jOH9.css => papers-CwDRos1z.css} (50%) create mode 100644 public/admin/assets/papers-D5jlonKg.js delete mode 100644 public/admin/assets/papers-lsb4N7Cn.js rename public/admin/assets/{research-directions-CJR-3qHY.js => research-directions-CxZCw4uA.js} (88%) delete mode 100644 public/admin/assets/research-directions-X1354oh6.js create mode 100644 public/admin/assets/research-directions-jO1al2-_2.js create mode 100644 public/admin/assets/roles-07VaKZ7w.css delete mode 100644 public/admin/assets/roles-B_Rgis2K.css rename public/admin/assets/{roles-DTsz1LFJ.js => roles-CRoSKIEJ.js} (77%) create mode 100644 public/admin/assets/roles-Cs66D3Lz.js delete mode 100644 public/admin/assets/roles-DM9-8Ofl.js create mode 100644 public/admin/assets/students-CRTOeF77.js delete mode 100644 public/admin/assets/students-CX4D8gv2.css delete mode 100644 public/admin/assets/students-DtPl3SFp.js create mode 100644 public/admin/assets/students-zQQiNUZE.css rename public/admin/assets/{teacherStar-By0_CBs7.js => teacherStar-DhP_EdY6.js} (100%) rename public/admin/assets/{teachers-Bl3NKSTv.js => teachers-2mIYLbdk.js} (94%) create mode 100644 public/admin/assets/teachers-B7diaGQS.js create mode 100644 public/admin/assets/teachers-BYMRyu2A.css delete mode 100644 public/admin/assets/teachers-CGzqWDzH.css delete mode 100644 public/admin/assets/teachers-DQcrzQXQ.js rename public/admin/assets/{tiandituMap-C1r4KM1g.js => tiandituMap-B0Q-vV8c.js} (100%) delete mode 100644 public/admin/assets/universities-B-jyaHW9.js create mode 100644 public/admin/assets/universities-BvG6lNmz.js rename public/admin/assets/{universities-PKgv8R0n.css => universities-CgFKfS7U.css} (89%) create mode 100644 public/admin/assets/usePageLoad-BucTP1_8.js delete mode 100644 public/admin/assets/usePageLoad-DFTLo_Lv.js rename public/admin/assets/{users-DvEJYmzs.js => users-2gZnovFO.js} (83%) delete mode 100644 public/admin/assets/users-BUxUEQbC.js create mode 100644 public/admin/assets/users-C4ofrOBN.js diff --git a/app/Http/Controllers/Admin/BannerController.php b/app/Http/Controllers/Admin/BannerController.php index 963bac6..f4bb27d 100644 --- a/app/Http/Controllers/Admin/BannerController.php +++ b/app/Http/Controllers/Admin/BannerController.php @@ -6,6 +6,7 @@ use App\Http\Controllers\Controller; use App\Models\Activity; use App\Models\Banner; use App\Models\Course; +use App\Models\News; use App\Support\ApiResponse; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -18,7 +19,7 @@ class BannerController extends Controller public function index(Request $request): JsonResponse { - $query = Banner::query()->with(['course', 'activity']); + $query = Banner::query()->with(['course', 'activity', 'news']); if ($request->filled('type')) { $query->where('type', $request->query('type')); @@ -30,7 +31,8 @@ class BannerController extends Controller $query->where(function ($q) use ($kw) { $q->where('title', 'like', "%{$kw}%") ->orWhereHas('course', fn ($cq) => $cq->where('title', 'like', "%{$kw}%")) - ->orWhereHas('activity', fn ($aq) => $aq->where('title', 'like', "%{$kw}%")); + ->orWhereHas('activity', fn ($aq) => $aq->where('title', 'like', "%{$kw}%")) + ->orWhereHas('news', fn ($nq) => $nq->where('title', 'like', "%{$kw}%")); }); } @@ -47,7 +49,7 @@ class BannerController extends Controller public function show(int $banner): JsonResponse { - $model = Banner::query()->with(['course', 'activity'])->findOrFail($banner); + $model = Banner::query()->with(['course', 'activity', 'news'])->findOrFail($banner); return $this->ok($this->serialize($model)); } @@ -67,7 +69,7 @@ class BannerController extends Controller $model->fill($data); $model->save(); - return $this->ok($this->serialize($model->fresh(['course', 'activity'])), '已保存'); + return $this->ok($this->serialize($model->fresh(['course', 'activity', 'news'])), '已保存'); } public function destroy(int $banner): JsonResponse @@ -85,10 +87,11 @@ class BannerController extends Controller $base = $request->validate([ 'type' => array_merge( [$existing ? 'sometimes' : 'required', 'string'], - [Rule::in([Banner::TYPE_COURSE, Banner::TYPE_ACTIVITY, Banner::TYPE_CUSTOM])] + [Rule::in([Banner::TYPE_COURSE, Banner::TYPE_ACTIVITY, Banner::TYPE_NEWS, Banner::TYPE_CUSTOM])] ), 'course_id' => ['nullable', 'integer', 'exists:courses,id'], 'activity_id' => ['nullable', 'integer', 'exists:activities,id'], + 'news_id' => ['nullable', 'integer', 'exists:news,id'], 'title' => ['nullable', 'string', 'max:255'], 'cover_url' => ['nullable', 'string', 'max:512'], 'content_html' => ['nullable', 'string'], @@ -105,6 +108,7 @@ class BannerController extends Controller 'type' => $type, 'course_id' => null, 'activity_id' => null, + 'news_id' => null, 'title' => null, 'cover_url' => null, 'content_html' => null, @@ -115,6 +119,7 @@ class BannerController extends Controller match ($type) { Banner::TYPE_COURSE => $this->fillCourse($payload, $base, $existing), Banner::TYPE_ACTIVITY => $this->fillActivity($payload, $base, $existing), + Banner::TYPE_NEWS => $this->fillNews($payload, $base, $existing), Banner::TYPE_CUSTOM => $this->fillCustom($payload, $base, $existing), }; @@ -153,6 +158,26 @@ class BannerController extends Controller $payload['activity_id'] = (int) $activityId; } + /** + * @param array $payload + * @param array $data + */ + protected function fillNews(array &$payload, array $data, ?Banner $existing): void + { + $newsId = $data['news_id'] ?? $existing?->news_id; + if (! $newsId) { + throw ValidationException::withMessages(['news_id' => ['请选择资讯']]); + } + $news = News::query()->whereKey($newsId)->first(); + if (! $news) { + throw ValidationException::withMessages(['news_id' => ['所选资讯不存在']]); + } + if ((int) $news->status !== 1) { + throw ValidationException::withMessages(['news_id' => ['只能选择已发布的资讯']]); + } + $payload['news_id'] = (int) $newsId; + } + /** * @param array $payload * @param array $data @@ -189,6 +214,7 @@ class BannerController extends Controller $summary = match ($b->type) { Banner::TYPE_COURSE => $b->course?->title, Banner::TYPE_ACTIVITY => $b->activity?->title, + Banner::TYPE_NEWS => $b->news?->title, Banner::TYPE_CUSTOM => $b->title, default => null, }; @@ -201,6 +227,8 @@ class BannerController extends Controller 'course_title' => $b->course?->title, 'activity_id' => $b->activity_id, 'activity_title' => $b->activity?->title, + 'news_id' => $b->news_id, + 'news_title' => $b->news?->title, 'title' => $b->title, 'cover_url' => $b->cover_url, 'content_html' => $b->content_html, diff --git a/app/Http/Controllers/Miniapp/BannerController.php b/app/Http/Controllers/Miniapp/BannerController.php index 3caa499..2826bcd 100644 --- a/app/Http/Controllers/Miniapp/BannerController.php +++ b/app/Http/Controllers/Miniapp/BannerController.php @@ -18,6 +18,7 @@ class BannerController extends Controller ->with([ 'course' => fn ($query) => $query->with(['courseSystemItem', 'coverMedia'])->withCount('signups'), 'activity' => fn ($query) => $query->with(['activityTypeItem', 'sessions'])->withCount('signups'), + 'news' => fn ($query) => $query->with(['categoryItem']), ]) ->where('status', 1) ->orderBy('sort') diff --git a/app/Http/Controllers/Miniapp/CourseController.php b/app/Http/Controllers/Miniapp/CourseController.php index a57990b..a208e47 100644 --- a/app/Http/Controllers/Miniapp/CourseController.php +++ b/app/Http/Controllers/Miniapp/CourseController.php @@ -95,11 +95,34 @@ class CourseController extends BaseController ->with(['courseSystemItem', 'coverMedia', 'promoMedia']) ->withCount('signups') ->where('published', 1) - ->orderByRaw('teach_start_date IS NULL') - ->orderByDesc('teach_start_date') - ->orderByDesc('id') - ->limit(3) ->get() + ->filter(fn (Course $course) => in_array( + MiniappPresenter::resolveCourseProgressStatus($course), + [1, 2], + true + )) + ->sort(function (Course $a, Course $b) { + $aDate = $a->teach_start_date; + $bDate = $b->teach_start_date; + + if ($aDate === null && $bDate === null) { + return $b->id <=> $a->id; + } + if ($aDate === null) { + return 1; + } + if ($bDate === null) { + return -1; + } + + $dateDelta = $bDate <=> $aDate; + if ($dateDelta !== 0) { + return $dateDelta; + } + + return $b->id <=> $a->id; + }) + ->take(3) ->map(fn (Course $course) => MiniappPresenter::serializeCourseList($course)) ->values() ->all(); diff --git a/app/Models/Banner.php b/app/Models/Banner.php index 2c4e7a6..4dc9684 100644 --- a/app/Models/Banner.php +++ b/app/Models/Banner.php @@ -14,12 +14,15 @@ class Banner extends Model public const TYPE_ACTIVITY = 'activity'; + public const TYPE_NEWS = 'news'; + public const TYPE_CUSTOM = 'custom'; protected $fillable = [ 'type', 'course_id', 'activity_id', + 'news_id', 'title', 'cover_url', 'content_html', @@ -30,6 +33,7 @@ class Banner extends Model protected $casts = [ 'course_id' => 'integer', 'activity_id' => 'integer', + 'news_id' => 'integer', 'sort' => 'integer', 'status' => 'integer', ]; @@ -44,11 +48,17 @@ class Banner extends Model return $this->belongsTo(Activity::class); } + public function news(): BelongsTo + { + return $this->belongsTo(News::class); + } + public static function typeLabel(string $type): string { return match ($type) { self::TYPE_COURSE => '课程', self::TYPE_ACTIVITY => '活动', + self::TYPE_NEWS => '资讯', self::TYPE_CUSTOM => '自定义', default => $type, }; diff --git a/app/Support/Miniapp/MiniappPresenter.php b/app/Support/Miniapp/MiniappPresenter.php index 94876ce..a1a7208 100644 --- a/app/Support/Miniapp/MiniappPresenter.php +++ b/app/Support/Miniapp/MiniappPresenter.php @@ -290,6 +290,11 @@ class MiniappPresenter 'target_id' => $banner->activity_id, 'title' => $banner->activity?->title, ], + Banner::TYPE_NEWS => [ + 'target_type' => 'news', + 'target_id' => $banner->news_id, + 'title' => $banner->news?->title, + ], default => [ 'target_type' => 'custom', 'target_id' => $banner->id, @@ -356,6 +361,17 @@ class MiniappPresenter ]; } + if ($banner->type === Banner::TYPE_NEWS && $banner->news) { + $news = $banner->news; + + return [ + 'kicker' => $news->categoryItem?->label ?: '资讯', + 'status_label' => null, + 'seats_text' => null, + 'datetime_text' => $news->published_at?->format('n月j日'), + ]; + } + return [ 'kicker' => '推荐', 'status_label' => null, @@ -377,6 +393,13 @@ class MiniappPresenter } } + if ($banner->type === Banner::TYPE_NEWS && $banner->news) { + $newsCover = trim((string) ($banner->news->cover_url ?? '')); + if ($newsCover !== '') { + return $newsCover; + } + } + $bannerCover = trim((string) ($banner->cover_url ?? '')); return $bannerCover !== '' ? $bannerCover : null; diff --git a/database/migrations/2026_06_10_000001_add_news_id_to_banners_table.php b/database/migrations/2026_06_10_000001_add_news_id_to_banners_table.php new file mode 100644 index 0000000..bc59590 --- /dev/null +++ b/database/migrations/2026_06_10_000001_add_news_id_to_banners_table.php @@ -0,0 +1,24 @@ +unsignedBigInteger('news_id')->nullable()->after('activity_id'); + $table->foreign('news_id')->references('id')->on('news')->nullOnDelete(); + }); + } + + public function down(): void + { + Schema::table('banners', function (Blueprint $table) { + $table->dropForeign(['news_id']); + $table->dropColumn('news_id'); + }); + } +}; diff --git a/public/admin/assets/AdminLayout-B6koRwrB.js b/public/admin/assets/AdminLayout-CmJWIASx.js similarity index 97% rename from public/admin/assets/AdminLayout-B6koRwrB.js rename to public/admin/assets/AdminLayout-CmJWIASx.js index 30a1d68..cddb894 100644 --- a/public/admin/assets/AdminLayout-B6koRwrB.js +++ b/public/admin/assets/AdminLayout-CmJWIASx.js @@ -1 +1 @@ -import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,Y as s,Z as c,at as l,b as u,f as d,h as f,ht as p,m,q as h,tn as g,x as _,y as v}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{a as y,d as b,h as x,l as S,n as C,o as w,s as T,t as E,v as D}from"./index-DPkd2m0V.js";var O={class:`user-link`},k=T(n({__name:`AdminLayout`,setup(n){let T=y(),k=w(),A=E(),j=v(()=>T.path),M=p(!1),N=p(!1),P=p({password:``,password_confirmation:``}),F=v(()=>A.user?.username||`—`);function I(e){return e&&x[e]||D}function L(e){e&&e!==T.path&&k.push(e)}async function R(e){e===`out`&&(await A.logout(),await k.replace({name:`login`})),e===`pwd`&&(P.value={password:``,password_confirmation:``},M.value=!0)}async function z(){N.value=!0;try{await C(P.value),S.success(`密码已更新`),M.value=!1}finally{N.value=!1}}return(n,p)=>{let v=s(`el-icon`),y=s(`el-dropdown-item`),x=s(`el-dropdown-menu`),S=s(`el-dropdown`),C=s(`el-header`),w=s(`el-menu-item`),E=s(`el-sub-menu`),D=s(`el-menu`),k=s(`el-aside`),B=s(`router-view`),V=s(`el-main`),H=s(`el-container`),U=s(`el-input`),W=s(`el-form-item`),G=s(`el-form`),K=s(`el-button`),q=s(`el-dialog`);return i(),e(m,null,[r(H,{class:`admin-layout`,direction:`vertical`},{default:l(()=>[r(C,{class:`layout-topbar`,height:`52px`},{default:l(()=>[p[7]||=u(`div`,{class:`brand`},`S-lake高校雷达网`,-1),p[8]||=u(`div`,{class:`spacer`},null,-1),r(S,{class:`topbar-user`,trigger:`click`,onCommand:R},{dropdown:l(()=>[r(x,null,{default:l(()=>[r(y,{command:`pwd`},{default:l(()=>[...p[5]||=[o(`修改密码`,-1)]]),_:1}),r(y,{command:`out`,divided:``,class:`dropdown-logout`},{default:l(()=>[...p[6]||=[o(` 退出登录 `,-1)]]),_:1})]),_:1})]),default:l(()=>[u(`span`,O,[o(g(t(A).user?.real_name||t(A).user?.username)+` `,1),r(v,{class:`el-icon--right`},{default:l(()=>[r(t(b))]),_:1})])]),_:1})]),_:1}),r(H,{class:`layout-body`},{default:l(()=>[r(k,{width:`260px`,class:`aside`},{default:l(()=>[r(D,{"default-active":j.value,class:`menu slake-menu`,"background-color":`#ffffff`,"text-color":`#495057`,"active-text-color":`#ffffff`},{default:l(()=>[(i(!0),e(m,null,h(t(A).menus,t=>(i(),e(m,{key:t.id},[t.children?.length?(i(),_(E,{key:0,index:String(t.id)},{title:l(()=>[r(v,null,{default:l(()=>[(i(),_(c(I(t.icon))))]),_:2},1024),u(`span`,null,g(t.title),1)]),default:l(()=>[(i(!0),e(m,null,h(t.children,e=>(i(),_(w,{key:e.id,index:e.path,onClick:t=>L(e.path)},{default:l(()=>[r(v,null,{default:l(()=>[(i(),_(c(I(e.icon))))]),_:2},1024),u(`span`,null,g(e.title),1)]),_:2},1032,[`index`,`onClick`]))),128))]),_:2},1032,[`index`])):(i(),_(w,{key:1,index:t.path,onClick:e=>L(t.path)},{default:l(()=>[r(v,null,{default:l(()=>[(i(),_(c(I(t.icon))))]),_:2},1024),u(`span`,null,g(t.title),1)]),_:2},1032,[`index`,`onClick`]))],64))),128))]),_:1},8,[`default-active`])]),_:1}),r(V,{class:`main`},{default:l(()=>[r(B,null,{default:l(({Component:e})=>[(i(),_(f,null,[t(T).meta.keepAlive&&e?(i(),_(c(e),{key:t(T).fullPath})):a(``,!0)],1024)),!t(T).meta.keepAlive&&e?(i(),_(c(e),{key:t(T).fullPath})):a(``,!0)]),_:1})]),_:1})]),_:1})]),_:1}),r(q,{modelValue:M.value,"onUpdate:modelValue":p[3]||=e=>M.value=e,class:`pwd-dialog`,title:`修改密码`,width:`480px`,"append-to-body":``,"destroy-on-close":``,onClosed:p[4]||=e=>P.value={password:``,password_confirmation:``}},{footer:l(()=>[r(K,{onClick:p[2]||=e=>M.value=!1},{default:l(()=>[...p[9]||=[o(`取消`,-1)]]),_:1}),r(K,{type:`primary`,loading:N.value,onClick:z},{default:l(()=>[...p[10]||=[o(`保存`,-1)]]),_:1},8,[`loading`])]),default:l(()=>[r(G,{class:`pwd-dialog-form`,"label-width":`100px`,onSubmit:d(z,[`prevent`])},{default:l(()=>[r(W,{label:`账号`},{default:l(()=>[r(U,{"model-value":F.value,readonly:``},null,8,[`model-value`])]),_:1}),r(W,{label:`新密码`,required:``},{default:l(()=>[r(U,{modelValue:P.value.password,"onUpdate:modelValue":p[0]||=e=>P.value.password=e,type:`password`,"show-password":``,placeholder:`至少 6 位`,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1}),r(W,{label:`确认新密码`,required:``},{default:l(()=>[r(U,{modelValue:P.value.password_confirmation,"onUpdate:modelValue":p[1]||=e=>P.value.password_confirmation=e,type:`password`,"show-password":``,placeholder:`再次输入新密码`,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1},8,[`modelValue`])],64)}}}),[[`__scopeId`,`data-v-54fb5ddb`]]);export{k as default}; \ No newline at end of file +import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,Y as s,Z as c,at as l,b as u,f as d,h as f,ht as p,m,q as h,tn as g,x as _,y as v}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{a as y,d as b,h as x,l as S,n as C,o as w,s as T,t as E,v as D}from"./index-C2NqsgBl.js";var O={class:`user-link`},k=T(n({__name:`AdminLayout`,setup(n){let T=y(),k=w(),A=E(),j=v(()=>T.path),M=p(!1),N=p(!1),P=p({password:``,password_confirmation:``}),F=v(()=>A.user?.username||`—`);function I(e){return e&&x[e]||D}function L(e){e&&e!==T.path&&k.push(e)}async function R(e){e===`out`&&(await A.logout(),await k.replace({name:`login`})),e===`pwd`&&(P.value={password:``,password_confirmation:``},M.value=!0)}async function z(){N.value=!0;try{await C(P.value),S.success(`密码已更新`),M.value=!1}finally{N.value=!1}}return(n,p)=>{let v=s(`el-icon`),y=s(`el-dropdown-item`),x=s(`el-dropdown-menu`),S=s(`el-dropdown`),C=s(`el-header`),w=s(`el-menu-item`),E=s(`el-sub-menu`),D=s(`el-menu`),k=s(`el-aside`),B=s(`router-view`),V=s(`el-main`),H=s(`el-container`),U=s(`el-input`),W=s(`el-form-item`),G=s(`el-form`),K=s(`el-button`),q=s(`el-dialog`);return i(),e(m,null,[r(H,{class:`admin-layout`,direction:`vertical`},{default:l(()=>[r(C,{class:`layout-topbar`,height:`52px`},{default:l(()=>[p[7]||=u(`div`,{class:`brand`},`S-lake高校雷达网`,-1),p[8]||=u(`div`,{class:`spacer`},null,-1),r(S,{class:`topbar-user`,trigger:`click`,onCommand:R},{dropdown:l(()=>[r(x,null,{default:l(()=>[r(y,{command:`pwd`},{default:l(()=>[...p[5]||=[o(`修改密码`,-1)]]),_:1}),r(y,{command:`out`,divided:``,class:`dropdown-logout`},{default:l(()=>[...p[6]||=[o(` 退出登录 `,-1)]]),_:1})]),_:1})]),default:l(()=>[u(`span`,O,[o(g(t(A).user?.real_name||t(A).user?.username)+` `,1),r(v,{class:`el-icon--right`},{default:l(()=>[r(t(b))]),_:1})])]),_:1})]),_:1}),r(H,{class:`layout-body`},{default:l(()=>[r(k,{width:`260px`,class:`aside`},{default:l(()=>[r(D,{"default-active":j.value,class:`menu slake-menu`,"background-color":`#ffffff`,"text-color":`#495057`,"active-text-color":`#ffffff`},{default:l(()=>[(i(!0),e(m,null,h(t(A).menus,t=>(i(),e(m,{key:t.id},[t.children?.length?(i(),_(E,{key:0,index:String(t.id)},{title:l(()=>[r(v,null,{default:l(()=>[(i(),_(c(I(t.icon))))]),_:2},1024),u(`span`,null,g(t.title),1)]),default:l(()=>[(i(!0),e(m,null,h(t.children,e=>(i(),_(w,{key:e.id,index:e.path,onClick:t=>L(e.path)},{default:l(()=>[r(v,null,{default:l(()=>[(i(),_(c(I(e.icon))))]),_:2},1024),u(`span`,null,g(e.title),1)]),_:2},1032,[`index`,`onClick`]))),128))]),_:2},1032,[`index`])):(i(),_(w,{key:1,index:t.path,onClick:e=>L(t.path)},{default:l(()=>[r(v,null,{default:l(()=>[(i(),_(c(I(t.icon))))]),_:2},1024),u(`span`,null,g(t.title),1)]),_:2},1032,[`index`,`onClick`]))],64))),128))]),_:1},8,[`default-active`])]),_:1}),r(V,{class:`main`},{default:l(()=>[r(B,null,{default:l(({Component:e})=>[(i(),_(f,null,[t(T).meta.keepAlive&&e?(i(),_(c(e),{key:t(T).fullPath})):a(``,!0)],1024)),!t(T).meta.keepAlive&&e?(i(),_(c(e),{key:t(T).fullPath})):a(``,!0)]),_:1})]),_:1})]),_:1})]),_:1}),r(q,{modelValue:M.value,"onUpdate:modelValue":p[3]||=e=>M.value=e,class:`pwd-dialog`,title:`修改密码`,width:`480px`,"append-to-body":``,"destroy-on-close":``,onClosed:p[4]||=e=>P.value={password:``,password_confirmation:``}},{footer:l(()=>[r(K,{onClick:p[2]||=e=>M.value=!1},{default:l(()=>[...p[9]||=[o(`取消`,-1)]]),_:1}),r(K,{type:`primary`,loading:N.value,onClick:z},{default:l(()=>[...p[10]||=[o(`保存`,-1)]]),_:1},8,[`loading`])]),default:l(()=>[r(G,{class:`pwd-dialog-form`,"label-width":`100px`,onSubmit:d(z,[`prevent`])},{default:l(()=>[r(W,{label:`账号`},{default:l(()=>[r(U,{"model-value":F.value,readonly:``},null,8,[`model-value`])]),_:1}),r(W,{label:`新密码`,required:``},{default:l(()=>[r(U,{modelValue:P.value.password,"onUpdate:modelValue":p[0]||=e=>P.value.password=e,type:`password`,"show-password":``,placeholder:`至少 6 位`,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1}),r(W,{label:`确认新密码`,required:``},{default:l(()=>[r(U,{modelValue:P.value.password_confirmation,"onUpdate:modelValue":p[1]||=e=>P.value.password_confirmation=e,type:`password`,"show-password":``,placeholder:`再次输入新密码`,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1},8,[`modelValue`])],64)}}}),[[`__scopeId`,`data-v-54fb5ddb`]]);export{k as default}; \ No newline at end of file diff --git a/public/admin/assets/HomeView-1YbTnsz1.js b/public/admin/assets/HomeView-mvCKuaF_.js similarity index 94% rename from public/admin/assets/HomeView-1YbTnsz1.js rename to public/admin/assets/HomeView-mvCKuaF_.js index 6d6ec99..afc7f7d 100644 --- a/public/admin/assets/HomeView-1YbTnsz1.js +++ b/public/admin/assets/HomeView-mvCKuaF_.js @@ -1 +1 @@ -import{C as e,Ct as t,D as n,E as r,G as i,T as a,Y as o,at as s,b as c,tn as l,y as u}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{g as d,s as f}from"./index-DPkd2m0V.js";var p={class:`page`},m={class:`card-head`},h=f(n({__name:`HomeView`,setup(n){let f=u(()=>`/api`);return(n,u)=>{let h=o(`el-icon`),g=o(`el-descriptions-item`),_=o(`el-descriptions`),v=o(`el-card`);return i(),e(`div`,p,[r(v,{class:`card`,shadow:`hover`},{header:s(()=>[c(`div`,m,[r(h,{size:22},{default:s(()=>[r(t(d))]),_:1}),u[0]||=c(`span`,null,`高校雷达网 · 管理后台`,-1)])]),default:s(()=>[u[2]||=c(`p`,{class:`desc`},[a(`技术栈:Vue 3、Vite、TypeScript、Element Plus。本地已配置对接 `),c(`code`,null,`slake-school-service`),a(` 的 API 代理。`)],-1),r(_,{column:1,border:``},{default:s(()=>[r(g,{label:`VITE_API_BASE_URL`},{default:s(()=>[c(`code`,null,l(f.value),1)]),_:1}),r(g,{label:`说明`},{default:s(()=>[...u[1]||=[a(` 开发时请求 `,-1),c(`code`,null,`/api/*`,-1),a(` 由 Vite 转发至 `,-1),c(`code`,null,`VITE_PROXY_TARGET`,-1),a(`(默认 `,-1),c(`code`,null,`http://127.0.0.1:8000`,-1),a(`),与 Laravel 的 `,-1),c(`code`,null,`/api`,-1),a(` 前缀一致。 `,-1)]]),_:1})]),_:1})]),_:1})])}}}),[[`__scopeId`,`data-v-436e6398`]]);export{h as default}; \ No newline at end of file +import{C as e,Ct as t,D as n,E as r,G as i,T as a,Y as o,at as s,b as c,tn as l,y as u}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{g as d,s as f}from"./index-C2NqsgBl.js";var p={class:`page`},m={class:`card-head`},h=f(n({__name:`HomeView`,setup(n){let f=u(()=>`/api`);return(n,u)=>{let h=o(`el-icon`),g=o(`el-descriptions-item`),_=o(`el-descriptions`),v=o(`el-card`);return i(),e(`div`,p,[r(v,{class:`card`,shadow:`hover`},{header:s(()=>[c(`div`,m,[r(h,{size:22},{default:s(()=>[r(t(d))]),_:1}),u[0]||=c(`span`,null,`高校雷达网 · 管理后台`,-1)])]),default:s(()=>[u[2]||=c(`p`,{class:`desc`},[a(`技术栈:Vue 3、Vite、TypeScript、Element Plus。本地已配置对接 `),c(`code`,null,`slake-school-service`),a(` 的 API 代理。`)],-1),r(_,{column:1,border:``},{default:s(()=>[r(g,{label:`VITE_API_BASE_URL`},{default:s(()=>[c(`code`,null,l(f.value),1)]),_:1}),r(g,{label:`说明`},{default:s(()=>[...u[1]||=[a(` 开发时请求 `,-1),c(`code`,null,`/api/*`,-1),a(` 由 Vite 转发至 `,-1),c(`code`,null,`VITE_PROXY_TARGET`,-1),a(`(默认 `,-1),c(`code`,null,`http://127.0.0.1:8000`,-1),a(`),与 Laravel 的 `,-1),c(`code`,null,`/api`,-1),a(` 前缀一致。 `,-1)]]),_:1})]),_:1})]),_:1})])}}}),[[`__scopeId`,`data-v-436e6398`]]);export{h as default}; \ No newline at end of file diff --git a/public/admin/assets/RichTextEditor-D53SL5wL.js b/public/admin/assets/RichTextEditor-x18LQ7sl.js similarity index 99% rename from public/admin/assets/RichTextEditor-D53SL5wL.js rename to public/admin/assets/RichTextEditor-x18LQ7sl.js index f57d335..df56131 100644 --- a/public/admin/assets/RichTextEditor-D53SL5wL.js +++ b/public/admin/assets/RichTextEditor-x18LQ7sl.js @@ -1,4 +1,4 @@ -import{a as e,t}from"./rolldown-runtime-BYbx6iT9.js";import{A as n,C as r,Ct as i,D as a,E as o,G as s,H as c,I as l,P as u,Qt as d,et as f,ht as p,rt as m,z as h}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{l as g,r as _,s as v}from"./index-DPkd2m0V.js";var y=t(((e,t)=>{(function(n,r){typeof e==`object`&&typeof t==`object`?t.exports=r():typeof define==`function`&&define.amd?define([],r):typeof e==`object`?e.Quill=r():n.Quill=r()})(typeof self<`u`?self:e,function(){return(function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,`a`,t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=``,n(n.s=109)})([(function(e,t,n){Object.defineProperty(t,`__esModule`,{value:!0});var r=n(17),i=n(18),a=n(19),o=n(45),s=n(46),c=n(47),l=n(48),u=n(49),d=n(12),f=n(32),p=n(33),m=n(31),h=n(1);t.default={Scope:h.Scope,create:h.create,find:h.find,query:h.query,register:h.register,Container:r.default,Format:i.default,Leaf:a.default,Embed:l.default,Scroll:o.default,Block:c.default,Inline:s.default,Text:u.default,Attributor:{Attribute:d.default,Class:f.default,Style:p.default,Store:m.default}}}),(function(e,t,n){var r=this&&this.__extends||(function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}})();Object.defineProperty(t,`__esModule`,{value:!0});var i=function(e){r(t,e);function t(t){var n=this;return t=`[Parchment] `+t,n=e.call(this,t)||this,n.message=t,n.name=n.constructor.name,n}return t}(Error);t.ParchmentError=i;var a={},o={},s={},c={};t.DATA_KEY=`__blot`;var l;(function(e){e[e.TYPE=3]=`TYPE`,e[e.LEVEL=12]=`LEVEL`,e[e.ATTRIBUTE=13]=`ATTRIBUTE`,e[e.BLOT=14]=`BLOT`,e[e.INLINE=7]=`INLINE`,e[e.BLOCK=11]=`BLOCK`,e[e.BLOCK_BLOT=10]=`BLOCK_BLOT`,e[e.INLINE_BLOT=6]=`INLINE_BLOT`,e[e.BLOCK_ATTRIBUTE=9]=`BLOCK_ATTRIBUTE`,e[e.INLINE_ATTRIBUTE=5]=`INLINE_ATTRIBUTE`,e[e.ANY=15]=`ANY`})(l=t.Scope||={});function u(e,t){var n=f(e);if(n==null)throw new i(`Unable to create `+e+` blot`);var r=n;return new r(e instanceof Node||e.nodeType===Node.TEXT_NODE?e:r.create(t),t)}t.create=u;function d(e,n){return n===void 0&&(n=!1),e==null?null:e[t.DATA_KEY]==null?n?d(e.parentNode,n):null:e[t.DATA_KEY].blot}t.find=d;function f(e,t){t===void 0&&(t=l.ANY);var n;if(typeof e==`string`)n=c[e]||a[e];else if(e instanceof Text||e.nodeType===Node.TEXT_NODE)n=c.text;else if(typeof e==`number`)e&l.LEVEL&l.BLOCK?n=c.block:e&l.LEVEL&l.INLINE&&(n=c.inline);else if(e instanceof HTMLElement){var r=(e.getAttribute(`class`)||``).split(/\s+/);for(var i in r)if(n=o[r[i]],n)break;n||=s[e.tagName]}return n==null?null:t&l.LEVEL&n.scope&&t&l.TYPE&n.scope?n:null}t.query=f;function p(){var e=[...arguments];if(e.length>1)return e.map(function(e){return p(e)});var t=e[0];if(typeof t.blotName!=`string`&&typeof t.attrName!=`string`)throw new i(`Invalid definition`);if(t.blotName===`abstract`)throw new i(`Cannot register abstract class`);return c[t.blotName||t.attrName]=t,typeof t.keyName==`string`?a[t.keyName]=t:(t.className!=null&&(o[t.className]=t),t.tagName!=null&&(Array.isArray(t.tagName)?t.tagName=t.tagName.map(function(e){return e.toUpperCase()}):t.tagName=t.tagName.toUpperCase(),(Array.isArray(t.tagName)?t.tagName:[t.tagName]).forEach(function(e){(s[e]==null||t.className==null)&&(s[e]=t)}))),t}t.register=p}),(function(e,t,n){var r=n(51),i=n(11),a=n(3),o=n(20),s=`\0`,c=function(e){Array.isArray(e)?this.ops=e:e!=null&&Array.isArray(e.ops)?this.ops=e.ops:this.ops=[]};c.prototype.insert=function(e,t){var n={};return e.length===0?this:(n.insert=e,typeof t==`object`&&t&&Object.keys(t).length>0&&(n.attributes=t),this.push(n))},c.prototype.delete=function(e){return e<=0?this:this.push({delete:e})},c.prototype.retain=function(e,t){if(e<=0)return this;var n={retain:e};return typeof t==`object`&&t&&Object.keys(t).length>0&&(n.attributes=t),this.push(n)},c.prototype.push=function(e){var t=this.ops.length,n=this.ops[t-1];if(e=a(!0,{},e),typeof n==`object`){if(typeof e.delete==`number`&&typeof n.delete==`number`)return this.ops[t-1]={delete:n.delete+e.delete},this;if(typeof n.delete==`number`&&e.insert!=null&&(--t,n=this.ops[t-1],typeof n!=`object`))return this.ops.unshift(e),this;if(i(e.attributes,n.attributes)){if(typeof e.insert==`string`&&typeof n.insert==`string`)return this.ops[t-1]={insert:n.insert+e.insert},typeof e.attributes==`object`&&(this.ops[t-1].attributes=e.attributes),this;if(typeof e.retain==`number`&&typeof n.retain==`number`)return this.ops[t-1]={retain:n.retain+e.retain},typeof e.attributes==`object`&&(this.ops[t-1].attributes=e.attributes),this}}return t===this.ops.length?this.ops.push(e):this.ops.splice(t,0,e),this},c.prototype.chop=function(){var e=this.ops[this.ops.length-1];return e&&e.retain&&!e.attributes&&this.ops.pop(),this},c.prototype.filter=function(e){return this.ops.filter(e)},c.prototype.forEach=function(e){this.ops.forEach(e)},c.prototype.map=function(e){return this.ops.map(e)},c.prototype.partition=function(e){var t=[],n=[];return this.forEach(function(r){(e(r)?t:n).push(r)}),[t,n]},c.prototype.reduce=function(e,t){return this.ops.reduce(e,t)},c.prototype.changeLength=function(){return this.reduce(function(e,t){return t.insert?e+o.length(t):t.delete?e-t.delete:e},0)},c.prototype.length=function(){return this.reduce(function(e,t){return e+o.length(t)},0)},c.prototype.slice=function(e,t){e||=0,typeof t!=`number`&&(t=1/0);for(var n=[],r=o.iterator(this.ops),i=0;i0&&n.next(a.retain-s)}for(var l=new c(r);t.hasNext()||n.hasNext();)if(n.peekType()===`insert`)l.push(n.next());else if(t.peekType()===`delete`)l.push(t.next());else{var u=Math.min(t.peekLength(),n.peekLength()),d=t.next(u),f=n.next(u);if(typeof f.retain==`number`){var p={};typeof d.retain==`number`?p.retain=u:p.insert=d.insert;var m=o.attributes.compose(d.attributes,f.attributes,typeof d.retain==`number`);if(m&&(p.attributes=m),l.push(p),!n.hasNext()&&i(l.ops[l.ops.length-1],p)){var h=new c(t.rest());return l.concat(h).chop()}}else typeof f.delete==`number`&&typeof d.retain==`number`&&l.push(f)}return l.chop()},c.prototype.concat=function(e){var t=new c(this.ops.slice());return e.ops.length>0&&(t.push(e.ops[0]),t.ops=t.ops.concat(e.ops.slice(1))),t},c.prototype.diff=function(e,t){if(this.ops===e.ops)return new c;var n=[this,e].map(function(t){return t.map(function(n){if(n.insert!=null)return typeof n.insert==`string`?n.insert:s;throw Error(`diff() called `+(t===e?`on`:`with`)+` non-document`)}).join(``)}),a=new c,l=r(n[0],n[1],t),u=o.iterator(this.ops),d=o.iterator(e.ops);return l.forEach(function(e){for(var t=e[1].length;t>0;){var n=0;switch(e[0]){case r.INSERT:n=Math.min(d.peekLength(),t),a.push(d.next(n));break;case r.DELETE:n=Math.min(t,u.peekLength()),u.next(n),a.delete(n);break;case r.EQUAL:n=Math.min(u.peekLength(),d.peekLength(),t);var s=u.next(n),c=d.next(n);i(s.insert,c.insert)?a.retain(n,o.attributes.diff(s.attributes,c.attributes)):a.push(c).delete(n);break}t-=n}}),a.chop()},c.prototype.eachLine=function(e,t){t||=` +import{a as e,t}from"./rolldown-runtime-BYbx6iT9.js";import{A as n,C as r,Ct as i,D as a,E as o,G as s,H as c,I as l,P as u,Qt as d,et as f,ht as p,rt as m,z as h}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{l as g,r as _,s as v}from"./index-C2NqsgBl.js";var y=t(((e,t)=>{(function(n,r){typeof e==`object`&&typeof t==`object`?t.exports=r():typeof define==`function`&&define.amd?define([],r):typeof e==`object`?e.Quill=r():n.Quill=r()})(typeof self<`u`?self:e,function(){return(function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,`a`,t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=``,n(n.s=109)})([(function(e,t,n){Object.defineProperty(t,`__esModule`,{value:!0});var r=n(17),i=n(18),a=n(19),o=n(45),s=n(46),c=n(47),l=n(48),u=n(49),d=n(12),f=n(32),p=n(33),m=n(31),h=n(1);t.default={Scope:h.Scope,create:h.create,find:h.find,query:h.query,register:h.register,Container:r.default,Format:i.default,Leaf:a.default,Embed:l.default,Scroll:o.default,Block:c.default,Inline:s.default,Text:u.default,Attributor:{Attribute:d.default,Class:f.default,Style:p.default,Store:m.default}}}),(function(e,t,n){var r=this&&this.__extends||(function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}})();Object.defineProperty(t,`__esModule`,{value:!0});var i=function(e){r(t,e);function t(t){var n=this;return t=`[Parchment] `+t,n=e.call(this,t)||this,n.message=t,n.name=n.constructor.name,n}return t}(Error);t.ParchmentError=i;var a={},o={},s={},c={};t.DATA_KEY=`__blot`;var l;(function(e){e[e.TYPE=3]=`TYPE`,e[e.LEVEL=12]=`LEVEL`,e[e.ATTRIBUTE=13]=`ATTRIBUTE`,e[e.BLOT=14]=`BLOT`,e[e.INLINE=7]=`INLINE`,e[e.BLOCK=11]=`BLOCK`,e[e.BLOCK_BLOT=10]=`BLOCK_BLOT`,e[e.INLINE_BLOT=6]=`INLINE_BLOT`,e[e.BLOCK_ATTRIBUTE=9]=`BLOCK_ATTRIBUTE`,e[e.INLINE_ATTRIBUTE=5]=`INLINE_ATTRIBUTE`,e[e.ANY=15]=`ANY`})(l=t.Scope||={});function u(e,t){var n=f(e);if(n==null)throw new i(`Unable to create `+e+` blot`);var r=n;return new r(e instanceof Node||e.nodeType===Node.TEXT_NODE?e:r.create(t),t)}t.create=u;function d(e,n){return n===void 0&&(n=!1),e==null?null:e[t.DATA_KEY]==null?n?d(e.parentNode,n):null:e[t.DATA_KEY].blot}t.find=d;function f(e,t){t===void 0&&(t=l.ANY);var n;if(typeof e==`string`)n=c[e]||a[e];else if(e instanceof Text||e.nodeType===Node.TEXT_NODE)n=c.text;else if(typeof e==`number`)e&l.LEVEL&l.BLOCK?n=c.block:e&l.LEVEL&l.INLINE&&(n=c.inline);else if(e instanceof HTMLElement){var r=(e.getAttribute(`class`)||``).split(/\s+/);for(var i in r)if(n=o[r[i]],n)break;n||=s[e.tagName]}return n==null?null:t&l.LEVEL&n.scope&&t&l.TYPE&n.scope?n:null}t.query=f;function p(){var e=[...arguments];if(e.length>1)return e.map(function(e){return p(e)});var t=e[0];if(typeof t.blotName!=`string`&&typeof t.attrName!=`string`)throw new i(`Invalid definition`);if(t.blotName===`abstract`)throw new i(`Cannot register abstract class`);return c[t.blotName||t.attrName]=t,typeof t.keyName==`string`?a[t.keyName]=t:(t.className!=null&&(o[t.className]=t),t.tagName!=null&&(Array.isArray(t.tagName)?t.tagName=t.tagName.map(function(e){return e.toUpperCase()}):t.tagName=t.tagName.toUpperCase(),(Array.isArray(t.tagName)?t.tagName:[t.tagName]).forEach(function(e){(s[e]==null||t.className==null)&&(s[e]=t)}))),t}t.register=p}),(function(e,t,n){var r=n(51),i=n(11),a=n(3),o=n(20),s=`\0`,c=function(e){Array.isArray(e)?this.ops=e:e!=null&&Array.isArray(e.ops)?this.ops=e.ops:this.ops=[]};c.prototype.insert=function(e,t){var n={};return e.length===0?this:(n.insert=e,typeof t==`object`&&t&&Object.keys(t).length>0&&(n.attributes=t),this.push(n))},c.prototype.delete=function(e){return e<=0?this:this.push({delete:e})},c.prototype.retain=function(e,t){if(e<=0)return this;var n={retain:e};return typeof t==`object`&&t&&Object.keys(t).length>0&&(n.attributes=t),this.push(n)},c.prototype.push=function(e){var t=this.ops.length,n=this.ops[t-1];if(e=a(!0,{},e),typeof n==`object`){if(typeof e.delete==`number`&&typeof n.delete==`number`)return this.ops[t-1]={delete:n.delete+e.delete},this;if(typeof n.delete==`number`&&e.insert!=null&&(--t,n=this.ops[t-1],typeof n!=`object`))return this.ops.unshift(e),this;if(i(e.attributes,n.attributes)){if(typeof e.insert==`string`&&typeof n.insert==`string`)return this.ops[t-1]={insert:n.insert+e.insert},typeof e.attributes==`object`&&(this.ops[t-1].attributes=e.attributes),this;if(typeof e.retain==`number`&&typeof n.retain==`number`)return this.ops[t-1]={retain:n.retain+e.retain},typeof e.attributes==`object`&&(this.ops[t-1].attributes=e.attributes),this}}return t===this.ops.length?this.ops.push(e):this.ops.splice(t,0,e),this},c.prototype.chop=function(){var e=this.ops[this.ops.length-1];return e&&e.retain&&!e.attributes&&this.ops.pop(),this},c.prototype.filter=function(e){return this.ops.filter(e)},c.prototype.forEach=function(e){this.ops.forEach(e)},c.prototype.map=function(e){return this.ops.map(e)},c.prototype.partition=function(e){var t=[],n=[];return this.forEach(function(r){(e(r)?t:n).push(r)}),[t,n]},c.prototype.reduce=function(e,t){return this.ops.reduce(e,t)},c.prototype.changeLength=function(){return this.reduce(function(e,t){return t.insert?e+o.length(t):t.delete?e-t.delete:e},0)},c.prototype.length=function(){return this.reduce(function(e,t){return e+o.length(t)},0)},c.prototype.slice=function(e,t){e||=0,typeof t!=`number`&&(t=1/0);for(var n=[],r=o.iterator(this.ops),i=0;i0&&n.next(a.retain-s)}for(var l=new c(r);t.hasNext()||n.hasNext();)if(n.peekType()===`insert`)l.push(n.next());else if(t.peekType()===`delete`)l.push(t.next());else{var u=Math.min(t.peekLength(),n.peekLength()),d=t.next(u),f=n.next(u);if(typeof f.retain==`number`){var p={};typeof d.retain==`number`?p.retain=u:p.insert=d.insert;var m=o.attributes.compose(d.attributes,f.attributes,typeof d.retain==`number`);if(m&&(p.attributes=m),l.push(p),!n.hasNext()&&i(l.ops[l.ops.length-1],p)){var h=new c(t.rest());return l.concat(h).chop()}}else typeof f.delete==`number`&&typeof d.retain==`number`&&l.push(f)}return l.chop()},c.prototype.concat=function(e){var t=new c(this.ops.slice());return e.ops.length>0&&(t.push(e.ops[0]),t.ops=t.ops.concat(e.ops.slice(1))),t},c.prototype.diff=function(e,t){if(this.ops===e.ops)return new c;var n=[this,e].map(function(t){return t.map(function(n){if(n.insert!=null)return typeof n.insert==`string`?n.insert:s;throw Error(`diff() called `+(t===e?`on`:`with`)+` non-document`)}).join(``)}),a=new c,l=r(n[0],n[1],t),u=o.iterator(this.ops),d=o.iterator(e.ops);return l.forEach(function(e){for(var t=e[1].length;t>0;){var n=0;switch(e[0]){case r.INSERT:n=Math.min(d.peekLength(),t),a.push(d.next(n));break;case r.DELETE:n=Math.min(t,u.peekLength()),u.next(n),a.delete(n);break;case r.EQUAL:n=Math.min(u.peekLength(),d.peekLength(),t);var s=u.next(n),c=d.next(n);i(s.insert,c.insert)?a.retain(n,o.attributes.diff(s.attributes,c.attributes)):a.push(c).delete(n);break}t-=n}}),a.chop()},c.prototype.eachLine=function(e,t){t||=` `;for(var n=o.iterator(this.ops),r=new c,i=0;n.hasNext();){if(n.peekType()!==`insert`)return;var a=n.peek(),s=o.length(a)-n.peekLength(),l=typeof a.insert==`string`?a.insert.indexOf(t,s)-s:-1;if(l<0)r.push(n.next());else if(l>0)r.push(n.next(l));else{if(e(r,n.next(1).attributes||{},i)===!1)return;i+=1,r=new c}}r.length()>0&&e(r,{},i)},c.prototype.transform=function(e,t){if(t=!!t,typeof e==`number`)return this.transformPosition(e,t);for(var n=o.iterator(this.ops),r=o.iterator(e.ops),i=new c;n.hasNext()||r.hasNext();)if(n.peekType()===`insert`&&(t||r.peekType()!==`insert`))i.retain(o.length(n.next()));else if(r.peekType()===`insert`)i.push(r.next());else{var a=Math.min(n.peekLength(),r.peekLength()),s=n.next(a),l=r.next(a);if(s.delete)continue;l.delete?i.push(l):i.retain(a,o.attributes.transform(s.attributes,l.attributes,t))}return i.chop()},c.prototype.transformPosition=function(e,t){t=!!t;for(var n=o.iterator(this.ops),r=0;n.hasNext()&&r<=e;){var i=n.peekLength(),a=n.peekType();if(n.next(),a===`delete`){e-=Math.min(i,e-r);continue}else a===`insert`&&(re.id))}async function F(e=E.value){C.value=!0;try{let t=await w({page:e,page_size:D.value.per_page,keyword:S.value.trim()||void 0});T.value=t.items,D.value=t.meta,E.value=t.meta.current_page,j.value&&!t.items.some(e=>e.id===j.value)&&(j.value=void 0)}finally{C.value=!1}}function I(){E.value=1,F(1)}function L(e){A.value.includes(e.id)||(j.value=e.id)}async function R(){if(o.teacherId){if(!b.value.title.trim()||!b.value.authors.trim()){x.warning(`请填写标题与作者`);return}if(!b.value.published_at){x.warning(`请选择发表时间`);return}y.value=!0;try{await O(o.teacherId,{...b.value}),x.success(`已添加论文`),r.value=!1,m(`saved`)}finally{y.value=!1}}}async function z(){if(o.teacherId){if(!j.value){x.warning(`请选择要关联的论文`);return}if(A.value.includes(j.value)){x.warning(`该论文已关联此老师`);return}y.value=!0;try{await k(o.teacherId,j.value),x.success(`已关联论文`),r.value=!1,m(`saved`)}finally{y.value=!1}}}async function re(){h.value===`manual`?await R():await z()}return g(()=>[r.value,o.teacherId],([e])=>{e&&o.teacherId&&(h.value=`manual`,j.value=void 0,S.value=``,E.value=1,M(),P(),F(1))}),g(h,e=>{e===`library`&&r.value&&o.teacherId&&F(E.value)}),(e,n)=>{let o=l(`el-input`),f=l(`el-form-item`),p=l(`el-col`),m=l(`el-date-picker`),g=l(`el-row`),x=l(`el-form`),w=l(`el-tab-pane`),O=l(`el-button`),k=l(`el-table-column`),j=l(`el-tag`),M=l(`el-table`),N=l(`el-pagination`),P=l(`el-tabs`),R=l(`el-dialog`),z=ee(`loading`);return a(),v(R,{modelValue:r.value,"onUpdate:modelValue":n[10]||=e=>r.value=e,title:`论文`,width:`720px`,"destroy-on-close":``,"append-to-body":``},{footer:u(()=>[i(O,{onClick:n[9]||=e=>r.value=!1},{default:u(()=>[...n[13]||=[c(`取消`,-1)]]),_:1}),i(O,{type:`primary`,loading:y.value,onClick:re},{default:u(()=>[c(_(h.value===`manual`?`保存`:`确认关联`),1)]),_:1},8,[`loading`])]),default:u(()=>[i(P,{modelValue:h.value,"onUpdate:modelValue":n[8]||=e=>h.value=e},{default:u(()=>[i(w,{label:`手动录入`,name:`manual`},{default:u(()=>[i(x,{"label-position":`top`,class:`form-small`},{default:u(()=>[i(f,{label:`标题`,required:``},{default:u(()=>[i(o,{modelValue:b.value.title,"onUpdate:modelValue":n[0]||=e=>b.value.title=e,placeholder:`请输入论文标题`},null,8,[`modelValue`])]),_:1}),i(g,{gutter:12},{default:u(()=>[i(p,{span:12},{default:u(()=>[i(f,{label:`作者`,required:``},{default:u(()=>[i(o,{modelValue:b.value.authors,"onUpdate:modelValue":n[1]||=e=>b.value.authors=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:12},{default:u(()=>[i(f,{label:`学校`},{default:u(()=>[i(o,{modelValue:b.value.school_name,"onUpdate:modelValue":n[2]||=e=>b.value.school_name=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:12},{default:u(()=>[i(f,{label:`发表时间`,required:``},{default:u(()=>[i(m,{modelValue:b.value.published_at,"onUpdate:modelValue":n[3]||=e=>b.value.published_at=e,type:`date`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:12},{default:u(()=>[i(f,{label:`链接`},{default:u(()=>[i(o,{modelValue:b.value.url,"onUpdate:modelValue":n[4]||=e=>b.value.url=e,placeholder:`https://example.com/paper`},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:24},{default:u(()=>[i(f,{label:`摘要`},{default:u(()=>[i(o,{modelValue:b.value.summary,"onUpdate:modelValue":n[5]||=e=>b.value.summary=e,type:`textarea`,rows:4,placeholder:`请输入论文摘要`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),i(w,{label:`从论文库选择`,name:`library`},{default:u(()=>[d(`div`,B,[i(o,{modelValue:S.value,"onUpdate:modelValue":n[6]||=e=>S.value=e,clearable:``,placeholder:`搜索标题、作者、学校…`,style:{width:`260px`},onKeyup:te(I,[`enter`])},null,8,[`modelValue`]),i(O,{type:`primary`,onClick:I},{default:u(()=>[...n[11]||=[c(`搜索`,-1)]]),_:1})]),ne((a(),v(M,{data:T.value,size:`small`,"highlight-current-row":``,class:`library-table`,"row-class-name":({row:e})=>A.value.includes(e.id)?`is-linked-row`:``,onRowClick:L,onCurrentChange:n[7]||=e=>{e&&L(e)}},{default:u(()=>[i(k,{prop:`title`,label:`标题`,"min-width":`200`,"show-overflow-tooltip":``}),i(k,{prop:`authors`,label:`作者`,width:`120`,"show-overflow-tooltip":``}),i(k,{prop:`school_name`,label:`学校`,width:`120`,"show-overflow-tooltip":``}),i(k,{label:`状态`,width:`80`,align:`center`},{default:u(({row:e})=>[A.value.includes(e.id)?(a(),v(j,{key:0,size:`small`,type:`info`},{default:u(()=>[...n[12]||=[c(`已关联`,-1)]]),_:1})):(a(),t(`span`,V,`—`))]),_:1})]),_:1},8,[`data`,`row-class-name`])),[[z,C.value]]),D.value.total>0?(a(),t(`div`,H,[i(N,{layout:`total, prev, pager, next`,total:D.value.total,"page-size":D.value.per_page,"current-page":E.value,onCurrentChange:F},null,8,[`total`,`page-size`,`current-page`])])):s(``,!0)]),_:1})]),_:1},8,[`modelValue`])]),_:1},8,[`modelValue`])}}}),[[`__scopeId`,`data-v-d91269f1`]]),ae={class:`detail-body`},oe={key:0,class:`basic-info-block`},se={key:1,class:`basic-info-block`},ce={key:0,class:`crawl-uni-hint`},le={class:`uni-row`},ue={class:`star-preview`},de={key:0,class:`star-follow-rule`},fe={class:`section`},pe={class:`section-head`},me={class:`muted`},he={class:`section`},ge={class:`section-head`},_e={class:`muted`},ve={class:`summary-body`},ye={class:`follow-summary`},be={class:`log-head`},U=r({__name:`TeacherDetailDialog`,props:{modelValue:{type:Boolean},teacherId:{},readonly:{type:Boolean}},emits:[`update:modelValue`,`saved`],setup(e,{emit:r}){let o=C(),te=y(()=>o.isGridMember),f=e,S=y(()=>f.readonly===!0),w=y(()=>{let e=H.value?.name;return S.value?e?`查看 · ${e}`:`老师详情`:e?`编辑 · ${e}`:`编辑老师`});function O(e){return e.university_name?e.university_name:e.university_text?`${e.university_text}(未关联高校库)`:`—`}function k(e){return e.research_direction?e.research_direction:e.research_directions?.map(e=>e.name).join(`、`)||`—`}let B=r,V=p(!1),H=p(null),U=p(null),W=y(()=>R(q.value.find(e=>e.id===Y.value.star_level_dict_item_id)?.value)),G=p([]),K=p([]),q=p([]),xe=p([]),J=p([]),Se=p([]),Y=p({name:``,university_id:void 0,city:``,title:``,research_direction_ids:[],phone:``,email:``,star_level_dict_item_id:void 0,status_dict_item_id:void 0,next_follow_date:``}),X=p(!1),Z=p(!1),Q=p({name:``,city:``,province:``,longitude:``,latitude:``}),$=p(!1),Ce=p(!1),we=p(``),Te=p(!1),Ee=p(``),De=p([]);async function Oe(){let e=await j({page:1,page_size:200}),t=o.user?.grid_scope?.university_ids;J.value=t?.length?e.items.filter(e=>t.includes(e.id)):e.items}async function ke(){let e=await E(),t=o.user?.grid_scope?.research_direction_ids;Se.value=t?.length?e.research_directions.filter(e=>t.includes(e.id)):e.research_directions}function Ae(){Q.value={name:``,city:Y.value.city||``,province:``,longitude:``,latitude:``},X.value=!0}async function je(){let e=Q.value;if(!e.name.trim()){x.warning(`请填写高校名称`);return}if(!e.longitude.trim()||!e.latitude.trim()){x.warning(`请填写经度与纬度`);return}let t=Number(e.longitude),n=Number(e.latitude);if(Number.isNaN(t)||Number.isNaN(n)){x.warning(`经纬度须为有效数字`);return}Z.value=!0;try{let r=await T({name:e.name.trim(),city:e.city.trim()||null,province:e.province.trim()||null,longitude:t,latitude:n});J.value.some(e=>e.id===r.id)||J.value.push(r),Y.value.university_id=r.id,r.city&&(Y.value.city=r.city),X.value=!1,x.success(`高校已创建`)}finally{Z.value=!1}}async function Me(){if(f.teacherId){V.value=!0;try{let e=await M(f.teacherId);H.value=e,U.value=e.star_level_dict_item_id??null,Y.value={name:e.name||``,university_id:e.university_id??void 0,research_direction_ids:e.research_direction_ids?.length?[...e.research_direction_ids]:e.research_directions?.map(e=>e.id)||[],city:e.city||``,title:e.title||``,phone:e.phone||``,email:e.email||``,star_level_dict_item_id:e.star_level_dict_item_id??void 0,status_dict_item_id:e.status_dict_item_id??void 0,next_follow_date:e.next_follow_date||``};let[t,n]=await Promise.all([N(f.teacherId),L({teacher_id:f.teacherId,page:1,page_size:50})]);G.value=t,K.value=n.items}finally{V.value=!1}}}function Ne(){let e=Y.value;return e.name.trim()?e.university_id?e.city.trim()?e.title.trim()?e.research_direction_ids.length?e.status_dict_item_id?!0:(x.warning(`请选择状态`),!1):(x.warning(`请至少选择一个研究方向`),!1):(x.warning(`请填写职称`),!1):(x.warning(`请填写城市`),!1):(x.warning(`请选择高校,或点击「新建高校」`),!1):(x.warning(`请填写姓名`),!1)}async function Pe(){if(!f.teacherId||!H.value||!Ne())return;let e=(Y.value.star_level_dict_item_id??null)!==U.value;await D(f.teacherId,{name:Y.value.name.trim(),university_id:Y.value.university_id,city:Y.value.city.trim(),title:Y.value.title.trim(),research_direction_ids:Y.value.research_direction_ids,phone:Y.value.phone||null,email:Y.value.email||null,star_level_dict_item_id:Y.value.star_level_dict_item_id??null,status_dict_item_id:Y.value.status_dict_item_id,...e?{recalc_next_follow_date:!0}:{next_follow_date:Y.value.next_follow_date||null,recalc_next_follow_date:!1}}),x.success(`已保存`),B(`saved`),B(`update:modelValue`,!1)}function Fe(){let e=q.value.find(e=>e.id===Y.value.star_level_dict_item_id);Y.value.next_follow_date=re(e?.value)||``}function Ie(e){if(!e)return;let t=J.value.find(t=>t.id===e);t?.city&&!Y.value.city&&(Y.value.city=t.city)}function Le(){$.value=!0}async function Re(){f.teacherId&&(G.value=await N(f.teacherId))}async function ze(e){await b.confirm(`确定删除论文「${e.title}」?`,`确认删除`,{type:`warning`}),await A(f.teacherId,e.id),G.value=await N(f.teacherId)}function Be(e){we.value=e.summary||`暂无摘要`,Ce.value=!0}async function Ve(e){Ee.value=e.title,De.value=await I(e.id),Te.value=!0}return g(()=>[f.modelValue,f.teacherId],async([e,t])=>{if(e&&t){if(!q.value.length){let[e,t]=await Promise.all([P(`teacher_level`),P(`teacher_status`)]);q.value=e.items,xe.value=t.items,await Oe()}await ke(),await Me()}}),g(()=>Y.value.university_id,e=>Ie(e)),(r,o)=>{let f=l(`el-descriptions-item`),p=l(`el-descriptions`),g=l(`el-input`),y=l(`el-form-item`),b=l(`el-col`),x=l(`el-option`),C=l(`el-select`),T=l(`el-button`),E=l(`el-date-picker`),D=l(`el-row`),A=l(`el-form`),j=l(`el-table-column`),M=l(`el-link`),N=l(`el-table`),P=l(`el-tag`),I=l(`el-empty`),L=l(`el-dialog`),R=ee(`loading`);return a(),v(L,{"model-value":e.modelValue,title:w.value,width:`960px`,top:`4vh`,"destroy-on-close":``,"onUpdate:modelValue":o[21]||=e=>B(`update:modelValue`,e)},{footer:u(()=>[i(T,{onClick:o[10]||=e=>B(`update:modelValue`,!1)},{default:u(()=>[...o[31]||=[c(`关闭`,-1)]]),_:1}),S.value?s(``,!0):(a(),v(T,{key:0,type:`primary`,class:`teachers-primary-btn`,onClick:Pe},{default:u(()=>[...o[32]||=[c(` 保存 `,-1)]]),_:1}))]),default:u(()=>[ne((a(),t(`div`,ae,[S.value&&H.value?(a(),t(`div`,oe,[o[22]||=d(`h3`,{class:`basic-info-title`},`基本信息`,-1),i(p,{column:3,border:``,size:`small`,class:`view-desc`},{default:u(()=>[i(f,{label:`姓名`},{default:u(()=>[c(_(H.value.name),1)]),_:1}),i(f,{label:`高校`},{default:u(()=>[c(_(O(H.value)),1)]),_:1}),i(f,{label:`城市`},{default:u(()=>[c(_(H.value.city||`—`),1)]),_:1}),i(f,{label:`职称`},{default:u(()=>[c(_(H.value.title||`—`),1)]),_:1}),i(f,{label:`研究方向`,span:2},{default:u(()=>[c(_(k(H.value)),1)]),_:1}),i(f,{label:`电话`},{default:u(()=>[c(_(H.value.phone||`—`),1)]),_:1}),i(f,{label:`邮箱`},{default:u(()=>[c(_(H.value.email||`—`),1)]),_:1}),i(f,{label:`星级`},{default:u(()=>[c(_(n(z)(H.value.star_level_item?.value,H.value.star_level_item?.label)),1)]),_:1}),i(f,{label:`状态`},{default:u(()=>[c(_(H.value.status_item?.label||`—`),1)]),_:1}),i(f,{label:`下次跟进日期`},{default:u(()=>[c(_(H.value.next_follow_date||`—`),1)]),_:1}),H.value.source_item?.label?(a(),v(f,{key:0,label:`来源`},{default:u(()=>[c(_(H.value.source_item.label),1)]),_:1})):s(``,!0)]),_:1})])):(a(),t(`div`,se,[o[24]||=d(`h3`,{class:`basic-info-title`},`基本信息`,-1),i(A,{"label-position":`top`,class:`form-small`},{default:u(()=>[i(D,{gutter:12},{default:u(()=>[i(b,{xs:24,md:4},{default:u(()=>[i(y,{label:`姓名`,required:``},{default:u(()=>[i(g,{modelValue:Y.value.name,"onUpdate:modelValue":o[0]||=e=>Y.value.name=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:8},{default:u(()=>[i(y,{label:`高校`,required:``},{default:u(()=>[H.value?.university_text&&!Y.value.university_id?(a(),t(`p`,ce,` 论文抓取高校:`+_(H.value.university_text)+`(请在下拉中选择或新建以关联) `,1)):s(``,!0),d(`div`,le,[i(C,{modelValue:Y.value.university_id,"onUpdate:modelValue":o[1]||=e=>Y.value.university_id=e,filterable:``,placeholder:`选择高校`,style:{flex:`1`}},{default:u(()=>[(a(!0),t(m,null,h(J.value,e=>(a(),v(x,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),te.value?s(``,!0):(a(),v(T,{key:0,type:`primary`,size:`small`,class:`teachers-primary-btn`,onClick:Ae},{default:u(()=>[...o[23]||=[c(` 新建高校 `,-1)]]),_:1}))])]),_:1})]),_:1}),i(b,{xs:24,md:4},{default:u(()=>[i(y,{label:`城市`,required:``},{default:u(()=>[i(g,{modelValue:Y.value.city,"onUpdate:modelValue":o[2]||=e=>Y.value.city=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:8},{default:u(()=>[i(y,{label:`职称`,required:``},{default:u(()=>[i(g,{modelValue:Y.value.title,"onUpdate:modelValue":o[3]||=e=>Y.value.title=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:8},{default:u(()=>[i(y,{label:`研究方向`,required:``},{default:u(()=>[i(C,{modelValue:Y.value.research_direction_ids,"onUpdate:modelValue":o[4]||=e=>Y.value.research_direction_ids=e,multiple:``,filterable:``,"collapse-tags":``,"collapse-tags-tooltip":``,placeholder:`选择研究方向(可多选)`,style:{width:`100%`}},{default:u(()=>[(a(!0),t(m,null,h(Se.value,e=>(a(),v(x,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:6},{default:u(()=>[i(y,{label:`电话`},{default:u(()=>[i(g,{modelValue:Y.value.phone,"onUpdate:modelValue":o[5]||=e=>Y.value.phone=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:6},{default:u(()=>[i(y,{label:`邮箱`},{default:u(()=>[i(g,{modelValue:Y.value.email,"onUpdate:modelValue":o[6]||=e=>Y.value.email=e,type:`email`},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:4},{default:u(()=>[i(y,{label:`星级`},{default:u(()=>[i(C,{modelValue:Y.value.star_level_dict_item_id,"onUpdate:modelValue":o[7]||=e=>Y.value.star_level_dict_item_id=e,style:{width:`100%`},onChange:Fe},{default:u(()=>[(a(!0),t(m,null,h(q.value,e=>(a(),v(x,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),d(`span`,ue,_(n(z)(q.value.find(e=>e.id===Y.value.star_level_dict_item_id)?.value,q.value.find(e=>e.id===Y.value.star_level_dict_item_id)?.label)),1)]),_:1})]),_:1}),i(b,{xs:24,md:6},{default:u(()=>[i(y,{label:`状态`,required:``},{default:u(()=>[i(C,{modelValue:Y.value.status_dict_item_id,"onUpdate:modelValue":o[8]||=e=>Y.value.status_dict_item_id=e,placeholder:`请选择状态`,style:{width:`100%`}},{default:u(()=>[(a(!0),t(m,null,h(xe.value,e=>(a(),v(x,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:6},{default:u(()=>[i(y,{label:`下次跟进日期`},{default:u(()=>[i(E,{modelValue:Y.value.next_follow_date,"onUpdate:modelValue":o[9]||=e=>Y.value.next_follow_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`选择日期`,style:{width:`100%`}},null,8,[`modelValue`]),W.value?(a(),t(`p`,de,_(W.value),1)):s(``,!0)]),_:1})]),_:1})]),_:1})]),_:1})])),d(`div`,fe,[d(`div`,pe,[o[26]||=d(`h3`,null,`论文列表`,-1),d(`span`,me,`共 `+_(G.value.length)+` 篇`,1),S.value?s(``,!0):(a(),v(T,{key:0,size:`small`,type:`primary`,plain:``,onClick:Le},{default:u(()=>[...o[25]||=[c(` 添加论文 `,-1)]]),_:1}))]),i(N,{data:G.value,size:`small`,"row-key":`id`},{default:u(()=>[i(j,{prop:`title`,label:`标题`,"min-width":`200`,"show-overflow-tooltip":``}),i(j,{prop:`authors`,label:`作者`,width:`140`}),i(j,{prop:`school_name`,label:`学校`,width:`120`}),i(j,{prop:`published_at`,label:`发表时间`,width:`110`}),i(j,{label:`链接`,width:`70`},{default:u(({row:e})=>[e.url?(a(),v(M,{key:0,href:e.url,target:`_blank`},{default:u(()=>[...o[27]||=[c(`查看`,-1)]]),_:1},8,[`href`])):s(``,!0)]),_:1}),i(j,{label:`操作`,width:S.value?70:120},{default:u(({row:e})=>[i(T,{link:``,type:`primary`,onClick:t=>Be(e)},{default:u(()=>[...o[28]||=[c(`摘要`,-1)]]),_:1},8,[`onClick`]),S.value?s(``,!0):(a(),v(T,{key:0,link:``,type:`danger`,onClick:t=>ze(e)},{default:u(()=>[...o[29]||=[c(`删除`,-1)]]),_:1},8,[`onClick`]))]),_:1},8,[`width`])]),_:1},8,[`data`])]),d(`div`,he,[d(`div`,ge,[o[30]||=d(`h3`,null,`需求列表`,-1),d(`span`,_e,`共 `+_(K.value.length)+` 条`,1)]),i(N,{data:K.value,size:`small`,"row-key":`id`},{default:u(()=>[i(j,{label:`类型`,width:`100`},{default:u(({row:e})=>[i(P,{size:`small`,effect:`dark`},{default:u(()=>[c(_(e.type_item?.label),1)]),_:2},1024)]),_:1}),i(j,{prop:`title`,label:`标题`,"min-width":`180`,"show-overflow-tooltip":``}),i(j,{prop:`submitted_at`,label:`时间`,width:`110`}),i(j,{label:`处理状态`,width:`100`},{default:u(({row:e})=>[i(P,{type:n(F)(e.status_item?.value),size:`small`,effect:`dark`},{default:u(()=>[c(_(e.status_item?.label),1)]),_:2},1032,[`type`])]),_:1}),i(j,{label:`跟进记录`,width:`100`},{default:u(({row:e})=>[i(T,{size:`small`,onClick:t=>Ve(e)},{default:u(()=>[c(_(e.handle_logs_count||0)+`条记录 `,1)]),_:2},1032,[`onClick`])]),_:1})]),_:1},8,[`data`]),K.value.length?s(``,!0):(a(),v(I,{key:0,description:`暂无关联需求`,"image-size":64}))])])),[[R,V.value]]),i(L,{modelValue:X.value,"onUpdate:modelValue":o[17]||=e=>X.value=e,title:`新建高校`,width:`480px`,"append-to-body":``,"destroy-on-close":``},{footer:u(()=>[i(T,{onClick:o[16]||=e=>X.value=!1},{default:u(()=>[...o[33]||=[c(`取消`,-1)]]),_:1}),i(T,{type:`primary`,class:`teachers-primary-btn`,loading:Z.value,onClick:je},{default:u(()=>[...o[34]||=[c(` 保存 `,-1)]]),_:1},8,[`loading`])]),default:u(()=>[i(A,{"label-position":`top`,class:`form-small`},{default:u(()=>[i(y,{label:`高校名称`,required:``},{default:u(()=>[i(g,{modelValue:Q.value.name,"onUpdate:modelValue":o[11]||=e=>Q.value.name=e,placeholder:`如:复旦大学`},null,8,[`modelValue`])]),_:1}),i(D,{gutter:12},{default:u(()=>[i(b,{span:12},{default:u(()=>[i(y,{label:`经度`,required:``},{default:u(()=>[i(g,{modelValue:Q.value.longitude,"onUpdate:modelValue":o[12]||=e=>Q.value.longitude=e,placeholder:`如:121.5031`},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{span:12},{default:u(()=>[i(y,{label:`纬度`,required:``},{default:u(()=>[i(g,{modelValue:Q.value.latitude,"onUpdate:modelValue":o[13]||=e=>Q.value.latitude=e,placeholder:`如:31.2970`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1}),i(D,{gutter:12},{default:u(()=>[i(b,{span:12},{default:u(()=>[i(y,{label:`省份`},{default:u(()=>[i(g,{modelValue:Q.value.province,"onUpdate:modelValue":o[14]||=e=>Q.value.province=e,placeholder:`如:上海市`},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{span:12},{default:u(()=>[i(y,{label:`城市`},{default:u(()=>[i(g,{modelValue:Q.value.city,"onUpdate:modelValue":o[15]||=e=>Q.value.city=e,placeholder:`如:上海`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),i(L,{modelValue:Ce.value,"onUpdate:modelValue":o[18]||=e=>Ce.value=e,title:`论文摘要`,width:`520px`,"append-to-body":``},{default:u(()=>[d(`p`,ve,_(we.value),1)]),_:1},8,[`modelValue`]),i(ie,{modelValue:$.value,"onUpdate:modelValue":o[19]||=e=>$.value=e,"teacher-id":e.teacherId,"default-authors":H.value?.name||Y.value.name,"default-school-name":J.value.find(e=>e.id===Y.value.university_id)?.name||H.value?.university_name||``,onSaved:Re},null,8,[`modelValue`,`teacher-id`,`default-authors`,`default-school-name`]),i(L,{modelValue:Te.value,"onUpdate:modelValue":o[20]||=e=>Te.value=e,title:`需求跟进记录`,width:`640px`,"append-to-body":``},{default:u(()=>[d(`p`,ye,_(Ee.value),1),(a(!0),t(m,null,h(De.value,e=>(a(),t(`div`,{key:e.id,class:`log-card`},[d(`div`,be,[d(`strong`,null,_(e.operator_name),1),d(`span`,null,_(e.handled_at),1),e.status_item?(a(),v(P,{key:0,size:`small`,type:n(F)(e.status_item.value)},{default:u(()=>[c(_(e.status_item.label),1)]),_:2},1032,[`type`])):s(``,!0)]),d(`p`,null,_(e.content),1)]))),128)),De.value.length?s(``,!0):(a(),v(I,{key:0,description:`暂无记录`}))]),_:1},8,[`modelValue`])]),_:1},8,[`model-value`,`title`])}}}),W=e({default:()=>G}),G=S(U,[[`__scopeId`,`data-v-287a1810`]]);export{W as n,ie as r,G as t}; \ No newline at end of file +import{r as e}from"./rolldown-runtime-BYbx6iT9.js";import{C as t,Ct as n,D as r,E as i,G as a,P as o,S as s,T as c,X as ee,Y as l,at as u,b as d,d as te,et as f,ht as p,m,ot as ne,q as h,rt as g,tn as _,x as v,y}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as b,l as x,s as S,t as C}from"./index-C2NqsgBl.js";import{l as w}from"./assets-D6Wf6qf8.js";import{a as T,c as E,h as D,i as O,m as k,o as A,p as j,s as M,u as N}from"./teachers-2mIYLbdk.js";import{a as P}from"./dict-BbzaBtNg.js";import{i as F,o as I,s as L}from"./demands-O1oysh2P.js";import{a as R,n as z,o as re}from"./teacherStar-DhP_EdY6.js";var B={class:`library-toolbar`},V={key:1,class:`text-mute`},H={key:0,class:`library-pager`},ie=S(r({__name:`TeacherPaperDialog`,props:o({teacherId:{},defaultAuthors:{},defaultSchoolName:{}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:o([`saved`],[`update:modelValue`]),setup(e,{emit:n}){let r=f(e,`modelValue`),o=e,m=n,h=p(`manual`),y=p(!1),b=p({title:``,authors:``,school_name:``,published_at:``,url:``,summary:``}),S=p(``),C=p(!1),T=p([]),E=p(1),D=p({current_page:1,per_page:10,total:0}),A=p([]),j=p();function M(){b.value={title:``,authors:o.defaultAuthors||``,school_name:o.defaultSchoolName||``,published_at:``,url:``,summary:``}}async function P(){o.teacherId&&(A.value=(await N(o.teacherId)).map(e=>e.id))}async function F(e=E.value){C.value=!0;try{let t=await w({page:e,page_size:D.value.per_page,keyword:S.value.trim()||void 0});T.value=t.items,D.value=t.meta,E.value=t.meta.current_page,j.value&&!t.items.some(e=>e.id===j.value)&&(j.value=void 0)}finally{C.value=!1}}function I(){E.value=1,F(1)}function L(e){A.value.includes(e.id)||(j.value=e.id)}async function R(){if(o.teacherId){if(!b.value.title.trim()||!b.value.authors.trim()){x.warning(`请填写标题与作者`);return}if(!b.value.published_at){x.warning(`请选择发表时间`);return}y.value=!0;try{await O(o.teacherId,{...b.value}),x.success(`已添加论文`),r.value=!1,m(`saved`)}finally{y.value=!1}}}async function z(){if(o.teacherId){if(!j.value){x.warning(`请选择要关联的论文`);return}if(A.value.includes(j.value)){x.warning(`该论文已关联此老师`);return}y.value=!0;try{await k(o.teacherId,j.value),x.success(`已关联论文`),r.value=!1,m(`saved`)}finally{y.value=!1}}}async function re(){h.value===`manual`?await R():await z()}return g(()=>[r.value,o.teacherId],([e])=>{e&&o.teacherId&&(h.value=`manual`,j.value=void 0,S.value=``,E.value=1,M(),P(),F(1))}),g(h,e=>{e===`library`&&r.value&&o.teacherId&&F(E.value)}),(e,n)=>{let o=l(`el-input`),f=l(`el-form-item`),p=l(`el-col`),m=l(`el-date-picker`),g=l(`el-row`),x=l(`el-form`),w=l(`el-tab-pane`),O=l(`el-button`),k=l(`el-table-column`),j=l(`el-tag`),M=l(`el-table`),N=l(`el-pagination`),P=l(`el-tabs`),R=l(`el-dialog`),z=ee(`loading`);return a(),v(R,{modelValue:r.value,"onUpdate:modelValue":n[10]||=e=>r.value=e,title:`论文`,width:`720px`,"destroy-on-close":``,"append-to-body":``},{footer:u(()=>[i(O,{onClick:n[9]||=e=>r.value=!1},{default:u(()=>[...n[13]||=[c(`取消`,-1)]]),_:1}),i(O,{type:`primary`,loading:y.value,onClick:re},{default:u(()=>[c(_(h.value===`manual`?`保存`:`确认关联`),1)]),_:1},8,[`loading`])]),default:u(()=>[i(P,{modelValue:h.value,"onUpdate:modelValue":n[8]||=e=>h.value=e},{default:u(()=>[i(w,{label:`手动录入`,name:`manual`},{default:u(()=>[i(x,{"label-position":`top`,class:`form-small`},{default:u(()=>[i(f,{label:`标题`,required:``},{default:u(()=>[i(o,{modelValue:b.value.title,"onUpdate:modelValue":n[0]||=e=>b.value.title=e,placeholder:`请输入论文标题`},null,8,[`modelValue`])]),_:1}),i(g,{gutter:12},{default:u(()=>[i(p,{span:12},{default:u(()=>[i(f,{label:`作者`,required:``},{default:u(()=>[i(o,{modelValue:b.value.authors,"onUpdate:modelValue":n[1]||=e=>b.value.authors=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:12},{default:u(()=>[i(f,{label:`学校`},{default:u(()=>[i(o,{modelValue:b.value.school_name,"onUpdate:modelValue":n[2]||=e=>b.value.school_name=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:12},{default:u(()=>[i(f,{label:`发表时间`,required:``},{default:u(()=>[i(m,{modelValue:b.value.published_at,"onUpdate:modelValue":n[3]||=e=>b.value.published_at=e,type:`date`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:12},{default:u(()=>[i(f,{label:`链接`},{default:u(()=>[i(o,{modelValue:b.value.url,"onUpdate:modelValue":n[4]||=e=>b.value.url=e,placeholder:`https://example.com/paper`},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:24},{default:u(()=>[i(f,{label:`摘要`},{default:u(()=>[i(o,{modelValue:b.value.summary,"onUpdate:modelValue":n[5]||=e=>b.value.summary=e,type:`textarea`,rows:4,placeholder:`请输入论文摘要`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),i(w,{label:`从论文库选择`,name:`library`},{default:u(()=>[d(`div`,B,[i(o,{modelValue:S.value,"onUpdate:modelValue":n[6]||=e=>S.value=e,clearable:``,placeholder:`搜索标题、作者、学校…`,style:{width:`260px`},onKeyup:te(I,[`enter`])},null,8,[`modelValue`]),i(O,{type:`primary`,onClick:I},{default:u(()=>[...n[11]||=[c(`搜索`,-1)]]),_:1})]),ne((a(),v(M,{data:T.value,size:`small`,"highlight-current-row":``,class:`library-table`,"row-class-name":({row:e})=>A.value.includes(e.id)?`is-linked-row`:``,onRowClick:L,onCurrentChange:n[7]||=e=>{e&&L(e)}},{default:u(()=>[i(k,{prop:`title`,label:`标题`,"min-width":`200`,"show-overflow-tooltip":``}),i(k,{prop:`authors`,label:`作者`,width:`120`,"show-overflow-tooltip":``}),i(k,{prop:`school_name`,label:`学校`,width:`120`,"show-overflow-tooltip":``}),i(k,{label:`状态`,width:`80`,align:`center`},{default:u(({row:e})=>[A.value.includes(e.id)?(a(),v(j,{key:0,size:`small`,type:`info`},{default:u(()=>[...n[12]||=[c(`已关联`,-1)]]),_:1})):(a(),t(`span`,V,`—`))]),_:1})]),_:1},8,[`data`,`row-class-name`])),[[z,C.value]]),D.value.total>0?(a(),t(`div`,H,[i(N,{layout:`total, prev, pager, next`,total:D.value.total,"page-size":D.value.per_page,"current-page":E.value,onCurrentChange:F},null,8,[`total`,`page-size`,`current-page`])])):s(``,!0)]),_:1})]),_:1},8,[`modelValue`])]),_:1},8,[`modelValue`])}}}),[[`__scopeId`,`data-v-d91269f1`]]),ae={class:`detail-body`},oe={key:0,class:`basic-info-block`},se={key:1,class:`basic-info-block`},ce={key:0,class:`crawl-uni-hint`},le={class:`uni-row`},ue={class:`star-preview`},de={key:0,class:`star-follow-rule`},fe={class:`section`},pe={class:`section-head`},me={class:`muted`},he={class:`section`},ge={class:`section-head`},_e={class:`muted`},ve={class:`summary-body`},ye={class:`follow-summary`},be={class:`log-head`},U=r({__name:`TeacherDetailDialog`,props:{modelValue:{type:Boolean},teacherId:{},readonly:{type:Boolean}},emits:[`update:modelValue`,`saved`],setup(e,{emit:r}){let o=C(),te=y(()=>o.isGridMember),f=e,S=y(()=>f.readonly===!0),w=y(()=>{let e=H.value?.name;return S.value?e?`查看 · ${e}`:`老师详情`:e?`编辑 · ${e}`:`编辑老师`});function O(e){return e.university_name?e.university_name:e.university_text?`${e.university_text}(未关联高校库)`:`—`}function k(e){return e.research_direction?e.research_direction:e.research_directions?.map(e=>e.name).join(`、`)||`—`}let B=r,V=p(!1),H=p(null),U=p(null),W=y(()=>R(q.value.find(e=>e.id===Y.value.star_level_dict_item_id)?.value)),G=p([]),K=p([]),q=p([]),xe=p([]),J=p([]),Se=p([]),Y=p({name:``,university_id:void 0,city:``,title:``,research_direction_ids:[],phone:``,email:``,star_level_dict_item_id:void 0,status_dict_item_id:void 0,next_follow_date:``}),X=p(!1),Z=p(!1),Q=p({name:``,city:``,province:``,longitude:``,latitude:``}),$=p(!1),Ce=p(!1),we=p(``),Te=p(!1),Ee=p(``),De=p([]);async function Oe(){let e=await j({page:1,page_size:200}),t=o.user?.grid_scope?.university_ids;J.value=t?.length?e.items.filter(e=>t.includes(e.id)):e.items}async function ke(){let e=await E(),t=o.user?.grid_scope?.research_direction_ids;Se.value=t?.length?e.research_directions.filter(e=>t.includes(e.id)):e.research_directions}function Ae(){Q.value={name:``,city:Y.value.city||``,province:``,longitude:``,latitude:``},X.value=!0}async function je(){let e=Q.value;if(!e.name.trim()){x.warning(`请填写高校名称`);return}if(!e.longitude.trim()||!e.latitude.trim()){x.warning(`请填写经度与纬度`);return}let t=Number(e.longitude),n=Number(e.latitude);if(Number.isNaN(t)||Number.isNaN(n)){x.warning(`经纬度须为有效数字`);return}Z.value=!0;try{let r=await T({name:e.name.trim(),city:e.city.trim()||null,province:e.province.trim()||null,longitude:t,latitude:n});J.value.some(e=>e.id===r.id)||J.value.push(r),Y.value.university_id=r.id,r.city&&(Y.value.city=r.city),X.value=!1,x.success(`高校已创建`)}finally{Z.value=!1}}async function Me(){if(f.teacherId){V.value=!0;try{let e=await M(f.teacherId);H.value=e,U.value=e.star_level_dict_item_id??null,Y.value={name:e.name||``,university_id:e.university_id??void 0,research_direction_ids:e.research_direction_ids?.length?[...e.research_direction_ids]:e.research_directions?.map(e=>e.id)||[],city:e.city||``,title:e.title||``,phone:e.phone||``,email:e.email||``,star_level_dict_item_id:e.star_level_dict_item_id??void 0,status_dict_item_id:e.status_dict_item_id??void 0,next_follow_date:e.next_follow_date||``};let[t,n]=await Promise.all([N(f.teacherId),L({teacher_id:f.teacherId,page:1,page_size:50})]);G.value=t,K.value=n.items}finally{V.value=!1}}}function Ne(){let e=Y.value;return e.name.trim()?e.university_id?e.city.trim()?e.title.trim()?e.research_direction_ids.length?e.status_dict_item_id?!0:(x.warning(`请选择状态`),!1):(x.warning(`请至少选择一个研究方向`),!1):(x.warning(`请填写职称`),!1):(x.warning(`请填写城市`),!1):(x.warning(`请选择高校,或点击「新建高校」`),!1):(x.warning(`请填写姓名`),!1)}async function Pe(){if(!f.teacherId||!H.value||!Ne())return;let e=(Y.value.star_level_dict_item_id??null)!==U.value;await D(f.teacherId,{name:Y.value.name.trim(),university_id:Y.value.university_id,city:Y.value.city.trim(),title:Y.value.title.trim(),research_direction_ids:Y.value.research_direction_ids,phone:Y.value.phone||null,email:Y.value.email||null,star_level_dict_item_id:Y.value.star_level_dict_item_id??null,status_dict_item_id:Y.value.status_dict_item_id,...e?{recalc_next_follow_date:!0}:{next_follow_date:Y.value.next_follow_date||null,recalc_next_follow_date:!1}}),x.success(`已保存`),B(`saved`),B(`update:modelValue`,!1)}function Fe(){let e=q.value.find(e=>e.id===Y.value.star_level_dict_item_id);Y.value.next_follow_date=re(e?.value)||``}function Ie(e){if(!e)return;let t=J.value.find(t=>t.id===e);t?.city&&!Y.value.city&&(Y.value.city=t.city)}function Le(){$.value=!0}async function Re(){f.teacherId&&(G.value=await N(f.teacherId))}async function ze(e){await b.confirm(`确定删除论文「${e.title}」?`,`确认删除`,{type:`warning`}),await A(f.teacherId,e.id),G.value=await N(f.teacherId)}function Be(e){we.value=e.summary||`暂无摘要`,Ce.value=!0}async function Ve(e){Ee.value=e.title,De.value=await I(e.id),Te.value=!0}return g(()=>[f.modelValue,f.teacherId],async([e,t])=>{if(e&&t){if(!q.value.length){let[e,t]=await Promise.all([P(`teacher_level`),P(`teacher_status`)]);q.value=e.items,xe.value=t.items,await Oe()}await ke(),await Me()}}),g(()=>Y.value.university_id,e=>Ie(e)),(r,o)=>{let f=l(`el-descriptions-item`),p=l(`el-descriptions`),g=l(`el-input`),y=l(`el-form-item`),b=l(`el-col`),x=l(`el-option`),C=l(`el-select`),T=l(`el-button`),E=l(`el-date-picker`),D=l(`el-row`),A=l(`el-form`),j=l(`el-table-column`),M=l(`el-link`),N=l(`el-table`),P=l(`el-tag`),I=l(`el-empty`),L=l(`el-dialog`),R=ee(`loading`);return a(),v(L,{"model-value":e.modelValue,title:w.value,width:`960px`,top:`4vh`,"destroy-on-close":``,"onUpdate:modelValue":o[21]||=e=>B(`update:modelValue`,e)},{footer:u(()=>[i(T,{onClick:o[10]||=e=>B(`update:modelValue`,!1)},{default:u(()=>[...o[31]||=[c(`关闭`,-1)]]),_:1}),S.value?s(``,!0):(a(),v(T,{key:0,type:`primary`,class:`teachers-primary-btn`,onClick:Pe},{default:u(()=>[...o[32]||=[c(` 保存 `,-1)]]),_:1}))]),default:u(()=>[ne((a(),t(`div`,ae,[S.value&&H.value?(a(),t(`div`,oe,[o[22]||=d(`h3`,{class:`basic-info-title`},`基本信息`,-1),i(p,{column:3,border:``,size:`small`,class:`view-desc`},{default:u(()=>[i(f,{label:`姓名`},{default:u(()=>[c(_(H.value.name),1)]),_:1}),i(f,{label:`高校`},{default:u(()=>[c(_(O(H.value)),1)]),_:1}),i(f,{label:`城市`},{default:u(()=>[c(_(H.value.city||`—`),1)]),_:1}),i(f,{label:`职称`},{default:u(()=>[c(_(H.value.title||`—`),1)]),_:1}),i(f,{label:`研究方向`,span:2},{default:u(()=>[c(_(k(H.value)),1)]),_:1}),i(f,{label:`电话`},{default:u(()=>[c(_(H.value.phone||`—`),1)]),_:1}),i(f,{label:`邮箱`},{default:u(()=>[c(_(H.value.email||`—`),1)]),_:1}),i(f,{label:`星级`},{default:u(()=>[c(_(n(z)(H.value.star_level_item?.value,H.value.star_level_item?.label)),1)]),_:1}),i(f,{label:`状态`},{default:u(()=>[c(_(H.value.status_item?.label||`—`),1)]),_:1}),i(f,{label:`下次跟进日期`},{default:u(()=>[c(_(H.value.next_follow_date||`—`),1)]),_:1}),H.value.source_item?.label?(a(),v(f,{key:0,label:`来源`},{default:u(()=>[c(_(H.value.source_item.label),1)]),_:1})):s(``,!0)]),_:1})])):(a(),t(`div`,se,[o[24]||=d(`h3`,{class:`basic-info-title`},`基本信息`,-1),i(A,{"label-position":`top`,class:`form-small`},{default:u(()=>[i(D,{gutter:12},{default:u(()=>[i(b,{xs:24,md:4},{default:u(()=>[i(y,{label:`姓名`,required:``},{default:u(()=>[i(g,{modelValue:Y.value.name,"onUpdate:modelValue":o[0]||=e=>Y.value.name=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:8},{default:u(()=>[i(y,{label:`高校`,required:``},{default:u(()=>[H.value?.university_text&&!Y.value.university_id?(a(),t(`p`,ce,` 论文抓取高校:`+_(H.value.university_text)+`(请在下拉中选择或新建以关联) `,1)):s(``,!0),d(`div`,le,[i(C,{modelValue:Y.value.university_id,"onUpdate:modelValue":o[1]||=e=>Y.value.university_id=e,filterable:``,placeholder:`选择高校`,style:{flex:`1`}},{default:u(()=>[(a(!0),t(m,null,h(J.value,e=>(a(),v(x,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),te.value?s(``,!0):(a(),v(T,{key:0,type:`primary`,size:`small`,class:`teachers-primary-btn`,onClick:Ae},{default:u(()=>[...o[23]||=[c(` 新建高校 `,-1)]]),_:1}))])]),_:1})]),_:1}),i(b,{xs:24,md:4},{default:u(()=>[i(y,{label:`城市`,required:``},{default:u(()=>[i(g,{modelValue:Y.value.city,"onUpdate:modelValue":o[2]||=e=>Y.value.city=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:8},{default:u(()=>[i(y,{label:`职称`,required:``},{default:u(()=>[i(g,{modelValue:Y.value.title,"onUpdate:modelValue":o[3]||=e=>Y.value.title=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:8},{default:u(()=>[i(y,{label:`研究方向`,required:``},{default:u(()=>[i(C,{modelValue:Y.value.research_direction_ids,"onUpdate:modelValue":o[4]||=e=>Y.value.research_direction_ids=e,multiple:``,filterable:``,"collapse-tags":``,"collapse-tags-tooltip":``,placeholder:`选择研究方向(可多选)`,style:{width:`100%`}},{default:u(()=>[(a(!0),t(m,null,h(Se.value,e=>(a(),v(x,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:6},{default:u(()=>[i(y,{label:`电话`},{default:u(()=>[i(g,{modelValue:Y.value.phone,"onUpdate:modelValue":o[5]||=e=>Y.value.phone=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:6},{default:u(()=>[i(y,{label:`邮箱`},{default:u(()=>[i(g,{modelValue:Y.value.email,"onUpdate:modelValue":o[6]||=e=>Y.value.email=e,type:`email`},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:4},{default:u(()=>[i(y,{label:`星级`},{default:u(()=>[i(C,{modelValue:Y.value.star_level_dict_item_id,"onUpdate:modelValue":o[7]||=e=>Y.value.star_level_dict_item_id=e,style:{width:`100%`},onChange:Fe},{default:u(()=>[(a(!0),t(m,null,h(q.value,e=>(a(),v(x,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),d(`span`,ue,_(n(z)(q.value.find(e=>e.id===Y.value.star_level_dict_item_id)?.value,q.value.find(e=>e.id===Y.value.star_level_dict_item_id)?.label)),1)]),_:1})]),_:1}),i(b,{xs:24,md:6},{default:u(()=>[i(y,{label:`状态`,required:``},{default:u(()=>[i(C,{modelValue:Y.value.status_dict_item_id,"onUpdate:modelValue":o[8]||=e=>Y.value.status_dict_item_id=e,placeholder:`请选择状态`,style:{width:`100%`}},{default:u(()=>[(a(!0),t(m,null,h(xe.value,e=>(a(),v(x,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:6},{default:u(()=>[i(y,{label:`下次跟进日期`},{default:u(()=>[i(E,{modelValue:Y.value.next_follow_date,"onUpdate:modelValue":o[9]||=e=>Y.value.next_follow_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`选择日期`,style:{width:`100%`}},null,8,[`modelValue`]),W.value?(a(),t(`p`,de,_(W.value),1)):s(``,!0)]),_:1})]),_:1})]),_:1})]),_:1})])),d(`div`,fe,[d(`div`,pe,[o[26]||=d(`h3`,null,`论文列表`,-1),d(`span`,me,`共 `+_(G.value.length)+` 篇`,1),S.value?s(``,!0):(a(),v(T,{key:0,size:`small`,type:`primary`,plain:``,onClick:Le},{default:u(()=>[...o[25]||=[c(` 添加论文 `,-1)]]),_:1}))]),i(N,{data:G.value,size:`small`,"row-key":`id`},{default:u(()=>[i(j,{prop:`title`,label:`标题`,"min-width":`200`,"show-overflow-tooltip":``}),i(j,{prop:`authors`,label:`作者`,width:`140`}),i(j,{prop:`school_name`,label:`学校`,width:`120`}),i(j,{prop:`published_at`,label:`发表时间`,width:`110`}),i(j,{label:`链接`,width:`70`},{default:u(({row:e})=>[e.url?(a(),v(M,{key:0,href:e.url,target:`_blank`},{default:u(()=>[...o[27]||=[c(`查看`,-1)]]),_:1},8,[`href`])):s(``,!0)]),_:1}),i(j,{label:`操作`,width:S.value?70:120},{default:u(({row:e})=>[i(T,{link:``,type:`primary`,onClick:t=>Be(e)},{default:u(()=>[...o[28]||=[c(`摘要`,-1)]]),_:1},8,[`onClick`]),S.value?s(``,!0):(a(),v(T,{key:0,link:``,type:`danger`,onClick:t=>ze(e)},{default:u(()=>[...o[29]||=[c(`删除`,-1)]]),_:1},8,[`onClick`]))]),_:1},8,[`width`])]),_:1},8,[`data`])]),d(`div`,he,[d(`div`,ge,[o[30]||=d(`h3`,null,`需求列表`,-1),d(`span`,_e,`共 `+_(K.value.length)+` 条`,1)]),i(N,{data:K.value,size:`small`,"row-key":`id`},{default:u(()=>[i(j,{label:`类型`,width:`100`},{default:u(({row:e})=>[i(P,{size:`small`,effect:`dark`},{default:u(()=>[c(_(e.type_item?.label),1)]),_:2},1024)]),_:1}),i(j,{prop:`title`,label:`标题`,"min-width":`180`,"show-overflow-tooltip":``}),i(j,{prop:`submitted_at`,label:`时间`,width:`110`}),i(j,{label:`处理状态`,width:`100`},{default:u(({row:e})=>[i(P,{type:n(F)(e.status_item?.value),size:`small`,effect:`dark`},{default:u(()=>[c(_(e.status_item?.label),1)]),_:2},1032,[`type`])]),_:1}),i(j,{label:`跟进记录`,width:`100`},{default:u(({row:e})=>[i(T,{size:`small`,onClick:t=>Ve(e)},{default:u(()=>[c(_(e.handle_logs_count||0)+`条记录 `,1)]),_:2},1032,[`onClick`])]),_:1})]),_:1},8,[`data`]),K.value.length?s(``,!0):(a(),v(I,{key:0,description:`暂无关联需求`,"image-size":64}))])])),[[R,V.value]]),i(L,{modelValue:X.value,"onUpdate:modelValue":o[17]||=e=>X.value=e,title:`新建高校`,width:`480px`,"append-to-body":``,"destroy-on-close":``},{footer:u(()=>[i(T,{onClick:o[16]||=e=>X.value=!1},{default:u(()=>[...o[33]||=[c(`取消`,-1)]]),_:1}),i(T,{type:`primary`,class:`teachers-primary-btn`,loading:Z.value,onClick:je},{default:u(()=>[...o[34]||=[c(` 保存 `,-1)]]),_:1},8,[`loading`])]),default:u(()=>[i(A,{"label-position":`top`,class:`form-small`},{default:u(()=>[i(y,{label:`高校名称`,required:``},{default:u(()=>[i(g,{modelValue:Q.value.name,"onUpdate:modelValue":o[11]||=e=>Q.value.name=e,placeholder:`如:复旦大学`},null,8,[`modelValue`])]),_:1}),i(D,{gutter:12},{default:u(()=>[i(b,{span:12},{default:u(()=>[i(y,{label:`经度`,required:``},{default:u(()=>[i(g,{modelValue:Q.value.longitude,"onUpdate:modelValue":o[12]||=e=>Q.value.longitude=e,placeholder:`如:121.5031`},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{span:12},{default:u(()=>[i(y,{label:`纬度`,required:``},{default:u(()=>[i(g,{modelValue:Q.value.latitude,"onUpdate:modelValue":o[13]||=e=>Q.value.latitude=e,placeholder:`如:31.2970`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1}),i(D,{gutter:12},{default:u(()=>[i(b,{span:12},{default:u(()=>[i(y,{label:`省份`},{default:u(()=>[i(g,{modelValue:Q.value.province,"onUpdate:modelValue":o[14]||=e=>Q.value.province=e,placeholder:`如:上海市`},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{span:12},{default:u(()=>[i(y,{label:`城市`},{default:u(()=>[i(g,{modelValue:Q.value.city,"onUpdate:modelValue":o[15]||=e=>Q.value.city=e,placeholder:`如:上海`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),i(L,{modelValue:Ce.value,"onUpdate:modelValue":o[18]||=e=>Ce.value=e,title:`论文摘要`,width:`520px`,"append-to-body":``},{default:u(()=>[d(`p`,ve,_(we.value),1)]),_:1},8,[`modelValue`]),i(ie,{modelValue:$.value,"onUpdate:modelValue":o[19]||=e=>$.value=e,"teacher-id":e.teacherId,"default-authors":H.value?.name||Y.value.name,"default-school-name":J.value.find(e=>e.id===Y.value.university_id)?.name||H.value?.university_name||``,onSaved:Re},null,8,[`modelValue`,`teacher-id`,`default-authors`,`default-school-name`]),i(L,{modelValue:Te.value,"onUpdate:modelValue":o[20]||=e=>Te.value=e,title:`需求跟进记录`,width:`640px`,"append-to-body":``},{default:u(()=>[d(`p`,ye,_(Ee.value),1),(a(!0),t(m,null,h(De.value,e=>(a(),t(`div`,{key:e.id,class:`log-card`},[d(`div`,be,[d(`strong`,null,_(e.operator_name),1),d(`span`,null,_(e.handled_at),1),e.status_item?(a(),v(P,{key:0,size:`small`,type:n(F)(e.status_item.value)},{default:u(()=>[c(_(e.status_item.label),1)]),_:2},1032,[`type`])):s(``,!0)]),d(`p`,null,_(e.content),1)]))),128)),De.value.length?s(``,!0):(a(),v(I,{key:0,description:`暂无记录`}))]),_:1},8,[`modelValue`])]),_:1},8,[`model-value`,`title`])}}}),W=e({default:()=>G}),G=S(U,[[`__scopeId`,`data-v-287a1810`]]);export{W as n,ie as r,G as t}; \ No newline at end of file diff --git a/public/admin/assets/activities-BQAd6xP6.js b/public/admin/assets/activities-6KKyhCfI.js similarity index 91% rename from public/admin/assets/activities-BQAd6xP6.js rename to public/admin/assets/activities-6KKyhCfI.js index 4630c11..960a60a 100644 --- a/public/admin/assets/activities-BQAd6xP6.js +++ b/public/admin/assets/activities-6KKyhCfI.js @@ -1 +1 @@ -import{r as e}from"./index-DPkd2m0V.js";async function t(t){let{data:n}=await e.get(`/admin/v1/activities`,{params:t});return n.data}async function n(t){let{data:n}=await e.get(`/admin/v1/activities/${t}`);return n.data}async function r(t){let{data:n}=await e.post(`/admin/v1/activities`,t);return n.data}async function i(t,n){let{data:r}=await e.put(`/admin/v1/activities/${t}`,n);return r}async function a(t){let{data:n}=await e.delete(`/admin/v1/activities/${t}`);return n}async function o(t){let{data:n}=await e.get(`/admin/v1/activities/${t}/sessions`);return n.data.items}async function s(t,n){let{data:r}=await e.post(`/admin/v1/activities/${t}/sessions`,n);return r.data}async function c(t,n,r){let{data:i}=await e.put(`/admin/v1/activities/${t}/sessions/${n}`,r);return i}async function l(t,n){let{data:r}=await e.delete(`/admin/v1/activities/${t}/sessions/${n}`);return r}async function u(t,n){let{data:r}=await e.get(`/admin/v1/activities/${t}/signups`,{params:n});return r.data}async function d(e,t={}){let n=1,r=[];for(;;){let i=await u(e,{...t,page:n,page_size:200});if(r.push(...i.items),n>=i.meta.last_page||i.items.length===0)break;n+=1}return r}async function f(t,n){let{data:r}=await e.delete(`/admin/v1/activities/${t}/signups/${n}`);return r}async function p(t,n,r){let{data:i}=await e.post(`/admin/v1/activities/${t}/signups/${n}/checkin`,r);return i}export{l as a,n as c,d,i as f,a as i,o as l,r as n,f as o,c as p,s as r,t as s,p as t,u}; \ No newline at end of file +import{r as e}from"./index-C2NqsgBl.js";async function t(t){let{data:n}=await e.get(`/admin/v1/activities`,{params:t});return n.data}async function n(t){let{data:n}=await e.get(`/admin/v1/activities/${t}`);return n.data}async function r(t){let{data:n}=await e.post(`/admin/v1/activities`,t);return n.data}async function i(t,n){let{data:r}=await e.put(`/admin/v1/activities/${t}`,n);return r}async function a(t){let{data:n}=await e.delete(`/admin/v1/activities/${t}`);return n}async function o(t){let{data:n}=await e.get(`/admin/v1/activities/${t}/sessions`);return n.data.items}async function s(t,n){let{data:r}=await e.post(`/admin/v1/activities/${t}/sessions`,n);return r.data}async function c(t,n,r){let{data:i}=await e.put(`/admin/v1/activities/${t}/sessions/${n}`,r);return i}async function l(t,n){let{data:r}=await e.delete(`/admin/v1/activities/${t}/sessions/${n}`);return r}async function u(t,n){let{data:r}=await e.get(`/admin/v1/activities/${t}/signups`,{params:n});return r.data}async function d(e,t={}){let n=1,r=[];for(;;){let i=await u(e,{...t,page:n,page_size:200});if(r.push(...i.items),n>=i.meta.last_page||i.items.length===0)break;n+=1}return r}async function f(t,n){let{data:r}=await e.delete(`/admin/v1/activities/${t}/signups/${n}`);return r}async function p(t,n,r){let{data:i}=await e.post(`/admin/v1/activities/${t}/signups/${n}/checkin`,r);return i}export{l as a,n as c,d,i as f,a as i,o as l,r as n,f as o,c as p,s as r,t as s,p as t,u}; \ No newline at end of file diff --git a/public/admin/assets/activities-BQCZHPzN.css b/public/admin/assets/activities-BQCZHPzN.css new file mode 100644 index 0000000..1402351 --- /dev/null +++ b/public/admin/assets/activities-BQCZHPzN.css @@ -0,0 +1 @@ +.date-range[data-v-330f7982]{align-items:center;gap:6px;width:100%;display:flex}.range-sep[data-v-330f7982]{color:var(--el-text-color-secondary);flex-shrink:0;font-size:12px}.sessions-block[data-v-330f7982]{flex-direction:column;gap:8px;width:100%;display:flex}.session-label-row[data-v-330f7982]{align-items:center;display:inline-flex}.btn-label-action[data-v-330f7982]{margin-left:12px}.session-form-item[data-v-330f7982] .el-form-item__content{width:100%}.session-row[data-v-330f7982]{grid-template-columns:minmax(120px,1.2fr) minmax(160px,1.4fr) minmax(160px,1.4fr) minmax(120px,1fr) minmax(90px,.8fr) auto;align-items:center;gap:8px;width:100%;display:grid}.session-row[data-v-330f7982] .el-input,.session-row[data-v-330f7982] .el-date-editor{width:100%;min-width:0}.session-row-delete[data-v-330f7982]{justify-self:end}.intro-form-item[data-v-330f7982],.intro-form-item[data-v-330f7982] .el-form-item__content{width:100%}.dialog-footer-inner[data-v-330f7982]{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.signup-head[data-v-330f7982]{margin-bottom:12px}.signup-head-row[data-v-330f7982]{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.session-tabs[data-v-330f7982]{flex-wrap:wrap;flex:1;gap:8px;display:flex}.signup-filter-bar[data-v-330f7982]{margin-top:8px}.sub-toolbar[data-v-330f7982]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.text-mute[data-v-330f7982]{color:var(--el-text-color-placeholder);font-size:13px} diff --git a/public/admin/assets/activities-BcXk3M8s.js b/public/admin/assets/activities-BcXk3M8s.js new file mode 100644 index 0000000..82aa8dd --- /dev/null +++ b/public/admin/assets/activities-BcXk3M8s.js @@ -0,0 +1 @@ +import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as ee,Xt as te,Y as s,at as c,b as l,d as ne,ht as u,m as d,ot as re,q as f,tn as p,x as m}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as h,l as g,s as _}from"./index-C2NqsgBl.js";import{n as ie,t as v}from"./usePageLoad-BucTP1_8.js";import{t as ae}from"./RichTextEditor-x18LQ7sl.js";import{a as y,c as b,d as x,f as oe,i as se,l as S,n as C,o as w,p as ce,r as le,s as ue,t as T,u as de}from"./activities-6KKyhCfI.js";import{a as fe,i as pe,o as me,s as he}from"./admin-list-DjncsyJC.js";import{a as E}from"./dict-BbzaBtNg.js";import{a as ge,i as _e,n as D,r as O,t as ve}from"./csv-export-DySaEp8z.js";function ye(e,t){return D([`姓名`,`手机`,`公司`,`报名时间`],e.map(e=>[e.name,e.mobile,e.company??`—`,t(e.signed_up_at)]))}function be(e,t,n){return D([`姓名`,`手机`,`公司`,`签到状态`,`签到时间`],e.map(e=>[e.name,e.mobile,e.company??`—`,t?e.session_checked_in_at?`已签到`:`未签到`:``,t?n(e.session_checked_in_at):``]))}var xe={class:`list-page`},Se={class:`page-header`},Ce={class:`list-filter-bar`},we={class:`table-row-actions`},Te={class:`list-pager`},Ee={class:`date-range`},De={class:`date-range`},Oe={class:`session-label-row`},ke={class:`sessions-block`},Ae={class:`dialog-footer-inner`},je={class:`signup-head`},Me={class:`signup-head-row`},Ne={key:0,class:`session-tabs`},Pe={key:1,class:`text-mute`},Fe={class:`sub-toolbar signup-filter-bar`},Ie={class:`list-pager`},k=_(n({__name:`index`,setup(n){let _=u(!1),D=u(!1),k=u([]),A=u({current_page:1,per_page:20,total:0}),j=u(1),M=u(``),N=u(``),P=u(``),F=u(``),I=u([]),L=u(!1),R=u(null),z=u({title:``,activity_type_dict_item_id:void 0,event_start_date:``,event_end_date:``,signup_start_date:``,signup_end_date:``,location:``,intro_html:``}),B=u([]),Le=u(!1),V=u(null),H=u([]),Re=u([]),U=u({current_page:1,per_page:20,total:0}),W=u(1),G=u(``),K=u(``),q=u(``),J=u(!1),ze=u(!1),Be=u([]),Ve=u(!1),He=u(null),Ue=u(``);async function We(){try{I.value=(await E(`activity_type`)).items}catch{g.warning(`活动类型字典加载失败,请执行 ActivityDictionarySeeder 或在字典中维护 activity_type`)}}async function Y(){_.value=!0;try{let e={page:j.value,page_size:A.value.per_page};M.value&&(e.keyword=M.value),N.value!==``&&(e.activity_type_dict_item_id=N.value),P.value!==``&&(e.progress_status=P.value),F.value!==``&&(e.published=F.value);let t=await ue(e);k.value=t.items,A.value=t.meta}finally{_.value=!1}}function Ge(){j.value=1,Y()}function Ke(){M.value=``,N.value=``,P.value=``,F.value=``,j.value=1,Y()}function qe(){B.value.push({title:``,starts_at:``,ends_at:``,venue:``,capacity:void 0})}function Je(e){B.value.splice(e,1)}function Ye(){R.value=null,z.value={title:``,activity_type_dict_item_id:I.value[0]?.id,event_start_date:``,event_end_date:``,signup_start_date:``,signup_end_date:``,location:``,intro_html:``},B.value=[],L.value=!0}async function Xe(e){R.value=e;let t=await b(e.id);z.value={title:t.title,activity_type_dict_item_id:t.activity_type_dict_item_id??void 0,event_start_date:t.event_start_date||``,event_end_date:t.event_end_date||``,signup_start_date:t.signup_start_date||``,signup_end_date:t.signup_end_date||``,location:t.location||``,intro_html:t.intro_html||``},B.value=(await S(e.id)).map(e=>({id:e.id,title:e.title||``,starts_at:e.starts_at?e.starts_at.slice(0,16).replace(`T`,` `):``,ends_at:e.ends_at?e.ends_at.slice(0,16).replace(`T`,` `):``,venue:e.venue||``,capacity:e.capacity??void 0})),L.value=!0}function Ze(){return z.value.title?.trim()?z.value.activity_type_dict_item_id?!z.value.event_start_date||!z.value.event_end_date?(g.warning(`请填写活动日期`),!1):z.value.event_start_date>z.value.event_end_date?(g.warning(`活动结束日期不能早于开始日期`),!1):!z.value.signup_start_date||!z.value.signup_end_date?(g.warning(`请填写报名起止日期`),!1):z.value.signup_start_date>z.value.signup_end_date?(g.warning(`报名结束日期不能早于开始日期`),!1):!0:(g.warning(`请选择活动类型`),!1):(g.warning(`请填写活动名称`),!1)}function Qe(e){return e.slice(0,10)}function $e(e){let t=z.value.event_start_date,n=z.value.event_end_date;return!t||!n?!0:e.starts_at&&Qe(e.starts_at)n?(g.warning(`场次「${e.title}」结束时间不能晚于活动结束日期`),!1):!0}function et(e){let t=z.value.event_start_date,n=z.value.event_end_date;if(!t||!n)return!1;let r=`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`;return rn}function tt(){let e=B.value.filter(e=>e.title?.trim()||e.starts_at||e.ends_at||e.venue||e.capacity);for(let t of e){if(!t.title?.trim()||!t.starts_at||!t.ends_at||!(t.capacity&&t.capacity>0))return g.warning(`场次信息不完整:标题、开始时间、结束时间、名额均为必填,且名额须大于 0`),!1;if(t.starts_at>t.ends_at)return g.warning(`场次「${t.title}」结束时间不能早于开始时间`),!1;if(!$e(t))return!1}return B.value.filter(e=>e.title?.trim()&&e.starts_at&&e.ends_at&&(e.capacity??0)>0).length?!0:(g.warning(`保存并发布前须至少添加一个完整场次(标题、开始/结束时间、名额均必填且名额大于 0)`),!1)}async function nt(e){let t=R.value?await S(e):[],n=new Set;for(let t of B.value){if(!t.title?.trim()||!t.starts_at||!t.ends_at||!(t.capacity&&t.capacity>0))continue;if(!$e(t))throw Error(`session_range_invalid`);let r={title:t.title.trim(),starts_at:`${t.starts_at}:00`,ends_at:`${t.ends_at}:00`,venue:t.venue||null,capacity:t.capacity};if(t.id)await ce(e,t.id,r),n.add(t.id);else{let t=await le(e,r);n.add(t.id)}}for(let r of t)n.has(r.id)||await y(e,r.id)}async function rt(e){if(!Ze()||e===1&&!tt())return;let t=B.value.filter(e=>e.title?.trim()||e.starts_at||e.ends_at||e.venue||e.capacity);for(let e of t)if((e.starts_at||e.ends_at)&&!$e(e))return;let n={title:z.value.title.trim(),activity_type_dict_item_id:z.value.activity_type_dict_item_id,event_start_date:z.value.event_start_date,event_end_date:z.value.event_end_date,signup_start_date:z.value.signup_start_date,signup_end_date:z.value.signup_end_date,location:z.value.location||null,intro_html:z.value.intro_html||null,published:e};D.value=!0;try{let t;R.value?(await oe(R.value.id,n),t=R.value.id):t=(await C(n)).id,await nt(t),g.success(e===1?`已保存并发布`:`已暂存草稿`),L.value=!1,await Y()}catch(e){if(e instanceof Error&&e.message===`session_range_invalid`)return;throw e}finally{D.value=!1}}async function it(e){await h.confirm(`确定删除活动「${e.title}」?`,`提示`,{type:`warning`}),await se(e.id),g.success(`已删除`),await Y()}function X(e){if(!e)return`—`;let t=new Date(e);if(Number.isNaN(t.getTime()))return`—`;let n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`}function Z(e){return e.title?e.title:e.starts_at?e.starts_at.slice(0,10).replace(/-/g,`.`):`场次 #${e.id}`}function at(e){return e?.starts_at?new Date(e.starts_at)<=new Date:!0}let ot=()=>H.value.find(e=>e.id===q.value),Q=()=>at(ot());async function $(){if(!V.value)return;let e={page:W.value,page_size:U.value.per_page};G.value.trim()&&(e.keyword=G.value.trim()),q.value!==``&&(e.activity_session_id=q.value),K.value!==``&&(e.checkin_status=K.value);let t=await de(V.value.id,e);Re.value=t.items,U.value=t.meta}async function st(e){V.value=e,Le.value=!0,W.value=1,G.value=``,K.value=``,H.value=await S(e.id),q.value=H.value[0]?.id??``,await $()}async function ct(e){q.value=e,W.value=1,await $()}function lt(){W.value=1,$()}function ut(){G.value=``,K.value=``,W.value=1,$()}async function dt(e){V.value&&(await h.confirm(`确定删除该报名记录?`,`提示`,{type:`warning`}),await w(V.value.id,e.id),await $(),await Y())}async function ft(e){!V.value||q.value===``||(await T(V.value.id,e.id,{activity_session_id:q.value}),g.success(`已完成手动补签`),await $())}function pt(e){He.value=e,Ue.value=ge(e),Ve.value=!0}async function mt(){if(V.value){J.value=!0,ze.value=!0,Be.value=[];try{let e=V.value.id,t=await x(e);Be.value=await Promise.all(H.value.map(async n=>{let r=await x(e,{activity_session_id:n.id}),i=at(n)?r.filter(e=>e.session_checked_in_at).length:0,a=t.filter(e=>e.activity_session_id===n.id);return{session:n,signup_count:a.length,checked_in_count:i,signupRows:a,signinRows:r}}))}catch{g.error(`导出数据加载失败`)}finally{ze.value=!1}}}function ht(e){if(!V.value)return;let t=O(V.value.title||`活动`),n=O(Z(e.session)),r=ye(e.signupRows,X);ve(`${t}_${n}_报名.csv`,r)}function gt(e){if(!V.value)return;let t=O(V.value.title||`活动`),n=O(Z(e.session)),r=be(e.signinRows,at(e.session),X);ve(`${t}_${n}_签到.csv`,r)}return v(async()=>{await We(),await Y()}),(n,u)=>{let h=s(`el-button`),g=s(`el-input`),v=s(`el-option`),y=s(`el-select`),b=s(`el-table-column`),x=s(`el-table`),oe=s(`el-pagination`),se=s(`el-card`),S=s(`el-form-item`),C=s(`el-col`),w=s(`el-date-picker`),ce=s(`el-input-number`),le=s(`el-row`),ue=s(`el-form`),T=s(`el-dialog`),de=s(`el-tag`),E=ee(`loading`);return i(),e(d,null,[l(`div`,xe,[l(`div`,Se,[r(ie),r(h,{type:`primary`,size:`small`,class:`btn-create`,onClick:Ye},{default:c(()=>[...u[24]||=[o(`新建活动`,-1)]]),_:1})]),r(se,{shadow:`never`,class:`admin-list-card`},{default:c(()=>[l(`div`,Ce,[r(g,{modelValue:M.value,"onUpdate:modelValue":u[0]||=e=>M.value=e,placeholder:`搜索活动名称`,clearable:``,class:`filter-search`,onKeyup:ne(Ge,[`enter`])},null,8,[`modelValue`]),r(y,{modelValue:N.value,"onUpdate:modelValue":u[1]||=e=>N.value=e,clearable:``,placeholder:`活动类型`,class:`filter-select`,filterable:``},{default:c(()=>[(i(!0),e(d,null,f(I.value,e=>(i(),m(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(y,{modelValue:P.value,"onUpdate:modelValue":u[2]||=e=>P.value=e,clearable:``,placeholder:`活动状态`,class:`filter-select`},{default:c(()=>[r(v,{label:`未开始`,value:1}),r(v,{label:`进行中`,value:2}),r(v,{label:`已结束`,value:3})]),_:1},8,[`modelValue`]),r(y,{modelValue:F.value,"onUpdate:modelValue":u[3]||=e=>F.value=e,clearable:``,placeholder:`发布状态`,class:`filter-select`},{default:c(()=>[r(v,{label:`已发布`,value:1}),r(v,{label:`未发布`,value:0})]),_:1},8,[`modelValue`]),r(h,{type:`primary`,onClick:Ge},{default:c(()=>[...u[25]||=[o(`搜索`,-1)]]),_:1}),r(h,{onClick:Ke},{default:c(()=>[...u[26]||=[o(`重置`,-1)]]),_:1})]),re((i(),m(x,{data:k.value,"row-key":`id`},{default:c(()=>[r(b,{prop:`title`,label:`活动名称`,"min-width":`160`,"show-overflow-tooltip":``}),r(b,{label:`活动类型`,width:`100`},{default:c(({row:e})=>[o(p(e.activity_type_item?.label??`—`),1)]),_:1}),r(b,{label:`场次`,width:`72`,align:`center`},{default:c(({row:e})=>[o(p(e.sessions_count??0),1)]),_:1}),r(b,{label:`活动日期`,"min-width":`150`},{default:c(({row:e})=>[o(p(t(pe)(e.event_start_date,e.event_end_date)),1)]),_:1}),r(b,{label:`报名起止日期`,"min-width":`150`},{default:c(({row:e})=>[o(p(t(pe)(e.signup_start_date,e.signup_end_date)),1)]),_:1}),r(b,{prop:`location`,label:`活动地点`,"min-width":`120`,"show-overflow-tooltip":``}),r(b,{label:`活动状态`,width:`90`,align:`center`},{default:c(({row:e})=>[l(`span`,{class:te([`status-badge`,t(me)(e.progress_status)])},p(t(fe)(e.progress_status)),3)]),_:1}),r(b,{label:`发布状态`,width:`90`,align:`center`},{default:c(({row:e})=>[l(`span`,{class:te([`status-badge`,t(he)(e.published)])},p(e.published===1?`已发布`:`未发布`),3)]),_:1}),r(b,{label:`操作`,width:`280`,fixed:`right`},{default:c(({row:e})=>[l(`div`,we,[r(h,{class:`btn-action-brand`,onClick:t=>st(e)},{default:c(()=>[...u[27]||=[o(`报名与签到`,-1)]]),_:1},8,[`onClick`]),r(h,{class:`btn-action-primary`,onClick:t=>pt(e)},{default:c(()=>[...u[28]||=[o(`签到码`,-1)]]),_:1},8,[`onClick`]),r(h,{class:`btn-action-secondary`,onClick:t=>Xe(e)},{default:c(()=>[...u[29]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),r(h,{class:`btn-action-secondary`,onClick:t=>it(e)},{default:c(()=>[...u[30]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[E,_.value]]),l(`div`,Te,[r(oe,{"current-page":j.value,"onUpdate:currentPage":u[4]||=e=>j.value=e,layout:`total, prev, pager, next`,total:A.value.total,"page-size":A.value.per_page,onCurrentChange:Y},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r(T,{modelValue:L.value,"onUpdate:modelValue":u[16]||=e=>L.value=e,title:R.value?`编辑活动`:`新建活动`,width:`1200px`,top:`4vh`,"destroy-on-close":``,class:`activity-dialog`},{footer:c(()=>[l(`div`,Ae,[r(h,{onClick:u[13]||=e=>L.value=!1},{default:c(()=>[...u[36]||=[o(`取消`,-1)]]),_:1}),r(h,{loading:D.value,onClick:u[14]||=e=>rt(0)},{default:c(()=>[...u[37]||=[o(`暂存草稿`,-1)]]),_:1},8,[`loading`]),r(h,{type:`primary`,loading:D.value,onClick:u[15]||=e=>rt(1)},{default:c(()=>[...u[38]||=[o(`保存并发布`,-1)]]),_:1},8,[`loading`])])]),default:c(()=>[r(ue,{"label-position":`top`,class:`activity-form`},{default:c(()=>[r(le,{gutter:16},{default:c(()=>[r(C,{span:8},{default:c(()=>[r(S,{label:`活动名称`,required:``},{default:c(()=>[r(g,{modelValue:z.value.title,"onUpdate:modelValue":u[5]||=e=>z.value.title=e,placeholder:`请输入活动名称`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:8},{default:c(()=>[r(S,{label:`活动类型`,required:``},{default:c(()=>[r(y,{modelValue:z.value.activity_type_dict_item_id,"onUpdate:modelValue":u[6]||=e=>z.value.activity_type_dict_item_id=e,placeholder:`请选择`,filterable:``,style:{width:`100%`}},{default:c(()=>[(i(!0),e(d,null,f(I.value,e=>(i(),m(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:8},{default:c(()=>[r(S,{label:`活动日期`,required:``},{default:c(()=>[l(`div`,Ee,[r(w,{modelValue:z.value.event_start_date,"onUpdate:modelValue":u[7]||=e=>z.value.event_start_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`开始`,style:{width:`100%`}},null,8,[`modelValue`]),u[31]||=l(`span`,{class:`range-sep`},`至`,-1),r(w,{modelValue:z.value.event_end_date,"onUpdate:modelValue":u[8]||=e=>z.value.event_end_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`结束`,style:{width:`100%`}},null,8,[`modelValue`])])]),_:1})]),_:1}),r(C,{span:8},{default:c(()=>[r(S,{label:`报名起止日期`,required:``},{default:c(()=>[l(`div`,De,[r(w,{modelValue:z.value.signup_start_date,"onUpdate:modelValue":u[9]||=e=>z.value.signup_start_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`开始`,style:{width:`100%`}},null,8,[`modelValue`]),u[32]||=l(`span`,{class:`range-sep`},`至`,-1),r(w,{modelValue:z.value.signup_end_date,"onUpdate:modelValue":u[10]||=e=>z.value.signup_end_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`结束`,style:{width:`100%`}},null,8,[`modelValue`])])]),_:1})]),_:1}),r(C,{span:8},{default:c(()=>[r(S,{label:`活动地点`},{default:c(()=>[r(g,{modelValue:z.value.location,"onUpdate:modelValue":u[11]||=e=>z.value.location=e,placeholder:`请输入活动地点`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:24},{default:c(()=>[r(S,{class:`session-form-item`},{label:c(()=>[l(`div`,Oe,[u[34]||=l(`span`,null,`活动场次`,-1),r(h,{type:`primary`,size:`small`,class:`btn-create btn-label-action`,onClick:qe},{default:c(()=>[...u[33]||=[o(` 添加场次 `,-1)]]),_:1})])]),default:c(()=>[l(`div`,ke,[(i(!0),e(d,null,f(B.value,(t,n)=>(i(),e(`div`,{key:n,class:`session-row`},[r(g,{modelValue:t.title,"onUpdate:modelValue":e=>t.title=e,placeholder:`场次标题,如:上午场`},null,8,[`modelValue`,`onUpdate:modelValue`]),r(w,{modelValue:t.starts_at,"onUpdate:modelValue":e=>t.starts_at=e,type:`datetime`,"value-format":`YYYY-MM-DD HH:mm`,format:`YYYY-MM-DD HH:mm`,placeholder:`开始时间`,"disabled-date":et,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`]),r(w,{modelValue:t.ends_at,"onUpdate:modelValue":e=>t.ends_at=e,type:`datetime`,"value-format":`YYYY-MM-DD HH:mm`,format:`YYYY-MM-DD HH:mm`,placeholder:`结束时间`,"disabled-date":et,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`]),r(g,{modelValue:t.venue,"onUpdate:modelValue":e=>t.venue=e,placeholder:`地点(可选)`},null,8,[`modelValue`,`onUpdate:modelValue`]),r(ce,{modelValue:t.capacity,"onUpdate:modelValue":e=>t.capacity=e,min:1,placeholder:`名额`,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`]),r(h,{type:`danger`,plain:``,size:`small`,class:`session-row-delete`,onClick:e=>Je(n)},{default:c(()=>[...u[35]||=[o(` 删除 `,-1)]]),_:1},8,[`onClick`])]))),128))])]),_:1})]),_:1}),r(C,{span:24},{default:c(()=>[r(S,{label:`活动简介`,class:`intro-form-item`},{default:c(()=>[r(ae,{modelValue:z.value.intro_html,"onUpdate:modelValue":u[12]||=e=>z.value.intro_html=e,scope:`activities`,height:260},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`]),r(_e,{modelValue:Ve.value,"onUpdate:modelValue":u[17]||=e=>Ve.value=e,"course-name":He.value?.title||``,"signin-code":Ue.value},null,8,[`modelValue`,`course-name`,`signin-code`]),r(T,{modelValue:Le.value,"onUpdate:modelValue":u[21]||=e=>Le.value=e,title:`活动报名与签到:${V.value?.title||``}`,width:`960px`,top:`5vh`,class:`signup-dialog`},{default:c(()=>[l(`div`,je,[l(`div`,Me,[H.value.length?(i(),e(`div`,Ne,[(i(!0),e(d,null,f(H.value,e=>(i(),m(h,{key:e.id,size:`small`,type:q.value===e.id?`primary`:`default`,onClick:t=>ct(e.id)},{default:c(()=>[o(p(Z(e)),1)]),_:2},1032,[`type`,`onClick`]))),128))])):(i(),e(`div`,Pe,`暂无场次,请先在活动中添加场次`)),r(h,{disabled:!H.value.length,onClick:mt},{default:c(()=>[...u[39]||=[o(`导出`,-1)]]),_:1},8,[`disabled`])])]),l(`div`,Fe,[r(g,{modelValue:G.value,"onUpdate:modelValue":u[18]||=e=>G.value=e,clearable:``,placeholder:`搜索姓名、手机、公司…`,style:{width:`220px`},onKeyup:ne(lt,[`enter`])},null,8,[`modelValue`]),r(y,{modelValue:K.value,"onUpdate:modelValue":u[19]||=e=>K.value=e,clearable:``,placeholder:`签到状态`,style:{width:`120px`}},{default:c(()=>[r(v,{label:`已签到`,value:1}),r(v,{label:`未签到`,value:0})]),_:1},8,[`modelValue`]),r(h,{type:`primary`,onClick:lt},{default:c(()=>[...u[40]||=[o(`搜索`,-1)]]),_:1}),r(h,{onClick:ut},{default:c(()=>[...u[41]||=[o(`重置`,-1)]]),_:1})]),r(x,{data:Re.value,size:`small`,style:{"margin-top":`12px`}},{default:c(()=>[r(b,{prop:`name`,label:`姓名`,width:`100`}),r(b,{prop:`mobile`,label:`手机`,width:`130`}),r(b,{prop:`company`,label:`公司`,"min-width":`120`,"show-overflow-tooltip":``}),r(b,{label:`报名时间`,width:`170`},{default:c(({row:e})=>[o(p(X(e.signed_up_at)),1)]),_:1}),r(b,{label:`签到状态`,width:`100`},{default:c(({row:t})=>[Q()?(i(),e(d,{key:0},[t.session_checked_in_at?(i(),m(de,{key:0,type:`success`,size:`small`},{default:c(()=>[...u[42]||=[o(`已签到`,-1)]]),_:1})):(i(),m(de,{key:1,type:`info`,size:`small`},{default:c(()=>[...u[43]||=[o(`未签到`,-1)]]),_:1}))],64)):a(``,!0)]),_:1}),r(b,{label:`签到时间`,width:`170`},{default:c(({row:e})=>[o(p(Q()?X(e.session_checked_in_at):``),1)]),_:1}),r(b,{label:`操作`,width:`120`,fixed:`right`},{default:c(({row:e})=>[Q()&&!e.session_checked_in_at?(i(),m(h,{key:0,type:`primary`,link:``,onClick:t=>ft(e)},{default:c(()=>[...u[44]||=[o(` 手动补签 `,-1)]]),_:1},8,[`onClick`])):Q()&&e.session_checked_in_at?(i(),m(h,{key:1,type:`info`,link:``,disabled:``},{default:c(()=>[...u[45]||=[o(` 已完成 `,-1)]]),_:1})):a(``,!0),r(h,{type:`danger`,link:``,onClick:t=>dt(e)},{default:c(()=>[...u[46]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`]),l(`div`,Ie,[r(oe,{"current-page":W.value,"onUpdate:currentPage":u[20]||=e=>W.value=e,layout:`total, prev, pager, next`,total:U.value.total,"page-size":U.value.per_page,onCurrentChange:$},null,8,[`current-page`,`total`,`page-size`])])]),_:1},8,[`modelValue`,`title`]),r(T,{modelValue:J.value,"onUpdate:modelValue":u[23]||=e=>J.value=e,title:`${V.value?.title||``}报名表导出`,width:`720px`,"append-to-body":``},{footer:c(()=>[r(h,{onClick:u[22]||=e=>J.value=!1},{default:c(()=>[...u[49]||=[o(`关闭`,-1)]]),_:1})]),default:c(()=>[re((i(),m(x,{data:Be.value,size:`small`},{default:c(()=>[r(b,{label:`场次`,"min-width":`140`},{default:c(({row:e})=>[o(p(Z(e.session)),1)]),_:1}),r(b,{prop:`signup_count`,label:`报名人数`,width:`100`}),r(b,{prop:`checked_in_count`,label:`已签到`,width:`90`}),r(b,{label:`报名导出`,width:`100`},{default:c(({row:e})=>[r(h,{type:`primary`,link:``,onClick:t=>ht(e)},{default:c(()=>[...u[47]||=[o(`导出报名`,-1)]]),_:1},8,[`onClick`])]),_:1}),r(b,{label:`签到导出`,width:`100`},{default:c(({row:e})=>[r(h,{type:`primary`,link:``,onClick:t=>gt(e)},{default:c(()=>[...u[48]||=[o(`导出签到`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])),[[E,ze.value]])]),_:1},8,[`modelValue`,`title`])],64)}}}),[[`__scopeId`,`data-v-330f7982`]]);export{k as default}; \ No newline at end of file diff --git a/public/admin/assets/activities-DQLFKsuI.js b/public/admin/assets/activities-DQLFKsuI.js deleted file mode 100644 index f12f3f2..0000000 --- a/public/admin/assets/activities-DQLFKsuI.js +++ /dev/null @@ -1 +0,0 @@ -import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as ee,Xt as te,Y as s,at as c,b as l,d as ne,ht as u,m as d,ot as re,q as f,tn as p,x as m}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as h,l as g,s as _}from"./index-DPkd2m0V.js";import{t as ie}from"./RichTextEditor-D53SL5wL.js";import{t as v}from"./usePageLoad-DFTLo_Lv.js";import{a as y,c as b,d as x,f as ae,i as oe,l as S,n as C,o as w,p as se,r as ce,s as le,t as T,u as ue}from"./activities-BQAd6xP6.js";import{a as de,i as fe,o as pe,s as me}from"./admin-list-CBoToEFo.js";import{a as E}from"./dict-DoDYCi7z.js";import{a as he,i as ge,n as D,r as O,t as _e}from"./csv-export-DWSNzQbE.js";function ve(e,t){return D([`姓名`,`手机`,`公司`,`报名时间`],e.map(e=>[e.name,e.mobile,e.company??`—`,t(e.signed_up_at)]))}function ye(e,t,n){return D([`姓名`,`手机`,`公司`,`签到状态`,`签到时间`],e.map(e=>[e.name,e.mobile,e.company??`—`,t?e.session_checked_in_at?`已签到`:`未签到`:``,t?n(e.session_checked_in_at):``]))}var be={class:`list-page`},xe={class:`page-header`},Se={class:`list-filter-bar`},Ce={class:`table-row-actions`},we={class:`list-pager`},Te={class:`date-range`},Ee={class:`date-range`},De={class:`session-label-row`},Oe={class:`sessions-block`},ke={class:`dialog-footer-inner`},Ae={class:`signup-head`},je={class:`signup-head-row`},Me={key:0,class:`session-tabs`},Ne={key:1,class:`text-mute`},Pe={class:`sub-toolbar signup-filter-bar`},Fe={class:`list-pager`},k=_(n({__name:`index`,setup(n){let _=u(!1),D=u(!1),k=u([]),A=u({current_page:1,per_page:20,total:0}),j=u(1),M=u(``),N=u(``),P=u(``),F=u(``),I=u([]),L=u(!1),R=u(null),z=u({title:``,activity_type_dict_item_id:void 0,event_start_date:``,event_end_date:``,signup_start_date:``,signup_end_date:``,location:``,intro_html:``}),B=u([]),Ie=u(!1),V=u(null),H=u([]),Le=u([]),U=u({current_page:1,per_page:20,total:0}),W=u(1),G=u(``),K=u(``),q=u(``),J=u(!1),Re=u(!1),ze=u([]),Be=u(!1),Ve=u(null),He=u(``);async function Ue(){try{I.value=(await E(`activity_type`)).items}catch{g.warning(`活动类型字典加载失败,请执行 ActivityDictionarySeeder 或在字典中维护 activity_type`)}}async function Y(){_.value=!0;try{let e={page:j.value,page_size:A.value.per_page};M.value&&(e.keyword=M.value),N.value!==``&&(e.activity_type_dict_item_id=N.value),P.value!==``&&(e.progress_status=P.value),F.value!==``&&(e.published=F.value);let t=await le(e);k.value=t.items,A.value=t.meta}finally{_.value=!1}}function We(){j.value=1,Y()}function Ge(){M.value=``,N.value=``,P.value=``,F.value=``,j.value=1,Y()}function Ke(){B.value.push({title:``,starts_at:``,ends_at:``,venue:``,capacity:void 0})}function qe(e){B.value.splice(e,1)}function Je(){R.value=null,z.value={title:``,activity_type_dict_item_id:I.value[0]?.id,event_start_date:``,event_end_date:``,signup_start_date:``,signup_end_date:``,location:``,intro_html:``},B.value=[],L.value=!0}async function Ye(e){R.value=e;let t=await b(e.id);z.value={title:t.title,activity_type_dict_item_id:t.activity_type_dict_item_id??void 0,event_start_date:t.event_start_date||``,event_end_date:t.event_end_date||``,signup_start_date:t.signup_start_date||``,signup_end_date:t.signup_end_date||``,location:t.location||``,intro_html:t.intro_html||``},B.value=(await S(e.id)).map(e=>({id:e.id,title:e.title||``,starts_at:e.starts_at?e.starts_at.slice(0,16).replace(`T`,` `):``,ends_at:e.ends_at?e.ends_at.slice(0,16).replace(`T`,` `):``,venue:e.venue||``,capacity:e.capacity??void 0})),L.value=!0}function Xe(){return z.value.title?.trim()?z.value.activity_type_dict_item_id?!z.value.event_start_date||!z.value.event_end_date?(g.warning(`请填写活动日期`),!1):z.value.event_start_date>z.value.event_end_date?(g.warning(`活动结束日期不能早于开始日期`),!1):!z.value.signup_start_date||!z.value.signup_end_date?(g.warning(`请填写报名起止日期`),!1):z.value.signup_start_date>z.value.signup_end_date?(g.warning(`报名结束日期不能早于开始日期`),!1):!0:(g.warning(`请选择活动类型`),!1):(g.warning(`请填写活动名称`),!1)}function Ze(e){return e.slice(0,10)}function Qe(e){let t=z.value.event_start_date,n=z.value.event_end_date;return!t||!n?!0:e.starts_at&&Ze(e.starts_at)n?(g.warning(`场次「${e.title}」结束时间不能晚于活动结束日期`),!1):!0}function $e(e){let t=z.value.event_start_date,n=z.value.event_end_date;if(!t||!n)return!1;let r=`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`;return rn}function et(){let e=B.value.filter(e=>e.title?.trim()||e.starts_at||e.ends_at||e.venue||e.capacity);for(let t of e){if(!t.title?.trim()||!t.starts_at||!t.ends_at||!(t.capacity&&t.capacity>0))return g.warning(`场次信息不完整:标题、开始时间、结束时间、名额均为必填,且名额须大于 0`),!1;if(t.starts_at>t.ends_at)return g.warning(`场次「${t.title}」结束时间不能早于开始时间`),!1;if(!Qe(t))return!1}return B.value.filter(e=>e.title?.trim()&&e.starts_at&&e.ends_at&&(e.capacity??0)>0).length?!0:(g.warning(`保存并发布前须至少添加一个完整场次(标题、开始/结束时间、名额均必填且名额大于 0)`),!1)}async function tt(e){let t=R.value?await S(e):[],n=new Set;for(let t of B.value){if(!t.title?.trim()||!t.starts_at||!t.ends_at||!(t.capacity&&t.capacity>0))continue;if(!Qe(t))throw Error(`session_range_invalid`);let r={title:t.title.trim(),starts_at:`${t.starts_at}:00`,ends_at:`${t.ends_at}:00`,venue:t.venue||null,capacity:t.capacity};if(t.id)await se(e,t.id,r),n.add(t.id);else{let t=await ce(e,r);n.add(t.id)}}for(let r of t)n.has(r.id)||await y(e,r.id)}async function nt(e){if(!Xe()||e===1&&!et())return;let t=B.value.filter(e=>e.title?.trim()||e.starts_at||e.ends_at||e.venue||e.capacity);for(let e of t)if((e.starts_at||e.ends_at)&&!Qe(e))return;let n={title:z.value.title.trim(),activity_type_dict_item_id:z.value.activity_type_dict_item_id,event_start_date:z.value.event_start_date,event_end_date:z.value.event_end_date,signup_start_date:z.value.signup_start_date,signup_end_date:z.value.signup_end_date,location:z.value.location||null,intro_html:z.value.intro_html||null,published:e};D.value=!0;try{let t;R.value?(await ae(R.value.id,n),t=R.value.id):t=(await C(n)).id,await tt(t),g.success(e===1?`已保存并发布`:`已暂存草稿`),L.value=!1,await Y()}catch(e){if(e instanceof Error&&e.message===`session_range_invalid`)return;throw e}finally{D.value=!1}}async function rt(e){await h.confirm(`确定删除活动「${e.title}」?`,`提示`,{type:`warning`}),await oe(e.id),g.success(`已删除`),await Y()}function X(e){if(!e)return`—`;let t=new Date(e);if(Number.isNaN(t.getTime()))return`—`;let n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`}function Z(e){return e.title?e.title:e.starts_at?e.starts_at.slice(0,10).replace(/-/g,`.`):`场次 #${e.id}`}function it(e){return e?.starts_at?new Date(e.starts_at)<=new Date:!0}let at=()=>H.value.find(e=>e.id===q.value),Q=()=>it(at());async function $(){if(!V.value)return;let e={page:W.value,page_size:U.value.per_page};G.value.trim()&&(e.keyword=G.value.trim()),q.value!==``&&(e.activity_session_id=q.value),K.value!==``&&(e.checkin_status=K.value);let t=await ue(V.value.id,e);Le.value=t.items,U.value=t.meta}async function ot(e){V.value=e,Ie.value=!0,W.value=1,G.value=``,K.value=``,H.value=await S(e.id),q.value=H.value[0]?.id??``,await $()}async function st(e){q.value=e,W.value=1,await $()}function ct(){W.value=1,$()}function lt(){G.value=``,K.value=``,W.value=1,$()}async function ut(e){V.value&&(await h.confirm(`确定删除该报名记录?`,`提示`,{type:`warning`}),await w(V.value.id,e.id),await $(),await Y())}async function dt(e){!V.value||q.value===``||(await T(V.value.id,e.id,{activity_session_id:q.value}),g.success(`已完成手动补签`),await $())}function ft(e){Ve.value=e,He.value=he(e),Be.value=!0}async function pt(){if(V.value){J.value=!0,Re.value=!0,ze.value=[];try{let e=V.value.id,t=await x(e);ze.value=await Promise.all(H.value.map(async n=>{let r=await x(e,{activity_session_id:n.id}),i=it(n)?r.filter(e=>e.session_checked_in_at).length:0,a=t.filter(e=>e.activity_session_id===n.id);return{session:n,signup_count:a.length,checked_in_count:i,signupRows:a,signinRows:r}}))}catch{g.error(`导出数据加载失败`)}finally{Re.value=!1}}}function mt(e){if(!V.value)return;let t=O(V.value.title||`活动`),n=O(Z(e.session)),r=ve(e.signupRows,X);_e(`${t}_${n}_报名.csv`,r)}function ht(e){if(!V.value)return;let t=O(V.value.title||`活动`),n=O(Z(e.session)),r=ye(e.signinRows,it(e.session),X);_e(`${t}_${n}_签到.csv`,r)}return v(async()=>{await Ue(),await Y()}),(n,u)=>{let h=s(`el-button`),g=s(`el-input`),v=s(`el-option`),y=s(`el-select`),b=s(`el-table-column`),x=s(`el-table`),ae=s(`el-pagination`),oe=s(`el-card`),S=s(`el-form-item`),C=s(`el-col`),w=s(`el-date-picker`),se=s(`el-input-number`),ce=s(`el-row`),le=s(`el-form`),T=s(`el-dialog`),ue=s(`el-tag`),E=ee(`loading`);return i(),e(d,null,[l(`div`,be,[l(`div`,xe,[u[25]||=l(`h1`,{class:`page-title`},`活动管理`,-1),r(h,{type:`primary`,size:`small`,class:`btn-create`,onClick:Je},{default:c(()=>[...u[24]||=[o(`新建活动`,-1)]]),_:1})]),r(oe,{shadow:`never`,class:`admin-list-card`},{default:c(()=>[l(`div`,Se,[r(g,{modelValue:M.value,"onUpdate:modelValue":u[0]||=e=>M.value=e,placeholder:`搜索活动名称`,clearable:``,class:`filter-search`,onKeyup:ne(We,[`enter`])},null,8,[`modelValue`]),r(y,{modelValue:N.value,"onUpdate:modelValue":u[1]||=e=>N.value=e,clearable:``,placeholder:`活动类型`,class:`filter-select`,filterable:``},{default:c(()=>[(i(!0),e(d,null,f(I.value,e=>(i(),m(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(y,{modelValue:P.value,"onUpdate:modelValue":u[2]||=e=>P.value=e,clearable:``,placeholder:`活动状态`,class:`filter-select`},{default:c(()=>[r(v,{label:`未开始`,value:1}),r(v,{label:`进行中`,value:2}),r(v,{label:`已结束`,value:3})]),_:1},8,[`modelValue`]),r(y,{modelValue:F.value,"onUpdate:modelValue":u[3]||=e=>F.value=e,clearable:``,placeholder:`发布状态`,class:`filter-select`},{default:c(()=>[r(v,{label:`已发布`,value:1}),r(v,{label:`未发布`,value:0})]),_:1},8,[`modelValue`]),r(h,{type:`primary`,onClick:We},{default:c(()=>[...u[26]||=[o(`搜索`,-1)]]),_:1}),r(h,{onClick:Ge},{default:c(()=>[...u[27]||=[o(`重置`,-1)]]),_:1})]),re((i(),m(x,{data:k.value,"row-key":`id`},{default:c(()=>[r(b,{prop:`title`,label:`活动名称`,"min-width":`160`,"show-overflow-tooltip":``}),r(b,{label:`活动类型`,width:`100`},{default:c(({row:e})=>[o(p(e.activity_type_item?.label??`—`),1)]),_:1}),r(b,{label:`场次`,width:`72`,align:`center`},{default:c(({row:e})=>[o(p(e.sessions_count??0),1)]),_:1}),r(b,{label:`活动日期`,"min-width":`150`},{default:c(({row:e})=>[o(p(t(fe)(e.event_start_date,e.event_end_date)),1)]),_:1}),r(b,{label:`报名起止日期`,"min-width":`150`},{default:c(({row:e})=>[o(p(t(fe)(e.signup_start_date,e.signup_end_date)),1)]),_:1}),r(b,{prop:`location`,label:`活动地点`,"min-width":`120`,"show-overflow-tooltip":``}),r(b,{label:`活动状态`,width:`90`,align:`center`},{default:c(({row:e})=>[l(`span`,{class:te([`status-badge`,t(pe)(e.progress_status)])},p(t(de)(e.progress_status)),3)]),_:1}),r(b,{label:`发布状态`,width:`90`,align:`center`},{default:c(({row:e})=>[l(`span`,{class:te([`status-badge`,t(me)(e.published)])},p(e.published===1?`已发布`:`未发布`),3)]),_:1}),r(b,{label:`操作`,width:`280`,fixed:`right`},{default:c(({row:e})=>[l(`div`,Ce,[r(h,{class:`btn-action-brand`,onClick:t=>ot(e)},{default:c(()=>[...u[28]||=[o(`报名与签到`,-1)]]),_:1},8,[`onClick`]),r(h,{class:`btn-action-primary`,onClick:t=>ft(e)},{default:c(()=>[...u[29]||=[o(`签到码`,-1)]]),_:1},8,[`onClick`]),r(h,{class:`btn-action-secondary`,onClick:t=>Ye(e)},{default:c(()=>[...u[30]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),r(h,{class:`btn-action-secondary`,onClick:t=>rt(e)},{default:c(()=>[...u[31]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[E,_.value]]),l(`div`,we,[r(ae,{"current-page":j.value,"onUpdate:currentPage":u[4]||=e=>j.value=e,layout:`total, prev, pager, next`,total:A.value.total,"page-size":A.value.per_page,onCurrentChange:Y},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r(T,{modelValue:L.value,"onUpdate:modelValue":u[16]||=e=>L.value=e,title:R.value?`编辑活动`:`新建活动`,width:`1200px`,top:`4vh`,"destroy-on-close":``,class:`activity-dialog`},{footer:c(()=>[l(`div`,ke,[r(h,{onClick:u[13]||=e=>L.value=!1},{default:c(()=>[...u[37]||=[o(`取消`,-1)]]),_:1}),r(h,{loading:D.value,onClick:u[14]||=e=>nt(0)},{default:c(()=>[...u[38]||=[o(`暂存草稿`,-1)]]),_:1},8,[`loading`]),r(h,{type:`primary`,loading:D.value,onClick:u[15]||=e=>nt(1)},{default:c(()=>[...u[39]||=[o(`保存并发布`,-1)]]),_:1},8,[`loading`])])]),default:c(()=>[r(le,{"label-position":`top`,class:`activity-form`},{default:c(()=>[r(ce,{gutter:16},{default:c(()=>[r(C,{span:8},{default:c(()=>[r(S,{label:`活动名称`,required:``},{default:c(()=>[r(g,{modelValue:z.value.title,"onUpdate:modelValue":u[5]||=e=>z.value.title=e,placeholder:`请输入活动名称`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:8},{default:c(()=>[r(S,{label:`活动类型`,required:``},{default:c(()=>[r(y,{modelValue:z.value.activity_type_dict_item_id,"onUpdate:modelValue":u[6]||=e=>z.value.activity_type_dict_item_id=e,placeholder:`请选择`,filterable:``,style:{width:`100%`}},{default:c(()=>[(i(!0),e(d,null,f(I.value,e=>(i(),m(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:8},{default:c(()=>[r(S,{label:`活动日期`,required:``},{default:c(()=>[l(`div`,Te,[r(w,{modelValue:z.value.event_start_date,"onUpdate:modelValue":u[7]||=e=>z.value.event_start_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`开始`,style:{width:`100%`}},null,8,[`modelValue`]),u[32]||=l(`span`,{class:`range-sep`},`至`,-1),r(w,{modelValue:z.value.event_end_date,"onUpdate:modelValue":u[8]||=e=>z.value.event_end_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`结束`,style:{width:`100%`}},null,8,[`modelValue`])])]),_:1})]),_:1}),r(C,{span:8},{default:c(()=>[r(S,{label:`报名起止日期`,required:``},{default:c(()=>[l(`div`,Ee,[r(w,{modelValue:z.value.signup_start_date,"onUpdate:modelValue":u[9]||=e=>z.value.signup_start_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`开始`,style:{width:`100%`}},null,8,[`modelValue`]),u[33]||=l(`span`,{class:`range-sep`},`至`,-1),r(w,{modelValue:z.value.signup_end_date,"onUpdate:modelValue":u[10]||=e=>z.value.signup_end_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`结束`,style:{width:`100%`}},null,8,[`modelValue`])])]),_:1})]),_:1}),r(C,{span:8},{default:c(()=>[r(S,{label:`活动地点`},{default:c(()=>[r(g,{modelValue:z.value.location,"onUpdate:modelValue":u[11]||=e=>z.value.location=e,placeholder:`请输入活动地点`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:24},{default:c(()=>[r(S,{class:`session-form-item`},{label:c(()=>[l(`div`,De,[u[35]||=l(`span`,null,`活动场次`,-1),r(h,{type:`primary`,size:`small`,class:`btn-create btn-label-action`,onClick:Ke},{default:c(()=>[...u[34]||=[o(` 添加场次 `,-1)]]),_:1})])]),default:c(()=>[l(`div`,Oe,[(i(!0),e(d,null,f(B.value,(t,n)=>(i(),e(`div`,{key:n,class:`session-row`},[r(g,{modelValue:t.title,"onUpdate:modelValue":e=>t.title=e,placeholder:`场次标题,如:上午场`},null,8,[`modelValue`,`onUpdate:modelValue`]),r(w,{modelValue:t.starts_at,"onUpdate:modelValue":e=>t.starts_at=e,type:`datetime`,"value-format":`YYYY-MM-DD HH:mm`,format:`YYYY-MM-DD HH:mm`,placeholder:`开始时间`,"disabled-date":$e,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`]),r(w,{modelValue:t.ends_at,"onUpdate:modelValue":e=>t.ends_at=e,type:`datetime`,"value-format":`YYYY-MM-DD HH:mm`,format:`YYYY-MM-DD HH:mm`,placeholder:`结束时间`,"disabled-date":$e,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`]),r(g,{modelValue:t.venue,"onUpdate:modelValue":e=>t.venue=e,placeholder:`地点(可选)`},null,8,[`modelValue`,`onUpdate:modelValue`]),r(se,{modelValue:t.capacity,"onUpdate:modelValue":e=>t.capacity=e,min:1,placeholder:`名额`,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`]),r(h,{type:`danger`,plain:``,size:`small`,class:`session-row-delete`,onClick:e=>qe(n)},{default:c(()=>[...u[36]||=[o(` 删除 `,-1)]]),_:1},8,[`onClick`])]))),128))])]),_:1})]),_:1}),r(C,{span:24},{default:c(()=>[r(S,{label:`活动简介`,class:`intro-form-item`},{default:c(()=>[r(ie,{modelValue:z.value.intro_html,"onUpdate:modelValue":u[12]||=e=>z.value.intro_html=e,scope:`activities`,height:260},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`]),r(ge,{modelValue:Be.value,"onUpdate:modelValue":u[17]||=e=>Be.value=e,"course-name":Ve.value?.title||``,"signin-code":He.value},null,8,[`modelValue`,`course-name`,`signin-code`]),r(T,{modelValue:Ie.value,"onUpdate:modelValue":u[21]||=e=>Ie.value=e,title:`活动报名与签到:${V.value?.title||``}`,width:`960px`,top:`5vh`,class:`signup-dialog`},{default:c(()=>[l(`div`,Ae,[l(`div`,je,[H.value.length?(i(),e(`div`,Me,[(i(!0),e(d,null,f(H.value,e=>(i(),m(h,{key:e.id,size:`small`,type:q.value===e.id?`primary`:`default`,onClick:t=>st(e.id)},{default:c(()=>[o(p(Z(e)),1)]),_:2},1032,[`type`,`onClick`]))),128))])):(i(),e(`div`,Ne,`暂无场次,请先在活动中添加场次`)),r(h,{disabled:!H.value.length,onClick:pt},{default:c(()=>[...u[40]||=[o(`导出`,-1)]]),_:1},8,[`disabled`])])]),l(`div`,Pe,[r(g,{modelValue:G.value,"onUpdate:modelValue":u[18]||=e=>G.value=e,clearable:``,placeholder:`搜索姓名、手机、公司…`,style:{width:`220px`},onKeyup:ne(ct,[`enter`])},null,8,[`modelValue`]),r(y,{modelValue:K.value,"onUpdate:modelValue":u[19]||=e=>K.value=e,clearable:``,placeholder:`签到状态`,style:{width:`120px`}},{default:c(()=>[r(v,{label:`已签到`,value:1}),r(v,{label:`未签到`,value:0})]),_:1},8,[`modelValue`]),r(h,{type:`primary`,onClick:ct},{default:c(()=>[...u[41]||=[o(`搜索`,-1)]]),_:1}),r(h,{onClick:lt},{default:c(()=>[...u[42]||=[o(`重置`,-1)]]),_:1})]),r(x,{data:Le.value,size:`small`,style:{"margin-top":`12px`}},{default:c(()=>[r(b,{prop:`name`,label:`姓名`,width:`100`}),r(b,{prop:`mobile`,label:`手机`,width:`130`}),r(b,{prop:`company`,label:`公司`,"min-width":`120`,"show-overflow-tooltip":``}),r(b,{label:`报名时间`,width:`170`},{default:c(({row:e})=>[o(p(X(e.signed_up_at)),1)]),_:1}),r(b,{label:`签到状态`,width:`100`},{default:c(({row:t})=>[Q()?(i(),e(d,{key:0},[t.session_checked_in_at?(i(),m(ue,{key:0,type:`success`,size:`small`},{default:c(()=>[...u[43]||=[o(`已签到`,-1)]]),_:1})):(i(),m(ue,{key:1,type:`info`,size:`small`},{default:c(()=>[...u[44]||=[o(`未签到`,-1)]]),_:1}))],64)):a(``,!0)]),_:1}),r(b,{label:`签到时间`,width:`170`},{default:c(({row:e})=>[o(p(Q()?X(e.session_checked_in_at):``),1)]),_:1}),r(b,{label:`操作`,width:`120`,fixed:`right`},{default:c(({row:e})=>[Q()&&!e.session_checked_in_at?(i(),m(h,{key:0,type:`primary`,link:``,onClick:t=>dt(e)},{default:c(()=>[...u[45]||=[o(` 手动补签 `,-1)]]),_:1},8,[`onClick`])):Q()&&e.session_checked_in_at?(i(),m(h,{key:1,type:`info`,link:``,disabled:``},{default:c(()=>[...u[46]||=[o(` 已完成 `,-1)]]),_:1})):a(``,!0),r(h,{type:`danger`,link:``,onClick:t=>ut(e)},{default:c(()=>[...u[47]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`]),l(`div`,Fe,[r(ae,{"current-page":W.value,"onUpdate:currentPage":u[20]||=e=>W.value=e,layout:`total, prev, pager, next`,total:U.value.total,"page-size":U.value.per_page,onCurrentChange:$},null,8,[`current-page`,`total`,`page-size`])])]),_:1},8,[`modelValue`,`title`]),r(T,{modelValue:J.value,"onUpdate:modelValue":u[23]||=e=>J.value=e,title:`${V.value?.title||``}报名表导出`,width:`720px`,"append-to-body":``},{footer:c(()=>[r(h,{onClick:u[22]||=e=>J.value=!1},{default:c(()=>[...u[50]||=[o(`关闭`,-1)]]),_:1})]),default:c(()=>[re((i(),m(x,{data:ze.value,size:`small`},{default:c(()=>[r(b,{label:`场次`,"min-width":`140`},{default:c(({row:e})=>[o(p(Z(e.session)),1)]),_:1}),r(b,{prop:`signup_count`,label:`报名人数`,width:`100`}),r(b,{prop:`checked_in_count`,label:`已签到`,width:`90`}),r(b,{label:`报名导出`,width:`100`},{default:c(({row:e})=>[r(h,{type:`primary`,link:``,onClick:t=>mt(e)},{default:c(()=>[...u[48]||=[o(`导出报名`,-1)]]),_:1},8,[`onClick`])]),_:1}),r(b,{label:`签到导出`,width:`100`},{default:c(({row:e})=>[r(h,{type:`primary`,link:``,onClick:t=>ht(e)},{default:c(()=>[...u[49]||=[o(`导出签到`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])),[[E,Re.value]])]),_:1},8,[`modelValue`,`title`])],64)}}}),[[`__scopeId`,`data-v-f773acf8`]]);export{k as default}; \ No newline at end of file diff --git a/public/admin/assets/activities-DrhGy18S.css b/public/admin/assets/activities-DrhGy18S.css deleted file mode 100644 index 78b16bc..0000000 --- a/public/admin/assets/activities-DrhGy18S.css +++ /dev/null @@ -1 +0,0 @@ -.date-range[data-v-f773acf8]{align-items:center;gap:6px;width:100%;display:flex}.range-sep[data-v-f773acf8]{color:var(--el-text-color-secondary);flex-shrink:0;font-size:12px}.sessions-block[data-v-f773acf8]{flex-direction:column;gap:8px;width:100%;display:flex}.session-label-row[data-v-f773acf8]{align-items:center;display:inline-flex}.btn-label-action[data-v-f773acf8]{margin-left:12px}.session-form-item[data-v-f773acf8] .el-form-item__content{width:100%}.session-row[data-v-f773acf8]{grid-template-columns:minmax(120px,1.2fr) minmax(160px,1.4fr) minmax(160px,1.4fr) minmax(120px,1fr) minmax(90px,.8fr) auto;align-items:center;gap:8px;width:100%;display:grid}.session-row[data-v-f773acf8] .el-input,.session-row[data-v-f773acf8] .el-date-editor{width:100%;min-width:0}.session-row-delete[data-v-f773acf8]{justify-self:end}.intro-form-item[data-v-f773acf8],.intro-form-item[data-v-f773acf8] .el-form-item__content{width:100%}.dialog-footer-inner[data-v-f773acf8]{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.signup-head[data-v-f773acf8]{margin-bottom:12px}.signup-head-row[data-v-f773acf8]{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.session-tabs[data-v-f773acf8]{flex-wrap:wrap;flex:1;gap:8px;display:flex}.signup-filter-bar[data-v-f773acf8]{margin-top:8px}.sub-toolbar[data-v-f773acf8]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.text-mute[data-v-f773acf8]{color:var(--el-text-color-placeholder);font-size:13px} diff --git a/public/admin/assets/admin-list-CBoToEFo.js b/public/admin/assets/admin-list-DjncsyJC.js similarity index 100% rename from public/admin/assets/admin-list-CBoToEFo.js rename to public/admin/assets/admin-list-DjncsyJC.js diff --git a/public/admin/assets/assets-BPprYL-V.js b/public/admin/assets/assets-D6Wf6qf8.js similarity index 94% rename from public/admin/assets/assets-BPprYL-V.js rename to public/admin/assets/assets-D6Wf6qf8.js index ec6e849..05dccea 100644 --- a/public/admin/assets/assets-BPprYL-V.js +++ b/public/admin/assets/assets-D6Wf6qf8.js @@ -1 +1 @@ -import{r as e}from"./index-DPkd2m0V.js";async function t(t){let{data:n}=await e.get(`/admin/v1/universities`,{params:t});return n.data}async function n(t){let{data:n}=await e.post(`/admin/v1/universities`,t);return n.data}async function r(t,n){let{data:r}=await e.put(`/admin/v1/universities/${t}`,n);return r.data}async function i(t){let{data:n}=await e.delete(`/admin/v1/universities/${t}`);return n}async function a(t){let{data:n}=await e.get(`/admin/v1/papers`,{params:t});return n.data}async function o(){let{data:t}=await e.get(`/admin/v1/papers/filter-options`);return t.data}async function s(t){let{data:n}=await e.get(`/admin/v1/papers/${t}`);return n.data}async function c(t){let{data:n}=await e.delete(`/admin/v1/papers/${t}`);return n}async function l(t,n){let{data:r}=await e.post(`/admin/v1/papers/${t}/teachers`,{teacher_ids:n});return r}async function u(t){let{data:n}=await e.post(`/admin/v1/crawl-jobs/resolve-url`,t);return n.data}async function d(t){let{data:n}=await e.post(`/admin/v1/crawl-jobs`,t,{timeout:3e5});return n.data}async function f(t){let{data:n}=await e.get(`/admin/v1/crawl-jobs/${t}`);return n.data}async function p(t,n){let{data:r}=await e.get(`/admin/v1/crawl-jobs/${t}/items`,{params:n});return r.data}async function m(e,t){let n=[],r=1;for(;;){let i=await p(e,{...t,page:r,page_size:200});if(n.push(...i.items),r>=i.meta.last_page||i.items.length===0)break;r+=1}return n}async function h(t,n){let{data:r}=await e.post(`/admin/v1/crawl-jobs/${t}/import`,n);return r.data}async function g(){let{data:t}=await e.get(`/admin/v1/radar-map`);return t.data}export{m as a,o as c,t as d,h as f,r as h,i,a as l,d as m,n,f as o,u as p,c as r,s,l as t,g as u}; \ No newline at end of file +import{r as e}from"./index-C2NqsgBl.js";async function t(t){let{data:n}=await e.get(`/admin/v1/universities`,{params:t});return n.data}async function n(t){let{data:n}=await e.post(`/admin/v1/universities`,t);return n.data}async function r(t,n){let{data:r}=await e.put(`/admin/v1/universities/${t}`,n);return r.data}async function i(t){let{data:n}=await e.delete(`/admin/v1/universities/${t}`);return n}async function a(t){let{data:n}=await e.get(`/admin/v1/papers`,{params:t});return n.data}async function o(){let{data:t}=await e.get(`/admin/v1/papers/filter-options`);return t.data}async function s(t){let{data:n}=await e.get(`/admin/v1/papers/${t}`);return n.data}async function c(t){let{data:n}=await e.delete(`/admin/v1/papers/${t}`);return n}async function l(t,n){let{data:r}=await e.post(`/admin/v1/papers/${t}/teachers`,{teacher_ids:n});return r}async function u(t){let{data:n}=await e.post(`/admin/v1/crawl-jobs/resolve-url`,t);return n.data}async function d(t){let{data:n}=await e.post(`/admin/v1/crawl-jobs`,t,{timeout:3e5});return n.data}async function f(t){let{data:n}=await e.get(`/admin/v1/crawl-jobs/${t}`);return n.data}async function p(t,n){let{data:r}=await e.get(`/admin/v1/crawl-jobs/${t}/items`,{params:n});return r.data}async function m(e,t){let n=[],r=1;for(;;){let i=await p(e,{...t,page:r,page_size:200});if(n.push(...i.items),r>=i.meta.last_page||i.items.length===0)break;r+=1}return n}async function h(t,n){let{data:r}=await e.post(`/admin/v1/crawl-jobs/${t}/import`,n);return r.data}async function g(){let{data:t}=await e.get(`/admin/v1/radar-map`);return t.data}export{m as a,o as c,t as d,h as f,r as h,i,a as l,d as m,n,f as o,u as p,c as r,s,l as t,g as u}; \ No newline at end of file diff --git a/public/admin/assets/audit-logs-C7aOILQj.js b/public/admin/assets/audit-logs-C7aOILQj.js new file mode 100644 index 0000000..ba23310 --- /dev/null +++ b/public/admin/assets/audit-logs-C7aOILQj.js @@ -0,0 +1 @@ +import{C as e,D as t,E as n,G as r,T as i,X as a,Y as o,at as s,b as c,d as l,ht as u,ot as d,x as f}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{r as p}from"./index-C2NqsgBl.js";import{n as m,t as h}from"./usePageLoad-BucTP1_8.js";async function g(e){let{data:t}=await p.get(`/admin/v1/operation-logs`,{params:e});return t.data}var _={class:`list-page`},v={class:`page-header`},y={class:`list-filter-bar`},b={class:`list-pager`},x=t({__name:`index`,setup(t){let p=u(!1),x=u([]),S=u({current_page:1,per_page:20,total:0}),C=u(1),w=u(``),T=u(``),E=u(``);async function D(){p.value=!0;try{let e=await g({page:C.value,page_size:S.value.per_page,keyword:w.value||void 0,from:T.value||void 0,to:E.value||void 0});x.value=e.items,S.value=e.meta}finally{p.value=!1}}function O(){C.value=1,D()}function k(){w.value=``,T.value=``,E.value=``,C.value=1,D()}return h(D),(t,u)=>{let h=o(`el-input`),g=o(`el-date-picker`),A=o(`el-button`),j=o(`el-table-column`),M=o(`el-table`),N=o(`el-pagination`),P=o(`el-card`),F=a(`loading`);return r(),e(`div`,_,[c(`div`,v,[n(m)]),n(P,{shadow:`never`,class:`admin-list-card`},{default:s(()=>[c(`div`,y,[n(h,{modelValue:w.value,"onUpdate:modelValue":u[0]||=e=>w.value=e,placeholder:`接口路径/操作人`,clearable:``,class:`filter-search`,onKeyup:l(O,[`enter`])},null,8,[`modelValue`]),n(g,{modelValue:T.value,"onUpdate:modelValue":u[1]||=e=>T.value=e,type:`datetime`,placeholder:`开始时间`,"value-format":`YYYY-MM-DD HH:mm:ss`,style:{width:`190px`}},null,8,[`modelValue`]),n(g,{modelValue:E.value,"onUpdate:modelValue":u[2]||=e=>E.value=e,type:`datetime`,placeholder:`结束时间`,"value-format":`YYYY-MM-DD HH:mm:ss`,style:{width:`190px`}},null,8,[`modelValue`]),n(A,{type:`primary`,onClick:O},{default:s(()=>[...u[4]||=[i(`搜索`,-1)]]),_:1}),n(A,{onClick:k},{default:s(()=>[...u[5]||=[i(`重置`,-1)]]),_:1})]),d((r(),f(M,{data:x.value,"row-key":`id`},{default:s(()=>[n(j,{prop:`operated_at`,label:`操作时间`,width:`180`}),n(j,{prop:`operator_name`,label:`操作人`,width:`120`}),n(j,{prop:`http_method`,label:`方法`,width:`80`}),n(j,{prop:`api_path`,label:`接口`,"min-width":`220`,"show-overflow-tooltip":``}),n(j,{prop:`action_label`,label:`操作项`,"min-width":`160`,"show-overflow-tooltip":``}),n(j,{prop:`ip`,label:`IP`,width:`140`}),n(j,{prop:`response_code`,label:`状态码`,width:`90`,align:`center`}),n(j,{prop:`duration_ms`,label:`耗时ms`,width:`90`,align:`center`})]),_:1},8,[`data`])),[[F,p.value]]),c(`div`,b,[n(N,{"current-page":C.value,"onUpdate:currentPage":u[3]||=e=>C.value=e,layout:`total, prev, pager, next`,total:S.value.total,"page-size":S.value.per_page,onCurrentChange:D},null,8,[`current-page`,`total`,`page-size`])])]),_:1})])}}});export{x as default}; \ No newline at end of file diff --git a/public/admin/assets/audit-logs-DuNUv_ZT.js b/public/admin/assets/audit-logs-DuNUv_ZT.js deleted file mode 100644 index f450198..0000000 --- a/public/admin/assets/audit-logs-DuNUv_ZT.js +++ /dev/null @@ -1 +0,0 @@ -import{C as e,D as t,E as n,G as r,T as i,X as a,Y as o,at as s,b as c,d as l,ht as u,ot as d,x as f}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{r as p}from"./index-DPkd2m0V.js";import{t as m}from"./usePageLoad-DFTLo_Lv.js";async function h(e){let{data:t}=await p.get(`/admin/v1/operation-logs`,{params:e});return t.data}var g={class:`list-page`},_={class:`list-filter-bar`},v={class:`list-pager`},y=t({__name:`index`,setup(t){let p=u(!1),y=u([]),b=u({current_page:1,per_page:20,total:0}),x=u(1),S=u(``),C=u(``),w=u(``);async function T(){p.value=!0;try{let e=await h({page:x.value,page_size:b.value.per_page,keyword:S.value||void 0,from:C.value||void 0,to:w.value||void 0});y.value=e.items,b.value=e.meta}finally{p.value=!1}}function E(){x.value=1,T()}function D(){S.value=``,C.value=``,w.value=``,x.value=1,T()}return m(T),(t,u)=>{let m=o(`el-input`),h=o(`el-date-picker`),O=o(`el-button`),k=o(`el-table-column`),A=o(`el-table`),j=o(`el-pagination`),M=o(`el-card`),N=a(`loading`);return r(),e(`div`,g,[u[6]||=c(`div`,{class:`page-header`},[c(`h1`,{class:`page-title`},`操作日志`)],-1),n(M,{shadow:`never`,class:`admin-list-card`},{default:s(()=>[c(`div`,_,[n(m,{modelValue:S.value,"onUpdate:modelValue":u[0]||=e=>S.value=e,placeholder:`接口路径/操作人`,clearable:``,class:`filter-search`,onKeyup:l(E,[`enter`])},null,8,[`modelValue`]),n(h,{modelValue:C.value,"onUpdate:modelValue":u[1]||=e=>C.value=e,type:`datetime`,placeholder:`开始时间`,"value-format":`YYYY-MM-DD HH:mm:ss`,style:{width:`190px`}},null,8,[`modelValue`]),n(h,{modelValue:w.value,"onUpdate:modelValue":u[2]||=e=>w.value=e,type:`datetime`,placeholder:`结束时间`,"value-format":`YYYY-MM-DD HH:mm:ss`,style:{width:`190px`}},null,8,[`modelValue`]),n(O,{type:`primary`,onClick:E},{default:s(()=>[...u[4]||=[i(`搜索`,-1)]]),_:1}),n(O,{onClick:D},{default:s(()=>[...u[5]||=[i(`重置`,-1)]]),_:1})]),d((r(),f(A,{data:y.value,"row-key":`id`},{default:s(()=>[n(k,{prop:`operated_at`,label:`操作时间`,width:`180`}),n(k,{prop:`operator_name`,label:`操作人`,width:`120`}),n(k,{prop:`http_method`,label:`方法`,width:`80`}),n(k,{prop:`api_path`,label:`接口`,"min-width":`220`,"show-overflow-tooltip":``}),n(k,{prop:`action_label`,label:`操作项`,"min-width":`160`,"show-overflow-tooltip":``}),n(k,{prop:`ip`,label:`IP`,width:`140`}),n(k,{prop:`response_code`,label:`状态码`,width:`90`,align:`center`}),n(k,{prop:`duration_ms`,label:`耗时ms`,width:`90`,align:`center`})]),_:1},8,[`data`])),[[N,p.value]]),c(`div`,v,[n(j,{"current-page":x.value,"onUpdate:currentPage":u[3]||=e=>x.value=e,layout:`total, prev, pager, next`,total:b.value.total,"page-size":b.value.per_page,onCurrentChange:T},null,8,[`current-page`,`total`,`page-size`])])]),_:1})])}}});export{y as default}; \ No newline at end of file diff --git a/public/admin/assets/banners-BU8fLCf-.js b/public/admin/assets/banners-BU8fLCf-.js new file mode 100644 index 0000000..547fa76 --- /dev/null +++ b/public/admin/assets/banners-BU8fLCf-.js @@ -0,0 +1 @@ +import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as s,Xt as c,Y as l,at as u,b as d,d as f,f as p,ht as m,m as h,ot as g,q as _,rt as v,tn as y,w as b,x}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as S,l as C,r as w,s as T}from"./index-C2NqsgBl.js";import{n as E,t as D}from"./usePageLoad-BucTP1_8.js";import{n as O,t as ee}from"./RichTextEditor-x18LQ7sl.js";import{s as k}from"./activities-6KKyhCfI.js";import{l as A}from"./courses-CU1ur7hT.js";import{a as j}from"./news-RzJV9AFb.js";import{r as te}from"./admin-list-DjncsyJC.js";var M=T(n({__name:`RemotePagedSelect`,props:{modelValue:{},placeholder:{default:`请搜索选择`},pageSize:{default:20},initialOption:{default:null},fetchPage:{}},emits:[`update:modelValue`],setup(t,{expose:n,emit:a}){let o=t,s=a,c=m(!1),f=m([]),g=m(``),y=m(1),S=m(0);function C(e){let t=o.initialOption;return!t||e.some(e=>e.id===t.id)?e:[t,...e]}async function w(e=1,t=g.value){c.value=!0;try{let n=await o.fetchPage({keyword:t,page:e,pageSize:o.pageSize});f.value=C(n.items),S.value=n.total,y.value=e,g.value=t}finally{c.value=!1}}function T(e){w(1,e)}function E(e){w(e,g.value)}function D(e){e&&w(1,g.value)}return v(()=>o.initialOption,()=>{f.value=C(f.value)}),n({reload:()=>w(1,g.value)}),(n,a)=>{let o=l(`el-option`),m=l(`el-pagination`),g=l(`el-select`);return i(),x(g,{"model-value":t.modelValue,filterable:``,remote:``,"reserve-keyword":``,placeholder:t.placeholder,"remote-method":T,loading:c.value,style:{width:`100%`},"onUpdate:modelValue":a[2]||=e=>s(`update:modelValue`,e),onVisibleChange:D},b({default:u(()=>[(i(!0),e(h,null,_(f.value,e=>(i(),x(o,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:2},[S.value>t.pageSize?{name:`footer`,fn:u(()=>[d(`div`,{class:`remote-paged-select-footer`,onClick:a[0]||=p(()=>{},[`stop`]),onMousedown:a[1]||=p(()=>{},[`stop`])},[r(m,{small:``,layout:`total, prev, pager, next`,total:S.value,"page-size":t.pageSize,"current-page":y.value,onCurrentChange:E},null,8,[`total`,`page-size`,`current-page`])],32)]),key:`0`}:void 0]),1032,[`model-value`,`placeholder`,`loading`])}}}),[[`__scopeId`,`data-v-6c878f54`]]);async function N(e){let{data:t}=await w.get(`/admin/v1/banners`,{params:e});return t.data}async function P(e){let{data:t}=await w.get(`/admin/v1/banners/${e}`);return t.data}async function F(e){let{data:t}=await w.post(`/admin/v1/banners`,e);return t.data}async function I(e,t){let{data:n}=await w.put(`/admin/v1/banners/${e}`,t);return n.data}async function L(e){let{data:t}=await w.delete(`/admin/v1/banners/${e}`);return t}var ne={class:`list-page`},re={class:`page-header`},ie={class:`list-filter-bar`},ae={key:1,class:`text-mute`},oe={class:`table-row-actions`},se={class:`list-pager`},ce={class:`upload-row`},le={key:0,class:`thumb-preview`},ue=[`src`],R=20,z=T(n({__name:`index`,setup(n){let p=[{value:`course`,label:`课程`},{value:`activity`,label:`活动`},{value:`news`,label:`资讯`},{value:`custom`,label:`自定义`}],v=m(!1),b=m(!1),w=m([]),T=m({current_page:1,per_page:20,total:0}),z=m(1),B=m(``),V=m(``),H=m(``),U=m(!1),W=m(null),G=m({type:`course`,course_id:void 0,activity_id:void 0,news_id:void 0,title:``,cover_url:``,content_html:``,sort:0,status:1}),K=m(null),q=m(null),J=m(null),Y=m(0);async function X(){v.value=!0;try{let e={page:z.value,page_size:T.value.per_page};B.value&&(e.keyword=B.value),V.value&&(e.type=V.value),H.value!==``&&(e.status=H.value);let t=await N(e);w.value=t.items,T.value=t.meta}finally{v.value=!1}}function Z(){z.value=1,X()}function de(){B.value=``,V.value=``,H.value=``,z.value=1,X()}async function fe({keyword:e,page:t,pageSize:n}){let r=await A({keyword:e||void 0,page:t,page_size:n});return{items:r.items.map(e=>({id:e.id,label:e.title})),total:r.meta.total}}async function pe({keyword:e,page:t,pageSize:n}){let r=await k({keyword:e||void 0,page:t,page_size:n});return{items:r.items.map(e=>({id:e.id,label:e.title})),total:r.meta.total}}async function me({keyword:e,page:t,pageSize:n}){let r=await j({keyword:e||void 0,page:t,page_size:n,status:1});return{items:r.items.map(e=>({id:e.id,label:e.title})),total:r.meta.total}}function Q(){K.value=null,q.value=null,J.value=null,Y.value+=1}function he(){G.value.course_id=void 0,G.value.activity_id=void 0,G.value.news_id=void 0,G.value.title=``,G.value.cover_url=``,G.value.content_html=``,Q()}function ge(){W.value=null,G.value={type:`course`,course_id:void 0,activity_id:void 0,news_id:void 0,title:``,cover_url:``,content_html:``,sort:0,status:1},Q(),U.value=!0}async function _e(e){W.value=e;let t=await P(e.id);G.value={type:t.type,course_id:t.course_id??void 0,activity_id:t.activity_id??void 0,news_id:t.news_id??void 0,title:t.title||``,cover_url:t.cover_url||``,content_html:t.content_html||``,sort:t.sort,status:t.status},K.value=t.type===`course`&&t.course_id?{id:t.course_id,label:t.course_title||`#${t.course_id}`}:null,q.value=t.type===`activity`&&t.activity_id?{id:t.activity_id,label:t.activity_title||`#${t.activity_id}`}:null,J.value=t.type===`news`&&t.news_id?{id:t.news_id,label:t.news_title||`#${t.news_id}`}:null,Y.value+=1,U.value=!0}function $(){if(G.value.type===`course`&&!G.value.course_id)return C.warning(`请选择课程`),!1;if(G.value.type===`activity`&&!G.value.activity_id)return C.warning(`请选择活动`),!1;if(G.value.type===`news`&&!G.value.news_id)return C.warning(`请选择资讯`),!1;if(G.value.type===`custom`){if(!G.value.title.trim())return C.warning(`请填写标题`),!1;if(!G.value.cover_url)return C.warning(`请上传封面图`),!1}return!0}async function ve(){if(!$())return;let e={type:G.value.type,sort:G.value.sort,status:G.value.status,course_id:G.value.type===`course`?G.value.course_id:null,activity_id:G.value.type===`activity`?G.value.activity_id:null,news_id:G.value.type===`news`?G.value.news_id:null,title:G.value.type===`custom`?G.value.title.trim():null,cover_url:G.value.type===`custom`?G.value.cover_url:null,content_html:G.value.type===`custom`&&G.value.content_html?.replace(/<[^>]+>/g,``).trim()?G.value.content_html:null};b.value=!0;try{W.value?await I(W.value.id,e):await F(e),C.success(`已保存`),U.value=!1,await X()}finally{b.value=!1}}async function ye(e){await S.confirm(`确定删除 Banner「${e.summary||e.id}」?`,`提示`,{type:`warning`}),await L(e.id),C.success(`已删除`),await X()}async function be(e){let t=e.file,n=t instanceof File?t:t.raw;if(!n){e.onError?.(Error(`no file`));return}try{let t=await O(n);G.value.cover_url=t.url,C.success(`封面上传成功`),e.onSuccess?.({})}catch{C.error(`封面上传失败`),e.onError?.(Error(`upload failed`))}}return D(X),(n,m)=>{let S=l(`el-button`),C=l(`el-input`),D=l(`el-option`),O=l(`el-select`),k=l(`el-table-column`),A=l(`el-image`),j=l(`el-table`),N=l(`el-pagination`),P=l(`el-card`),F=l(`el-form-item`),I=l(`el-col`),L=l(`el-input-number`),Q=l(`el-switch`),$=l(`el-row`),xe=l(`el-upload`),Se=l(`el-form`),Ce=l(`el-dialog`),we=s(`loading`);return i(),e(h,null,[d(`div`,ne,[d(`div`,re,[r(E),r(S,{type:`primary`,size:`small`,class:`btn-create`,onClick:ge},{default:u(()=>[...m[15]||=[o(`新增 Banner`,-1)]]),_:1})]),r(P,{shadow:`never`,class:`admin-list-card`},{default:u(()=>[d(`div`,ie,[r(C,{modelValue:B.value,"onUpdate:modelValue":m[0]||=e=>B.value=e,placeholder:`搜索标题、课程、活动、资讯…`,clearable:``,class:`filter-search`,onKeyup:f(Z,[`enter`])},null,8,[`modelValue`]),r(O,{modelValue:V.value,"onUpdate:modelValue":m[1]||=e=>V.value=e,clearable:``,placeholder:`类型`,class:`filter-select`},{default:u(()=>[(i(),e(h,null,_(p,e=>r(D,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`]),r(O,{modelValue:H.value,"onUpdate:modelValue":m[2]||=e=>H.value=e,clearable:``,placeholder:`状态`,class:`filter-select`},{default:u(()=>[r(D,{label:`启用`,value:1}),r(D,{label:`停用`,value:0})]),_:1},8,[`modelValue`]),r(S,{type:`primary`,onClick:Z},{default:u(()=>[...m[16]||=[o(`搜索`,-1)]]),_:1}),r(S,{onClick:de},{default:u(()=>[...m[17]||=[o(`重置`,-1)]]),_:1})]),g((i(),x(j,{data:w.value,"row-key":`id`},{default:u(()=>[r(k,{prop:`type_label`,label:`类型`,width:`90`}),r(k,{prop:`summary`,label:`展示内容`,"min-width":`200`,"show-overflow-tooltip":``}),r(k,{label:`封面`,width:`100`,align:`center`},{default:u(({row:t})=>[t.type===`custom`&&t.cover_url?(i(),x(A,{key:0,src:t.cover_url,"preview-src-list":[t.cover_url],fit:`cover`,class:`list-cover-thumb`,"preview-teleported":``},null,8,[`src`,`preview-src-list`])):(i(),e(`span`,ae,`—`))]),_:1}),r(k,{prop:`sort`,label:`排序`,width:`80`,align:`center`}),r(k,{label:`状态`,width:`90`,align:`center`},{default:u(({row:e})=>[d(`span`,{class:c([`status-badge`,t(te)(e.status)])},y(e.status===1?`启用`:`停用`),3)]),_:1}),r(k,{label:`操作`,width:`160`,fixed:`right`},{default:u(({row:e})=>[d(`div`,oe,[r(S,{class:`btn-action-secondary`,onClick:t=>_e(e)},{default:u(()=>[...m[18]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),r(S,{class:`btn-action-secondary`,onClick:t=>ye(e)},{default:u(()=>[...m[19]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[we,v.value]]),d(`div`,se,[r(N,{"current-page":z.value,"onUpdate:currentPage":m[3]||=e=>z.value=e,layout:`total, prev, pager, next`,total:T.value.total,"page-size":T.value.per_page,onCurrentChange:X},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r(Ce,{modelValue:U.value,"onUpdate:modelValue":m[14]||=e=>U.value=e,title:W.value?`编辑 Banner`:`新增 Banner`,width:`960px`,top:`4vh`,"destroy-on-close":``,class:`banner-dialog`},{footer:u(()=>[r(S,{onClick:m[13]||=e=>U.value=!1},{default:u(()=>[...m[22]||=[o(`取消`,-1)]]),_:1}),r(S,{type:`primary`,loading:b.value,onClick:ve},{default:u(()=>[...m[23]||=[o(`保存`,-1)]]),_:1},8,[`loading`])]),default:u(()=>[r(Se,{"label-position":`top`,class:`banner-form`},{default:u(()=>[r($,{gutter:16},{default:u(()=>[r(I,{span:8},{default:u(()=>[r(F,{label:`类型`,required:``},{default:u(()=>[r(O,{modelValue:G.value.type,"onUpdate:modelValue":m[4]||=e=>G.value.type=e,style:{width:`100%`},onChange:he},{default:u(()=>[(i(),e(h,null,_(p,e=>r(D,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(I,{span:8},{default:u(()=>[r(F,{label:`排序`,required:``},{default:u(()=>[r(L,{modelValue:G.value.sort,"onUpdate:modelValue":m[5]||=e=>G.value.sort=e,min:0,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1}),r(I,{span:8},{default:u(()=>[r(F,{label:`状态`},{default:u(()=>[r(Q,{modelValue:G.value.status,"onUpdate:modelValue":m[6]||=e=>G.value.status=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1}),G.value.type===`course`?(i(),x(F,{key:0,label:`选择课程`,required:``},{default:u(()=>[(i(),x(M,{key:`course-${Y.value}`,modelValue:G.value.course_id,"onUpdate:modelValue":m[7]||=e=>G.value.course_id=e,placeholder:`搜索课程名称或编号`,"page-size":R,"initial-option":K.value,"fetch-page":fe},null,8,[`modelValue`,`initial-option`]))]),_:1})):a(``,!0),G.value.type===`activity`?(i(),x(F,{key:1,label:`选择活动`,required:``},{default:u(()=>[(i(),x(M,{key:`activity-${Y.value}`,modelValue:G.value.activity_id,"onUpdate:modelValue":m[8]||=e=>G.value.activity_id=e,placeholder:`搜索活动名称`,"page-size":R,"initial-option":q.value,"fetch-page":pe},null,8,[`modelValue`,`initial-option`]))]),_:1})):a(``,!0),G.value.type===`news`?(i(),x(F,{key:2,label:`选择资讯`,required:``},{default:u(()=>[(i(),x(M,{key:`news-${Y.value}`,modelValue:G.value.news_id,"onUpdate:modelValue":m[9]||=e=>G.value.news_id=e,placeholder:`搜索已发布资讯标题`,"page-size":R,"initial-option":J.value,"fetch-page":me},null,8,[`modelValue`,`initial-option`]))]),_:1})):a(``,!0),G.value.type===`custom`?(i(),e(h,{key:3},[r(F,{label:`标题`,required:``},{default:u(()=>[r(C,{modelValue:G.value.title,"onUpdate:modelValue":m[10]||=e=>G.value.title=e,placeholder:`请输入 Banner 标题`},null,8,[`modelValue`])]),_:1}),r(F,{label:`封面图`,required:``},{default:u(()=>[d(`div`,ce,[r(xe,{"show-file-list":!1,accept:`image/*`,"http-request":be},{default:u(()=>[r(S,{type:`primary`,plain:``,size:`small`},{default:u(()=>[...m[20]||=[o(`上传图片`,-1)]]),_:1})]),_:1}),G.value.cover_url?(i(),x(S,{key:0,size:`small`,onClick:m[11]||=e=>G.value.cover_url=``},{default:u(()=>[...m[21]||=[o(`移除`,-1)]]),_:1})):a(``,!0)]),G.value.cover_url?(i(),e(`div`,le,[d(`img`,{src:G.value.cover_url,alt:`封面`},null,8,ue)])):a(``,!0)]),_:1}),r(F,{label:`内容`,class:`intro-form-item`},{default:u(()=>[r(ee,{modelValue:G.value.content_html,"onUpdate:modelValue":m[12]||=e=>G.value.content_html=e,scope:`banners`,height:320},null,8,[`modelValue`])]),_:1})],64)):a(``,!0)]),_:1})]),_:1},8,[`modelValue`,`title`])],64)}}}),[[`__scopeId`,`data-v-25044699`]]);export{z as default}; \ No newline at end of file diff --git a/public/admin/assets/banners-BxLn_SEP.js b/public/admin/assets/banners-BxLn_SEP.js deleted file mode 100644 index 8736d97..0000000 --- a/public/admin/assets/banners-BxLn_SEP.js +++ /dev/null @@ -1 +0,0 @@ -import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as s,Xt as ee,Y as c,at as l,b as u,d as te,ht as d,m as f,ot as p,q as m,tn as ne,x as h}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as g,l as _,r as v,s as y}from"./index-DPkd2m0V.js";import{n as b,t as x}from"./RichTextEditor-D53SL5wL.js";import{t as S}from"./usePageLoad-DFTLo_Lv.js";import{s as C}from"./activities-BQAd6xP6.js";import{l as w}from"./courses-BSRvSuD5.js";import{r as re}from"./admin-list-CBoToEFo.js";async function T(e){let{data:t}=await v.get(`/admin/v1/banners`,{params:e});return t.data}async function E(e){let{data:t}=await v.get(`/admin/v1/banners/${e}`);return t.data}async function D(e){let{data:t}=await v.post(`/admin/v1/banners`,e);return t.data}async function O(e,t){let{data:n}=await v.put(`/admin/v1/banners/${e}`,t);return n.data}async function k(e){let{data:t}=await v.delete(`/admin/v1/banners/${e}`);return t}var A={class:`list-page`},j={class:`page-header`},M={class:`list-filter-bar`},N={key:1,class:`text-mute`},ie={class:`table-row-actions`},ae={class:`list-pager`},oe={class:`upload-row`},se={key:0,class:`thumb-preview`},ce=[`src`],P=y(n({__name:`index`,setup(n){let v=[{value:`course`,label:`课程`},{value:`activity`,label:`活动`},{value:`custom`,label:`自定义`}],y=d(!1),P=d(!1),F=d([]),I=d({current_page:1,per_page:20,total:0}),L=d(1),R=d(``),z=d(``),B=d(``),V=d(!1),H=d(null),U=d({type:`course`,course_id:void 0,activity_id:void 0,title:``,cover_url:``,content_html:``,sort:0,status:1}),W=d([]),G=d([]),K=d(!1),q=d(!1);async function J(){y.value=!0;try{let e={page:L.value,page_size:I.value.per_page};R.value&&(e.keyword=R.value),z.value&&(e.type=z.value),B.value!==``&&(e.status=B.value);let t=await T(e);F.value=t.items,I.value=t.meta}finally{y.value=!1}}function Y(){L.value=1,J()}function le(){R.value=``,z.value=``,B.value=``,L.value=1,J()}async function X(e=``){K.value=!0;try{W.value=(await w({keyword:e,page:1,page_size:30})).items.map(e=>({id:e.id,title:e.title}))}finally{K.value=!1}}async function Z(e=``){q.value=!0;try{G.value=(await C({keyword:e,page:1,page_size:30})).items.map(e=>({id:e.id,title:e.title}))}finally{q.value=!1}}function ue(e){U.value.course_id=void 0,U.value.activity_id=void 0,U.value.title=``,U.value.cover_url=``,U.value.content_html=``,e===`course`&&X(),e===`activity`&&Z()}function de(){H.value=null,U.value={type:`course`,course_id:void 0,activity_id:void 0,title:``,cover_url:``,content_html:``,sort:0,status:1},W.value=[],G.value=[],V.value=!0,X()}async function fe(e){H.value=e;let t=await E(e.id);U.value={type:t.type,course_id:t.course_id??void 0,activity_id:t.activity_id??void 0,title:t.title||``,cover_url:t.cover_url||``,content_html:t.content_html||``,sort:t.sort,status:t.status},t.type===`course`&&t.course_id&&(W.value=[{id:t.course_id,title:t.course_title||`#${t.course_id}`}]),t.type===`activity`&&t.activity_id&&(G.value=[{id:t.activity_id,title:t.activity_title||`#${t.activity_id}`}]),V.value=!0,t.type===`course`&&X(),t.type===`activity`&&Z()}function Q(){if(U.value.type===`course`&&!U.value.course_id)return _.warning(`请选择课程`),!1;if(U.value.type===`activity`&&!U.value.activity_id)return _.warning(`请选择活动`),!1;if(U.value.type===`custom`){if(!U.value.title.trim())return _.warning(`请填写标题`),!1;if(!U.value.cover_url)return _.warning(`请上传封面图`),!1}return!0}async function pe(){if(!Q())return;let e={type:U.value.type,sort:U.value.sort,status:U.value.status,course_id:U.value.type===`course`?U.value.course_id:null,activity_id:U.value.type===`activity`?U.value.activity_id:null,title:U.value.type===`custom`?U.value.title.trim():null,cover_url:U.value.type===`custom`?U.value.cover_url:null,content_html:U.value.type===`custom`&&U.value.content_html?.replace(/<[^>]+>/g,``).trim()?U.value.content_html:null};P.value=!0;try{H.value?await O(H.value.id,e):await D(e),_.success(`已保存`),V.value=!1,await J()}finally{P.value=!1}}async function $(e){await g.confirm(`确定删除 Banner「${e.summary||e.id}」?`,`提示`,{type:`warning`}),await k(e.id),_.success(`已删除`),await J()}async function me(e){let t=e.file,n=t instanceof File?t:t.raw;if(!n){e.onError?.(Error(`no file`));return}try{let t=await b(n);U.value.cover_url=t.url,_.success(`封面上传成功`),e.onSuccess?.({})}catch{_.error(`封面上传失败`),e.onError?.(Error(`upload failed`))}}return S(J),(n,d)=>{let g=c(`el-button`),_=c(`el-input`),b=c(`el-option`),S=c(`el-select`),C=c(`el-table-column`),w=c(`el-image`),T=c(`el-table`),E=c(`el-pagination`),D=c(`el-card`),O=c(`el-form-item`),k=c(`el-col`),Q=c(`el-input-number`),he=c(`el-switch`),ge=c(`el-row`),_e=c(`el-upload`),ve=c(`el-form`),ye=c(`el-dialog`),be=s(`loading`);return i(),e(f,null,[u(`div`,A,[u(`div`,j,[d[15]||=u(`h1`,{class:`page-title`},`Banner图管理`,-1),r(g,{type:`primary`,size:`small`,class:`btn-create`,onClick:de},{default:l(()=>[...d[14]||=[o(`新增 Banner`,-1)]]),_:1})]),r(D,{shadow:`never`,class:`admin-list-card`},{default:l(()=>[u(`div`,M,[r(_,{modelValue:R.value,"onUpdate:modelValue":d[0]||=e=>R.value=e,placeholder:`搜索标题、课程、活动…`,clearable:``,class:`filter-search`,onKeyup:te(Y,[`enter`])},null,8,[`modelValue`]),r(S,{modelValue:z.value,"onUpdate:modelValue":d[1]||=e=>z.value=e,clearable:``,placeholder:`类型`,class:`filter-select`},{default:l(()=>[(i(),e(f,null,m(v,e=>r(b,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`]),r(S,{modelValue:B.value,"onUpdate:modelValue":d[2]||=e=>B.value=e,clearable:``,placeholder:`状态`,class:`filter-select`},{default:l(()=>[r(b,{label:`启用`,value:1}),r(b,{label:`停用`,value:0})]),_:1},8,[`modelValue`]),r(g,{type:`primary`,onClick:Y},{default:l(()=>[...d[16]||=[o(`搜索`,-1)]]),_:1}),r(g,{onClick:le},{default:l(()=>[...d[17]||=[o(`重置`,-1)]]),_:1})]),p((i(),h(T,{data:F.value,"row-key":`id`},{default:l(()=>[r(C,{prop:`type_label`,label:`类型`,width:`90`}),r(C,{prop:`summary`,label:`展示内容`,"min-width":`200`,"show-overflow-tooltip":``}),r(C,{label:`封面`,width:`100`,align:`center`},{default:l(({row:t})=>[t.type===`custom`&&t.cover_url?(i(),h(w,{key:0,src:t.cover_url,"preview-src-list":[t.cover_url],fit:`cover`,class:`list-cover-thumb`,"preview-teleported":``},null,8,[`src`,`preview-src-list`])):(i(),e(`span`,N,`—`))]),_:1}),r(C,{prop:`sort`,label:`排序`,width:`80`,align:`center`}),r(C,{label:`状态`,width:`90`,align:`center`},{default:l(({row:e})=>[u(`span`,{class:ee([`status-badge`,t(re)(e.status)])},ne(e.status===1?`启用`:`停用`),3)]),_:1}),r(C,{label:`操作`,width:`160`,fixed:`right`},{default:l(({row:e})=>[u(`div`,ie,[r(g,{class:`btn-action-secondary`,onClick:t=>fe(e)},{default:l(()=>[...d[18]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),r(g,{class:`btn-action-secondary`,onClick:t=>$(e)},{default:l(()=>[...d[19]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[be,y.value]]),u(`div`,ae,[r(E,{"current-page":L.value,"onUpdate:currentPage":d[3]||=e=>L.value=e,layout:`total, prev, pager, next`,total:I.value.total,"page-size":I.value.per_page,onCurrentChange:J},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r(ye,{modelValue:V.value,"onUpdate:modelValue":d[13]||=e=>V.value=e,title:H.value?`编辑 Banner`:`新增 Banner`,width:`960px`,top:`4vh`,"destroy-on-close":``,class:`banner-dialog`},{footer:l(()=>[r(g,{onClick:d[12]||=e=>V.value=!1},{default:l(()=>[...d[22]||=[o(`取消`,-1)]]),_:1}),r(g,{type:`primary`,loading:P.value,onClick:pe},{default:l(()=>[...d[23]||=[o(`保存`,-1)]]),_:1},8,[`loading`])]),default:l(()=>[r(ve,{"label-position":`top`,class:`banner-form`},{default:l(()=>[r(ge,{gutter:16},{default:l(()=>[r(k,{span:8},{default:l(()=>[r(O,{label:`类型`,required:``},{default:l(()=>[r(S,{modelValue:U.value.type,"onUpdate:modelValue":d[4]||=e=>U.value.type=e,style:{width:`100%`},onChange:ue},{default:l(()=>[(i(),e(f,null,m(v,e=>r(b,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(k,{span:8},{default:l(()=>[r(O,{label:`排序`,required:``},{default:l(()=>[r(Q,{modelValue:U.value.sort,"onUpdate:modelValue":d[5]||=e=>U.value.sort=e,min:0,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1}),r(k,{span:8},{default:l(()=>[r(O,{label:`状态`},{default:l(()=>[r(he,{modelValue:U.value.status,"onUpdate:modelValue":d[6]||=e=>U.value.status=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1}),U.value.type===`course`?(i(),h(O,{key:0,label:`选择课程`,required:``},{default:l(()=>[r(S,{modelValue:U.value.course_id,"onUpdate:modelValue":d[7]||=e=>U.value.course_id=e,filterable:``,remote:``,"reserve-keyword":``,placeholder:`搜索课程名称或编号`,"remote-method":X,loading:K.value,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,m(W.value,e=>(i(),h(b,{key:e.id,label:e.title,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`loading`])]),_:1})):a(``,!0),U.value.type===`activity`?(i(),h(O,{key:1,label:`选择活动`,required:``},{default:l(()=>[r(S,{modelValue:U.value.activity_id,"onUpdate:modelValue":d[8]||=e=>U.value.activity_id=e,filterable:``,remote:``,"reserve-keyword":``,placeholder:`搜索活动名称`,"remote-method":Z,loading:q.value,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,m(G.value,e=>(i(),h(b,{key:e.id,label:e.title,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`loading`])]),_:1})):a(``,!0),U.value.type===`custom`?(i(),e(f,{key:2},[r(O,{label:`标题`,required:``},{default:l(()=>[r(_,{modelValue:U.value.title,"onUpdate:modelValue":d[9]||=e=>U.value.title=e,placeholder:`请输入 Banner 标题`},null,8,[`modelValue`])]),_:1}),r(O,{label:`封面图`,required:``},{default:l(()=>[u(`div`,oe,[r(_e,{"show-file-list":!1,accept:`image/*`,"http-request":me},{default:l(()=>[r(g,{type:`primary`,plain:``,size:`small`},{default:l(()=>[...d[20]||=[o(`上传图片`,-1)]]),_:1})]),_:1}),U.value.cover_url?(i(),h(g,{key:0,size:`small`,onClick:d[10]||=e=>U.value.cover_url=``},{default:l(()=>[...d[21]||=[o(`移除`,-1)]]),_:1})):a(``,!0)]),U.value.cover_url?(i(),e(`div`,se,[u(`img`,{src:U.value.cover_url,alt:`封面`},null,8,ce)])):a(``,!0)]),_:1}),r(O,{label:`内容`,class:`intro-form-item`},{default:l(()=>[r(x,{modelValue:U.value.content_html,"onUpdate:modelValue":d[11]||=e=>U.value.content_html=e,scope:`banners`,height:320},null,8,[`modelValue`])]),_:1})],64)):a(``,!0)]),_:1})]),_:1},8,[`modelValue`,`title`])],64)}}}),[[`__scopeId`,`data-v-d8891ff1`]]);export{P as default}; \ No newline at end of file diff --git a/public/admin/assets/banners-Bx_QyLV1.css b/public/admin/assets/banners-Bx_QyLV1.css new file mode 100644 index 0000000..4d8de1e --- /dev/null +++ b/public/admin/assets/banners-Bx_QyLV1.css @@ -0,0 +1 @@ +.remote-paged-select-footer[data-v-6c878f54]{border-top:1px solid var(--el-border-color-lighter);justify-content:center;padding:6px 8px 4px;display:flex}.upload-row[data-v-25044699]{align-items:center;gap:8px;margin-bottom:8px;display:flex}.thumb-preview img[data-v-25044699]{object-fit:cover;border-radius:4px;max-width:240px;max-height:120px}.intro-form-item[data-v-25044699],.intro-form-item[data-v-25044699] .el-form-item__content{width:100%}.list-cover-thumb[data-v-25044699]{border-radius:4px;width:56px;height:32px}.text-mute[data-v-25044699]{color:var(--el-text-color-placeholder)} diff --git a/public/admin/assets/banners-DqMb6tvy.css b/public/admin/assets/banners-DqMb6tvy.css deleted file mode 100644 index 0a8a6bc..0000000 --- a/public/admin/assets/banners-DqMb6tvy.css +++ /dev/null @@ -1 +0,0 @@ -.upload-row[data-v-d8891ff1]{align-items:center;gap:8px;margin-bottom:8px;display:flex}.thumb-preview img[data-v-d8891ff1]{object-fit:cover;border-radius:4px;max-width:240px;max-height:120px}.intro-form-item[data-v-d8891ff1],.intro-form-item[data-v-d8891ff1] .el-form-item__content{width:100%}.list-cover-thumb[data-v-d8891ff1]{border-radius:4px;width:56px;height:32px}.text-mute[data-v-d8891ff1]{color:var(--el-text-color-placeholder)} diff --git a/public/admin/assets/courses-2_zmOKB3.css b/public/admin/assets/courses-2_zmOKB3.css new file mode 100644 index 0000000..a3e76ec --- /dev/null +++ b/public/admin/assets/courses-2_zmOKB3.css @@ -0,0 +1 @@ +.toolbar[data-v-33d4d7f8],.sub-toolbar[data-v-33d4d7f8]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.pager[data-v-33d4d7f8]{justify-content:flex-end;margin-top:16px;display:flex}.signup-head[data-v-33d4d7f8]{margin-bottom:12px}.signup-head-row[data-v-33d4d7f8]{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.checkin-day-tabs[data-v-33d4d7f8]{flex-wrap:wrap;flex:1;gap:8px;display:flex}.signup-filter-bar[data-v-33d4d7f8]{margin-top:8px}.course-steps[data-v-33d4d7f8]{margin-bottom:20px}.step-panel[data-v-33d4d7f8]{min-height:280px}.date-range[data-v-33d4d7f8]{align-items:center;gap:6px;width:100%;display:flex}.range-sep[data-v-33d4d7f8]{color:var(--el-text-color-secondary);flex-shrink:0;font-size:12px}.upload-row[data-v-33d4d7f8]{align-items:center;gap:8px;width:100%;display:flex}.thumb-preview[data-v-33d4d7f8]{max-width:200px;margin-top:8px}.thumb-preview img[data-v-33d4d7f8]{border:1px solid var(--el-border-color);border-radius:4px;max-width:100%}.intro-form-item[data-v-33d4d7f8],.intro-form-item[data-v-33d4d7f8] .el-form-item__content{width:100%}.list-thumb-wrap[data-v-33d4d7f8]{justify-content:center;display:flex}.list-thumb[data-v-33d4d7f8]{border:1px solid var(--el-border-color-lighter);border-radius:4px;width:56px;height:36px}.builder-step[data-v-33d4d7f8]{margin-top:8px}.builder-shell[data-v-33d4d7f8]{align-items:stretch;gap:12px;min-height:400px;display:flex}.builder-side[data-v-33d4d7f8]{border:1px solid var(--el-border-color-lighter);background:var(--el-fill-color-blank);border-radius:6px;flex:0 0 168px;padding:10px}.builder-side.builder-props[data-v-33d4d7f8]{flex:0 0 248px}.builder-center[data-v-33d4d7f8]{border:1px solid var(--el-border-color-lighter);background:var(--el-bg-color-page);border-radius:6px;flex:1;min-width:0;padding:10px;position:relative}.builder-side-title[data-v-33d4d7f8]{margin-bottom:10px;font-size:13px;font-weight:600}.palette-list[data-v-33d4d7f8]{flex-direction:column;gap:8px;display:flex}.palette-item[data-v-33d4d7f8]{background:var(--el-color-primary-light-9);color:var(--el-color-primary);text-align:center;cursor:grab;border:1px solid var(--el-color-primary-light-5);border-radius:6px;padding:8px 10px;font-size:13px}.palette-item[data-v-33d4d7f8]:active{cursor:grabbing}.builder-canvas-head[data-v-33d4d7f8]{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.builder-canvas-grid[data-v-33d4d7f8]{grid-template-columns:repeat(3,1fr);gap:10px;min-height:120px;display:grid}.canvas-field[data-v-33d4d7f8]{border:1px solid var(--el-border-color);cursor:pointer;background:#fff;border-radius:6px;padding:8px;transition:box-shadow .15s}.canvas-field[data-v-33d4d7f8]:hover{box-shadow:0 0 0 1px var(--el-color-primary-light-5)}.canvas-field.active[data-v-33d4d7f8]{box-shadow:0 0 0 2px var(--el-color-primary)}.canvas-field-head[data-v-33d4d7f8]{color:var(--el-text-color-regular);margin-bottom:6px;font-size:12px}.canvas-field-head .req[data-v-33d4d7f8]{color:var(--el-color-danger);margin-right:2px}.canvas-field-body[data-v-33d4d7f8] .el-radio,.canvas-field-body[data-v-33d4d7f8] .el-checkbox{margin-right:8px}.field-ghost[data-v-33d4d7f8]{opacity:.45}.canvas-empty[data-v-33d4d7f8]{color:var(--el-text-color-placeholder);pointer-events:none;font-size:13px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.props-empty[data-v-33d4d7f8]{color:var(--el-text-color-secondary);padding:12px 4px;font-size:13px}.opts-hint[data-v-33d4d7f8]{color:var(--el-text-color-secondary);margin-top:6px;font-size:12px;line-height:1.4}.dialog-footer-inner[data-v-33d4d7f8]{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.multi-field-label[data-v-33d4d7f8]{align-items:center;width:100%;display:flex}.btn-label-action[data-v-33d4d7f8]{margin-left:12px}.recruit-form-item[data-v-33d4d7f8] .el-form-item__content,.speaker-form-item[data-v-33d4d7f8] .el-form-item__content{width:100%}.multi-input-list[data-v-33d4d7f8]{gap:8px;width:100%;display:grid}.multi-input-row[data-v-33d4d7f8]{align-items:center;gap:8px;display:flex}.speaker-block[data-v-33d4d7f8]{border:1px solid var(--el-border-color-lighter);box-sizing:border-box;border-radius:6px;width:100%;margin-bottom:8px;padding:10px 12px}.speaker-field-row[data-v-33d4d7f8],.speaker-field-row[data-v-33d4d7f8] .el-input{width:100%}.speaker-block-head[data-v-33d4d7f8]{justify-content:space-between;align-items:center;margin-bottom:8px;font-size:13px;font-weight:500;display:flex}.speaker-block-actions[data-v-33d4d7f8]{gap:8px;display:flex}.text-mute[data-v-33d4d7f8]{color:var(--el-text-color-placeholder);font-size:13px}.teacher-pick-search[data-v-33d4d7f8]{width:100%} diff --git a/public/admin/assets/courses-BSRvSuD5.js b/public/admin/assets/courses-CU1ur7hT.js similarity index 91% rename from public/admin/assets/courses-BSRvSuD5.js rename to public/admin/assets/courses-CU1ur7hT.js index f13d52d..964dd6d 100644 --- a/public/admin/assets/courses-BSRvSuD5.js +++ b/public/admin/assets/courses-CU1ur7hT.js @@ -1 +1 @@ -import{r as e}from"./index-DPkd2m0V.js";async function t(t){let{data:n}=await e.get(`/admin/v1/courses`,{params:t});return n.data}async function n(t){let{data:n}=await e.get(`/admin/v1/courses/${t}`);return n.data}async function r(t){let{data:n}=await e.post(`/admin/v1/courses`,t);return n.data}async function i(t,n){let{data:r}=await e.put(`/admin/v1/courses/${t}`,n);return r}async function a(t){let{data:n}=await e.delete(`/admin/v1/courses/${t}`);return n}async function o(t){let{data:n}=await e.get(`/admin/v1/courses/${t}/checkin-days`);return n.data.items}async function s(t,n){let{data:r}=await e.get(`/admin/v1/courses/${t}/signups`,{params:n});return r.data}async function c(e,t={}){let n=1,r=[];for(;;){let i=await s(e,{...t,page:n,page_size:200});if(r.push(...i.items),n>=i.meta.last_page||i.items.length===0)break;n+=1}return r}async function l(t,n){let{data:r}=await e.delete(`/admin/v1/courses/${t}/signups/${n}`);return r}async function u(t,n,r){let{data:i}=await e.post(`/admin/v1/courses/${t}/signups/${n}/checkin`,r);return i}export{c as a,s as c,l as i,t as l,r as n,n as o,a as r,o as s,u as t,i as u}; \ No newline at end of file +import{r as e}from"./index-C2NqsgBl.js";async function t(t){let{data:n}=await e.get(`/admin/v1/courses`,{params:t});return n.data}async function n(t){let{data:n}=await e.get(`/admin/v1/courses/${t}`);return n.data}async function r(t){let{data:n}=await e.post(`/admin/v1/courses`,t);return n.data}async function i(t,n){let{data:r}=await e.put(`/admin/v1/courses/${t}`,n);return r}async function a(t){let{data:n}=await e.delete(`/admin/v1/courses/${t}`);return n}async function o(t){let{data:n}=await e.get(`/admin/v1/courses/${t}/checkin-days`);return n.data.items}async function s(t,n){let{data:r}=await e.get(`/admin/v1/courses/${t}/signups`,{params:n});return r.data}async function c(e,t={}){let n=1,r=[];for(;;){let i=await s(e,{...t,page:n,page_size:200});if(r.push(...i.items),n>=i.meta.last_page||i.items.length===0)break;n+=1}return r}async function l(t,n){let{data:r}=await e.delete(`/admin/v1/courses/${t}/signups/${n}`);return r}async function u(t,n,r){let{data:i}=await e.post(`/admin/v1/courses/${t}/signups/${n}/checkin`,r);return i}export{c as a,s as c,l as i,t as l,r as n,n as o,a as r,o as s,u as t,i as u}; \ No newline at end of file diff --git a/public/admin/assets/courses-Cq2fbA5M.js b/public/admin/assets/courses-Cq2fbA5M.js deleted file mode 100644 index 6ccffd5..0000000 --- a/public/admin/assets/courses-Cq2fbA5M.js +++ /dev/null @@ -1,16 +0,0 @@ -import{a as e,i as t,n,r,t as i}from"./rolldown-runtime-BYbx6iT9.js";import{$t as a,At as o,Bt as s,C as c,Ct as l,D as u,Dt as d,E as f,Et as p,Ft as m,G as h,Gt as g,Jt as _,Kt as v,Nt as y,Ot as b,Pt as x,Rt as S,S as C,T as w,Tt as T,Vt as E,Wt as ee,X as D,Xt as te,Y as O,Yt as k,at as A,b as j,d as ne,en as re,f as ie,ht as M,i as ae,kt as N,m as oe,nn as se,o as ce,ot as le,q as ue,qt as de,rt as fe,tn as pe,u as me,wt as he,x as P,y as ge,zt as _e}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as F,l as I,s as ve}from"./index-DPkd2m0V.js";import{r as ye,t as be}from"./RichTextEditor-D53SL5wL.js";import{t as xe}from"./usePageLoad-DFTLo_Lv.js";import{a as Se,c as Ce,i as we,l as Te,n as Ee,o as De,r as Oe,s as ke,t as Ae,u as je}from"./courses-BSRvSuD5.js";import{a as Me,i as Ne,o as Pe,s as Fe}from"./admin-list-CBoToEFo.js";import{f as Ie}from"./teachers-Bl3NKSTv.js";import{a as Le,s as Re}from"./dict-DoDYCi7z.js";import{i as ze,n as Be,o as Ve,r as He,t as Ue}from"./csv-export-DWSNzQbE.js";import{a as We}from"./news-5T8kk3ij.js";function Ge(e){Object.getOwnPropertySymbols(e).forEach(t=>{hi[t]=e[t]})}function Ke(e,t=``){return{type:0,source:t,children:e,helpers:new Set,components:[],directives:[],hoists:[],imports:[],cached:[],temps:0,codegenNode:void 0,loc:bi}}function qe(e,t,n,r,i,a,o,s=!1,c=!1,l=!1,u=bi){return e&&(s?(e.helper(Fr),e.helper(st(e.inSSR,l))):e.helper(ot(e.inSSR,l)),o&&e.helper(qr)),{type:13,tag:t,props:n,children:r,patchFlag:i,dynamicProps:a,directives:o,isBlock:s,disableTracking:c,isComponent:l,loc:u}}function L(e,t=bi){return{type:17,loc:t,elements:e}}function Je(e,t=bi){return{type:15,loc:t,properties:e}}function Ye(e,t){return{type:16,loc:bi,key:v(e)?R(e,!0):e,value:t}}function R(e,t=!1,n=bi,r=0){return{type:4,loc:n,content:e,isStatic:t,constType:t?3:r}}function Xe(e,t){return{type:5,loc:t,content:v(e)?R(e,!1,t):e}}function Ze(e,t=bi){return{type:8,loc:t,children:e}}function z(e,t=[],n=bi){return{type:14,loc:n,callee:e,arguments:t}}function B(e,t=void 0,n=!1,r=!1,i=bi){return{type:18,params:e,returns:t,newline:n,isSlot:r,loc:i}}function Qe(e,t,n,r=!0){return{type:19,test:e,consequent:t,alternate:n,newline:r,loc:bi}}function $e(e,t,n=!1,r=!1){return{type:20,index:e,value:t,needPauseTracking:n,inVOnce:r,needArraySpread:!1,loc:bi}}function et(e){return{type:21,body:e,loc:bi}}function tt(e){return{type:22,elements:e,loc:bi}}function nt(e,t,n){return{type:23,test:e,consequent:t,alternate:n,loc:bi}}function rt(e,t){return{type:24,left:e,right:t,loc:bi}}function it(e){return{type:25,expressions:e,loc:bi}}function at(e){return{type:26,returns:e,loc:bi}}function ot(e,t){return e||t?Rr:zr}function st(e,t){return e||t?Ir:Lr}function ct(e,{helper:t,removeHelper:n,inSSR:r}){e.isBlock||(e.isBlock=!0,n(ot(r,e.isComponent)),t(Fr),t(st(r,e.isComponent)))}function lt(e){return e>=97&&e<=122||e>=65&&e<=90}function ut(e){return e===32||e===10||e===9||e===12||e===13}function dt(e){return e===47||e===62||ut(e)}function ft(e){let t=new Uint8Array(e.length);for(let n=0;n{e&&Ot(e,t)});break;case`RestElement`:Ot(e.argument,t);break;case`AssignmentPattern`:Ot(e.left,t);break}return t}function kt(e){return Mi.includes(e.type)?kt(e.expression):e}function At(e){switch(e){case`Teleport`:case`teleport`:return jr;case`Suspense`:case`suspense`:return Mr;case`KeepAlive`:case`keep-alive`:return Nr;case`BaseTransition`:case`base-transition`:return Pr}}function jt(e,t,n=t.length){return Mt({offset:e.offset,line:e.line,column:e.column},t,n)}function Mt(e,t,n=t.length){let r=0,i=-1;for(let e=0;ee.type===7&&e.name===`bind`&&(!e.arg||e.arg.type!==4||!e.arg.isStatic))}function Rt(e){return e.type===5||e.type===2}function zt(e){return e.type===7&&e.name===`pre`}function Bt(e){return e.type===7&&e.name===`slot`}function Vt(e){return e.type===1&&e.tagType===3}function Ht(e){return e.type===1&&e.tagType===2}function Ut(e,t=[]){if(e&&!v(e)&&e.type===14){let n=e.callee;if(!v(n)&&qi.has(n))return Ut(e.arguments[0],t.concat(e))}return[e,t]}function Wt(e,t,n){let r,i=e.type===13?e.props:e.arguments[2],a=[],o;if(i&&!v(i)&&i.type===14){let e=Ut(i);i=e[0],a=e[1],o=a[a.length-1]}if(i==null||v(i))r=Je([t]);else if(i.type===14){let e=i.arguments[0];!v(e)&&e.type===15?Gt(t,e)||e.properties.unshift(t):i.callee===ri?r=z(n.helper(Qr),[Je([t]),i]):i.arguments.unshift(Je([t])),!r&&(r=i)}else i.type===15?(Gt(t,i)||i.properties.unshift(t),r=i):(r=z(n.helper(Qr),[Je([t]),i]),o&&o.callee===ni&&(o=a[a.length-2]));e.type===13?o?o.arguments[0]=r:e.props=r:o?o.arguments[0]=r:e.arguments[2]=r}function Gt(e,t){let n=!1;if(e.key.type===4){let r=e.key.content;n=t.properties.some(e=>e.key.type===4&&e.key.content===r)}return n}function Kt(e,t){return`_${t}_${e.replace(/[^\w]/g,(t,n)=>t===`-`?`_`:e.charCodeAt(n).toString())}`}function qt(e,t){if(!e||Object.keys(t).length===0)return!1;switch(e.type){case 1:for(let n=0;nqt(e,t));case 11:return qt(e.source,t)?!0:e.children.some(e=>qt(e,t));case 9:return e.branches.some(e=>qt(e,t));case 10:return qt(e.condition,t)?!0:e.children.some(e=>qt(e,t));case 4:return!e.isStatic&&Fi(e.content)&&!!t[e.content];case 8:return e.children.some(e=>s(e)&&qt(e,t));case 5:case 12:return qt(e.content,t);case 2:case 3:case 20:return!1;default:return!1}}function Jt(e){return e.type===14&&e.callee===pi?e.arguments[1].returns:e}function Yt(e){for(let t=0;t{let i=t.start.offset+n;return _n(e,!1,pn(i,i+e.length),0,+!!r)},s={source:o(a.trim(),n.indexOf(a,i.length)),value:void 0,key:void 0,index:void 0,finalized:!1},c=i.trim().replace(sa,``).trim(),l=i.indexOf(c),u=c.match(oa);if(u){c=c.replace(oa,``).trim();let e=u[1].trim(),t;if(e&&(t=n.indexOf(e,l+c.length),s.key=o(e,t,!0)),u[2]){let r=u[2].trim();r&&(s.index=o(r,n.indexOf(r,s.key?t+e.length:l+c.length),!0))}}return c&&(s.value=o(c,l,!0)),s}function $t(e,t){return Zi.slice(e,t)}function en(e){aa.inSFCRoot&&(Qi.innerLoc=pn(e+1,e+1)),fn(Qi);let{tag:t,ns:n}=Qi;n===0&&H.isPreTag(t)&&na++,H.isVoidTag(t)?nn(Qi,e):(W.unshift(Qi),(n===1||n===2)&&(aa.inXML=!0)),Qi=null}function tn(e,t,n){{let t=W[0]&&W[0].tag;t!==`script`&&t!==`style`&&e.includes(`&`)&&(e=H.decodeEntities(e,!1))}let r=W[0]||Xi,i=r.children[r.children.length-1];i&&i.type===2?(i.content+=e,hn(i.loc,n)):r.children.push({type:2,content:e,loc:pn(t,n)})}function nn(e,t,n=!1){n?hn(e.loc,an(t,60)):hn(e.loc,rn(t,62)+1),aa.inSFCRoot&&(e.children.length?e.innerLoc.end=N({},e.children[e.children.length-1].loc.end):e.innerLoc.end=N({},e.innerLoc.start),e.innerLoc.source=$t(e.innerLoc.start.offset,e.innerLoc.end.offset));let{tag:r,ns:i,children:a}=e;if(ra||(r===`slot`?e.tagType=2:on(e)?e.tagType=3:sn(e)&&(e.tagType=1)),aa.inRCDATA||(e.children=ln(a)),i===0&&H.isIgnoreNewlineTag(r)){let e=a[0];e&&e.type===2&&(e.content=e.content.replace(/^\r?\n/,``))}i===0&&H.isPreTag(r)&&na--,ia===e&&(ra=aa.inVPre=!1,ia=null),aa.inXML&&(W[0]?W[0].ns:H.ns)===0&&(aa.inXML=!1);{let t=e.props;if(!aa.inSFCRoot&&mt(`COMPILER_NATIVE_TEMPLATE`,H)&&e.tag===`template`&&!on(e)){let t=W[0]||Xi,n=t.children.indexOf(e);t.children.splice(n,1,...e.children)}let n=t.find(e=>e.type===6&&e.name===`inline-template`);n&&ht(`COMPILER_INLINE_TEMPLATE`,H,n.loc)&&e.children.length&&(n.value={type:2,content:$t(e.children[0].loc.start.offset,e.children[e.children.length-1].loc.end.offset),loc:n.loc})}}function rn(e,t){let n=e;for(;Zi.charCodeAt(n)!==t&&n=0;)n--;return n}function on({tag:e,props:t}){if(e===`template`){for(let e=0;e64&&e<91}function ln(e){let t=H.whitespace!==`preserve`,n=!1;for(let r=0;re.type!==3);return t.length===1&&t[0].type===1&&!Ht(t[0])?t[0]:null}function Cn(e,t,n,r=!1,i=!1){let{children:a}=e,o=[];for(let t=0;t0){if(e>=2){s.codegenNode.patchFlag=-1,o.push(s);continue}}else{let e=s.codegenNode;if(e.type===13){let t=e.patchFlag;if((t===void 0||t===512||t===1)&&En(s,n)>=2){let t=Dn(s);t&&(e.props=n.hoist(t))}e.dynamicProps&&=n.hoist(e.dynamicProps)}}}else if(s.type===12&&(r?0:wn(s,n))>=2){s.codegenNode.type===14&&s.codegenNode.arguments.length>0&&s.codegenNode.arguments.push(`-1`),o.push(s);continue}if(s.type===1){let t=s.tagType===1;t&&n.scopes.vSlot++,Cn(s,e,n,!1,i),t&&n.scopes.vSlot--}else if(s.type===11)Cn(s,e,n,s.children.length===1,!0);else if(s.type===9)for(let t=0;te.key===t||e.key.content===t);return n&&n.value}}o.length&&n.transformHoist&&n.transformHoist(a,n,e)}function wn(e,t){let{constantCache:n}=t;switch(e.type){case 1:if(e.tagType!==0)return 0;let r=n.get(e);if(r!==void 0)return r;let i=e.codegenNode;if(i.type!==13||i.isBlock&&e.tag!==`svg`&&e.tag!==`foreignObject`&&e.tag!==`math`)return 0;if(i.patchFlag===void 0){let r=3,a=En(e,t);if(a===0)return n.set(e,0),0;a1)for(let i=0;in&&(D.childIndex--,D.onNodeRemoved()),D.parent.children.splice(n,1)},onNodeRemoved:p,addIdentifiers(e){},removeIdentifiers(e){},hoist(e){v(e)&&(e=R(e)),D.hoists.push(e);let t=R(`_hoisted_${D.hoists.length}`,!1,e.loc,2);return t.hoisted=e,t},cache(e,t=!1,n=!1){let r=$e(D.cached.length,e,t,n);return D.cached.push(r),r}};return D.filters=new Set,D}function kn(e,t){let n=On(e,t);Mn(e,n),t.hoistStatic&&xn(e,n),t.ssr||An(e,n),e.helpers=new Set([...n.helpers.keys()]),e.components=[...n.components],e.directives=[...n.directives],e.imports=n.imports,e.hoists=n.hoists,e.temps=n.temps,e.cached=n.cached,e.transformed=!0,e.filters=[...n.filters]}function An(e,t){let{helper:n}=t,{children:r}=e;if(r.length===1){let n=Sn(e);if(n&&n.codegenNode){let r=n.codegenNode;r.type===13&&ct(r,t),e.codegenNode=r}else e.codegenNode=r[0]}else r.length>1&&(e.codegenNode=qe(t,n(Ar),void 0,e.children,64,void 0,void 0,!0,void 0,!1))}function jn(e,t){let n=0,r=()=>{n--};for(;nt===e:t=>e.test(t);return(e,r)=>{if(e.type===1){let{props:i}=e;if(e.tagType===3&&i.some(Bt))return;let a=[];for(let o=0;o0,p=!a&&r!==`module`;if(In(e,n),i(`function ${u?`ssrRender`:`render`}(${(u?[`_ctx`,`_push`,`_parent`,`_attrs`]:[`_ctx`,`_cache`]).join(`, `)}) {`),o(),p&&(i(`with (_ctx) {`),o(),f&&(i(`const { ${d.map(fa).join(`, `)} } = _Vue -`,-1),c())),e.components.length&&(Ln(e.components,`component`,n),(e.directives.length||e.temps>0)&&c()),e.directives.length&&(Ln(e.directives,`directive`,n),e.temps>0&&c()),e.filters&&e.filters.length&&(c(),Ln(e.filters,`filter`,n),c()),e.temps>0){i(`let `);for(let t=0;t0?`, `:``}_temp${t}`)}return(e.components.length||e.directives.length||e.temps)&&(i(` -`,0),c()),u||i(`return `),e.codegenNode?Vn(e.codegenNode,n):i(`null`),p&&(s(),i(`}`)),s(),i(`}`),{ast:e,code:n.code,preamble:``,map:n.map?n.map.toJSON():void 0}}function In(e,t){let{ssr:n,prefixIdentifiers:r,push:i,newline:a,runtimeModuleName:o,runtimeGlobalName:s,ssrRuntimeModuleName:c}=t,l=s,u=Array.from(e.helpers);u.length>0&&(i(`const _Vue = ${l} -`,-1),e.hoists.length&&i(`const { ${[Rr,zr,Br,Vr,Hr].filter(e=>u.includes(e)).map(fa).join(`, `)} } = _Vue -`,-1)),Rn(e.hoists,t),a(),i(`return `)}function Ln(e,t,{helper:n,push:r,newline:i,isTS:a}){let o=n(t===`filter`?Kr:t===`component`?Ur:Gr);for(let n=0;n3||!1;t.push(`[`),n&&t.indent(),Bn(e,t,n),n&&t.deindent(),t.push(`]`)}function Bn(e,t,n=!1,r=!0){let{push:i,newline:a}=t;for(let o=0;oe||`null`)}function Xn(e,t){let{push:n,helper:r,pure:i}=t,a=v(e.callee)?e.callee:r(e.callee);i&&n(da),n(a+`(`,-2,e),Bn(e.arguments,t),n(`)`)}function Zn(e,t){let{push:n,indent:r,deindent:i,newline:a}=t,{properties:o}=e;if(!o.length){n(`{}`,-2,e);return}let s=o.length>1||!1;n(s?`{`:`{ `),s&&r();for(let e=0;e `),(c||s)&&(n(`{`),r()),o?(c&&n(`return `),x(o)?zn(o,t):Vn(o,t)):s&&Vn(s,t),(c||s)&&(i(),n(`}`)),l&&(e.isNonScopedSlot&&n(`, undefined, true`),n(`)`))}function er(e,t){let{test:n,consequent:r,alternate:i,newline:a}=e,{push:o,indent:s,deindent:c,newline:l}=t;if(n.type===4){let e=!Fi(n.content);e&&o(`(`),Un(n,t),e&&o(`)`)}else o(`(`),Vn(n,t),o(`)`);a&&s(),t.indentLevel++,a||o(` `),o(`? `),Vn(r,t),t.indentLevel--,a&&l(),a||o(` `),o(`: `);let u=i.type===19;u||t.indentLevel++,Vn(i,t),u||t.indentLevel--,a&&c(!0)}function tr(e,t){let{push:n,helper:r,indent:i,deindent:a,newline:o}=t,{needPauseTracking:s,needArraySpread:c}=e;c&&n(`[...(`),n(`_cache[${e.index}] || (`),s&&(i(),n(`${r(si)}(-1`),e.inVOnce&&n(`, true`),n(`),`),o(),n(`(`)),n(`_cache[${e.index}] = `),Vn(e.value,t),s&&(n(`).cacheIndex = ${e.index},`),o(),n(`${r(si)}(1),`),o(),n(`_cache[${e.index}]`),a()),n(`)`),c&&n(`)]`)}function nr(e,t,n=!1,r=!1,i=Object.create(t.identifiers)){return e}function rr(e){return v(e)?e:e.type===4?e.content:e.children.map(rr).join(``)}function ir(e,t,n,r){if(t.name!==`else`&&(!t.exp||!t.exp.content.trim())){let r=t.exp?t.exp.loc:e.loc;n.onError(V(28,t.loc)),t.exp=R(`true`,!1,r)}if(t.name===`if`){let i=ar(e,t),a={type:9,loc:mn(e.loc),branches:[i]};if(n.replaceNode(a),r)return r(a,i,!0)}else{let i=n.parent.children,a=i.indexOf(e);for(;a-->=-1;){let o=i[a];if(o&&Zt(o)){n.removeNode(o);continue}if(o&&o.type===9){(t.name===`else-if`||t.name===`else`)&&o.branches[o.branches.length-1].condition===void 0&&n.onError(V(30,e.loc)),n.removeNode();let i=ar(e,t);o.branches.push(i);let a=r&&r(o,i,!1);Mn(i,n),a&&a(),n.currentNode=null}else n.onError(V(30,e.loc));break}}}function ar(e,t){let n=e.tagType===3;return{type:10,loc:e.loc,condition:t.name===`else`?void 0:t.exp,children:n&&!Pt(e,`for`)?e.children:[e],userKey:Ft(e,`key`),isTemplateIf:n}}function or(e,t,n){return e.condition?Qe(e.condition,sr(e,t,n),z(n.helper(Br),[`""`,`true`])):sr(e,t,n)}function sr(e,t,n){let{helper:r}=n,i=Ye(`key`,R(`${t}`,!1,bi,2)),{children:a}=e,o=a[0];if(a.length!==1||o.type!==1)if(a.length===1&&o.type===11){let e=o.codegenNode;return Wt(e,i,n),e}else return qe(n,r(Ar),Je([i]),a,64,void 0,void 0,!0,!1,!1,e.loc);else{let e=o.codegenNode,t=Jt(e);return t.type===13&&ct(t,n),Wt(t,i,n),e}}function cr(e){for(;;)if(e.type===19)if(e.alternate.type===19)e=e.alternate;else return e;else e.type===20&&(e=e.value)}function lr(e,t,n,r){if(!t.exp){n.onError(V(31,t.loc));return}let i=t.forParseResult;if(!i){n.onError(V(32,t.loc));return}ur(i,n);let{addIdentifiers:a,removeIdentifiers:o,scopes:s}=n,{source:c,value:l,key:u,index:d}=i,f={type:11,loc:t.loc,source:c,valueAlias:l,keyAlias:u,objectIndexAlias:d,parseResult:i,children:Vt(e)?e.children:[e]};n.replaceNode(f),s.vFor++;let p=r&&r(f);return()=>{s.vFor--,p&&p()}}function ur(e,t){e.finalized||=!0}function dr({value:e,key:t,index:n},r=[]){return fr([e,t,n,...r])}function fr(e){let t=e.length;for(;t--&&!e[t];);return e.slice(0,t+1).map((e,t)=>e||R(`_`.repeat(t+1),!1))}function pr(e,t,n=ya){t.helper(ui);let{children:r,loc:i}=e,a=[],o=[],s=t.scopes.vSlot>0||t.scopes.vFor>0,c=Pt(e,`slot`,!0);if(c){let{arg:e,exp:t}=c;e&&!Ni(e)&&(s=!0),a.push(Ye(e||R(`default`,!0),n(t,void 0,r,i)))}let l=!1,u=!1,d=[],f=new Set,p=0;for(let e=0;e{let a=n(e,void 0,r,i);return t.compatConfig&&(a.isNonScopedSlot=!0),Ye(`default`,a)};l?d.length&&!d.every(Xt)&&(u?t.onError(V(39,d[0].loc)):a.push(e(void 0,d))):a.push(e(void 0,r))}let m=s?2:hr(e.children)?3:1,h=Je(a.concat(Ye(`_`,R(m+``,!1))),i);return o.length&&(h=z(t.helper(Xr),[h,L(o)])),{slots:h,hasDynamicSlots:s}}function mr(e,t,n){let r=[Ye(`name`,e),Ye(`fn`,t)];return n!=null&&r.push(Ye(`key`,R(String(n),!0))),Je(r)}function hr(e){for(let t=0;t0,p=!1,h=0,g=!1,_=!1,v=!1,y=!1,b=!1,x=!1,S=[],C=e=>{l.length&&(u.push(Je(vr(l),s)),l=[]),e&&u.push(e)},w=()=>{t.scopes.vFor>0&&l.push(Ye(R(`ref_for`,!0),R(`true`)))},T=({key:e,value:n})=>{if(Ni(e)){let a=e.content,o=E(a);if(o&&(!r||i)&&a.toLowerCase()!==`onclick`&&a!==`onUpdate:modelValue`&&!ee(a)&&(y=!0),o&&ee(a)&&(x=!0),o&&n.type===14&&(n=n.arguments[0]),n.type===20||(n.type===4||n.type===8)&&wn(n,t)>0)return;a===`ref`?g=!0:a===`class`?_=!0:a===`style`?v=!0:a!==`key`&&!S.includes(a)&&S.push(a),r&&(a===`class`||a===`style`)&&!S.includes(a)&&S.push(a)}else b=!0};for(let i=0;ie.content===`prop`)&&(h|=32);let S=t.directiveTransforms[n];if(S){let{props:n,needRuntime:r}=S(c,e,t);!a&&n.forEach(T),x&&i&&!Ni(i)?C(Je(n,s)):l.push(...n),r&&(d.push(c),de(r)&&ba.set(c,r))}else m(n)||(d.push(c),f&&(p=!0))}}let D;if(u.length?(C(),D=u.length>1?z(t.helper(Qr),u,s):u[0]):l.length&&(D=Je(vr(l),s)),b?h|=16:(_&&!r&&(h|=2),v&&!r&&(h|=4),S.length&&(h|=8),y&&(h|=32)),!p&&(h===0||h===32)&&(g||x||d.length>0)&&(h|=512),!t.inSSR&&D)switch(D.type){case 15:let e=-1,n=-1,r=!1;for(let t=0;tYe(e,t)),i))}return L(n,e.loc)}function xr(e){let t=`[`;for(let n=0,r=e.length;n0){let{props:n,directives:a}=_r(e,t,i,!1,!1);r=n,a.length&&t.onError(V(36,a[0].loc))}return{slotName:n,slotProps:r}}function wr(e=[]){return{props:e}}function Tr(e,t){if(e.type===4)Er(e,t);else for(let n=0;n=0&&(t=n.charAt(e),t===` `);e--);(!t||!Aa.test(t))&&(o=!0)}}m===void 0?m=n.slice(0,p).trim():u!==0&&g();function g(){h.push(n.slice(u,p).trim()),u=p+1}if(h.length){for(p=0;p{y(),Ar=Symbol(``),jr=Symbol(``),Mr=Symbol(``),Nr=Symbol(``),Pr=Symbol(``),Fr=Symbol(``),Ir=Symbol(``),Lr=Symbol(``),Rr=Symbol(``),zr=Symbol(``),Br=Symbol(``),Vr=Symbol(``),Hr=Symbol(``),Ur=Symbol(``),Wr=Symbol(``),Gr=Symbol(``),Kr=Symbol(``),qr=Symbol(``),Jr=Symbol(``),Yr=Symbol(``),Xr=Symbol(``),Zr=Symbol(``),Qr=Symbol(``),$r=Symbol(``),ei=Symbol(``),ti=Symbol(``),ni=Symbol(``),ri=Symbol(``),ii=Symbol(``),ai=Symbol(``),oi=Symbol(``),si=Symbol(``),ci=Symbol(``),li=Symbol(``),ui=Symbol(``),di=Symbol(``),fi=Symbol(``),pi=Symbol(``),mi=Symbol(``),hi={[Ar]:`Fragment`,[jr]:`Teleport`,[Mr]:`Suspense`,[Nr]:`KeepAlive`,[Pr]:`BaseTransition`,[Fr]:`openBlock`,[Ir]:`createBlock`,[Lr]:`createElementBlock`,[Rr]:`createVNode`,[zr]:`createElementVNode`,[Br]:`createCommentVNode`,[Vr]:`createTextVNode`,[Hr]:`createStaticVNode`,[Ur]:`resolveComponent`,[Wr]:`resolveDynamicComponent`,[Gr]:`resolveDirective`,[Kr]:`resolveFilter`,[qr]:`withDirectives`,[Jr]:`renderList`,[Yr]:`renderSlot`,[Xr]:`createSlots`,[Zr]:`toDisplayString`,[Qr]:`mergeProps`,[$r]:`normalizeClass`,[ei]:`normalizeStyle`,[ti]:`normalizeProps`,[ni]:`guardReactiveProps`,[ri]:`toHandlers`,[ii]:`camelize`,[ai]:`capitalize`,[oi]:`toHandlerKey`,[si]:`setBlockTracking`,[ci]:`pushScopeId`,[li]:`popScopeId`,[ui]:`withCtx`,[di]:`unref`,[fi]:`isRef`,[pi]:`withMemo`,[mi]:`isMemoSame`},gi={HTML:0,0:`HTML`,SVG:1,1:`SVG`,MATH_ML:2,2:`MATH_ML`},_i={ROOT:0,0:`ROOT`,ELEMENT:1,1:`ELEMENT`,TEXT:2,2:`TEXT`,COMMENT:3,3:`COMMENT`,SIMPLE_EXPRESSION:4,4:`SIMPLE_EXPRESSION`,INTERPOLATION:5,5:`INTERPOLATION`,ATTRIBUTE:6,6:`ATTRIBUTE`,DIRECTIVE:7,7:`DIRECTIVE`,COMPOUND_EXPRESSION:8,8:`COMPOUND_EXPRESSION`,IF:9,9:`IF`,IF_BRANCH:10,10:`IF_BRANCH`,FOR:11,11:`FOR`,TEXT_CALL:12,12:`TEXT_CALL`,VNODE_CALL:13,13:`VNODE_CALL`,JS_CALL_EXPRESSION:14,14:`JS_CALL_EXPRESSION`,JS_OBJECT_EXPRESSION:15,15:`JS_OBJECT_EXPRESSION`,JS_PROPERTY:16,16:`JS_PROPERTY`,JS_ARRAY_EXPRESSION:17,17:`JS_ARRAY_EXPRESSION`,JS_FUNCTION_EXPRESSION:18,18:`JS_FUNCTION_EXPRESSION`,JS_CONDITIONAL_EXPRESSION:19,19:`JS_CONDITIONAL_EXPRESSION`,JS_CACHE_EXPRESSION:20,20:`JS_CACHE_EXPRESSION`,JS_BLOCK_STATEMENT:21,21:`JS_BLOCK_STATEMENT`,JS_TEMPLATE_LITERAL:22,22:`JS_TEMPLATE_LITERAL`,JS_IF_STATEMENT:23,23:`JS_IF_STATEMENT`,JS_ASSIGNMENT_EXPRESSION:24,24:`JS_ASSIGNMENT_EXPRESSION`,JS_SEQUENCE_EXPRESSION:25,25:`JS_SEQUENCE_EXPRESSION`,JS_RETURN_STATEMENT:26,26:`JS_RETURN_STATEMENT`},vi={ELEMENT:0,0:`ELEMENT`,COMPONENT:1,1:`COMPONENT`,SLOT:2,2:`SLOT`,TEMPLATE:3,3:`TEMPLATE`},yi={NOT_CONSTANT:0,0:`NOT_CONSTANT`,CAN_SKIP_PATCH:1,1:`CAN_SKIP_PATCH`,CAN_CACHE:2,2:`CAN_CACHE`,CAN_STRINGIFY:3,3:`CAN_STRINGIFY`},bi={start:{line:1,column:1,offset:0},end:{line:1,column:1,offset:0},source:``},xi=new Uint8Array([123,123]),Si=new Uint8Array([125,125]),Ci={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101]),TextareaEnd:new Uint8Array([60,47,116,101,120,116,97,114,101,97])},wi=class{constructor(e,t){this.stack=e,this.cbs=t,this.state=1,this.buffer=``,this.sectionStart=0,this.index=0,this.entityStart=0,this.baseState=1,this.inRCDATA=!1,this.inXML=!1,this.inVPre=!1,this.newlines=[],this.mode=0,this.delimiterOpen=xi,this.delimiterClose=Si,this.delimiterIndex=-1,this.currentSequence=void 0,this.sequenceIndex=0}get inSFCRoot(){return this.mode===2&&this.stack.length===0}reset(){this.state=1,this.mode=0,this.buffer=``,this.sectionStart=0,this.index=0,this.baseState=1,this.inRCDATA=!1,this.currentSequence=void 0,this.newlines.length=0,this.delimiterOpen=xi,this.delimiterClose=Si}getPos(e){let t=1,n=e+1,r=this.newlines.length,i=-1;if(r>100){let t=-1,n=r;for(;t+1>>1;this.newlines[r]=0;t--)if(e>this.newlines[t]){i=t;break}return i>=0&&(t=i+2,n=e-this.newlines[i]),{column:n,line:t,offset:e}}peek(){return this.buffer.charCodeAt(this.index+1)}stateText(e){e===60?(this.index>this.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=5,this.sectionStart=this.index):!this.inVPre&&e===this.delimiterOpen[0]&&(this.state=2,this.delimiterIndex=0,this.stateInterpolationOpen(e))}stateInterpolationOpen(e){if(e===this.delimiterOpen[this.delimiterIndex])if(this.delimiterIndex===this.delimiterOpen.length-1){let e=this.index+1-this.delimiterOpen.length;e>this.sectionStart&&this.cbs.ontext(this.sectionStart,e),this.state=3,this.sectionStart=e}else this.delimiterIndex++;else this.inRCDATA?(this.state=32,this.stateInRCDATA(e)):(this.state=1,this.stateText(e))}stateInterpolation(e){e===this.delimiterClose[0]&&(this.state=4,this.delimiterIndex=0,this.stateInterpolationClose(e))}stateInterpolationClose(e){e===this.delimiterClose[this.delimiterIndex]?this.delimiterIndex===this.delimiterClose.length-1?(this.cbs.oninterpolation(this.sectionStart,this.index+1),this.inRCDATA?this.state=32:this.state=1,this.sectionStart=this.index+1):this.delimiterIndex++:(this.state=3,this.stateInterpolation(e))}stateSpecialStartSequence(e){let t=this.sequenceIndex===this.currentSequence.length;if(!(t?dt(e):(e|32)===this.currentSequence[this.sequenceIndex]))this.inRCDATA=!1;else if(!t){this.sequenceIndex++;return}this.sequenceIndex=0,this.state=6,this.stateInTagName(e)}stateInRCDATA(e){if(this.sequenceIndex===this.currentSequence.length){if(e===62||ut(e)){let t=this.index-this.currentSequence.length;if(this.sectionStart=e||(this.state===28?this.currentSequence===Ci.CdataEnd?this.cbs.oncdata(this.sectionStart,e):this.cbs.oncomment(this.sectionStart,e):this.state===6||this.state===11||this.state===18||this.state===17||this.state===12||this.state===13||this.state===14||this.state===15||this.state===16||this.state===20||this.state===19||this.state===21||this.state===9||this.cbs.ontext(this.sectionStart,e))}emitCodePoint(e,t){}},Ti={COMPILER_IS_ON_ELEMENT:`COMPILER_IS_ON_ELEMENT`,COMPILER_V_BIND_SYNC:`COMPILER_V_BIND_SYNC`,COMPILER_V_BIND_OBJECT_ORDER:`COMPILER_V_BIND_OBJECT_ORDER`,COMPILER_V_ON_NATIVE:`COMPILER_V_ON_NATIVE`,COMPILER_V_IF_V_FOR_PRECEDENCE:`COMPILER_V_IF_V_FOR_PRECEDENCE`,COMPILER_NATIVE_TEMPLATE:`COMPILER_NATIVE_TEMPLATE`,COMPILER_INLINE_TEMPLATE:`COMPILER_INLINE_TEMPLATE`,COMPILER_FILTERS:`COMPILER_FILTERS`},Ei={COMPILER_IS_ON_ELEMENT:{message:`Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".`,link:`https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html`},COMPILER_V_BIND_SYNC:{message:e=>`.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${e}.sync\` should be changed to \`v-model:${e}\`.`,link:`https://v3-migration.vuejs.org/breaking-changes/v-model.html`},COMPILER_V_BIND_OBJECT_ORDER:{message:`v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.`,link:`https://v3-migration.vuejs.org/breaking-changes/v-bind.html`},COMPILER_V_ON_NATIVE:{message:`.native modifier for v-on has been removed as is no longer necessary.`,link:`https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html`},COMPILER_V_IF_V_FOR_PRECEDENCE:{message:`v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with