master
lion 5 days ago
parent 63fd420f05
commit 28d68664df

@ -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<string, mixed> $payload
* @param array<string, mixed> $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<string, mixed> $payload
* @param array<string, mixed> $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,

@ -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')

@ -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();

@ -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,
};

@ -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;

@ -0,0 +1,24 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('banners', function (Blueprint $table) {
$table->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');
});
}
};

@ -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};
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};

@ -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};
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};

@ -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};
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};

@ -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}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -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}

@ -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};
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};

@ -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};

@ -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};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -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)}

@ -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)}

@ -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%}

@ -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};
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};

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
.toolbar[data-v-a9f4f428],.sub-toolbar[data-v-a9f4f428]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.pager[data-v-a9f4f428]{justify-content:flex-end;margin-top:16px;display:flex}.signup-head[data-v-a9f4f428]{margin-bottom:12px}.signup-head-row[data-v-a9f4f428]{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.checkin-day-tabs[data-v-a9f4f428]{flex-wrap:wrap;flex:1;gap:8px;display:flex}.signup-filter-bar[data-v-a9f4f428]{margin-top:8px}.course-steps[data-v-a9f4f428]{margin-bottom:20px}.step-panel[data-v-a9f4f428]{min-height:280px}.date-range[data-v-a9f4f428]{align-items:center;gap:6px;width:100%;display:flex}.range-sep[data-v-a9f4f428]{color:var(--el-text-color-secondary);flex-shrink:0;font-size:12px}.upload-row[data-v-a9f4f428]{align-items:center;gap:8px;width:100%;display:flex}.thumb-preview[data-v-a9f4f428]{max-width:200px;margin-top:8px}.thumb-preview img[data-v-a9f4f428]{border:1px solid var(--el-border-color);border-radius:4px;max-width:100%}.intro-form-item[data-v-a9f4f428],.intro-form-item[data-v-a9f4f428] .el-form-item__content{width:100%}.list-thumb-wrap[data-v-a9f4f428]{justify-content:center;display:flex}.list-thumb[data-v-a9f4f428]{border:1px solid var(--el-border-color-lighter);border-radius:4px;width:56px;height:36px}.builder-step[data-v-a9f4f428]{margin-top:8px}.builder-shell[data-v-a9f4f428]{align-items:stretch;gap:12px;min-height:400px;display:flex}.builder-side[data-v-a9f4f428]{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-a9f4f428]{flex:0 0 248px}.builder-center[data-v-a9f4f428]{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-a9f4f428]{margin-bottom:10px;font-size:13px;font-weight:600}.palette-list[data-v-a9f4f428]{flex-direction:column;gap:8px;display:flex}.palette-item[data-v-a9f4f428]{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-a9f4f428]:active{cursor:grabbing}.builder-canvas-head[data-v-a9f4f428]{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.builder-canvas-grid[data-v-a9f4f428]{grid-template-columns:repeat(3,1fr);gap:10px;min-height:120px;display:grid}.canvas-field[data-v-a9f4f428]{border:1px solid var(--el-border-color);cursor:pointer;background:#fff;border-radius:6px;padding:8px;transition:box-shadow .15s}.canvas-field[data-v-a9f4f428]:hover{box-shadow:0 0 0 1px var(--el-color-primary-light-5)}.canvas-field.active[data-v-a9f4f428]{box-shadow:0 0 0 2px var(--el-color-primary)}.canvas-field-head[data-v-a9f4f428]{color:var(--el-text-color-regular);margin-bottom:6px;font-size:12px}.canvas-field-head .req[data-v-a9f4f428]{color:var(--el-color-danger);margin-right:2px}.canvas-field-body[data-v-a9f4f428] .el-radio,.canvas-field-body[data-v-a9f4f428] .el-checkbox{margin-right:8px}.field-ghost[data-v-a9f4f428]{opacity:.45}.canvas-empty[data-v-a9f4f428]{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-a9f4f428]{color:var(--el-text-color-secondary);padding:12px 4px;font-size:13px}.opts-hint[data-v-a9f4f428]{color:var(--el-text-color-secondary);margin-top:6px;font-size:12px;line-height:1.4}.dialog-footer-inner[data-v-a9f4f428]{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.multi-field-label[data-v-a9f4f428]{align-items:center;width:100%;display:flex}.btn-label-action[data-v-a9f4f428]{margin-left:12px}.recruit-form-item[data-v-a9f4f428] .el-form-item__content,.speaker-form-item[data-v-a9f4f428] .el-form-item__content{width:100%}.multi-input-list[data-v-a9f4f428]{gap:8px;width:100%;display:grid}.multi-input-row[data-v-a9f4f428]{align-items:center;gap:8px;display:flex}.speaker-block[data-v-a9f4f428]{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-a9f4f428],.speaker-field-row[data-v-a9f4f428] .el-input{width:100%}.speaker-block-head[data-v-a9f4f428]{justify-content:space-between;align-items:center;margin-bottom:8px;font-size:13px;font-weight:500;display:flex}.speaker-block-actions[data-v-a9f4f428]{gap:8px;display:flex}.text-mute[data-v-a9f4f428]{color:var(--el-text-color-placeholder);font-size:13px}.teacher-pick-search[data-v-a9f4f428]{width:100%}

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
.crawler-form[data-v-d1bf4276]{max-width:640px}.crawl-resolve-hint[data-v-d1bf4276]{color:var(--el-text-color-secondary);margin:6px 0 0;font-size:12px}.result-alert[data-v-d1bf4276]{max-width:720px;margin-top:16px}.result-alert p[data-v-d1bf4276]{margin:4px 0}.result-actions[data-v-d1bf4276]{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.preview-tabs[data-v-d1bf4276]{margin-bottom:12px}.teacher-batch-bar[data-v-d1bf4276]{background:var(--el-fill-color-light);border-radius:4px;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;padding:10px 12px;display:flex}.batch-hint[data-v-d1bf4276]{color:var(--el-text-color-secondary);font-size:12px}

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
.crawler-form[data-v-2b93f235]{max-width:640px}.crawl-resolve-hint[data-v-2b93f235]{color:var(--el-text-color-secondary);margin:6px 0 0;font-size:12px}.result-alert[data-v-2b93f235]{max-width:720px;margin-top:16px}.result-alert p[data-v-2b93f235]{margin:4px 0}.result-actions[data-v-2b93f235]{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.preview-tabs[data-v-2b93f235]{margin-bottom:12px}.teacher-batch-bar[data-v-2b93f235]{background:var(--el-fill-color-light);border-radius:4px;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;padding:10px 12px;display:flex}.batch-hint[data-v-2b93f235]{color:var(--el-text-color-secondary);font-size:12px}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +1 @@
.detail-body[data-v-73e6423f]{max-height:min(72vh,720px);padding-right:4px;overflow-y:auto}.detail-desc[data-v-73e6423f],.detail-section[data-v-73e6423f]{margin-bottom:16px}.detail-section-label[data-v-73e6423f]{color:#212529;margin-bottom:8px;font-size:13px;font-weight:600}.detail-text-block[data-v-73e6423f]{border:1px solid var(--slake-border,#dee2e6);color:#212529;background:#f8f9fa;border-radius:6px;padding:10px 12px;font-size:14px;line-height:1.6}.detail-empty-media[data-v-73e6423f]{color:#6c757d;border:1px solid var(--slake-border,#dee2e6);background:#f8f9fa;border-radius:6px;padding:10px 12px;font-size:14px}.detail-intro-html[data-v-73e6423f]{border:1px solid var(--slake-border,#dee2e6);background:#f8f9fa;border-radius:6px;max-height:280px;padding:12px;font-size:14px;line-height:1.6;overflow:auto}.detail-sub-table[data-v-73e6423f]{width:100%}.detail-media-preview[data-v-73e6423f]{border:1px solid var(--slake-border,#dee2e6);background:#f8f9fa;border-radius:6px;overflow:hidden}.detail-media-preview img[data-v-73e6423f]{width:100%;height:auto;display:block}.detail-media-cover img[data-v-73e6423f]{object-fit:contain;max-height:200px}.detail-media-promo img[data-v-73e6423f]{object-fit:contain;max-height:360px}.dashboard-v2[data-v-4d58e404]{background:0 0}.page-head[data-v-4d58e404],.card-head[data-v-4d58e404]{margin-bottom:12px}.card-head-row[data-v-4d58e404]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}
.detail-body[data-v-73e6423f]{max-height:min(72vh,720px);padding-right:4px;overflow-y:auto}.detail-desc[data-v-73e6423f],.detail-section[data-v-73e6423f]{margin-bottom:16px}.detail-section-label[data-v-73e6423f]{color:#212529;margin-bottom:8px;font-size:13px;font-weight:600}.detail-text-block[data-v-73e6423f]{border:1px solid var(--slake-border,#dee2e6);color:#212529;background:#f8f9fa;border-radius:6px;padding:10px 12px;font-size:14px;line-height:1.6}.detail-empty-media[data-v-73e6423f]{color:#6c757d;border:1px solid var(--slake-border,#dee2e6);background:#f8f9fa;border-radius:6px;padding:10px 12px;font-size:14px}.detail-intro-html[data-v-73e6423f]{border:1px solid var(--slake-border,#dee2e6);background:#f8f9fa;border-radius:6px;max-height:280px;padding:12px;font-size:14px;line-height:1.6;overflow:auto}.detail-sub-table[data-v-73e6423f]{width:100%}.detail-media-preview[data-v-73e6423f]{border:1px solid var(--slake-border,#dee2e6);background:#f8f9fa;border-radius:6px;overflow:hidden}.detail-media-preview img[data-v-73e6423f]{width:100%;height:auto;display:block}.detail-media-cover img[data-v-73e6423f]{object-fit:contain;max-height:200px}.detail-media-promo img[data-v-73e6423f]{object-fit:contain;max-height:360px}.dashboard-v2[data-v-ae208002]{background:0 0}.page-head[data-v-ae208002],.card-head[data-v-ae208002]{margin-bottom:12px}.card-head-row[data-v-ae208002]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
.demands-page[data-v-a45aed27]{--brand-bg-soft:#fdf3f3}.field-label[data-v-a45aed27]{color:var(--el-text-color-regular);margin-bottom:4px;font-size:13px;display:block}.detail-meta[data-v-a45aed27]{margin-bottom:16px}.sub-title[data-v-a45aed27]{margin:0 0 8px;font-size:15px}.follow-teacher-summary[data-v-a45aed27]{border-left:4px solid var(--brand-primary);background:var(--brand-bg-soft);border-radius:6px;margin-bottom:12px;padding:10px 12px}.follow-history-list[data-v-a45aed27]{gap:10px;max-height:50vh;display:grid;overflow:auto}.follow-history-card[data-v-a45aed27]{border:1px solid #dfe4eb;border-left:4px solid var(--brand-primary,#b11e23);border-radius:6px;padding:10px 12px}.follow-history-head[data-v-a45aed27]{margin-bottom:6px}.follow-history-title[data-v-a45aed27]{color:var(--brand-primary,#b11e23);font-weight:600}.follow-history-date[data-v-a45aed27]{color:#6b7280;margin-left:12px;font-size:13px}.follow-history-body[data-v-a45aed27]{color:#374151;font-size:13px}

@ -1 +0,0 @@
.demands-page[data-v-4e4bc186]{--brand-bg-soft:#fdf3f3}.field-label[data-v-4e4bc186]{color:var(--el-text-color-regular);margin-bottom:4px;font-size:13px;display:block}.detail-meta[data-v-4e4bc186]{margin-bottom:16px}.sub-title[data-v-4e4bc186]{margin:0 0 8px;font-size:15px}.follow-teacher-summary[data-v-4e4bc186]{border-left:4px solid var(--brand-primary);background:var(--brand-bg-soft);border-radius:6px;margin-bottom:12px;padding:10px 12px}.follow-history-list[data-v-4e4bc186]{gap:10px;max-height:50vh;display:grid;overflow:auto}.follow-history-card[data-v-4e4bc186]{border:1px solid #dfe4eb;border-left:4px solid var(--brand-primary,#b11e23);border-radius:6px;padding:10px 12px}.follow-history-head[data-v-4e4bc186]{margin-bottom:6px}.follow-history-title[data-v-4e4bc186]{color:var(--brand-primary,#b11e23);font-weight:600}.follow-history-date[data-v-4e4bc186]{color:#6b7280;margin-left:12px;font-size:13px}.follow-history-body[data-v-4e4bc186]{color:#374151;font-size:13px}

File diff suppressed because one or more lines are too long

@ -1 +1 @@
import{r as e}from"./index-DPkd2m0V.js";async function t(t){let{data:n}=await e.get(`/admin/v1/demands`,{params:t});return n.data}async function n(t){let{data:n}=await e.get(`/admin/v1/demands/${t}`);return n.data}async function r(t){let{data:n}=await e.post(`/admin/v1/demands`,t);return n.data}async function i(t){let{data:n}=await e.delete(`/admin/v1/demands/${t}`);return n}async function a(t){let{data:n}=await e.get(`/admin/v1/demands/${t}/handle-logs`);return n.data.items}async function o(t,n){let{data:r}=await e.post(`/admin/v1/demands/${t}/handle-logs`,n);return r.data}function s(e){return e===`done`?`success`:e===`terminated`?`info`:`warning`}export{n as a,s as i,o as n,a as o,i as r,t as s,r as t};
import{r as e}from"./index-C2NqsgBl.js";async function t(t){let{data:n}=await e.get(`/admin/v1/demands`,{params:t});return n.data}async function n(t){let{data:n}=await e.get(`/admin/v1/demands/${t}`);return n.data}async function r(t){let{data:n}=await e.post(`/admin/v1/demands`,t);return n.data}async function i(t){let{data:n}=await e.delete(`/admin/v1/demands/${t}`);return n}async function a(t){let{data:n}=await e.get(`/admin/v1/demands/${t}/handle-logs`);return n.data.items}async function o(t,n){let{data:r}=await e.post(`/admin/v1/demands/${t}/handle-logs`,n);return r.data}function s(e){return e===`done`?`success`:e===`terminated`?`info`:`warning`}export{n as a,s as i,o as n,a as o,i as r,t as s,r as t};

File diff suppressed because one or more lines are too long

@ -1 +1 @@
import{r as e}from"./index-DPkd2m0V.js";async function t(t){let{data:n}=await e.get(`/admin/v1/dict-by-code/${encodeURIComponent(t)}/items`);return n.data}async function n(t){let{data:n}=await e.get(`/admin/v1/dict-types`,{params:t});return n.data}async function r(t){let{data:n}=await e.post(`/admin/v1/dict-types`,t);return n.data}async function i(t,n){let{data:r}=await e.put(`/admin/v1/dict-types/${t}`,n);return r}async function a(t){let{data:n}=await e.delete(`/admin/v1/dict-types/${t}`);return n}async function o(t,n){let{data:r}=await e.get(`/admin/v1/dict-types/${t}/items`,{params:n});return r.data}async function s(t,n){let{data:r}=await e.post(`/admin/v1/dict-types/${t}/items`,n);return r.data}async function c(t,n,r){let{data:i}=await e.put(`/admin/v1/dict-types/${t}/items/${n}`,r);return i}async function l(t,n){let{data:r}=await e.delete(`/admin/v1/dict-types/${t}/items/${n}`);return r}export{t as a,c,a as i,i as l,r as n,o,l as r,n as s,s as t};
import{r as e}from"./index-C2NqsgBl.js";async function t(t){let{data:n}=await e.get(`/admin/v1/dict-by-code/${encodeURIComponent(t)}/items`);return n.data}async function n(t){let{data:n}=await e.get(`/admin/v1/dict-types`,{params:t});return n.data}async function r(t){let{data:n}=await e.post(`/admin/v1/dict-types`,t);return n.data}async function i(t,n){let{data:r}=await e.put(`/admin/v1/dict-types/${t}`,n);return r}async function a(t){let{data:n}=await e.delete(`/admin/v1/dict-types/${t}`);return n}async function o(t,n){let{data:r}=await e.get(`/admin/v1/dict-types/${t}/items`,{params:n});return r.data}async function s(t,n){let{data:r}=await e.post(`/admin/v1/dict-types/${t}/items`,n);return r.data}async function c(t,n,r){let{data:i}=await e.put(`/admin/v1/dict-types/${t}/items/${n}`,r);return i}async function l(t,n){let{data:r}=await e.delete(`/admin/v1/dict-types/${t}/items/${n}`);return r}export{t as a,c,a as i,i as l,r as n,o,l as r,n as s,s as t};

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
.items-toolbar[data-v-0414bfc9]{justify-content:flex-end;display:flex}

@ -1 +0,0 @@
.items-toolbar[data-v-06c150e0]{justify-content:flex-end;display:flex}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +1 @@
import{C as e,D as t,E as n,G as r,T as i,Y as a,at as o,b as s,f as c,ht as l}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{a as u,l as d,o as f,s as p,t as m}from"./index-DPkd2m0V.js";var h={class:`login-split`},g={class:`login-main`},_={class:`login-container`},v={class:`login-panel-wrap`},y={class:`login-panel-card`},b=p(t({__name:`index`,setup(t){let p=f(),b=u(),x=m(),S=l(!1),C=l(!0),w=l({username:``,password:``});function T(){C.value=!1}async function E(){if(!w.value.username||!w.value.password){d.warning(`请输入账号和密码`);return}S.value=!0;try{await x.login(w.value.username,w.value.password);let e=b.query.redirect||`/dashboard`;await p.replace(e)}catch(e){let t=e?.response?.data?.message||`登录失败`;d.error(typeof t==`string`?t:`登录失败`)}finally{S.value=!1}}return(t,l)=>{let u=a(`el-input`),d=a(`el-form-item`),f=a(`el-button`),p=a(`el-form`);return r(),e(`div`,h,[s(`main`,g,[s(`div`,_,[l[4]||=s(`div`,{class:`login-hero`},[s(`h1`,{class:`login-hero-title`},`S-lake先进技术发展中心高校雷达网`),s(`p`,{class:`login-hero-desc`},`加强长三角高校顶尖科研人才的发现、跟踪与服务`)],-1),s(`div`,v,[s(`div`,y,[l[3]||=s(`h2`,{class:`login-panel-title`},`欢迎登录`,-1),n(p,{class:`login-form`,"label-position":`top`,size:`large`,autocomplete:`off`,onSubmit:c(E,[`prevent`])},{default:o(()=>[n(d,{label:`账号`},{default:o(()=>[n(u,{modelValue:w.value.username,"onUpdate:modelValue":l[0]||=e=>w.value.username=e,placeholder:`请输入账号`,autocomplete:`off`,name:`login-account`,readonly:C.value,onFocus:T},null,8,[`modelValue`,`readonly`])]),_:1}),n(d,{label:`密码`},{default:o(()=>[n(u,{modelValue:w.value.password,"onUpdate:modelValue":l[1]||=e=>w.value.password=e,type:`password`,placeholder:`请输入密码`,"show-password":``,autocomplete:`new-password`,name:`login-password`,readonly:C.value,onFocus:T},null,8,[`modelValue`,`readonly`])]),_:1}),n(d,null,{default:o(()=>[n(f,{type:`primary`,class:`login-btn`,loading:S.value,"native-type":`submit`,onClick:E},{default:o(()=>[...l[2]||=[i(` 登录 `,-1)]]),_:1},8,[`loading`])]),_:1})]),_:1})])])])])])}}}),[[`__scopeId`,`data-v-bc69620b`]]);export{b as default};
import{C as e,D as t,E as n,G as r,T as i,Y as a,at as o,b as s,f as c,ht as l}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{a as u,l as d,o as f,s as p,t as m}from"./index-C2NqsgBl.js";var h={class:`login-split`},g={class:`login-main`},_={class:`login-container`},v={class:`login-panel-wrap`},y={class:`login-panel-card`},b=p(t({__name:`index`,setup(t){let p=f(),b=u(),x=m(),S=l(!1),C=l(!0),w=l({username:``,password:``});function T(){C.value=!1}async function E(){if(!w.value.username||!w.value.password){d.warning(`请输入账号和密码`);return}S.value=!0;try{await x.login(w.value.username,w.value.password);let e=b.query.redirect||`/dashboard`;await p.replace(e)}catch(e){let t=e?.response?.data?.message||`登录失败`;d.error(typeof t==`string`?t:`登录失败`)}finally{S.value=!1}}return(t,l)=>{let u=a(`el-input`),d=a(`el-form-item`),f=a(`el-button`),p=a(`el-form`);return r(),e(`div`,h,[s(`main`,g,[s(`div`,_,[l[4]||=s(`div`,{class:`login-hero`},[s(`h1`,{class:`login-hero-title`},`S-lake先进技术发展中心高校雷达网`),s(`p`,{class:`login-hero-desc`},`加强长三角高校顶尖科研人才的发现、跟踪与服务`)],-1),s(`div`,v,[s(`div`,y,[l[3]||=s(`h2`,{class:`login-panel-title`},`欢迎登录`,-1),n(p,{class:`login-form`,"label-position":`top`,size:`large`,autocomplete:`off`,onSubmit:c(E,[`prevent`])},{default:o(()=>[n(d,{label:`账号`},{default:o(()=>[n(u,{modelValue:w.value.username,"onUpdate:modelValue":l[0]||=e=>w.value.username=e,placeholder:`请输入账号`,autocomplete:`off`,name:`login-account`,readonly:C.value,onFocus:T},null,8,[`modelValue`,`readonly`])]),_:1}),n(d,{label:`密码`},{default:o(()=>[n(u,{modelValue:w.value.password,"onUpdate:modelValue":l[1]||=e=>w.value.password=e,type:`password`,placeholder:`请输入密码`,"show-password":``,autocomplete:`new-password`,name:`login-password`,readonly:C.value,onFocus:T},null,8,[`modelValue`,`readonly`])]),_:1}),n(d,null,{default:o(()=>[n(f,{type:`primary`,class:`login-btn`,loading:S.value,"native-type":`submit`,onClick:E},{default:o(()=>[...l[2]||=[i(` 登录 `,-1)]]),_:1},8,[`loading`])]),_:1})]),_:1})])])])])])}}}),[[`__scopeId`,`data-v-bc69620b`]]);export{b as default};

@ -1 +0,0 @@
.radar-map-container-wrap[data-v-3a268a18]{flex:1;min-width:0;min-height:420px;position:relative}.page-head[data-v-3a268a18]{margin-bottom:12px}.toolbar-hint[data-v-3a268a18]{color:var(--el-text-color-secondary);font-size:var(--workbench-font-sm,14px)}.empty-hint[data-v-3a268a18]{color:var(--el-text-color-secondary);font-size:var(--workbench-font-sm,14px);margin:0}

@ -0,0 +1 @@
.radar-map-container-wrap[data-v-23c6e84c]{flex:1;min-width:0;min-height:420px;position:relative}.page-head[data-v-23c6e84c]{margin-bottom:12px}.toolbar-hint[data-v-23c6e84c]{color:var(--el-text-color-secondary);font-size:var(--workbench-font-sm,14px)}.empty-hint[data-v-23c6e84c]{color:var(--el-text-color-secondary);font-size:var(--workbench-font-sm,14px);margin:0}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +1 @@
import{r as e}from"./index-DPkd2m0V.js";async function t(){let{data:t}=await e.get(`/admin/v1/menus`);return t.data}async function n(t){let{data:n}=await e.post(`/admin/v1/menus`,t);return n.data}async function r(t,n){let{data:r}=await e.put(`/admin/v1/menus/${t}`,n);return r}async function i(t){let{data:n}=await e.delete(`/admin/v1/menus/${t}`);return n}export{r as i,i as n,t as r,n as t};
import{r as e}from"./index-C2NqsgBl.js";async function t(){let{data:t}=await e.get(`/admin/v1/menus`);return t.data}async function n(t){let{data:n}=await e.post(`/admin/v1/menus`,t);return n.data}async function r(t,n){let{data:r}=await e.put(`/admin/v1/menus/${t}`,n);return r}async function i(t){let{data:n}=await e.delete(`/admin/v1/menus/${t}`);return n}export{r as i,i as n,t as r,n as t};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
.crawl-filter-tip[data-v-5474b498]{margin-bottom:12px}.list-cover-thumb[data-v-5474b498]{border:1px solid var(--el-border-color-lighter);border-radius:4px;width:56px;height:36px}.text-mute[data-v-5474b498]{color:var(--el-text-color-placeholder);font-size:13px}.upload-row[data-v-5474b498]{align-items:center;gap:8px;width:100%;display:flex}.thumb-preview[data-v-5474b498]{max-width:200px;margin-top:8px}.thumb-preview img[data-v-5474b498]{border:1px solid var(--el-border-color);border-radius:4px;max-width:100%}.intro-form-item[data-v-5474b498],.intro-form-item[data-v-5474b498] .el-form-item__content{width:100%}.dialog-footer-inner[data-v-5474b498]{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}

@ -0,0 +1 @@
.crawl-filter-tip[data-v-47b3fee6]{margin-bottom:12px}.list-cover-thumb[data-v-47b3fee6]{border:1px solid var(--el-border-color-lighter);border-radius:4px;width:56px;height:36px}.text-mute[data-v-47b3fee6]{color:var(--el-text-color-placeholder);font-size:13px}.upload-row[data-v-47b3fee6]{align-items:center;gap:8px;width:100%;display:flex}.thumb-preview[data-v-47b3fee6]{max-width:200px;margin-top:8px}.thumb-preview img[data-v-47b3fee6]{border:1px solid var(--el-border-color);border-radius:4px;max-width:100%}.intro-form-item[data-v-47b3fee6],.intro-form-item[data-v-47b3fee6] .el-form-item__content{width:100%}.dialog-footer-inner[data-v-47b3fee6]{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}

File diff suppressed because one or more lines are too long

@ -1 +1 @@
import{r as e}from"./index-DPkd2m0V.js";async function t(t){let{data:n}=await e.get(`/admin/v1/news`,{params:t});return n.data}async function n(t){let{data:n}=await e.get(`/admin/v1/news/${t}`);return n.data}async function r(t){let{data:n}=await e.post(`/admin/v1/news`,t);return n.data}async function i(t,n){let{data:r}=await e.put(`/admin/v1/news/${t}`,n);return r}async function a(t){let{data:n}=await e.delete(`/admin/v1/news/${t}`);return n}async function o(t,n){let{data:r}=await e.post(`/admin/v1/news/batch-publish`,{ids:t,published_at:n});return r.data}export{t as a,n as i,r as n,i as o,a as r,o as t};
import{r as e}from"./index-C2NqsgBl.js";async function t(t){let{data:n}=await e.get(`/admin/v1/news`,{params:t});return n.data}async function n(t){let{data:n}=await e.get(`/admin/v1/news/${t}`);return n.data}async function r(t){let{data:n}=await e.post(`/admin/v1/news`,t);return n.data}async function i(t,n){let{data:r}=await e.put(`/admin/v1/news/${t}`,n);return r}async function a(t){let{data:n}=await e.delete(`/admin/v1/news/${t}`);return n}async function o(t,n){let{data:r}=await e.post(`/admin/v1/news/batch-publish`,{ids:t,published_at:n});return r.data}export{t as a,n as i,r as n,i as o,a as r,o as t};

@ -1 +1 @@
.linked-block[data-v-a6c8acb0]{margin-bottom:14px}.linked-label[data-v-a6c8acb0]{color:#374151;margin-bottom:8px;font-size:13px;font-weight:600}.linked-tags[data-v-a6c8acb0]{flex-wrap:wrap;gap:6px;display:flex}.picker-toolbar[data-v-a6c8acb0]{align-items:center;gap:8px;margin-bottom:10px;display:flex}.picker-table[data-v-a6c8acb0]{width:100%}.picker-pager[data-v-a6c8acb0]{justify-content:flex-end;margin-top:10px;display:flex}.text-mute[data-v-a6c8acb0]{color:#9ca3af}.crawl-filter-tip[data-v-c111c5f2]{margin-bottom:12px}.paper-title-cell[data-v-c111c5f2]{align-items:center;gap:6px;min-width:0;display:flex}.paper-title-tooltip[data-v-c111c5f2]{flex:1;min-width:0}.paper-title-tooltip[data-v-c111c5f2] .el-tooltip__trigger{min-width:0;display:block}.paper-title-text[data-v-c111c5f2]{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.paper-title-tag[data-v-c111c5f2]{flex-shrink:0}.summary-body[data-v-c111c5f2]{white-space:pre-wrap;margin:0;line-height:1.6}.text-mute[data-v-c111c5f2]{color:#9ca3af;font-size:12px}
.linked-block[data-v-a6c8acb0]{margin-bottom:14px}.linked-label[data-v-a6c8acb0]{color:#374151;margin-bottom:8px;font-size:13px;font-weight:600}.linked-tags[data-v-a6c8acb0]{flex-wrap:wrap;gap:6px;display:flex}.picker-toolbar[data-v-a6c8acb0]{align-items:center;gap:8px;margin-bottom:10px;display:flex}.picker-table[data-v-a6c8acb0]{width:100%}.picker-pager[data-v-a6c8acb0]{justify-content:flex-end;margin-top:10px;display:flex}.text-mute[data-v-a6c8acb0]{color:#9ca3af}.crawl-filter-tip[data-v-8a2f2c70]{margin-bottom:12px}.paper-title-cell[data-v-8a2f2c70]{align-items:center;gap:6px;min-width:0;display:flex}.paper-title-tooltip[data-v-8a2f2c70]{flex:1;min-width:0}.paper-title-tooltip[data-v-8a2f2c70] .el-tooltip__trigger{min-width:0;display:block}.paper-title-text[data-v-8a2f2c70]{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.paper-title-tag[data-v-8a2f2c70]{flex-shrink:0}.summary-body[data-v-8a2f2c70]{white-space:pre-wrap;margin:0;line-height:1.6}.text-mute[data-v-8a2f2c70]{color:#9ca3af;font-size:12px}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +1 @@
import{r as e}from"./index-DPkd2m0V.js";async function t(t){let{data:n}=await e.get(`/admin/v1/research-directions`,{params:t});return n.data}async function n(){let{data:t}=await e.get(`/admin/v1/research-directions/options`);return t.data.items}async function r(t){let{data:n}=await e.post(`/admin/v1/research-directions`,t);return n.data}async function i(t,n){let{data:r}=await e.put(`/admin/v1/research-directions/${t}`,n);return r.data}async function a(t){let{data:n}=await e.delete(`/admin/v1/research-directions/${t}`);return n}export{i as a,t as i,a as n,n as r,r as t};
import{r as e}from"./index-C2NqsgBl.js";async function t(t){let{data:n}=await e.get(`/admin/v1/research-directions`,{params:t});return n.data}async function n(){let{data:t}=await e.get(`/admin/v1/research-directions/options`);return t.data.items}async function r(t){let{data:n}=await e.post(`/admin/v1/research-directions`,t);return n.data}async function i(t,n){let{data:r}=await e.put(`/admin/v1/research-directions/${t}`,n);return r.data}async function a(t){let{data:n}=await e.delete(`/admin/v1/research-directions/${t}`);return n}export{i as a,t as i,a as n,n as r,r as t};

@ -1 +0,0 @@
import{C as e,Ct as t,D as n,E as r,G as i,T as a,X as o,Xt as s,Y as c,at as l,b as u,d,ht as f,m as p,ot as m,tn as h,x as g}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as _,l as v}from"./index-DPkd2m0V.js";import{t as y}from"./usePageLoad-DFTLo_Lv.js";import{r as b}from"./admin-list-CBoToEFo.js";import{a as x,i as S,n as C,t as w}from"./research-directions-CJR-3qHY.js";var T={class:`list-page`},E={class:`page-header`},D={class:`list-filter-bar`},O={class:`table-row-actions`},k={class:`list-pager`},A=n({__name:`index`,setup(n){let A=f(!1),j=f([]),M=f({current_page:1,per_page:20,total:0}),N=f(``),P=f(1),F=f(!1),I=f(null),L=f({name:``,sort:0,status:1,remark:``});async function R(){A.value=!0;try{let e=await S({page:P.value,page_size:M.value.per_page,keyword:N.value||void 0});j.value=e.items,M.value=e.meta}finally{A.value=!1}}function z(){I.value=null,L.value={name:``,sort:0,status:1,remark:``},F.value=!0}function B(e){I.value=e,L.value={name:e.name,sort:e.sort,status:e.status,remark:e.remark||``},F.value=!0}async function V(){if(!L.value.name.trim()){v.warning(`请填写研究方向名称`);return}let e={name:L.value.name.trim(),sort:L.value.sort,status:L.value.status,remark:L.value.remark||null};I.value?await x(I.value.id,e):await w(e),v.success(`已保存`),F.value=!1,await R()}async function H(e){await _.confirm(`确定删除研究方向「${e.name}」?`,`提示`,{type:`warning`}),await C(e.id),v.success(`已删除`),await R()}function U(){P.value=1,R()}function W(){N.value=``,P.value=1,R()}return y(R),(n,f)=>{let _=c(`el-button`),v=c(`el-input`),y=c(`el-table-column`),x=c(`el-table`),S=c(`el-pagination`),C=c(`el-card`),w=c(`el-form-item`),G=c(`el-input-number`),K=c(`el-switch`),q=c(`el-form`),J=c(`el-dialog`),Y=o(`loading`);return i(),e(p,null,[u(`div`,T,[u(`div`,E,[f[9]||=u(`h1`,{class:`page-title`},`研究方向`,-1),r(_,{type:`primary`,size:`small`,class:`btn-create`,onClick:z},{default:l(()=>[...f[8]||=[a(`新增`,-1)]]),_:1})]),r(C,{shadow:`never`,class:`admin-list-card`},{default:l(()=>[u(`div`,D,[r(v,{modelValue:N.value,"onUpdate:modelValue":f[0]||=e=>N.value=e,placeholder:`研究方向名称`,clearable:``,class:`filter-search`,onKeyup:d(U,[`enter`])},null,8,[`modelValue`]),r(_,{type:`primary`,onClick:U},{default:l(()=>[...f[10]||=[a(`搜索`,-1)]]),_:1}),r(_,{onClick:W},{default:l(()=>[...f[11]||=[a(`重置`,-1)]]),_:1})]),m((i(),g(x,{data:j.value,"row-key":`id`},{default:l(()=>[r(y,{prop:`name`,label:`名称`,"min-width":`180`}),r(y,{prop:`sort`,label:`排序`,width:`80`,align:`center`}),r(y,{prop:`teacher_count`,label:`关联老师数`,width:`110`,align:`center`}),r(y,{label:`状态`,width:`90`,align:`center`},{default:l(({row:e})=>[u(`span`,{class:s([`status-badge`,t(b)(e.status)])},h(e.status===1?`启用`:`停用`),3)]),_:1}),r(y,{prop:`remark`,label:`备注`,"min-width":`160`,"show-overflow-tooltip":``}),r(y,{label:`操作`,width:`160`,fixed:`right`},{default:l(({row:e})=>[u(`div`,O,[r(_,{class:`btn-action-secondary`,onClick:t=>B(e)},{default:l(()=>[...f[12]||=[a(`编辑`,-1)]]),_:1},8,[`onClick`]),r(_,{class:`btn-action-secondary`,onClick:t=>H(e)},{default:l(()=>[...f[13]||=[a(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[Y,A.value]]),u(`div`,k,[r(S,{"current-page":P.value,"onUpdate:currentPage":f[1]||=e=>P.value=e,layout:`total, prev, pager, next`,total:M.value.total,"page-size":M.value.per_page,onCurrentChange:R},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r(J,{modelValue:F.value,"onUpdate:modelValue":f[7]||=e=>F.value=e,title:I.value?`编辑研究方向`:`新增研究方向`,width:`480px`},{footer:l(()=>[r(_,{onClick:f[6]||=e=>F.value=!1},{default:l(()=>[...f[14]||=[a(`取消`,-1)]]),_:1}),r(_,{type:`primary`,onClick:V},{default:l(()=>[...f[15]||=[a(`保存`,-1)]]),_:1})]),default:l(()=>[r(q,{"label-width":`88px`},{default:l(()=>[r(w,{label:`名称`},{default:l(()=>[r(v,{modelValue:L.value.name,"onUpdate:modelValue":f[2]||=e=>L.value.name=e,maxlength:`255`},null,8,[`modelValue`])]),_:1}),r(w,{label:`排序`},{default:l(()=>[r(G,{modelValue:L.value.sort,"onUpdate:modelValue":f[3]||=e=>L.value.sort=e,min:0},null,8,[`modelValue`])]),_:1}),r(w,{label:`状态`},{default:l(()=>[r(K,{modelValue:L.value.status,"onUpdate:modelValue":f[4]||=e=>L.value.status=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1}),r(w,{label:`备注`},{default:l(()=>[r(v,{modelValue:L.value.remark,"onUpdate:modelValue":f[5]||=e=>L.value.remark=e,type:`textarea`,rows:3},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`])],64)}}});export{A as default};

@ -0,0 +1 @@
import{C as e,Ct as t,D as n,E as r,G as i,T as a,X as o,Xt as s,Y as c,at as l,b as u,d,ht as f,m as p,ot as m,tn as h,x as g}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as _,l as v}from"./index-C2NqsgBl.js";import{n as y,t as b}from"./usePageLoad-BucTP1_8.js";import{r as x}from"./admin-list-DjncsyJC.js";import{a as S,i as C,n as w,t as T}from"./research-directions-CxZCw4uA.js";var E={class:`list-page`},D={class:`page-header`},O={class:`list-filter-bar`},k={class:`table-row-actions`},A={class:`list-pager`},j=n({__name:`index`,setup(n){let j=f(!1),M=f([]),N=f({current_page:1,per_page:20,total:0}),P=f(``),F=f(1),I=f(!1),L=f(null),R=f({name:``,sort:0,status:1,remark:``});async function z(){j.value=!0;try{let e=await C({page:F.value,page_size:N.value.per_page,keyword:P.value||void 0});M.value=e.items,N.value=e.meta}finally{j.value=!1}}function B(){L.value=null,R.value={name:``,sort:0,status:1,remark:``},I.value=!0}function V(e){L.value=e,R.value={name:e.name,sort:e.sort,status:e.status,remark:e.remark||``},I.value=!0}async function H(){if(!R.value.name.trim()){v.warning(`请填写研究方向名称`);return}let e={name:R.value.name.trim(),sort:R.value.sort,status:R.value.status,remark:R.value.remark||null};L.value?await S(L.value.id,e):await T(e),v.success(`已保存`),I.value=!1,await z()}async function U(e){await _.confirm(`确定删除研究方向「${e.name}」?`,`提示`,{type:`warning`}),await w(e.id),v.success(`已删除`),await z()}function W(){F.value=1,z()}function G(){P.value=``,F.value=1,z()}return b(z),(n,f)=>{let _=c(`el-button`),v=c(`el-input`),b=c(`el-table-column`),S=c(`el-table`),C=c(`el-pagination`),w=c(`el-card`),T=c(`el-form-item`),K=c(`el-input-number`),q=c(`el-switch`),J=c(`el-form`),Y=c(`el-dialog`),X=o(`loading`);return i(),e(p,null,[u(`div`,E,[u(`div`,D,[r(y),r(_,{type:`primary`,size:`small`,class:`btn-create`,onClick:B},{default:l(()=>[...f[8]||=[a(`新增`,-1)]]),_:1})]),r(w,{shadow:`never`,class:`admin-list-card`},{default:l(()=>[u(`div`,O,[r(v,{modelValue:P.value,"onUpdate:modelValue":f[0]||=e=>P.value=e,placeholder:`研究方向名称`,clearable:``,class:`filter-search`,onKeyup:d(W,[`enter`])},null,8,[`modelValue`]),r(_,{type:`primary`,onClick:W},{default:l(()=>[...f[9]||=[a(`搜索`,-1)]]),_:1}),r(_,{onClick:G},{default:l(()=>[...f[10]||=[a(`重置`,-1)]]),_:1})]),m((i(),g(S,{data:M.value,"row-key":`id`},{default:l(()=>[r(b,{prop:`name`,label:`名称`,"min-width":`180`}),r(b,{prop:`sort`,label:`排序`,width:`80`,align:`center`}),r(b,{prop:`teacher_count`,label:`关联老师数`,width:`110`,align:`center`}),r(b,{label:`状态`,width:`90`,align:`center`},{default:l(({row:e})=>[u(`span`,{class:s([`status-badge`,t(x)(e.status)])},h(e.status===1?`启用`:`停用`),3)]),_:1}),r(b,{prop:`remark`,label:`备注`,"min-width":`160`,"show-overflow-tooltip":``}),r(b,{label:`操作`,width:`160`,fixed:`right`},{default:l(({row:e})=>[u(`div`,k,[r(_,{class:`btn-action-secondary`,onClick:t=>V(e)},{default:l(()=>[...f[11]||=[a(`编辑`,-1)]]),_:1},8,[`onClick`]),r(_,{class:`btn-action-secondary`,onClick:t=>U(e)},{default:l(()=>[...f[12]||=[a(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[X,j.value]]),u(`div`,A,[r(C,{"current-page":F.value,"onUpdate:currentPage":f[1]||=e=>F.value=e,layout:`total, prev, pager, next`,total:N.value.total,"page-size":N.value.per_page,onCurrentChange:z},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r(Y,{modelValue:I.value,"onUpdate:modelValue":f[7]||=e=>I.value=e,title:L.value?`编辑研究方向`:`新增研究方向`,width:`480px`},{footer:l(()=>[r(_,{onClick:f[6]||=e=>I.value=!1},{default:l(()=>[...f[13]||=[a(`取消`,-1)]]),_:1}),r(_,{type:`primary`,onClick:H},{default:l(()=>[...f[14]||=[a(`保存`,-1)]]),_:1})]),default:l(()=>[r(J,{"label-width":`88px`},{default:l(()=>[r(T,{label:`名称`},{default:l(()=>[r(v,{modelValue:R.value.name,"onUpdate:modelValue":f[2]||=e=>R.value.name=e,maxlength:`255`},null,8,[`modelValue`])]),_:1}),r(T,{label:`排序`},{default:l(()=>[r(K,{modelValue:R.value.sort,"onUpdate:modelValue":f[3]||=e=>R.value.sort=e,min:0},null,8,[`modelValue`])]),_:1}),r(T,{label:`状态`},{default:l(()=>[r(q,{modelValue:R.value.status,"onUpdate:modelValue":f[4]||=e=>R.value.status=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1}),r(T,{label:`备注`},{default:l(()=>[r(v,{modelValue:R.value.remark,"onUpdate:modelValue":f[5]||=e=>R.value.remark=e,type:`textarea`,rows:3},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`])],64)}}});export{j as default};

@ -0,0 +1 @@
.hint[data-v-eac70410]{color:var(--el-text-color-secondary);margin:0 0 12px;font-size:13px;line-height:1.5}.tree-title[data-v-eac70410]{margin:0 0 8px;font-size:14px;font-weight:600}.menu-tree[data-v-eac70410]{border:1px solid var(--el-border-color-lighter);border-radius:6px;max-height:380px;padding:8px;overflow:auto}

@ -1 +0,0 @@
.hint[data-v-97831e12]{color:var(--el-text-color-secondary);margin:0 0 12px;font-size:13px;line-height:1.5}.tree-title[data-v-97831e12]{margin:0 0 8px;font-size:14px;font-weight:600}.menu-tree[data-v-97831e12]{border:1px solid var(--el-border-color-lighter);border-radius:6px;max-height:380px;padding:8px;overflow:auto}

@ -1 +1 @@
import{r as e}from"./index-DPkd2m0V.js";async function t(t){let{data:n}=await e.get(`/admin/v1/roles`,{params:t});return n.data}async function n(t){let{data:n}=await e.get(`/admin/v1/roles/${t}`);return n.data}async function r(t){let{data:n}=await e.post(`/admin/v1/roles`,t);return n.data}async function i(t,n){let{data:r}=await e.put(`/admin/v1/roles/${t}`,n);return r}async function a(t){let{data:n}=await e.delete(`/admin/v1/roles/${t}`);return n}export{i as a,t as i,a as n,n as r,r as t};
import{r as e}from"./index-C2NqsgBl.js";async function t(t){let{data:n}=await e.get(`/admin/v1/roles`,{params:t});return n.data}async function n(t){let{data:n}=await e.get(`/admin/v1/roles/${t}`);return n.data}async function r(t){let{data:n}=await e.post(`/admin/v1/roles`,t);return n.data}async function i(t,n){let{data:r}=await e.put(`/admin/v1/roles/${t}`,n);return r}async function a(t){let{data:n}=await e.delete(`/admin/v1/roles/${t}`);return n}export{i as a,t as i,a as n,n as r,r as t};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
.follow-teacher-summary[data-v-829c7ad1]{border-left:4px solid var(--brand-primary,#b11e23);background:#fdf3f3;border-radius:6px;padding:10px 12px;font-size:14px}.sub-title[data-v-829c7ad1]{margin:16px 0 8px;font-size:15px;font-weight:600}.star-preview[data-v-829c7ad1]{color:#e6a23c;margin-top:4px;font-size:13px;display:block}.form-small[data-v-829c7ad1] .el-form-item__label{padding-bottom:4px;font-size:13px}

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
.follow-teacher-summary[data-v-604da6f4]{border-left:4px solid var(--brand-primary,#b11e23);background:#fdf3f3;border-radius:6px;padding:10px 12px;font-size:14px}.sub-title[data-v-604da6f4]{margin:16px 0 8px;font-size:15px;font-weight:600}.star-preview[data-v-604da6f4]{color:#e6a23c;margin-top:4px;font-size:13px;display:block}.form-small[data-v-604da6f4] .el-form-item__label{padding-bottom:4px;font-size:13px}

@ -1 +1 @@
import{r as e}from"./index-DPkd2m0V.js";async function t(){let{data:t}=await e.get(`/admin/v1/teachers/filter-options`);return t.data}async function n(){let{data:t}=await e.get(`/admin/v1/teachers/stats`);return t.data}async function r(t){let{data:n}=await e.get(`/admin/v1/teachers`,{params:t});return n.data}async function i(t){let{data:n}=await e.get(`/admin/v1/teachers/${t}`);return n.data}async function a(t){let{data:n}=await e.post(`/admin/v1/teachers`,t);return n.data}async function o(t,n){let{data:r}=await e.put(`/admin/v1/teachers/${t}`,n);return r}async function s(t){let{data:n}=await e.patch(`/admin/v1/teachers/batch-star`,t);return n.data}async function c(t){let{data:n}=await e.get(`/admin/v1/teachers/${t}/follow-records`);return n.data.items}async function l(t,n){let{data:r}=await e.post(`/admin/v1/teachers/${t}/follow-records`,n);return r.data}async function u(t){let{data:n}=await e.get(`/admin/v1/teachers/${t}/papers`);return n.data.items}async function d(t,n){let{data:r}=await e.post(`/admin/v1/teachers/${t}/papers`,n);return r.data}async function f(t,n){let{data:r}=await e.post(`/admin/v1/teachers/${t}/papers/link`,{paper_id:n});return r}async function p(t,n){let{data:r}=await e.delete(`/admin/v1/teachers/${t}/papers/${n}`);return r}async function m(t){let{data:n}=await e.get(`/admin/v1/universities`,{params:t});return n.data}async function h(t){let{data:n}=await e.post(`/admin/v1/universities`,t);return n.data}export{h as a,t as c,n as d,r as f,o as h,d as i,c as l,f as m,a as n,p as o,m as p,l as r,i as s,s as t,u};
import{r as e}from"./index-C2NqsgBl.js";async function t(){let{data:t}=await e.get(`/admin/v1/teachers/filter-options`);return t.data}async function n(){let{data:t}=await e.get(`/admin/v1/teachers/stats`);return t.data}async function r(t){let{data:n}=await e.get(`/admin/v1/teachers`,{params:t});return n.data}async function i(t){let{data:n}=await e.get(`/admin/v1/teachers/${t}`);return n.data}async function a(t){let{data:n}=await e.post(`/admin/v1/teachers`,t);return n.data}async function o(t,n){let{data:r}=await e.put(`/admin/v1/teachers/${t}`,n);return r}async function s(t){let{data:n}=await e.patch(`/admin/v1/teachers/batch-star`,t);return n.data}async function c(t){let{data:n}=await e.get(`/admin/v1/teachers/${t}/follow-records`);return n.data.items}async function l(t,n){let{data:r}=await e.post(`/admin/v1/teachers/${t}/follow-records`,n);return r.data}async function u(t){let{data:n}=await e.get(`/admin/v1/teachers/${t}/papers`);return n.data.items}async function d(t,n){let{data:r}=await e.post(`/admin/v1/teachers/${t}/papers`,n);return r.data}async function f(t,n){let{data:r}=await e.post(`/admin/v1/teachers/${t}/papers/link`,{paper_id:n});return r}async function p(t,n){let{data:r}=await e.delete(`/admin/v1/teachers/${t}/papers/${n}`);return r}async function m(t){let{data:n}=await e.get(`/admin/v1/universities`,{params:t});return n.data}async function h(t){let{data:n}=await e.post(`/admin/v1/universities`,t);return n.data}export{h as a,t as c,n as d,r as f,o as h,d as i,c as l,f as m,a as n,p as o,m as p,l as r,i as s,s as t,u};

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
.teachers-page[data-v-f693b58d]{--brand-primary:#b11e23;--brand-primary-hover:#8b1519;--brand-bg-soft:#fdf3f3;flex-direction:column;gap:12px;display:flex}.talent-stat-grid[data-v-f693b58d]{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.teachers-list-card[data-v-f693b58d]{margin-top:0}.teachers-filter-search[data-v-f693b58d]{width:180px}.talent-stat-card[data-v-f693b58d]{text-align:left;cursor:pointer;min-height:68px;font:inherit;background:#fff;border:1px solid #d8dde4;border-radius:8px;flex-direction:column;justify-content:center;align-items:flex-start;gap:6px;padding:10px 16px;display:flex;position:relative;box-shadow:0 2px 10px #0f172a14}.talent-stat-card[data-v-f693b58d]:hover,.talent-stat-card.is-active[data-v-f693b58d]{border-color:var(--brand-primary)}.talent-stat-card.is-active[data-v-f693b58d]:before{content:"";background:var(--brand-primary);width:4px;position:absolute;top:0;bottom:0;left:0}.talent-stat-label[data-v-f693b58d]{color:#6b7280;font-size:14px}.talent-stat-value[data-v-f693b58d]{color:var(--brand-primary);font-size:24px;font-weight:600;line-height:1.1}.talent-stat-value.is-dark[data-v-f693b58d]{color:#111827}.talent-stat-value.is-danger[data-v-f693b58d]{color:var(--el-color-danger)}.talent-stat-value.is-success[data-v-f693b58d]{color:var(--el-color-success)}.filter-source[data-v-f693b58d]{width:132px}.filter-stars[data-v-f693b58d]{width:100px}.filter-status[data-v-f693b58d]{width:112px}.filter-school[data-v-f693b58d]{width:184px}.filter-direction[data-v-f693b58d]{width:146px}.name-link[data-v-f693b58d]{color:inherit;text-decoration:none}.name-link[data-v-f693b58d]:hover{color:var(--brand-primary)}.tag-overdue[data-v-f693b58d]{vertical-align:middle;margin-left:4px}.star-text[data-v-f693b58d]{color:#e6a23c;letter-spacing:1px}.source-tag[data-v-f693b58d]{border:none;font-weight:500}.source-tag-manual[data-v-f693b58d]{--el-tag-bg-color:#6c757d;--el-tag-border-color:#6c757d;--el-tag-text-color:#fff}.teachers-table-actions[data-v-f693b58d]{flex-wrap:nowrap;gap:4px}.teachers-table-btn[data-v-f693b58d]{min-height:22px;font-size:12px;padding:2px 6px!important}.follow-teacher-summary[data-v-f693b58d]{border-left:4px solid var(--brand-primary);background:var(--brand-bg-soft);border-radius:6px;padding:10px 12px;font-size:14px}.text-brand[data-v-f693b58d]{color:var(--brand-primary);font-weight:600}.names-muted[data-v-f693b58d]{color:#6b7280;margin-left:8px;font-size:13px}.batch-rule[data-v-f693b58d]{color:#6b7280;margin:0;font-size:12px}.follow-date-rule[data-v-f693b58d]{color:#6b7280;margin:6px 0 0;font-size:12px;line-height:1.45}.follow-history-list[data-v-f693b58d]{gap:14px;max-height:60vh;margin-top:12px;display:grid;overflow:auto}.follow-history-card[data-v-f693b58d]{border:1px solid #dfe4eb;border-left:4px solid var(--brand-primary);background:#fff;border-radius:6px}.follow-history-head[data-v-f693b58d]{border-bottom:1px solid #e6eaf1;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.follow-history-title[data-v-f693b58d]{color:var(--brand-primary);font-weight:600}.follow-history-date[data-v-f693b58d]{color:#6b7280;margin-left:14px;font-size:13px}.follow-history-body[data-v-f693b58d]{padding:14px;font-size:13px}.follow-history-row[data-v-f693b58d]{grid-template-columns:96px 1fr;gap:14px;margin-bottom:10px;display:grid}.follow-history-row>span[data-v-f693b58d]{color:#6b7280}.follow-history-footer[data-v-f693b58d]{color:#6b7280;padding:0 14px 14px;font-size:13px}.dot[data-v-f693b58d]{color:#9ca3af;margin:0 6px}.uni-row[data-v-f693b58d]{align-items:center;gap:8px;width:100%;display:flex}.teachers-primary-btn.el-button--primary{--el-button-text-color:#fff;--el-button-bg-color:#b11e23;--el-button-border-color:#b11e23;--el-button-hover-text-color:#fff;--el-button-hover-bg-color:#8b1519;--el-button-hover-border-color:#8b1519;--el-button-active-text-color:#fff;--el-button-active-bg-color:#8b1519;--el-button-active-border-color:#8b1519}.form-small[data-v-f693b58d] .el-form-item__label{padding-bottom:4px;font-size:13px}@media (width<=992px){.talent-stat-grid[data-v-f693b58d]{grid-template-columns:1fr 1fr}}

@ -1 +0,0 @@
.teachers-page[data-v-23e21a6d]{--brand-primary:#b11e23;--brand-primary-hover:#8b1519;--brand-bg-soft:#fdf3f3;flex-direction:column;gap:12px;display:flex}.talent-stat-grid[data-v-23e21a6d]{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.teachers-list-card[data-v-23e21a6d]{margin-top:0}.teachers-filter-search[data-v-23e21a6d]{width:180px}.talent-stat-card[data-v-23e21a6d]{text-align:left;cursor:pointer;min-height:68px;font:inherit;background:#fff;border:1px solid #d8dde4;border-radius:8px;flex-direction:column;justify-content:center;align-items:flex-start;gap:6px;padding:10px 16px;display:flex;position:relative;box-shadow:0 2px 10px #0f172a14}.talent-stat-card[data-v-23e21a6d]:hover,.talent-stat-card.is-active[data-v-23e21a6d]{border-color:var(--brand-primary)}.talent-stat-card.is-active[data-v-23e21a6d]:before{content:"";background:var(--brand-primary);width:4px;position:absolute;top:0;bottom:0;left:0}.talent-stat-label[data-v-23e21a6d]{color:#6b7280;font-size:14px}.talent-stat-value[data-v-23e21a6d]{color:var(--brand-primary);font-size:24px;font-weight:600;line-height:1.1}.talent-stat-value.is-dark[data-v-23e21a6d]{color:#111827}.talent-stat-value.is-danger[data-v-23e21a6d]{color:var(--el-color-danger)}.talent-stat-value.is-success[data-v-23e21a6d]{color:var(--el-color-success)}.filter-source[data-v-23e21a6d]{width:132px}.filter-stars[data-v-23e21a6d]{width:100px}.filter-status[data-v-23e21a6d]{width:112px}.filter-school[data-v-23e21a6d]{width:184px}.filter-direction[data-v-23e21a6d]{width:146px}.name-link[data-v-23e21a6d]{color:inherit;text-decoration:none}.name-link[data-v-23e21a6d]:hover{color:var(--brand-primary)}.tag-overdue[data-v-23e21a6d]{vertical-align:middle;margin-left:4px}.star-text[data-v-23e21a6d]{color:#e6a23c;letter-spacing:1px}.source-tag[data-v-23e21a6d]{border:none;font-weight:500}.source-tag-manual[data-v-23e21a6d]{--el-tag-bg-color:#6c757d;--el-tag-border-color:#6c757d;--el-tag-text-color:#fff}.teachers-table-actions[data-v-23e21a6d]{flex-wrap:nowrap;gap:4px}.teachers-table-btn[data-v-23e21a6d]{min-height:22px;font-size:12px;padding:2px 6px!important}.follow-teacher-summary[data-v-23e21a6d]{border-left:4px solid var(--brand-primary);background:var(--brand-bg-soft);border-radius:6px;padding:10px 12px;font-size:14px}.text-brand[data-v-23e21a6d]{color:var(--brand-primary);font-weight:600}.names-muted[data-v-23e21a6d]{color:#6b7280;margin-left:8px;font-size:13px}.batch-rule[data-v-23e21a6d]{color:#6b7280;margin:0;font-size:12px}.follow-date-rule[data-v-23e21a6d]{color:#6b7280;margin:6px 0 0;font-size:12px;line-height:1.45}.follow-history-list[data-v-23e21a6d]{gap:14px;max-height:60vh;margin-top:12px;display:grid;overflow:auto}.follow-history-card[data-v-23e21a6d]{border:1px solid #dfe4eb;border-left:4px solid var(--brand-primary);background:#fff;border-radius:6px}.follow-history-head[data-v-23e21a6d]{border-bottom:1px solid #e6eaf1;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.follow-history-title[data-v-23e21a6d]{color:var(--brand-primary);font-weight:600}.follow-history-date[data-v-23e21a6d]{color:#6b7280;margin-left:14px;font-size:13px}.follow-history-body[data-v-23e21a6d]{padding:14px;font-size:13px}.follow-history-row[data-v-23e21a6d]{grid-template-columns:96px 1fr;gap:14px;margin-bottom:10px;display:grid}.follow-history-row>span[data-v-23e21a6d]{color:#6b7280}.follow-history-footer[data-v-23e21a6d]{color:#6b7280;padding:0 14px 14px;font-size:13px}.dot[data-v-23e21a6d]{color:#9ca3af;margin:0 6px}.uni-row[data-v-23e21a6d]{align-items:center;gap:8px;width:100%;display:flex}.teachers-primary-btn.el-button--primary{--el-button-text-color:#fff;--el-button-bg-color:#b11e23;--el-button-border-color:#b11e23;--el-button-hover-text-color:#fff;--el-button-hover-bg-color:#8b1519;--el-button-hover-border-color:#8b1519;--el-button-active-text-color:#fff;--el-button-active-bg-color:#8b1519;--el-button-active-border-color:#8b1519}.form-small[data-v-23e21a6d] .el-form-item__label{padding-bottom:4px;font-size:13px}@media (width<=992px){.talent-stat-grid[data-v-23e21a6d]{grid-template-columns:1fr 1fr}}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +1 @@
.pick-map-wrap[data-v-0a469e9f]{margin-top:4px;position:relative;overflow:hidden}.pick-search-bar[data-v-0a469e9f]{gap:8px;margin-bottom:8px;display:flex}.pick-search-bar .el-input[data-v-0a469e9f]{flex:1}.pick-search-results[data-v-0a469e9f]{border:1px solid var(--el-border-color-light);border-radius:6px;max-height:160px;margin:0 0 8px;padding:0;list-style:none;overflow-y:auto}.pick-search-item[data-v-0a469e9f]{border:none;border-bottom:1px solid var(--el-border-color-lighter);background:var(--el-fill-color-blank);text-align:left;cursor:pointer;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:8px 12px;display:flex}.pick-search-item[data-v-0a469e9f]:last-child{border-bottom:none}.pick-search-item[data-v-0a469e9f]:hover{background:var(--el-fill-color-light)}.pick-search-item strong[data-v-0a469e9f]{color:var(--el-text-color-primary);font-size:14px}.pick-search-item span[data-v-0a469e9f]{color:var(--el-text-color-secondary);font-size:12px}.pick-map-shell[data-v-0a469e9f]{border:1px solid var(--el-border-color-light);background:#e8eef5;border-radius:6px;width:100%;min-height:200px;position:relative;overflow:hidden}.pick-map-loading[data-v-0a469e9f]{z-index:2;color:var(--el-text-color-secondary);pointer-events:none;background:#ffffffb8;justify-content:center;align-items:center;font-size:13px;display:flex;position:absolute;inset:0}.pick-map[data-v-0a469e9f]{z-index:0;cursor:crosshair;width:100%;position:relative;overflow:hidden}.pick-map[data-v-0a469e9f] .tdt-container,.pick-map[data-v-0a469e9f] .tdt-map{width:100%!important;height:100%!important}.pick-map[data-v-0a469e9f] .tdt-overlay-pane,.pick-map[data-v-0a469e9f] .tdt-marker-pane{pointer-events:none}.pick-map[data-v-0a469e9f] .tdt-marker-pane img{pointer-events:auto}.pick-map-error[data-v-0a469e9f]{text-align:center;color:var(--el-text-color-secondary);border:1px dashed var(--el-border-color);border-radius:6px;padding:24px 12px;font-size:13px}.pick-hint[data-v-0a469e9f]{color:var(--el-text-color-secondary);margin:8px 0 0;font-size:12px}.coord-inline[data-v-053ddb42]{align-items:center;gap:8px;width:100%;display:flex}.coord-input[data-v-053ddb42]{flex:1;min-width:0}.pick-map-btn[data-v-053ddb42]{flex-shrink:0}.pick-coord-preview[data-v-053ddb42]{color:var(--el-text-color-secondary);margin:0 0 10px;font-size:13px}.map-pick-dialog.el-dialog{transform:none!important}
.pick-map-wrap[data-v-0a469e9f]{margin-top:4px;position:relative;overflow:hidden}.pick-search-bar[data-v-0a469e9f]{gap:8px;margin-bottom:8px;display:flex}.pick-search-bar .el-input[data-v-0a469e9f]{flex:1}.pick-search-results[data-v-0a469e9f]{border:1px solid var(--el-border-color-light);border-radius:6px;max-height:160px;margin:0 0 8px;padding:0;list-style:none;overflow-y:auto}.pick-search-item[data-v-0a469e9f]{border:none;border-bottom:1px solid var(--el-border-color-lighter);background:var(--el-fill-color-blank);text-align:left;cursor:pointer;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:8px 12px;display:flex}.pick-search-item[data-v-0a469e9f]:last-child{border-bottom:none}.pick-search-item[data-v-0a469e9f]:hover{background:var(--el-fill-color-light)}.pick-search-item strong[data-v-0a469e9f]{color:var(--el-text-color-primary);font-size:14px}.pick-search-item span[data-v-0a469e9f]{color:var(--el-text-color-secondary);font-size:12px}.pick-map-shell[data-v-0a469e9f]{border:1px solid var(--el-border-color-light);background:#e8eef5;border-radius:6px;width:100%;min-height:200px;position:relative;overflow:hidden}.pick-map-loading[data-v-0a469e9f]{z-index:2;color:var(--el-text-color-secondary);pointer-events:none;background:#ffffffb8;justify-content:center;align-items:center;font-size:13px;display:flex;position:absolute;inset:0}.pick-map[data-v-0a469e9f]{z-index:0;cursor:crosshair;width:100%;position:relative;overflow:hidden}.pick-map[data-v-0a469e9f] .tdt-container,.pick-map[data-v-0a469e9f] .tdt-map{width:100%!important;height:100%!important}.pick-map[data-v-0a469e9f] .tdt-overlay-pane,.pick-map[data-v-0a469e9f] .tdt-marker-pane{pointer-events:none}.pick-map[data-v-0a469e9f] .tdt-marker-pane img{pointer-events:auto}.pick-map-error[data-v-0a469e9f]{text-align:center;color:var(--el-text-color-secondary);border:1px dashed var(--el-border-color);border-radius:6px;padding:24px 12px;font-size:13px}.pick-hint[data-v-0a469e9f]{color:var(--el-text-color-secondary);margin:8px 0 0;font-size:12px}.coord-inline[data-v-b3c5cdad]{align-items:center;gap:8px;width:100%;display:flex}.coord-input[data-v-b3c5cdad]{flex:1;min-width:0}.pick-map-btn[data-v-b3c5cdad]{flex-shrink:0}.pick-coord-preview[data-v-b3c5cdad]{color:var(--el-text-color-secondary);margin:0 0 10px;font-size:13px}.map-pick-dialog.el-dialog{transform:none!important}

@ -0,0 +1 @@
import{C as e,D as t,G as n,H as r,L as i,Xt as a,tn as o,y as s}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{a as c}from"./index-C2NqsgBl.js";var l=t({__name:`PageTitle`,props:{variant:{default:`default`}},setup(t){let r=t,i=c(),l=s(()=>String(i.meta.title||``)),u=s(()=>r.variant===`dashboard`?`dashboard-page-title`:r.variant===`radar`?`radar-page-title`:`page-title`);return(t,r)=>(n(),e(`h1`,{class:a(u.value)},o(l.value),3))}});function u(e){let t=()=>{Promise.resolve(e())};r(t),i(t)}export{l as n,u as t};

@ -1 +0,0 @@
import{H as e,L as t}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";function n(n){let r=()=>{Promise.resolve(n())};e(r),t(r)}export{n as t};

@ -1 +1 @@
import{r as e}from"./index-DPkd2m0V.js";async function t(t){let{data:n}=await e.get(`/admin/v1/admin-users`,{params:t});return n.data}async function n(t){let{data:n}=await e.post(`/admin/v1/admin-users`,t);return n.data}async function r(t,n){let{data:r}=await e.put(`/admin/v1/admin-users/${t}`,n);return r}async function i(t,n){let{data:r}=await e.post(`/admin/v1/admin-users/${t}/password`,{password:n});return r}async function a(t){let{data:n}=await e.delete(`/admin/v1/admin-users/${t}`);return n}export{r as a,i,a as n,t as r,n as t};
import{r as e}from"./index-C2NqsgBl.js";async function t(t){let{data:n}=await e.get(`/admin/v1/admin-users`,{params:t});return n.data}async function n(t){let{data:n}=await e.post(`/admin/v1/admin-users`,t);return n.data}async function r(t,n){let{data:r}=await e.put(`/admin/v1/admin-users/${t}`,n);return r}async function i(t,n){let{data:r}=await e.post(`/admin/v1/admin-users/${t}/password`,{password:n});return r}async function a(t){let{data:n}=await e.delete(`/admin/v1/admin-users/${t}`);return n}export{r as a,i,a as n,t as r,n as t};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -11,7 +11,7 @@
rel="stylesheet"
/>
<title>S-lake高校雷达网</title>
<script type="module" crossorigin src="/admin/assets/index-DPkd2m0V.js"></script>
<script type="module" crossorigin src="/admin/assets/index-C2NqsgBl.js"></script>
<link rel="modulepreload" crossorigin href="/admin/assets/rolldown-runtime-BYbx6iT9.js">
<link rel="modulepreload" crossorigin href="/admin/assets/vue.runtime.esm-bundler-DUiYyeqQ.js">
<link rel="stylesheet" crossorigin href="/admin/assets/index-C_muDUG9.css">

Loading…
Cancel
Save