master
parent
1c93cf8fe6
commit
41d6a34778
@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||
|
||||
class AdminSpaController extends Controller
|
||||
{
|
||||
public function __invoke(?string $path = null): BinaryFileResponse|RedirectResponse
|
||||
{
|
||||
$index = public_path('admin/index.html');
|
||||
abort_unless(is_file($index), 404);
|
||||
|
||||
$path = $path === null ? '' : trim($path, '/');
|
||||
|
||||
if ($path !== '' && $this->isStaticAsset($path)) {
|
||||
abort(404);
|
||||
}
|
||||
|
||||
if ($path !== '' && $path !== 'index.html') {
|
||||
$hashUrl = '/admin/#/'.$path;
|
||||
$query = request()->getQueryString();
|
||||
if (is_string($query) && $query !== '') {
|
||||
$hashUrl .= '?'.$query;
|
||||
}
|
||||
|
||||
return redirect($hashUrl);
|
||||
}
|
||||
|
||||
return response()->file($index, ['Content-Type' => 'text/html; charset=UTF-8']);
|
||||
}
|
||||
|
||||
protected function isStaticAsset(string $path): bool
|
||||
{
|
||||
if (str_starts_with($path, 'assets/')) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return (bool) preg_match('/\.(?:js|css|png|jpe?g|gif|svg|ico|woff2?|ttf|map|webp)$/i', $path);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,26 @@
|
||||
# 在 server { } 内、location / 之前或之后按需 include。
|
||||
# root 须指向 Laravel 的 public 目录。
|
||||
|
||||
# 后台静态资源
|
||||
location ^~ /admin/assets/ {
|
||||
try_files $uri =404;
|
||||
access_log off;
|
||||
expires 7d;
|
||||
}
|
||||
|
||||
# 后台入口:仅 /admin 与 /admin/ 返回 index.html
|
||||
location = /admin {
|
||||
return 302 /admin/;
|
||||
}
|
||||
|
||||
location ^~ /admin/ {
|
||||
try_files $uri $uri/ @admin_spa;
|
||||
}
|
||||
|
||||
location @admin_spa {
|
||||
# 深链 /admin/courses 等 → Hash 路由(与 AdminSpaController 一致)
|
||||
if ($uri ~ "^/admin/(.+)$") {
|
||||
return 302 /admin/#/$1$is_args$args;
|
||||
}
|
||||
try_files /admin/index.html =404;
|
||||
}
|
||||
@ -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-D3i1HG2q.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-j1gM0XLI.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};
|
||||
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-D3i1HG2q.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-j1gM0XLI.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};
|
||||
@ -1 +1 @@
|
||||
import{r as e}from"./index-D3i1HG2q.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-j1gM0XLI.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};
|
||||
@ -1 +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-D3i1HG2q.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};
|
||||
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-j1gM0XLI.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
@ -1 +1 @@
|
||||
import{r as e}from"./index-D3i1HG2q.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-j1gM0XLI.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
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
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
import{r as e}from"./index-D3i1HG2q.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-j1gM0XLI.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};
|
||||
@ -1 +1 @@
|
||||
import{r as e}from"./index-D3i1HG2q.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-j1gM0XLI.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
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-D3i1HG2q.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-j1gM0XLI.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};
|
||||
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-D3i1HG2q.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-j1gM0XLI.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};
|
||||
@ -1 +1 @@
|
||||
import{r as e}from"./index-D3i1HG2q.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-j1gM0XLI.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};
|
||||
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,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-D3i1HG2q.js";import{t as y}from"./usePageLoad-DFTLo_Lv.js";import{r as b}from"./admin-list-DjncsyJC.js";import{a as x,i as S,n as C,t as w}from"./research-directions-B9hhzvVH.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};
|
||||
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-j1gM0XLI.js";import{t as y}from"./usePageLoad-DFTLo_Lv.js";import{r as b}from"./admin-list-DjncsyJC.js";import{a as x,i as S,n as C,t as w}from"./research-directions-N_S3oUPX.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};
|
||||
@ -1 +1 @@
|
||||
import{r as e}from"./index-D3i1HG2q.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-j1gM0XLI.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 +1 @@
|
||||
import{r as e}from"./index-D3i1HG2q.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-j1gM0XLI.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 +1 @@
|
||||
import{r as e}from"./index-D3i1HG2q.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-j1gM0XLI.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
@ -1 +1 @@
|
||||
import{r as e}from"./index-D3i1HG2q.js";async function t(t,n){let r=new FormData;r.append(`file`,t),r.append(`subdir`,n);let{data:i}=await e.post(`/admin/v1/uploads/course-asset`,r);return i.data}async function n(t){let n=new FormData;n.append(`file`,t);let{data:r}=await e.post(`/admin/v1/uploads/news-cover`,n);return r.data}async function r(t){let n=new FormData;n.append(`file`,t);let{data:r}=await e.post(`/admin/v1/uploads/banner-cover`,n);return r.data}export{t as n,n as r,r as t};
|
||||
import{r as e}from"./index-j1gM0XLI.js";async function t(t,n){let r=new FormData;r.append(`file`,t),r.append(`subdir`,n);let{data:i}=await e.post(`/admin/v1/uploads/course-asset`,r);return i.data}async function n(t){let n=new FormData;n.append(`file`,t);let{data:r}=await e.post(`/admin/v1/uploads/news-cover`,n);return r.data}async function r(t){let n=new FormData;n.append(`file`,t);let{data:r}=await e.post(`/admin/v1/uploads/banner-cover`,n);return r.data}export{t as n,n as r,r as t};
|
||||
@ -1 +1 @@
|
||||
import{r as e}from"./index-D3i1HG2q.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-j1gM0XLI.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
Loading…
Reference in new issue