From 41e39b9b07590527955edb77207d19e2fddc4cd8 Mon Sep 17 00:00:00 2001 From: lion <120344285@qq.com> Date: Tue, 9 Jun 2026 16:09:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{AdminLayout-DZsZmeMS.js => AdminLayout-B7QrbiEr.js} | 2 +- .../assets/{HomeView-BARide6a.js => HomeView-BnX6Xt_3.js} | 2 +- ...{RichTextEditor-CvwjagK6.js => RichTextEditor-BSUub6Rd.js} | 2 +- ...tailDialog-BY1NDYPP.js => TeacherDetailDialog-SGxVTFii.js} | 2 +- .../assets/{activities-D7RRLXuc.js => activities-DYl2M41A.js} | 2 +- .../assets/{activities-Da3PCUHo.js => activities-zOsA7OhR.js} | 2 +- .../admin/assets/{assets-Wj17Zlgs.js => assets-B5_Et8Pj.js} | 2 +- .../assets/{audit-logs-BR7rcSR4.js => audit-logs-BSSuoZTi.js} | 2 +- .../admin/assets/{banners-BY60jvD-.js => banners-BMy9ge9T.js} | 2 +- .../admin/assets/{courses-BaY1NbOC.js => courses-BnsdmT2t.js} | 2 +- .../admin/assets/{courses-U0J1-mMf.js => courses-BrM6G2gc.js} | 2 +- .../admin/assets/{crawler-OUbh_VNx.js => crawler-DXXsyrmH.js} | 2 +- .../assets/{csv-export-Dog5TZxt.js => csv-export-DYWqXZBS.js} | 2 +- .../assets/{dashboard-DlyqRLa3.js => dashboard-DoD5e1Jo.js} | 2 +- .../admin/assets/{demands-LAAn9Pkv.js => demands-B9B65gIt.js} | 2 +- .../admin/assets/{demands-DTPLk14K.js => demands-CssxNgdQ.js} | 2 +- public/admin/assets/{dict-CW3bULB4.js => dict-BPnVfOXj.js} | 2 +- public/admin/assets/{dict-CkTsGkap.js => dict-X8lDWB9t.js} | 2 +- .../{grid-members-ByD9ePVc.js => grid-members-C1uECQyX.js} | 2 +- public/admin/assets/{index-jb05DpEw.js => index-DTIMLswB.js} | 4 ++-- public/admin/assets/{login-BK1tGghB.js => login-BhFGNBB2.js} | 2 +- public/admin/assets/{map-Dh8epoQE.js => map-DSyVvuR0.js} | 2 +- public/admin/assets/{menus-Cc8c82My.js => menus-ClGPwfR6.js} | 2 +- public/admin/assets/{menus-86C-Rtop.js => menus-DT_CKpVr.js} | 2 +- public/admin/assets/{news-CCfjpL6m.js => news-CNkmO_x6.js} | 2 +- public/admin/assets/{news-CB2Z7r6R.js => news-CXVgUu18.js} | 2 +- .../admin/assets/{papers-Dtxcpe4H.js => papers-3VSMemUr.js} | 2 +- ...directions-Bn9dd2FC.js => research-directions-BIEEUGLu.js} | 2 +- ...directions-Y7zStqVF.js => research-directions-StGwN-O7.js} | 2 +- public/admin/assets/{roles-DMG09nlu.js => roles-BLfXxSGi.js} | 2 +- public/admin/assets/{roles-BwiqCxdW.js => roles-DkBQwmfK.js} | 2 +- .../assets/{students-Ct75XZLa.js => students-CW43hkwk.js} | 2 +- .../assets/{teachers-D6avaTco.js => teachers-B_-YWY83.js} | 2 +- .../assets/{teachers-CirjzrhY.js => teachers-Cve-7Sy4.js} | 2 +- public/admin/assets/tiandituMap-BbTEN0Ou.js | 1 + public/admin/assets/tiandituMap-DOhOVIi3.js | 1 - public/admin/assets/universities-BrS2X24F.css | 1 - public/admin/assets/universities-CpU0jq98.js | 1 - public/admin/assets/universities-D1jZCuFP.css | 1 + public/admin/assets/universities-EPS_mI41.js | 1 + public/admin/assets/{users-BE9HtqQW.js => users-BBYvhj2V.js} | 2 +- public/admin/assets/{users-Co7RlyBg.js => users-BKqYi4zs.js} | 2 +- public/admin/index.html | 2 +- 43 files changed, 41 insertions(+), 41 deletions(-) rename public/admin/assets/{AdminLayout-DZsZmeMS.js => AdminLayout-B7QrbiEr.js} (97%) rename public/admin/assets/{HomeView-BARide6a.js => HomeView-BnX6Xt_3.js} (94%) rename public/admin/assets/{RichTextEditor-CvwjagK6.js => RichTextEditor-BSUub6Rd.js} (99%) rename public/admin/assets/{TeacherDetailDialog-BY1NDYPP.js => TeacherDetailDialog-SGxVTFii.js} (98%) rename public/admin/assets/{activities-D7RRLXuc.js => activities-DYl2M41A.js} (97%) rename public/admin/assets/{activities-Da3PCUHo.js => activities-zOsA7OhR.js} (91%) rename public/admin/assets/{assets-Wj17Zlgs.js => assets-B5_Et8Pj.js} (94%) rename public/admin/assets/{audit-logs-BR7rcSR4.js => audit-logs-BSSuoZTi.js} (97%) rename public/admin/assets/{banners-BY60jvD-.js => banners-BMy9ge9T.js} (98%) rename public/admin/assets/{courses-BaY1NbOC.js => courses-BnsdmT2t.js} (99%) rename public/admin/assets/{courses-U0J1-mMf.js => courses-BrM6G2gc.js} (91%) rename public/admin/assets/{crawler-OUbh_VNx.js => crawler-DXXsyrmH.js} (98%) rename public/admin/assets/{csv-export-Dog5TZxt.js => csv-export-DYWqXZBS.js} (99%) rename public/admin/assets/{dashboard-DlyqRLa3.js => dashboard-DoD5e1Jo.js} (98%) rename public/admin/assets/{demands-LAAn9Pkv.js => demands-B9B65gIt.js} (97%) rename public/admin/assets/{demands-DTPLk14K.js => demands-CssxNgdQ.js} (89%) rename public/admin/assets/{dict-CW3bULB4.js => dict-BPnVfOXj.js} (98%) rename public/admin/assets/{dict-CkTsGkap.js => dict-X8lDWB9t.js} (92%) rename public/admin/assets/{grid-members-ByD9ePVc.js => grid-members-C1uECQyX.js} (96%) rename public/admin/assets/{index-jb05DpEw.js => index-DTIMLswB.js} (99%) rename public/admin/assets/{login-BK1tGghB.js => login-BhFGNBB2.js} (96%) rename public/admin/assets/{map-Dh8epoQE.js => map-DSyVvuR0.js} (93%) rename public/admin/assets/{menus-Cc8c82My.js => menus-ClGPwfR6.js} (97%) rename public/admin/assets/{menus-86C-Rtop.js => menus-DT_CKpVr.js} (81%) rename public/admin/assets/{news-CCfjpL6m.js => news-CNkmO_x6.js} (97%) rename public/admin/assets/{news-CB2Z7r6R.js => news-CXVgUu18.js} (83%) rename public/admin/assets/{papers-Dtxcpe4H.js => papers-3VSMemUr.js} (97%) rename public/admin/assets/{research-directions-Bn9dd2FC.js => research-directions-BIEEUGLu.js} (95%) rename public/admin/assets/{research-directions-Y7zStqVF.js => research-directions-StGwN-O7.js} (88%) rename public/admin/assets/{roles-DMG09nlu.js => roles-BLfXxSGi.js} (77%) rename public/admin/assets/{roles-BwiqCxdW.js => roles-DkBQwmfK.js} (96%) rename public/admin/assets/{students-Ct75XZLa.js => students-CW43hkwk.js} (98%) rename public/admin/assets/{teachers-D6avaTco.js => teachers-B_-YWY83.js} (98%) rename public/admin/assets/{teachers-CirjzrhY.js => teachers-Cve-7Sy4.js} (94%) create mode 100644 public/admin/assets/tiandituMap-BbTEN0Ou.js delete mode 100644 public/admin/assets/tiandituMap-DOhOVIi3.js delete mode 100644 public/admin/assets/universities-BrS2X24F.css delete mode 100644 public/admin/assets/universities-CpU0jq98.js create mode 100644 public/admin/assets/universities-D1jZCuFP.css create mode 100644 public/admin/assets/universities-EPS_mI41.js rename public/admin/assets/{users-BE9HtqQW.js => users-BBYvhj2V.js} (83%) rename public/admin/assets/{users-Co7RlyBg.js => users-BKqYi4zs.js} (96%) diff --git a/public/admin/assets/AdminLayout-DZsZmeMS.js b/public/admin/assets/AdminLayout-B7QrbiEr.js similarity index 97% rename from public/admin/assets/AdminLayout-DZsZmeMS.js rename to public/admin/assets/AdminLayout-B7QrbiEr.js index 2587a87..5de77a5 100644 --- a/public/admin/assets/AdminLayout-DZsZmeMS.js +++ b/public/admin/assets/AdminLayout-B7QrbiEr.js @@ -1 +1 @@ -import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,Y as s,Z as c,at as l,b as u,f as d,h as f,ht as p,m,q as h,tn as g,x as _,y as v}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{a as y,d as b,h as x,l as S,n as C,o as w,s as T,t as E,v as D}from"./index-jb05DpEw.js";var O={class:`user-link`},k=T(n({__name:`AdminLayout`,setup(n){let T=y(),k=w(),A=E(),j=v(()=>T.path),M=p(!1),N=p(!1),P=p({password:``,password_confirmation:``}),F=v(()=>A.user?.username||`—`);function I(e){return e&&x[e]||D}function L(e){e&&e!==T.path&&k.push(e)}async function R(e){e===`out`&&(await A.logout(),await k.replace({name:`login`})),e===`pwd`&&(P.value={password:``,password_confirmation:``},M.value=!0)}async function z(){N.value=!0;try{await C(P.value),S.success(`密码已更新`),M.value=!1}finally{N.value=!1}}return(n,p)=>{let v=s(`el-icon`),y=s(`el-dropdown-item`),x=s(`el-dropdown-menu`),S=s(`el-dropdown`),C=s(`el-header`),w=s(`el-menu-item`),E=s(`el-sub-menu`),D=s(`el-menu`),k=s(`el-aside`),B=s(`router-view`),V=s(`el-main`),H=s(`el-container`),U=s(`el-input`),W=s(`el-form-item`),G=s(`el-form`),K=s(`el-button`),q=s(`el-dialog`);return i(),e(m,null,[r(H,{class:`admin-layout`,direction:`vertical`},{default:l(()=>[r(C,{class:`layout-topbar`,height:`52px`},{default:l(()=>[p[7]||=u(`div`,{class:`brand`},`S-lake高校雷达网`,-1),p[8]||=u(`div`,{class:`spacer`},null,-1),r(S,{class:`topbar-user`,trigger:`click`,onCommand:R},{dropdown:l(()=>[r(x,null,{default:l(()=>[r(y,{command:`pwd`},{default:l(()=>[...p[5]||=[o(`修改密码`,-1)]]),_:1}),r(y,{command:`out`,divided:``,class:`dropdown-logout`},{default:l(()=>[...p[6]||=[o(` 退出登录 `,-1)]]),_:1})]),_:1})]),default:l(()=>[u(`span`,O,[o(g(t(A).user?.real_name||t(A).user?.username)+` `,1),r(v,{class:`el-icon--right`},{default:l(()=>[r(t(b))]),_:1})])]),_:1})]),_:1}),r(H,{class:`layout-body`},{default:l(()=>[r(k,{width:`260px`,class:`aside`},{default:l(()=>[r(D,{"default-active":j.value,class:`menu slake-menu`,"background-color":`#ffffff`,"text-color":`#495057`,"active-text-color":`#ffffff`},{default:l(()=>[(i(!0),e(m,null,h(t(A).menus,t=>(i(),e(m,{key:t.id},[t.children?.length?(i(),_(E,{key:0,index:String(t.id)},{title:l(()=>[r(v,null,{default:l(()=>[(i(),_(c(I(t.icon))))]),_:2},1024),u(`span`,null,g(t.title),1)]),default:l(()=>[(i(!0),e(m,null,h(t.children,e=>(i(),_(w,{key:e.id,index:e.path,onClick:t=>L(e.path)},{default:l(()=>[r(v,null,{default:l(()=>[(i(),_(c(I(e.icon))))]),_:2},1024),u(`span`,null,g(e.title),1)]),_:2},1032,[`index`,`onClick`]))),128))]),_:2},1032,[`index`])):(i(),_(w,{key:1,index:t.path,onClick:e=>L(t.path)},{default:l(()=>[r(v,null,{default:l(()=>[(i(),_(c(I(t.icon))))]),_:2},1024),u(`span`,null,g(t.title),1)]),_:2},1032,[`index`,`onClick`]))],64))),128))]),_:1},8,[`default-active`])]),_:1}),r(V,{class:`main`},{default:l(()=>[r(B,null,{default:l(({Component:e})=>[(i(),_(f,null,[t(T).meta.keepAlive&&e?(i(),_(c(e),{key:t(T).fullPath})):a(``,!0)],1024)),!t(T).meta.keepAlive&&e?(i(),_(c(e),{key:t(T).fullPath})):a(``,!0)]),_:1})]),_:1})]),_:1})]),_:1}),r(q,{modelValue:M.value,"onUpdate:modelValue":p[3]||=e=>M.value=e,class:`pwd-dialog`,title:`修改密码`,width:`480px`,"append-to-body":``,"destroy-on-close":``,onClosed:p[4]||=e=>P.value={password:``,password_confirmation:``}},{footer:l(()=>[r(K,{onClick:p[2]||=e=>M.value=!1},{default:l(()=>[...p[9]||=[o(`取消`,-1)]]),_:1}),r(K,{type:`primary`,loading:N.value,onClick:z},{default:l(()=>[...p[10]||=[o(`保存`,-1)]]),_:1},8,[`loading`])]),default:l(()=>[r(G,{class:`pwd-dialog-form`,"label-width":`100px`,onSubmit:d(z,[`prevent`])},{default:l(()=>[r(W,{label:`账号`},{default:l(()=>[r(U,{"model-value":F.value,readonly:``},null,8,[`model-value`])]),_:1}),r(W,{label:`新密码`,required:``},{default:l(()=>[r(U,{modelValue:P.value.password,"onUpdate:modelValue":p[0]||=e=>P.value.password=e,type:`password`,"show-password":``,placeholder:`至少 6 位`,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1}),r(W,{label:`确认新密码`,required:``},{default:l(()=>[r(U,{modelValue:P.value.password_confirmation,"onUpdate:modelValue":p[1]||=e=>P.value.password_confirmation=e,type:`password`,"show-password":``,placeholder:`再次输入新密码`,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1},8,[`modelValue`])],64)}}}),[[`__scopeId`,`data-v-54fb5ddb`]]);export{k as default}; \ No newline at end of file +import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,Y as s,Z as c,at as l,b as u,f as d,h as f,ht as p,m,q as h,tn as g,x as _,y as v}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{a as y,d as b,h as x,l as S,n as C,o as w,s as T,t as E,v as D}from"./index-DTIMLswB.js";var O={class:`user-link`},k=T(n({__name:`AdminLayout`,setup(n){let T=y(),k=w(),A=E(),j=v(()=>T.path),M=p(!1),N=p(!1),P=p({password:``,password_confirmation:``}),F=v(()=>A.user?.username||`—`);function I(e){return e&&x[e]||D}function L(e){e&&e!==T.path&&k.push(e)}async function R(e){e===`out`&&(await A.logout(),await k.replace({name:`login`})),e===`pwd`&&(P.value={password:``,password_confirmation:``},M.value=!0)}async function z(){N.value=!0;try{await C(P.value),S.success(`密码已更新`),M.value=!1}finally{N.value=!1}}return(n,p)=>{let v=s(`el-icon`),y=s(`el-dropdown-item`),x=s(`el-dropdown-menu`),S=s(`el-dropdown`),C=s(`el-header`),w=s(`el-menu-item`),E=s(`el-sub-menu`),D=s(`el-menu`),k=s(`el-aside`),B=s(`router-view`),V=s(`el-main`),H=s(`el-container`),U=s(`el-input`),W=s(`el-form-item`),G=s(`el-form`),K=s(`el-button`),q=s(`el-dialog`);return i(),e(m,null,[r(H,{class:`admin-layout`,direction:`vertical`},{default:l(()=>[r(C,{class:`layout-topbar`,height:`52px`},{default:l(()=>[p[7]||=u(`div`,{class:`brand`},`S-lake高校雷达网`,-1),p[8]||=u(`div`,{class:`spacer`},null,-1),r(S,{class:`topbar-user`,trigger:`click`,onCommand:R},{dropdown:l(()=>[r(x,null,{default:l(()=>[r(y,{command:`pwd`},{default:l(()=>[...p[5]||=[o(`修改密码`,-1)]]),_:1}),r(y,{command:`out`,divided:``,class:`dropdown-logout`},{default:l(()=>[...p[6]||=[o(` 退出登录 `,-1)]]),_:1})]),_:1})]),default:l(()=>[u(`span`,O,[o(g(t(A).user?.real_name||t(A).user?.username)+` `,1),r(v,{class:`el-icon--right`},{default:l(()=>[r(t(b))]),_:1})])]),_:1})]),_:1}),r(H,{class:`layout-body`},{default:l(()=>[r(k,{width:`260px`,class:`aside`},{default:l(()=>[r(D,{"default-active":j.value,class:`menu slake-menu`,"background-color":`#ffffff`,"text-color":`#495057`,"active-text-color":`#ffffff`},{default:l(()=>[(i(!0),e(m,null,h(t(A).menus,t=>(i(),e(m,{key:t.id},[t.children?.length?(i(),_(E,{key:0,index:String(t.id)},{title:l(()=>[r(v,null,{default:l(()=>[(i(),_(c(I(t.icon))))]),_:2},1024),u(`span`,null,g(t.title),1)]),default:l(()=>[(i(!0),e(m,null,h(t.children,e=>(i(),_(w,{key:e.id,index:e.path,onClick:t=>L(e.path)},{default:l(()=>[r(v,null,{default:l(()=>[(i(),_(c(I(e.icon))))]),_:2},1024),u(`span`,null,g(e.title),1)]),_:2},1032,[`index`,`onClick`]))),128))]),_:2},1032,[`index`])):(i(),_(w,{key:1,index:t.path,onClick:e=>L(t.path)},{default:l(()=>[r(v,null,{default:l(()=>[(i(),_(c(I(t.icon))))]),_:2},1024),u(`span`,null,g(t.title),1)]),_:2},1032,[`index`,`onClick`]))],64))),128))]),_:1},8,[`default-active`])]),_:1}),r(V,{class:`main`},{default:l(()=>[r(B,null,{default:l(({Component:e})=>[(i(),_(f,null,[t(T).meta.keepAlive&&e?(i(),_(c(e),{key:t(T).fullPath})):a(``,!0)],1024)),!t(T).meta.keepAlive&&e?(i(),_(c(e),{key:t(T).fullPath})):a(``,!0)]),_:1})]),_:1})]),_:1})]),_:1}),r(q,{modelValue:M.value,"onUpdate:modelValue":p[3]||=e=>M.value=e,class:`pwd-dialog`,title:`修改密码`,width:`480px`,"append-to-body":``,"destroy-on-close":``,onClosed:p[4]||=e=>P.value={password:``,password_confirmation:``}},{footer:l(()=>[r(K,{onClick:p[2]||=e=>M.value=!1},{default:l(()=>[...p[9]||=[o(`取消`,-1)]]),_:1}),r(K,{type:`primary`,loading:N.value,onClick:z},{default:l(()=>[...p[10]||=[o(`保存`,-1)]]),_:1},8,[`loading`])]),default:l(()=>[r(G,{class:`pwd-dialog-form`,"label-width":`100px`,onSubmit:d(z,[`prevent`])},{default:l(()=>[r(W,{label:`账号`},{default:l(()=>[r(U,{"model-value":F.value,readonly:``},null,8,[`model-value`])]),_:1}),r(W,{label:`新密码`,required:``},{default:l(()=>[r(U,{modelValue:P.value.password,"onUpdate:modelValue":p[0]||=e=>P.value.password=e,type:`password`,"show-password":``,placeholder:`至少 6 位`,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1}),r(W,{label:`确认新密码`,required:``},{default:l(()=>[r(U,{modelValue:P.value.password_confirmation,"onUpdate:modelValue":p[1]||=e=>P.value.password_confirmation=e,type:`password`,"show-password":``,placeholder:`再次输入新密码`,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1},8,[`modelValue`])],64)}}}),[[`__scopeId`,`data-v-54fb5ddb`]]);export{k as default}; \ No newline at end of file diff --git a/public/admin/assets/HomeView-BARide6a.js b/public/admin/assets/HomeView-BnX6Xt_3.js similarity index 94% rename from public/admin/assets/HomeView-BARide6a.js rename to public/admin/assets/HomeView-BnX6Xt_3.js index 5a545cb..63e7722 100644 --- a/public/admin/assets/HomeView-BARide6a.js +++ b/public/admin/assets/HomeView-BnX6Xt_3.js @@ -1 +1 @@ -import{C as e,Ct as t,D as n,E as r,G as i,T as a,Y as o,at as s,b as c,tn as l,y as u}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{g as d,s as f}from"./index-jb05DpEw.js";var p={class:`page`},m={class:`card-head`},h=f(n({__name:`HomeView`,setup(n){let f=u(()=>`/api`);return(n,u)=>{let h=o(`el-icon`),g=o(`el-descriptions-item`),_=o(`el-descriptions`),v=o(`el-card`);return i(),e(`div`,p,[r(v,{class:`card`,shadow:`hover`},{header:s(()=>[c(`div`,m,[r(h,{size:22},{default:s(()=>[r(t(d))]),_:1}),u[0]||=c(`span`,null,`高校雷达网 · 管理后台`,-1)])]),default:s(()=>[u[2]||=c(`p`,{class:`desc`},[a(`技术栈:Vue 3、Vite、TypeScript、Element Plus。本地已配置对接 `),c(`code`,null,`slake-school-service`),a(` 的 API 代理。`)],-1),r(_,{column:1,border:``},{default:s(()=>[r(g,{label:`VITE_API_BASE_URL`},{default:s(()=>[c(`code`,null,l(f.value),1)]),_:1}),r(g,{label:`说明`},{default:s(()=>[...u[1]||=[a(` 开发时请求 `,-1),c(`code`,null,`/api/*`,-1),a(` 由 Vite 转发至 `,-1),c(`code`,null,`VITE_PROXY_TARGET`,-1),a(`(默认 `,-1),c(`code`,null,`http://127.0.0.1:8000`,-1),a(`),与 Laravel 的 `,-1),c(`code`,null,`/api`,-1),a(` 前缀一致。 `,-1)]]),_:1})]),_:1})]),_:1})])}}}),[[`__scopeId`,`data-v-436e6398`]]);export{h as default}; \ No newline at end of file +import{C as e,Ct as t,D as n,E as r,G as i,T as a,Y as o,at as s,b as c,tn as l,y as u}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{g as d,s as f}from"./index-DTIMLswB.js";var p={class:`page`},m={class:`card-head`},h=f(n({__name:`HomeView`,setup(n){let f=u(()=>`/api`);return(n,u)=>{let h=o(`el-icon`),g=o(`el-descriptions-item`),_=o(`el-descriptions`),v=o(`el-card`);return i(),e(`div`,p,[r(v,{class:`card`,shadow:`hover`},{header:s(()=>[c(`div`,m,[r(h,{size:22},{default:s(()=>[r(t(d))]),_:1}),u[0]||=c(`span`,null,`高校雷达网 · 管理后台`,-1)])]),default:s(()=>[u[2]||=c(`p`,{class:`desc`},[a(`技术栈:Vue 3、Vite、TypeScript、Element Plus。本地已配置对接 `),c(`code`,null,`slake-school-service`),a(` 的 API 代理。`)],-1),r(_,{column:1,border:``},{default:s(()=>[r(g,{label:`VITE_API_BASE_URL`},{default:s(()=>[c(`code`,null,l(f.value),1)]),_:1}),r(g,{label:`说明`},{default:s(()=>[...u[1]||=[a(` 开发时请求 `,-1),c(`code`,null,`/api/*`,-1),a(` 由 Vite 转发至 `,-1),c(`code`,null,`VITE_PROXY_TARGET`,-1),a(`(默认 `,-1),c(`code`,null,`http://127.0.0.1:8000`,-1),a(`),与 Laravel 的 `,-1),c(`code`,null,`/api`,-1),a(` 前缀一致。 `,-1)]]),_:1})]),_:1})]),_:1})])}}}),[[`__scopeId`,`data-v-436e6398`]]);export{h as default}; \ No newline at end of file diff --git a/public/admin/assets/RichTextEditor-CvwjagK6.js b/public/admin/assets/RichTextEditor-BSUub6Rd.js similarity index 99% rename from public/admin/assets/RichTextEditor-CvwjagK6.js rename to public/admin/assets/RichTextEditor-BSUub6Rd.js index b29a8cc..8d0d36f 100644 --- a/public/admin/assets/RichTextEditor-CvwjagK6.js +++ b/public/admin/assets/RichTextEditor-BSUub6Rd.js @@ -1,4 +1,4 @@ -import{a as e,t}from"./rolldown-runtime-BYbx6iT9.js";import{A as n,C as r,Ct as i,D as a,E as o,G as s,H as c,I as l,P as u,Qt as d,et as f,ht as p,rt as m,z as h}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{l as g,r as _,s as v}from"./index-jb05DpEw.js";var y=t(((e,t)=>{(function(n,r){typeof e==`object`&&typeof t==`object`?t.exports=r():typeof define==`function`&&define.amd?define([],r):typeof e==`object`?e.Quill=r():n.Quill=r()})(typeof self<`u`?self:e,function(){return(function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,`a`,t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=``,n(n.s=109)})([(function(e,t,n){Object.defineProperty(t,`__esModule`,{value:!0});var r=n(17),i=n(18),a=n(19),o=n(45),s=n(46),c=n(47),l=n(48),u=n(49),d=n(12),f=n(32),p=n(33),m=n(31),h=n(1);t.default={Scope:h.Scope,create:h.create,find:h.find,query:h.query,register:h.register,Container:r.default,Format:i.default,Leaf:a.default,Embed:l.default,Scroll:o.default,Block:c.default,Inline:s.default,Text:u.default,Attributor:{Attribute:d.default,Class:f.default,Style:p.default,Store:m.default}}}),(function(e,t,n){var r=this&&this.__extends||(function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}})();Object.defineProperty(t,`__esModule`,{value:!0});var i=function(e){r(t,e);function t(t){var n=this;return t=`[Parchment] `+t,n=e.call(this,t)||this,n.message=t,n.name=n.constructor.name,n}return t}(Error);t.ParchmentError=i;var a={},o={},s={},c={};t.DATA_KEY=`__blot`;var l;(function(e){e[e.TYPE=3]=`TYPE`,e[e.LEVEL=12]=`LEVEL`,e[e.ATTRIBUTE=13]=`ATTRIBUTE`,e[e.BLOT=14]=`BLOT`,e[e.INLINE=7]=`INLINE`,e[e.BLOCK=11]=`BLOCK`,e[e.BLOCK_BLOT=10]=`BLOCK_BLOT`,e[e.INLINE_BLOT=6]=`INLINE_BLOT`,e[e.BLOCK_ATTRIBUTE=9]=`BLOCK_ATTRIBUTE`,e[e.INLINE_ATTRIBUTE=5]=`INLINE_ATTRIBUTE`,e[e.ANY=15]=`ANY`})(l=t.Scope||={});function u(e,t){var n=f(e);if(n==null)throw new i(`Unable to create `+e+` blot`);var r=n;return new r(e instanceof Node||e.nodeType===Node.TEXT_NODE?e:r.create(t),t)}t.create=u;function d(e,n){return n===void 0&&(n=!1),e==null?null:e[t.DATA_KEY]==null?n?d(e.parentNode,n):null:e[t.DATA_KEY].blot}t.find=d;function f(e,t){t===void 0&&(t=l.ANY);var n;if(typeof e==`string`)n=c[e]||a[e];else if(e instanceof Text||e.nodeType===Node.TEXT_NODE)n=c.text;else if(typeof e==`number`)e&l.LEVEL&l.BLOCK?n=c.block:e&l.LEVEL&l.INLINE&&(n=c.inline);else if(e instanceof HTMLElement){var r=(e.getAttribute(`class`)||``).split(/\s+/);for(var i in r)if(n=o[r[i]],n)break;n||=s[e.tagName]}return n==null?null:t&l.LEVEL&n.scope&&t&l.TYPE&n.scope?n:null}t.query=f;function p(){var e=[...arguments];if(e.length>1)return e.map(function(e){return p(e)});var t=e[0];if(typeof t.blotName!=`string`&&typeof t.attrName!=`string`)throw new i(`Invalid definition`);if(t.blotName===`abstract`)throw new i(`Cannot register abstract class`);return c[t.blotName||t.attrName]=t,typeof t.keyName==`string`?a[t.keyName]=t:(t.className!=null&&(o[t.className]=t),t.tagName!=null&&(Array.isArray(t.tagName)?t.tagName=t.tagName.map(function(e){return e.toUpperCase()}):t.tagName=t.tagName.toUpperCase(),(Array.isArray(t.tagName)?t.tagName:[t.tagName]).forEach(function(e){(s[e]==null||t.className==null)&&(s[e]=t)}))),t}t.register=p}),(function(e,t,n){var r=n(51),i=n(11),a=n(3),o=n(20),s=`\0`,c=function(e){Array.isArray(e)?this.ops=e:e!=null&&Array.isArray(e.ops)?this.ops=e.ops:this.ops=[]};c.prototype.insert=function(e,t){var n={};return e.length===0?this:(n.insert=e,typeof t==`object`&&t&&Object.keys(t).length>0&&(n.attributes=t),this.push(n))},c.prototype.delete=function(e){return e<=0?this:this.push({delete:e})},c.prototype.retain=function(e,t){if(e<=0)return this;var n={retain:e};return typeof t==`object`&&t&&Object.keys(t).length>0&&(n.attributes=t),this.push(n)},c.prototype.push=function(e){var t=this.ops.length,n=this.ops[t-1];if(e=a(!0,{},e),typeof n==`object`){if(typeof e.delete==`number`&&typeof n.delete==`number`)return this.ops[t-1]={delete:n.delete+e.delete},this;if(typeof n.delete==`number`&&e.insert!=null&&(--t,n=this.ops[t-1],typeof n!=`object`))return this.ops.unshift(e),this;if(i(e.attributes,n.attributes)){if(typeof e.insert==`string`&&typeof n.insert==`string`)return this.ops[t-1]={insert:n.insert+e.insert},typeof e.attributes==`object`&&(this.ops[t-1].attributes=e.attributes),this;if(typeof e.retain==`number`&&typeof n.retain==`number`)return this.ops[t-1]={retain:n.retain+e.retain},typeof e.attributes==`object`&&(this.ops[t-1].attributes=e.attributes),this}}return t===this.ops.length?this.ops.push(e):this.ops.splice(t,0,e),this},c.prototype.chop=function(){var e=this.ops[this.ops.length-1];return e&&e.retain&&!e.attributes&&this.ops.pop(),this},c.prototype.filter=function(e){return this.ops.filter(e)},c.prototype.forEach=function(e){this.ops.forEach(e)},c.prototype.map=function(e){return this.ops.map(e)},c.prototype.partition=function(e){var t=[],n=[];return this.forEach(function(r){(e(r)?t:n).push(r)}),[t,n]},c.prototype.reduce=function(e,t){return this.ops.reduce(e,t)},c.prototype.changeLength=function(){return this.reduce(function(e,t){return t.insert?e+o.length(t):t.delete?e-t.delete:e},0)},c.prototype.length=function(){return this.reduce(function(e,t){return e+o.length(t)},0)},c.prototype.slice=function(e,t){e||=0,typeof t!=`number`&&(t=1/0);for(var n=[],r=o.iterator(this.ops),i=0;i0&&n.next(a.retain-s)}for(var l=new c(r);t.hasNext()||n.hasNext();)if(n.peekType()===`insert`)l.push(n.next());else if(t.peekType()===`delete`)l.push(t.next());else{var u=Math.min(t.peekLength(),n.peekLength()),d=t.next(u),f=n.next(u);if(typeof f.retain==`number`){var p={};typeof d.retain==`number`?p.retain=u:p.insert=d.insert;var m=o.attributes.compose(d.attributes,f.attributes,typeof d.retain==`number`);if(m&&(p.attributes=m),l.push(p),!n.hasNext()&&i(l.ops[l.ops.length-1],p)){var h=new c(t.rest());return l.concat(h).chop()}}else typeof f.delete==`number`&&typeof d.retain==`number`&&l.push(f)}return l.chop()},c.prototype.concat=function(e){var t=new c(this.ops.slice());return e.ops.length>0&&(t.push(e.ops[0]),t.ops=t.ops.concat(e.ops.slice(1))),t},c.prototype.diff=function(e,t){if(this.ops===e.ops)return new c;var n=[this,e].map(function(t){return t.map(function(n){if(n.insert!=null)return typeof n.insert==`string`?n.insert:s;throw Error(`diff() called `+(t===e?`on`:`with`)+` non-document`)}).join(``)}),a=new c,l=r(n[0],n[1],t),u=o.iterator(this.ops),d=o.iterator(e.ops);return l.forEach(function(e){for(var t=e[1].length;t>0;){var n=0;switch(e[0]){case r.INSERT:n=Math.min(d.peekLength(),t),a.push(d.next(n));break;case r.DELETE:n=Math.min(t,u.peekLength()),u.next(n),a.delete(n);break;case r.EQUAL:n=Math.min(u.peekLength(),d.peekLength(),t);var s=u.next(n),c=d.next(n);i(s.insert,c.insert)?a.retain(n,o.attributes.diff(s.attributes,c.attributes)):a.push(c).delete(n);break}t-=n}}),a.chop()},c.prototype.eachLine=function(e,t){t||=` +import{a as e,t}from"./rolldown-runtime-BYbx6iT9.js";import{A as n,C as r,Ct as i,D as a,E as o,G as s,H as c,I as l,P as u,Qt as d,et as f,ht as p,rt as m,z as h}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{l as g,r as _,s as v}from"./index-DTIMLswB.js";var y=t(((e,t)=>{(function(n,r){typeof e==`object`&&typeof t==`object`?t.exports=r():typeof define==`function`&&define.amd?define([],r):typeof e==`object`?e.Quill=r():n.Quill=r()})(typeof self<`u`?self:e,function(){return(function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,`a`,t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=``,n(n.s=109)})([(function(e,t,n){Object.defineProperty(t,`__esModule`,{value:!0});var r=n(17),i=n(18),a=n(19),o=n(45),s=n(46),c=n(47),l=n(48),u=n(49),d=n(12),f=n(32),p=n(33),m=n(31),h=n(1);t.default={Scope:h.Scope,create:h.create,find:h.find,query:h.query,register:h.register,Container:r.default,Format:i.default,Leaf:a.default,Embed:l.default,Scroll:o.default,Block:c.default,Inline:s.default,Text:u.default,Attributor:{Attribute:d.default,Class:f.default,Style:p.default,Store:m.default}}}),(function(e,t,n){var r=this&&this.__extends||(function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}})();Object.defineProperty(t,`__esModule`,{value:!0});var i=function(e){r(t,e);function t(t){var n=this;return t=`[Parchment] `+t,n=e.call(this,t)||this,n.message=t,n.name=n.constructor.name,n}return t}(Error);t.ParchmentError=i;var a={},o={},s={},c={};t.DATA_KEY=`__blot`;var l;(function(e){e[e.TYPE=3]=`TYPE`,e[e.LEVEL=12]=`LEVEL`,e[e.ATTRIBUTE=13]=`ATTRIBUTE`,e[e.BLOT=14]=`BLOT`,e[e.INLINE=7]=`INLINE`,e[e.BLOCK=11]=`BLOCK`,e[e.BLOCK_BLOT=10]=`BLOCK_BLOT`,e[e.INLINE_BLOT=6]=`INLINE_BLOT`,e[e.BLOCK_ATTRIBUTE=9]=`BLOCK_ATTRIBUTE`,e[e.INLINE_ATTRIBUTE=5]=`INLINE_ATTRIBUTE`,e[e.ANY=15]=`ANY`})(l=t.Scope||={});function u(e,t){var n=f(e);if(n==null)throw new i(`Unable to create `+e+` blot`);var r=n;return new r(e instanceof Node||e.nodeType===Node.TEXT_NODE?e:r.create(t),t)}t.create=u;function d(e,n){return n===void 0&&(n=!1),e==null?null:e[t.DATA_KEY]==null?n?d(e.parentNode,n):null:e[t.DATA_KEY].blot}t.find=d;function f(e,t){t===void 0&&(t=l.ANY);var n;if(typeof e==`string`)n=c[e]||a[e];else if(e instanceof Text||e.nodeType===Node.TEXT_NODE)n=c.text;else if(typeof e==`number`)e&l.LEVEL&l.BLOCK?n=c.block:e&l.LEVEL&l.INLINE&&(n=c.inline);else if(e instanceof HTMLElement){var r=(e.getAttribute(`class`)||``).split(/\s+/);for(var i in r)if(n=o[r[i]],n)break;n||=s[e.tagName]}return n==null?null:t&l.LEVEL&n.scope&&t&l.TYPE&n.scope?n:null}t.query=f;function p(){var e=[...arguments];if(e.length>1)return e.map(function(e){return p(e)});var t=e[0];if(typeof t.blotName!=`string`&&typeof t.attrName!=`string`)throw new i(`Invalid definition`);if(t.blotName===`abstract`)throw new i(`Cannot register abstract class`);return c[t.blotName||t.attrName]=t,typeof t.keyName==`string`?a[t.keyName]=t:(t.className!=null&&(o[t.className]=t),t.tagName!=null&&(Array.isArray(t.tagName)?t.tagName=t.tagName.map(function(e){return e.toUpperCase()}):t.tagName=t.tagName.toUpperCase(),(Array.isArray(t.tagName)?t.tagName:[t.tagName]).forEach(function(e){(s[e]==null||t.className==null)&&(s[e]=t)}))),t}t.register=p}),(function(e,t,n){var r=n(51),i=n(11),a=n(3),o=n(20),s=`\0`,c=function(e){Array.isArray(e)?this.ops=e:e!=null&&Array.isArray(e.ops)?this.ops=e.ops:this.ops=[]};c.prototype.insert=function(e,t){var n={};return e.length===0?this:(n.insert=e,typeof t==`object`&&t&&Object.keys(t).length>0&&(n.attributes=t),this.push(n))},c.prototype.delete=function(e){return e<=0?this:this.push({delete:e})},c.prototype.retain=function(e,t){if(e<=0)return this;var n={retain:e};return typeof t==`object`&&t&&Object.keys(t).length>0&&(n.attributes=t),this.push(n)},c.prototype.push=function(e){var t=this.ops.length,n=this.ops[t-1];if(e=a(!0,{},e),typeof n==`object`){if(typeof e.delete==`number`&&typeof n.delete==`number`)return this.ops[t-1]={delete:n.delete+e.delete},this;if(typeof n.delete==`number`&&e.insert!=null&&(--t,n=this.ops[t-1],typeof n!=`object`))return this.ops.unshift(e),this;if(i(e.attributes,n.attributes)){if(typeof e.insert==`string`&&typeof n.insert==`string`)return this.ops[t-1]={insert:n.insert+e.insert},typeof e.attributes==`object`&&(this.ops[t-1].attributes=e.attributes),this;if(typeof e.retain==`number`&&typeof n.retain==`number`)return this.ops[t-1]={retain:n.retain+e.retain},typeof e.attributes==`object`&&(this.ops[t-1].attributes=e.attributes),this}}return t===this.ops.length?this.ops.push(e):this.ops.splice(t,0,e),this},c.prototype.chop=function(){var e=this.ops[this.ops.length-1];return e&&e.retain&&!e.attributes&&this.ops.pop(),this},c.prototype.filter=function(e){return this.ops.filter(e)},c.prototype.forEach=function(e){this.ops.forEach(e)},c.prototype.map=function(e){return this.ops.map(e)},c.prototype.partition=function(e){var t=[],n=[];return this.forEach(function(r){(e(r)?t:n).push(r)}),[t,n]},c.prototype.reduce=function(e,t){return this.ops.reduce(e,t)},c.prototype.changeLength=function(){return this.reduce(function(e,t){return t.insert?e+o.length(t):t.delete?e-t.delete:e},0)},c.prototype.length=function(){return this.reduce(function(e,t){return e+o.length(t)},0)},c.prototype.slice=function(e,t){e||=0,typeof t!=`number`&&(t=1/0);for(var n=[],r=o.iterator(this.ops),i=0;i0&&n.next(a.retain-s)}for(var l=new c(r);t.hasNext()||n.hasNext();)if(n.peekType()===`insert`)l.push(n.next());else if(t.peekType()===`delete`)l.push(t.next());else{var u=Math.min(t.peekLength(),n.peekLength()),d=t.next(u),f=n.next(u);if(typeof f.retain==`number`){var p={};typeof d.retain==`number`?p.retain=u:p.insert=d.insert;var m=o.attributes.compose(d.attributes,f.attributes,typeof d.retain==`number`);if(m&&(p.attributes=m),l.push(p),!n.hasNext()&&i(l.ops[l.ops.length-1],p)){var h=new c(t.rest());return l.concat(h).chop()}}else typeof f.delete==`number`&&typeof d.retain==`number`&&l.push(f)}return l.chop()},c.prototype.concat=function(e){var t=new c(this.ops.slice());return e.ops.length>0&&(t.push(e.ops[0]),t.ops=t.ops.concat(e.ops.slice(1))),t},c.prototype.diff=function(e,t){if(this.ops===e.ops)return new c;var n=[this,e].map(function(t){return t.map(function(n){if(n.insert!=null)return typeof n.insert==`string`?n.insert:s;throw Error(`diff() called `+(t===e?`on`:`with`)+` non-document`)}).join(``)}),a=new c,l=r(n[0],n[1],t),u=o.iterator(this.ops),d=o.iterator(e.ops);return l.forEach(function(e){for(var t=e[1].length;t>0;){var n=0;switch(e[0]){case r.INSERT:n=Math.min(d.peekLength(),t),a.push(d.next(n));break;case r.DELETE:n=Math.min(t,u.peekLength()),u.next(n),a.delete(n);break;case r.EQUAL:n=Math.min(u.peekLength(),d.peekLength(),t);var s=u.next(n),c=d.next(n);i(s.insert,c.insert)?a.retain(n,o.attributes.diff(s.attributes,c.attributes)):a.push(c).delete(n);break}t-=n}}),a.chop()},c.prototype.eachLine=function(e,t){t||=` `;for(var n=o.iterator(this.ops),r=new c,i=0;n.hasNext();){if(n.peekType()!==`insert`)return;var a=n.peek(),s=o.length(a)-n.peekLength(),l=typeof a.insert==`string`?a.insert.indexOf(t,s)-s:-1;if(l<0)r.push(n.next());else if(l>0)r.push(n.next(l));else{if(e(r,n.next(1).attributes||{},i)===!1)return;i+=1,r=new c}}r.length()>0&&e(r,{},i)},c.prototype.transform=function(e,t){if(t=!!t,typeof e==`number`)return this.transformPosition(e,t);for(var n=o.iterator(this.ops),r=o.iterator(e.ops),i=new c;n.hasNext()||r.hasNext();)if(n.peekType()===`insert`&&(t||r.peekType()!==`insert`))i.retain(o.length(n.next()));else if(r.peekType()===`insert`)i.push(r.next());else{var a=Math.min(n.peekLength(),r.peekLength()),s=n.next(a),l=r.next(a);if(s.delete)continue;l.delete?i.push(l):i.retain(a,o.attributes.transform(s.attributes,l.attributes,t))}return i.chop()},c.prototype.transformPosition=function(e,t){t=!!t;for(var n=o.iterator(this.ops),r=0;n.hasNext()&&r<=e;){var i=n.peekLength(),a=n.peekType();if(n.next(),a===`delete`){e-=Math.min(i,e-r);continue}else a===`insert`&&(re.id))}async function F(e=E.value){C.value=!0;try{let t=await w({page:e,page_size:D.value.per_page,keyword:S.value.trim()||void 0});T.value=t.items,D.value=t.meta,E.value=t.meta.current_page,j.value&&!t.items.some(e=>e.id===j.value)&&(j.value=void 0)}finally{C.value=!1}}function I(){E.value=1,F(1)}function L(e){A.value.includes(e.id)||(j.value=e.id)}async function R(){if(o.teacherId){if(!b.value.title.trim()||!b.value.authors.trim()){x.warning(`请填写标题与作者`);return}if(!b.value.published_at){x.warning(`请选择发表时间`);return}y.value=!0;try{await O(o.teacherId,{...b.value}),x.success(`已添加论文`),r.value=!1,m(`saved`)}finally{y.value=!1}}}async function z(){if(o.teacherId){if(!j.value){x.warning(`请选择要关联的论文`);return}if(A.value.includes(j.value)){x.warning(`该论文已关联此老师`);return}y.value=!0;try{await k(o.teacherId,j.value),x.success(`已关联论文`),r.value=!1,m(`saved`)}finally{y.value=!1}}}async function re(){h.value===`manual`?await R():await z()}return g(()=>[r.value,o.teacherId],([e])=>{e&&o.teacherId&&(h.value=`manual`,j.value=void 0,S.value=``,E.value=1,M(),P(),F(1))}),g(h,e=>{e===`library`&&r.value&&o.teacherId&&F(E.value)}),(e,n)=>{let o=l(`el-input`),f=l(`el-form-item`),p=l(`el-col`),m=l(`el-date-picker`),g=l(`el-row`),x=l(`el-form`),w=l(`el-tab-pane`),O=l(`el-button`),k=l(`el-table-column`),j=l(`el-tag`),M=l(`el-table`),N=l(`el-pagination`),P=l(`el-tabs`),R=l(`el-dialog`),z=ee(`loading`);return a(),v(R,{modelValue:r.value,"onUpdate:modelValue":n[10]||=e=>r.value=e,title:`论文`,width:`720px`,"destroy-on-close":``,"append-to-body":``},{footer:u(()=>[i(O,{onClick:n[9]||=e=>r.value=!1},{default:u(()=>[...n[13]||=[c(`取消`,-1)]]),_:1}),i(O,{type:`primary`,loading:y.value,onClick:re},{default:u(()=>[c(_(h.value===`manual`?`保存`:`确认关联`),1)]),_:1},8,[`loading`])]),default:u(()=>[i(P,{modelValue:h.value,"onUpdate:modelValue":n[8]||=e=>h.value=e},{default:u(()=>[i(w,{label:`手动录入`,name:`manual`},{default:u(()=>[i(x,{"label-position":`top`,class:`form-small`},{default:u(()=>[i(f,{label:`标题`,required:``},{default:u(()=>[i(o,{modelValue:b.value.title,"onUpdate:modelValue":n[0]||=e=>b.value.title=e,placeholder:`请输入论文标题`},null,8,[`modelValue`])]),_:1}),i(g,{gutter:12},{default:u(()=>[i(p,{span:12},{default:u(()=>[i(f,{label:`作者`,required:``},{default:u(()=>[i(o,{modelValue:b.value.authors,"onUpdate:modelValue":n[1]||=e=>b.value.authors=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:12},{default:u(()=>[i(f,{label:`学校`},{default:u(()=>[i(o,{modelValue:b.value.school_name,"onUpdate:modelValue":n[2]||=e=>b.value.school_name=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:12},{default:u(()=>[i(f,{label:`发表时间`,required:``},{default:u(()=>[i(m,{modelValue:b.value.published_at,"onUpdate:modelValue":n[3]||=e=>b.value.published_at=e,type:`date`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:12},{default:u(()=>[i(f,{label:`链接`},{default:u(()=>[i(o,{modelValue:b.value.url,"onUpdate:modelValue":n[4]||=e=>b.value.url=e,placeholder:`https://example.com/paper`},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:24},{default:u(()=>[i(f,{label:`摘要`},{default:u(()=>[i(o,{modelValue:b.value.summary,"onUpdate:modelValue":n[5]||=e=>b.value.summary=e,type:`textarea`,rows:4,placeholder:`请输入论文摘要`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),i(w,{label:`从论文库选择`,name:`library`},{default:u(()=>[d(`div`,B,[i(o,{modelValue:S.value,"onUpdate:modelValue":n[6]||=e=>S.value=e,clearable:``,placeholder:`搜索标题、作者、学校…`,style:{width:`260px`},onKeyup:te(I,[`enter`])},null,8,[`modelValue`]),i(O,{type:`primary`,onClick:I},{default:u(()=>[...n[11]||=[c(`搜索`,-1)]]),_:1})]),ne((a(),v(M,{data:T.value,size:`small`,"highlight-current-row":``,class:`library-table`,"row-class-name":({row:e})=>A.value.includes(e.id)?`is-linked-row`:``,onRowClick:L,onCurrentChange:n[7]||=e=>{e&&L(e)}},{default:u(()=>[i(k,{prop:`title`,label:`标题`,"min-width":`200`,"show-overflow-tooltip":``}),i(k,{prop:`authors`,label:`作者`,width:`120`,"show-overflow-tooltip":``}),i(k,{prop:`school_name`,label:`学校`,width:`120`,"show-overflow-tooltip":``}),i(k,{label:`状态`,width:`80`,align:`center`},{default:u(({row:e})=>[A.value.includes(e.id)?(a(),v(j,{key:0,size:`small`,type:`info`},{default:u(()=>[...n[12]||=[c(`已关联`,-1)]]),_:1})):(a(),t(`span`,V,`—`))]),_:1})]),_:1},8,[`data`,`row-class-name`])),[[z,C.value]]),D.value.total>0?(a(),t(`div`,H,[i(N,{layout:`total, prev, pager, next`,total:D.value.total,"page-size":D.value.per_page,"current-page":E.value,onCurrentChange:F},null,8,[`total`,`page-size`,`current-page`])])):s(``,!0)]),_:1})]),_:1},8,[`modelValue`])]),_:1},8,[`modelValue`])}}}),[[`__scopeId`,`data-v-d91269f1`]]),ae={class:`detail-body`},oe={key:0,class:`basic-info-block`},se={key:1,class:`basic-info-block`},ce={key:0,class:`crawl-uni-hint`},le={class:`uni-row`},ue={class:`star-preview`},de={key:0,class:`star-follow-rule`},fe={class:`section`},pe={class:`section-head`},me={class:`muted`},he={class:`section`},ge={class:`section-head`},_e={class:`muted`},ve={class:`summary-body`},ye={class:`follow-summary`},be={class:`log-head`},U=r({__name:`TeacherDetailDialog`,props:{modelValue:{type:Boolean},teacherId:{},readonly:{type:Boolean}},emits:[`update:modelValue`,`saved`],setup(e,{emit:r}){let o=C(),te=y(()=>o.isGridMember),f=e,S=y(()=>f.readonly===!0),w=y(()=>{let e=H.value?.name;return S.value?e?`查看 · ${e}`:`老师详情`:e?`编辑 · ${e}`:`编辑老师`});function O(e){return e.university_name?e.university_name:e.university_text?`${e.university_text}(未关联高校库)`:`—`}function k(e){return e.research_direction?e.research_direction:e.research_directions?.map(e=>e.name).join(`、`)||`—`}let B=r,V=p(!1),H=p(null),U=p(null),W=y(()=>R(q.value.find(e=>e.id===Y.value.star_level_dict_item_id)?.value)),G=p([]),K=p([]),q=p([]),xe=p([]),J=p([]),Se=p([]),Y=p({name:``,university_id:void 0,city:``,title:``,research_direction_ids:[],phone:``,email:``,star_level_dict_item_id:void 0,status_dict_item_id:void 0,next_follow_date:``}),X=p(!1),Z=p(!1),Q=p({name:``,city:``,province:``,longitude:``,latitude:``}),$=p(!1),Ce=p(!1),we=p(``),Te=p(!1),Ee=p(``),De=p([]);async function Oe(){let e=await j({page:1,page_size:200}),t=o.user?.grid_scope?.university_ids;J.value=t?.length?e.items.filter(e=>t.includes(e.id)):e.items}async function ke(){let e=await E(),t=o.user?.grid_scope?.research_direction_ids;Se.value=t?.length?e.research_directions.filter(e=>t.includes(e.id)):e.research_directions}function Ae(){Q.value={name:``,city:Y.value.city||``,province:``,longitude:``,latitude:``},X.value=!0}async function je(){let e=Q.value;if(!e.name.trim()){x.warning(`请填写高校名称`);return}if(!e.longitude.trim()||!e.latitude.trim()){x.warning(`请填写经度与纬度`);return}let t=Number(e.longitude),n=Number(e.latitude);if(Number.isNaN(t)||Number.isNaN(n)){x.warning(`经纬度须为有效数字`);return}Z.value=!0;try{let r=await T({name:e.name.trim(),city:e.city.trim()||null,province:e.province.trim()||null,longitude:t,latitude:n});J.value.some(e=>e.id===r.id)||J.value.push(r),Y.value.university_id=r.id,r.city&&(Y.value.city=r.city),X.value=!1,x.success(`高校已创建`)}finally{Z.value=!1}}async function Me(){if(f.teacherId){V.value=!0;try{let e=await M(f.teacherId);H.value=e,U.value=e.star_level_dict_item_id??null,Y.value={name:e.name||``,university_id:e.university_id??void 0,research_direction_ids:e.research_direction_ids?.length?[...e.research_direction_ids]:e.research_directions?.map(e=>e.id)||[],city:e.city||``,title:e.title||``,phone:e.phone||``,email:e.email||``,star_level_dict_item_id:e.star_level_dict_item_id??void 0,status_dict_item_id:e.status_dict_item_id??void 0,next_follow_date:e.next_follow_date||``};let[t,n]=await Promise.all([N(f.teacherId),L({teacher_id:f.teacherId,page:1,page_size:50})]);G.value=t,K.value=n.items}finally{V.value=!1}}}function Ne(){let e=Y.value;return e.name.trim()?e.university_id?e.city.trim()?e.title.trim()?e.research_direction_ids.length?e.status_dict_item_id?!0:(x.warning(`请选择状态`),!1):(x.warning(`请至少选择一个研究方向`),!1):(x.warning(`请填写职称`),!1):(x.warning(`请填写城市`),!1):(x.warning(`请选择高校,或点击「新建高校」`),!1):(x.warning(`请填写姓名`),!1)}async function Pe(){if(!f.teacherId||!H.value||!Ne())return;let e=(Y.value.star_level_dict_item_id??null)!==U.value;await D(f.teacherId,{name:Y.value.name.trim(),university_id:Y.value.university_id,city:Y.value.city.trim(),title:Y.value.title.trim(),research_direction_ids:Y.value.research_direction_ids,phone:Y.value.phone||null,email:Y.value.email||null,star_level_dict_item_id:Y.value.star_level_dict_item_id??null,status_dict_item_id:Y.value.status_dict_item_id,...e?{recalc_next_follow_date:!0}:{next_follow_date:Y.value.next_follow_date||null,recalc_next_follow_date:!1}}),x.success(`已保存`),B(`saved`),B(`update:modelValue`,!1)}function Fe(){let e=q.value.find(e=>e.id===Y.value.star_level_dict_item_id);Y.value.next_follow_date=re(e?.value)||``}function Ie(e){if(!e)return;let t=J.value.find(t=>t.id===e);t?.city&&!Y.value.city&&(Y.value.city=t.city)}function Le(){$.value=!0}async function Re(){f.teacherId&&(G.value=await N(f.teacherId))}async function ze(e){await b.confirm(`确定删除论文「${e.title}」?`,`确认删除`,{type:`warning`}),await A(f.teacherId,e.id),G.value=await N(f.teacherId)}function Be(e){we.value=e.summary||`暂无摘要`,Ce.value=!0}async function Ve(e){Ee.value=e.title,De.value=await I(e.id),Te.value=!0}return g(()=>[f.modelValue,f.teacherId],async([e,t])=>{if(e&&t){if(!q.value.length){let[e,t]=await Promise.all([P(`teacher_level`),P(`teacher_status`)]);q.value=e.items,xe.value=t.items,await Oe()}await ke(),await Me()}}),g(()=>Y.value.university_id,e=>Ie(e)),(r,o)=>{let f=l(`el-descriptions-item`),p=l(`el-descriptions`),g=l(`el-input`),y=l(`el-form-item`),b=l(`el-col`),x=l(`el-option`),C=l(`el-select`),T=l(`el-button`),E=l(`el-date-picker`),D=l(`el-row`),A=l(`el-form`),j=l(`el-table-column`),M=l(`el-link`),N=l(`el-table`),P=l(`el-tag`),I=l(`el-empty`),L=l(`el-dialog`),R=ee(`loading`);return a(),v(L,{"model-value":e.modelValue,title:w.value,width:`960px`,top:`4vh`,"destroy-on-close":``,"onUpdate:modelValue":o[21]||=e=>B(`update:modelValue`,e)},{footer:u(()=>[i(T,{onClick:o[10]||=e=>B(`update:modelValue`,!1)},{default:u(()=>[...o[31]||=[c(`关闭`,-1)]]),_:1}),S.value?s(``,!0):(a(),v(T,{key:0,type:`primary`,class:`teachers-primary-btn`,onClick:Pe},{default:u(()=>[...o[32]||=[c(` 保存 `,-1)]]),_:1}))]),default:u(()=>[ne((a(),t(`div`,ae,[S.value&&H.value?(a(),t(`div`,oe,[o[22]||=d(`h3`,{class:`basic-info-title`},`基本信息`,-1),i(p,{column:3,border:``,size:`small`,class:`view-desc`},{default:u(()=>[i(f,{label:`姓名`},{default:u(()=>[c(_(H.value.name),1)]),_:1}),i(f,{label:`高校`},{default:u(()=>[c(_(O(H.value)),1)]),_:1}),i(f,{label:`城市`},{default:u(()=>[c(_(H.value.city||`—`),1)]),_:1}),i(f,{label:`职称`},{default:u(()=>[c(_(H.value.title||`—`),1)]),_:1}),i(f,{label:`研究方向`,span:2},{default:u(()=>[c(_(k(H.value)),1)]),_:1}),i(f,{label:`电话`},{default:u(()=>[c(_(H.value.phone||`—`),1)]),_:1}),i(f,{label:`邮箱`},{default:u(()=>[c(_(H.value.email||`—`),1)]),_:1}),i(f,{label:`星级`},{default:u(()=>[c(_(n(z)(H.value.star_level_item?.value,H.value.star_level_item?.label)),1)]),_:1}),i(f,{label:`状态`},{default:u(()=>[c(_(H.value.status_item?.label||`—`),1)]),_:1}),i(f,{label:`下次跟进日期`},{default:u(()=>[c(_(H.value.next_follow_date||`—`),1)]),_:1}),H.value.source_item?.label?(a(),v(f,{key:0,label:`来源`},{default:u(()=>[c(_(H.value.source_item.label),1)]),_:1})):s(``,!0)]),_:1})])):(a(),t(`div`,se,[o[24]||=d(`h3`,{class:`basic-info-title`},`基本信息`,-1),i(A,{"label-position":`top`,class:`form-small`},{default:u(()=>[i(D,{gutter:12},{default:u(()=>[i(b,{xs:24,md:4},{default:u(()=>[i(y,{label:`姓名`,required:``},{default:u(()=>[i(g,{modelValue:Y.value.name,"onUpdate:modelValue":o[0]||=e=>Y.value.name=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:8},{default:u(()=>[i(y,{label:`高校`,required:``},{default:u(()=>[H.value?.university_text&&!Y.value.university_id?(a(),t(`p`,ce,` 论文抓取高校:`+_(H.value.university_text)+`(请在下拉中选择或新建以关联) `,1)):s(``,!0),d(`div`,le,[i(C,{modelValue:Y.value.university_id,"onUpdate:modelValue":o[1]||=e=>Y.value.university_id=e,filterable:``,placeholder:`选择高校`,style:{flex:`1`}},{default:u(()=>[(a(!0),t(m,null,h(J.value,e=>(a(),v(x,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),te.value?s(``,!0):(a(),v(T,{key:0,type:`primary`,size:`small`,class:`teachers-primary-btn`,onClick:Ae},{default:u(()=>[...o[23]||=[c(` 新建高校 `,-1)]]),_:1}))])]),_:1})]),_:1}),i(b,{xs:24,md:4},{default:u(()=>[i(y,{label:`城市`,required:``},{default:u(()=>[i(g,{modelValue:Y.value.city,"onUpdate:modelValue":o[2]||=e=>Y.value.city=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:8},{default:u(()=>[i(y,{label:`职称`,required:``},{default:u(()=>[i(g,{modelValue:Y.value.title,"onUpdate:modelValue":o[3]||=e=>Y.value.title=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:8},{default:u(()=>[i(y,{label:`研究方向`,required:``},{default:u(()=>[i(C,{modelValue:Y.value.research_direction_ids,"onUpdate:modelValue":o[4]||=e=>Y.value.research_direction_ids=e,multiple:``,filterable:``,"collapse-tags":``,"collapse-tags-tooltip":``,placeholder:`选择研究方向(可多选)`,style:{width:`100%`}},{default:u(()=>[(a(!0),t(m,null,h(Se.value,e=>(a(),v(x,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:6},{default:u(()=>[i(y,{label:`电话`},{default:u(()=>[i(g,{modelValue:Y.value.phone,"onUpdate:modelValue":o[5]||=e=>Y.value.phone=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:6},{default:u(()=>[i(y,{label:`邮箱`},{default:u(()=>[i(g,{modelValue:Y.value.email,"onUpdate:modelValue":o[6]||=e=>Y.value.email=e,type:`email`},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:4},{default:u(()=>[i(y,{label:`星级`},{default:u(()=>[i(C,{modelValue:Y.value.star_level_dict_item_id,"onUpdate:modelValue":o[7]||=e=>Y.value.star_level_dict_item_id=e,style:{width:`100%`},onChange:Fe},{default:u(()=>[(a(!0),t(m,null,h(q.value,e=>(a(),v(x,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),d(`span`,ue,_(n(z)(q.value.find(e=>e.id===Y.value.star_level_dict_item_id)?.value,q.value.find(e=>e.id===Y.value.star_level_dict_item_id)?.label)),1)]),_:1})]),_:1}),i(b,{xs:24,md:6},{default:u(()=>[i(y,{label:`状态`,required:``},{default:u(()=>[i(C,{modelValue:Y.value.status_dict_item_id,"onUpdate:modelValue":o[8]||=e=>Y.value.status_dict_item_id=e,placeholder:`请选择状态`,style:{width:`100%`}},{default:u(()=>[(a(!0),t(m,null,h(xe.value,e=>(a(),v(x,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:6},{default:u(()=>[i(y,{label:`下次跟进日期`},{default:u(()=>[i(E,{modelValue:Y.value.next_follow_date,"onUpdate:modelValue":o[9]||=e=>Y.value.next_follow_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`选择日期`,style:{width:`100%`}},null,8,[`modelValue`]),W.value?(a(),t(`p`,de,_(W.value),1)):s(``,!0)]),_:1})]),_:1})]),_:1})]),_:1})])),d(`div`,fe,[d(`div`,pe,[o[26]||=d(`h3`,null,`论文列表`,-1),d(`span`,me,`共 `+_(G.value.length)+` 篇`,1),S.value?s(``,!0):(a(),v(T,{key:0,size:`small`,type:`primary`,plain:``,onClick:Le},{default:u(()=>[...o[25]||=[c(` 添加论文 `,-1)]]),_:1}))]),i(N,{data:G.value,size:`small`,"row-key":`id`},{default:u(()=>[i(j,{prop:`title`,label:`标题`,"min-width":`200`,"show-overflow-tooltip":``}),i(j,{prop:`authors`,label:`作者`,width:`140`}),i(j,{prop:`school_name`,label:`学校`,width:`120`}),i(j,{prop:`published_at`,label:`发表时间`,width:`110`}),i(j,{label:`链接`,width:`70`},{default:u(({row:e})=>[e.url?(a(),v(M,{key:0,href:e.url,target:`_blank`},{default:u(()=>[...o[27]||=[c(`查看`,-1)]]),_:1},8,[`href`])):s(``,!0)]),_:1}),i(j,{label:`操作`,width:S.value?70:120},{default:u(({row:e})=>[i(T,{link:``,type:`primary`,onClick:t=>Be(e)},{default:u(()=>[...o[28]||=[c(`摘要`,-1)]]),_:1},8,[`onClick`]),S.value?s(``,!0):(a(),v(T,{key:0,link:``,type:`danger`,onClick:t=>ze(e)},{default:u(()=>[...o[29]||=[c(`删除`,-1)]]),_:1},8,[`onClick`]))]),_:1},8,[`width`])]),_:1},8,[`data`])]),d(`div`,he,[d(`div`,ge,[o[30]||=d(`h3`,null,`需求列表`,-1),d(`span`,_e,`共 `+_(K.value.length)+` 条`,1)]),i(N,{data:K.value,size:`small`,"row-key":`id`},{default:u(()=>[i(j,{label:`类型`,width:`100`},{default:u(({row:e})=>[i(P,{size:`small`,effect:`dark`},{default:u(()=>[c(_(e.type_item?.label),1)]),_:2},1024)]),_:1}),i(j,{prop:`title`,label:`标题`,"min-width":`180`,"show-overflow-tooltip":``}),i(j,{prop:`submitted_at`,label:`时间`,width:`110`}),i(j,{label:`处理状态`,width:`100`},{default:u(({row:e})=>[i(P,{type:n(F)(e.status_item?.value),size:`small`,effect:`dark`},{default:u(()=>[c(_(e.status_item?.label),1)]),_:2},1032,[`type`])]),_:1}),i(j,{label:`跟进记录`,width:`100`},{default:u(({row:e})=>[i(T,{size:`small`,onClick:t=>Ve(e)},{default:u(()=>[c(_(e.handle_logs_count||0)+`条记录 `,1)]),_:2},1032,[`onClick`])]),_:1})]),_:1},8,[`data`]),K.value.length?s(``,!0):(a(),v(I,{key:0,description:`暂无关联需求`,"image-size":64}))])])),[[R,V.value]]),i(L,{modelValue:X.value,"onUpdate:modelValue":o[17]||=e=>X.value=e,title:`新建高校`,width:`480px`,"append-to-body":``,"destroy-on-close":``},{footer:u(()=>[i(T,{onClick:o[16]||=e=>X.value=!1},{default:u(()=>[...o[33]||=[c(`取消`,-1)]]),_:1}),i(T,{type:`primary`,class:`teachers-primary-btn`,loading:Z.value,onClick:je},{default:u(()=>[...o[34]||=[c(` 保存 `,-1)]]),_:1},8,[`loading`])]),default:u(()=>[i(A,{"label-position":`top`,class:`form-small`},{default:u(()=>[i(y,{label:`高校名称`,required:``},{default:u(()=>[i(g,{modelValue:Q.value.name,"onUpdate:modelValue":o[11]||=e=>Q.value.name=e,placeholder:`如:复旦大学`},null,8,[`modelValue`])]),_:1}),i(D,{gutter:12},{default:u(()=>[i(b,{span:12},{default:u(()=>[i(y,{label:`经度`,required:``},{default:u(()=>[i(g,{modelValue:Q.value.longitude,"onUpdate:modelValue":o[12]||=e=>Q.value.longitude=e,placeholder:`如:121.5031`},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{span:12},{default:u(()=>[i(y,{label:`纬度`,required:``},{default:u(()=>[i(g,{modelValue:Q.value.latitude,"onUpdate:modelValue":o[13]||=e=>Q.value.latitude=e,placeholder:`如:31.2970`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1}),i(D,{gutter:12},{default:u(()=>[i(b,{span:12},{default:u(()=>[i(y,{label:`省份`},{default:u(()=>[i(g,{modelValue:Q.value.province,"onUpdate:modelValue":o[14]||=e=>Q.value.province=e,placeholder:`如:上海市`},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{span:12},{default:u(()=>[i(y,{label:`城市`},{default:u(()=>[i(g,{modelValue:Q.value.city,"onUpdate:modelValue":o[15]||=e=>Q.value.city=e,placeholder:`如:上海`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),i(L,{modelValue:Ce.value,"onUpdate:modelValue":o[18]||=e=>Ce.value=e,title:`论文摘要`,width:`520px`,"append-to-body":``},{default:u(()=>[d(`p`,ve,_(we.value),1)]),_:1},8,[`modelValue`]),i(ie,{modelValue:$.value,"onUpdate:modelValue":o[19]||=e=>$.value=e,"teacher-id":e.teacherId,"default-authors":H.value?.name||Y.value.name,"default-school-name":J.value.find(e=>e.id===Y.value.university_id)?.name||H.value?.university_name||``,onSaved:Re},null,8,[`modelValue`,`teacher-id`,`default-authors`,`default-school-name`]),i(L,{modelValue:Te.value,"onUpdate:modelValue":o[20]||=e=>Te.value=e,title:`需求跟进记录`,width:`640px`,"append-to-body":``},{default:u(()=>[d(`p`,ye,_(Ee.value),1),(a(!0),t(m,null,h(De.value,e=>(a(),t(`div`,{key:e.id,class:`log-card`},[d(`div`,be,[d(`strong`,null,_(e.operator_name),1),d(`span`,null,_(e.handled_at),1),e.status_item?(a(),v(P,{key:0,size:`small`,type:n(F)(e.status_item.value)},{default:u(()=>[c(_(e.status_item.label),1)]),_:2},1032,[`type`])):s(``,!0)]),d(`p`,null,_(e.content),1)]))),128)),De.value.length?s(``,!0):(a(),v(I,{key:0,description:`暂无记录`}))]),_:1},8,[`modelValue`])]),_:1},8,[`model-value`,`title`])}}}),W=e({default:()=>G}),G=S(U,[[`__scopeId`,`data-v-287a1810`]]);export{W as n,ie as r,G as t}; \ No newline at end of file +import{r as e}from"./rolldown-runtime-BYbx6iT9.js";import{C as t,Ct as n,D as r,E as i,G as a,P as o,S as s,T as c,X as ee,Y as l,at as u,b as d,d as te,et as f,ht as p,m,ot as ne,q as h,rt as g,tn as _,x as v,y}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as b,l as x,s as S,t as C}from"./index-DTIMLswB.js";import{l as w}from"./assets-B5_Et8Pj.js";import{a as T,c as E,h as D,i as O,m as k,o as A,p as j,s as M,u as N}from"./teachers-Cve-7Sy4.js";import{a as P}from"./dict-X8lDWB9t.js";import{i as F,o as I,s as L}from"./demands-CssxNgdQ.js";import{a as R,n as z,o as re}from"./teacherStar-By0_CBs7.js";var B={class:`library-toolbar`},V={key:1,class:`text-mute`},H={key:0,class:`library-pager`},ie=S(r({__name:`TeacherPaperDialog`,props:o({teacherId:{},defaultAuthors:{},defaultSchoolName:{}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:o([`saved`],[`update:modelValue`]),setup(e,{emit:n}){let r=f(e,`modelValue`),o=e,m=n,h=p(`manual`),y=p(!1),b=p({title:``,authors:``,school_name:``,published_at:``,url:``,summary:``}),S=p(``),C=p(!1),T=p([]),E=p(1),D=p({current_page:1,per_page:10,total:0}),A=p([]),j=p();function M(){b.value={title:``,authors:o.defaultAuthors||``,school_name:o.defaultSchoolName||``,published_at:``,url:``,summary:``}}async function P(){o.teacherId&&(A.value=(await N(o.teacherId)).map(e=>e.id))}async function F(e=E.value){C.value=!0;try{let t=await w({page:e,page_size:D.value.per_page,keyword:S.value.trim()||void 0});T.value=t.items,D.value=t.meta,E.value=t.meta.current_page,j.value&&!t.items.some(e=>e.id===j.value)&&(j.value=void 0)}finally{C.value=!1}}function I(){E.value=1,F(1)}function L(e){A.value.includes(e.id)||(j.value=e.id)}async function R(){if(o.teacherId){if(!b.value.title.trim()||!b.value.authors.trim()){x.warning(`请填写标题与作者`);return}if(!b.value.published_at){x.warning(`请选择发表时间`);return}y.value=!0;try{await O(o.teacherId,{...b.value}),x.success(`已添加论文`),r.value=!1,m(`saved`)}finally{y.value=!1}}}async function z(){if(o.teacherId){if(!j.value){x.warning(`请选择要关联的论文`);return}if(A.value.includes(j.value)){x.warning(`该论文已关联此老师`);return}y.value=!0;try{await k(o.teacherId,j.value),x.success(`已关联论文`),r.value=!1,m(`saved`)}finally{y.value=!1}}}async function re(){h.value===`manual`?await R():await z()}return g(()=>[r.value,o.teacherId],([e])=>{e&&o.teacherId&&(h.value=`manual`,j.value=void 0,S.value=``,E.value=1,M(),P(),F(1))}),g(h,e=>{e===`library`&&r.value&&o.teacherId&&F(E.value)}),(e,n)=>{let o=l(`el-input`),f=l(`el-form-item`),p=l(`el-col`),m=l(`el-date-picker`),g=l(`el-row`),x=l(`el-form`),w=l(`el-tab-pane`),O=l(`el-button`),k=l(`el-table-column`),j=l(`el-tag`),M=l(`el-table`),N=l(`el-pagination`),P=l(`el-tabs`),R=l(`el-dialog`),z=ee(`loading`);return a(),v(R,{modelValue:r.value,"onUpdate:modelValue":n[10]||=e=>r.value=e,title:`论文`,width:`720px`,"destroy-on-close":``,"append-to-body":``},{footer:u(()=>[i(O,{onClick:n[9]||=e=>r.value=!1},{default:u(()=>[...n[13]||=[c(`取消`,-1)]]),_:1}),i(O,{type:`primary`,loading:y.value,onClick:re},{default:u(()=>[c(_(h.value===`manual`?`保存`:`确认关联`),1)]),_:1},8,[`loading`])]),default:u(()=>[i(P,{modelValue:h.value,"onUpdate:modelValue":n[8]||=e=>h.value=e},{default:u(()=>[i(w,{label:`手动录入`,name:`manual`},{default:u(()=>[i(x,{"label-position":`top`,class:`form-small`},{default:u(()=>[i(f,{label:`标题`,required:``},{default:u(()=>[i(o,{modelValue:b.value.title,"onUpdate:modelValue":n[0]||=e=>b.value.title=e,placeholder:`请输入论文标题`},null,8,[`modelValue`])]),_:1}),i(g,{gutter:12},{default:u(()=>[i(p,{span:12},{default:u(()=>[i(f,{label:`作者`,required:``},{default:u(()=>[i(o,{modelValue:b.value.authors,"onUpdate:modelValue":n[1]||=e=>b.value.authors=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:12},{default:u(()=>[i(f,{label:`学校`},{default:u(()=>[i(o,{modelValue:b.value.school_name,"onUpdate:modelValue":n[2]||=e=>b.value.school_name=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:12},{default:u(()=>[i(f,{label:`发表时间`,required:``},{default:u(()=>[i(m,{modelValue:b.value.published_at,"onUpdate:modelValue":n[3]||=e=>b.value.published_at=e,type:`date`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:12},{default:u(()=>[i(f,{label:`链接`},{default:u(()=>[i(o,{modelValue:b.value.url,"onUpdate:modelValue":n[4]||=e=>b.value.url=e,placeholder:`https://example.com/paper`},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:24},{default:u(()=>[i(f,{label:`摘要`},{default:u(()=>[i(o,{modelValue:b.value.summary,"onUpdate:modelValue":n[5]||=e=>b.value.summary=e,type:`textarea`,rows:4,placeholder:`请输入论文摘要`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),i(w,{label:`从论文库选择`,name:`library`},{default:u(()=>[d(`div`,B,[i(o,{modelValue:S.value,"onUpdate:modelValue":n[6]||=e=>S.value=e,clearable:``,placeholder:`搜索标题、作者、学校…`,style:{width:`260px`},onKeyup:te(I,[`enter`])},null,8,[`modelValue`]),i(O,{type:`primary`,onClick:I},{default:u(()=>[...n[11]||=[c(`搜索`,-1)]]),_:1})]),ne((a(),v(M,{data:T.value,size:`small`,"highlight-current-row":``,class:`library-table`,"row-class-name":({row:e})=>A.value.includes(e.id)?`is-linked-row`:``,onRowClick:L,onCurrentChange:n[7]||=e=>{e&&L(e)}},{default:u(()=>[i(k,{prop:`title`,label:`标题`,"min-width":`200`,"show-overflow-tooltip":``}),i(k,{prop:`authors`,label:`作者`,width:`120`,"show-overflow-tooltip":``}),i(k,{prop:`school_name`,label:`学校`,width:`120`,"show-overflow-tooltip":``}),i(k,{label:`状态`,width:`80`,align:`center`},{default:u(({row:e})=>[A.value.includes(e.id)?(a(),v(j,{key:0,size:`small`,type:`info`},{default:u(()=>[...n[12]||=[c(`已关联`,-1)]]),_:1})):(a(),t(`span`,V,`—`))]),_:1})]),_:1},8,[`data`,`row-class-name`])),[[z,C.value]]),D.value.total>0?(a(),t(`div`,H,[i(N,{layout:`total, prev, pager, next`,total:D.value.total,"page-size":D.value.per_page,"current-page":E.value,onCurrentChange:F},null,8,[`total`,`page-size`,`current-page`])])):s(``,!0)]),_:1})]),_:1},8,[`modelValue`])]),_:1},8,[`modelValue`])}}}),[[`__scopeId`,`data-v-d91269f1`]]),ae={class:`detail-body`},oe={key:0,class:`basic-info-block`},se={key:1,class:`basic-info-block`},ce={key:0,class:`crawl-uni-hint`},le={class:`uni-row`},ue={class:`star-preview`},de={key:0,class:`star-follow-rule`},fe={class:`section`},pe={class:`section-head`},me={class:`muted`},he={class:`section`},ge={class:`section-head`},_e={class:`muted`},ve={class:`summary-body`},ye={class:`follow-summary`},be={class:`log-head`},U=r({__name:`TeacherDetailDialog`,props:{modelValue:{type:Boolean},teacherId:{},readonly:{type:Boolean}},emits:[`update:modelValue`,`saved`],setup(e,{emit:r}){let o=C(),te=y(()=>o.isGridMember),f=e,S=y(()=>f.readonly===!0),w=y(()=>{let e=H.value?.name;return S.value?e?`查看 · ${e}`:`老师详情`:e?`编辑 · ${e}`:`编辑老师`});function O(e){return e.university_name?e.university_name:e.university_text?`${e.university_text}(未关联高校库)`:`—`}function k(e){return e.research_direction?e.research_direction:e.research_directions?.map(e=>e.name).join(`、`)||`—`}let B=r,V=p(!1),H=p(null),U=p(null),W=y(()=>R(q.value.find(e=>e.id===Y.value.star_level_dict_item_id)?.value)),G=p([]),K=p([]),q=p([]),xe=p([]),J=p([]),Se=p([]),Y=p({name:``,university_id:void 0,city:``,title:``,research_direction_ids:[],phone:``,email:``,star_level_dict_item_id:void 0,status_dict_item_id:void 0,next_follow_date:``}),X=p(!1),Z=p(!1),Q=p({name:``,city:``,province:``,longitude:``,latitude:``}),$=p(!1),Ce=p(!1),we=p(``),Te=p(!1),Ee=p(``),De=p([]);async function Oe(){let e=await j({page:1,page_size:200}),t=o.user?.grid_scope?.university_ids;J.value=t?.length?e.items.filter(e=>t.includes(e.id)):e.items}async function ke(){let e=await E(),t=o.user?.grid_scope?.research_direction_ids;Se.value=t?.length?e.research_directions.filter(e=>t.includes(e.id)):e.research_directions}function Ae(){Q.value={name:``,city:Y.value.city||``,province:``,longitude:``,latitude:``},X.value=!0}async function je(){let e=Q.value;if(!e.name.trim()){x.warning(`请填写高校名称`);return}if(!e.longitude.trim()||!e.latitude.trim()){x.warning(`请填写经度与纬度`);return}let t=Number(e.longitude),n=Number(e.latitude);if(Number.isNaN(t)||Number.isNaN(n)){x.warning(`经纬度须为有效数字`);return}Z.value=!0;try{let r=await T({name:e.name.trim(),city:e.city.trim()||null,province:e.province.trim()||null,longitude:t,latitude:n});J.value.some(e=>e.id===r.id)||J.value.push(r),Y.value.university_id=r.id,r.city&&(Y.value.city=r.city),X.value=!1,x.success(`高校已创建`)}finally{Z.value=!1}}async function Me(){if(f.teacherId){V.value=!0;try{let e=await M(f.teacherId);H.value=e,U.value=e.star_level_dict_item_id??null,Y.value={name:e.name||``,university_id:e.university_id??void 0,research_direction_ids:e.research_direction_ids?.length?[...e.research_direction_ids]:e.research_directions?.map(e=>e.id)||[],city:e.city||``,title:e.title||``,phone:e.phone||``,email:e.email||``,star_level_dict_item_id:e.star_level_dict_item_id??void 0,status_dict_item_id:e.status_dict_item_id??void 0,next_follow_date:e.next_follow_date||``};let[t,n]=await Promise.all([N(f.teacherId),L({teacher_id:f.teacherId,page:1,page_size:50})]);G.value=t,K.value=n.items}finally{V.value=!1}}}function Ne(){let e=Y.value;return e.name.trim()?e.university_id?e.city.trim()?e.title.trim()?e.research_direction_ids.length?e.status_dict_item_id?!0:(x.warning(`请选择状态`),!1):(x.warning(`请至少选择一个研究方向`),!1):(x.warning(`请填写职称`),!1):(x.warning(`请填写城市`),!1):(x.warning(`请选择高校,或点击「新建高校」`),!1):(x.warning(`请填写姓名`),!1)}async function Pe(){if(!f.teacherId||!H.value||!Ne())return;let e=(Y.value.star_level_dict_item_id??null)!==U.value;await D(f.teacherId,{name:Y.value.name.trim(),university_id:Y.value.university_id,city:Y.value.city.trim(),title:Y.value.title.trim(),research_direction_ids:Y.value.research_direction_ids,phone:Y.value.phone||null,email:Y.value.email||null,star_level_dict_item_id:Y.value.star_level_dict_item_id??null,status_dict_item_id:Y.value.status_dict_item_id,...e?{recalc_next_follow_date:!0}:{next_follow_date:Y.value.next_follow_date||null,recalc_next_follow_date:!1}}),x.success(`已保存`),B(`saved`),B(`update:modelValue`,!1)}function Fe(){let e=q.value.find(e=>e.id===Y.value.star_level_dict_item_id);Y.value.next_follow_date=re(e?.value)||``}function Ie(e){if(!e)return;let t=J.value.find(t=>t.id===e);t?.city&&!Y.value.city&&(Y.value.city=t.city)}function Le(){$.value=!0}async function Re(){f.teacherId&&(G.value=await N(f.teacherId))}async function ze(e){await b.confirm(`确定删除论文「${e.title}」?`,`确认删除`,{type:`warning`}),await A(f.teacherId,e.id),G.value=await N(f.teacherId)}function Be(e){we.value=e.summary||`暂无摘要`,Ce.value=!0}async function Ve(e){Ee.value=e.title,De.value=await I(e.id),Te.value=!0}return g(()=>[f.modelValue,f.teacherId],async([e,t])=>{if(e&&t){if(!q.value.length){let[e,t]=await Promise.all([P(`teacher_level`),P(`teacher_status`)]);q.value=e.items,xe.value=t.items,await Oe()}await ke(),await Me()}}),g(()=>Y.value.university_id,e=>Ie(e)),(r,o)=>{let f=l(`el-descriptions-item`),p=l(`el-descriptions`),g=l(`el-input`),y=l(`el-form-item`),b=l(`el-col`),x=l(`el-option`),C=l(`el-select`),T=l(`el-button`),E=l(`el-date-picker`),D=l(`el-row`),A=l(`el-form`),j=l(`el-table-column`),M=l(`el-link`),N=l(`el-table`),P=l(`el-tag`),I=l(`el-empty`),L=l(`el-dialog`),R=ee(`loading`);return a(),v(L,{"model-value":e.modelValue,title:w.value,width:`960px`,top:`4vh`,"destroy-on-close":``,"onUpdate:modelValue":o[21]||=e=>B(`update:modelValue`,e)},{footer:u(()=>[i(T,{onClick:o[10]||=e=>B(`update:modelValue`,!1)},{default:u(()=>[...o[31]||=[c(`关闭`,-1)]]),_:1}),S.value?s(``,!0):(a(),v(T,{key:0,type:`primary`,class:`teachers-primary-btn`,onClick:Pe},{default:u(()=>[...o[32]||=[c(` 保存 `,-1)]]),_:1}))]),default:u(()=>[ne((a(),t(`div`,ae,[S.value&&H.value?(a(),t(`div`,oe,[o[22]||=d(`h3`,{class:`basic-info-title`},`基本信息`,-1),i(p,{column:3,border:``,size:`small`,class:`view-desc`},{default:u(()=>[i(f,{label:`姓名`},{default:u(()=>[c(_(H.value.name),1)]),_:1}),i(f,{label:`高校`},{default:u(()=>[c(_(O(H.value)),1)]),_:1}),i(f,{label:`城市`},{default:u(()=>[c(_(H.value.city||`—`),1)]),_:1}),i(f,{label:`职称`},{default:u(()=>[c(_(H.value.title||`—`),1)]),_:1}),i(f,{label:`研究方向`,span:2},{default:u(()=>[c(_(k(H.value)),1)]),_:1}),i(f,{label:`电话`},{default:u(()=>[c(_(H.value.phone||`—`),1)]),_:1}),i(f,{label:`邮箱`},{default:u(()=>[c(_(H.value.email||`—`),1)]),_:1}),i(f,{label:`星级`},{default:u(()=>[c(_(n(z)(H.value.star_level_item?.value,H.value.star_level_item?.label)),1)]),_:1}),i(f,{label:`状态`},{default:u(()=>[c(_(H.value.status_item?.label||`—`),1)]),_:1}),i(f,{label:`下次跟进日期`},{default:u(()=>[c(_(H.value.next_follow_date||`—`),1)]),_:1}),H.value.source_item?.label?(a(),v(f,{key:0,label:`来源`},{default:u(()=>[c(_(H.value.source_item.label),1)]),_:1})):s(``,!0)]),_:1})])):(a(),t(`div`,se,[o[24]||=d(`h3`,{class:`basic-info-title`},`基本信息`,-1),i(A,{"label-position":`top`,class:`form-small`},{default:u(()=>[i(D,{gutter:12},{default:u(()=>[i(b,{xs:24,md:4},{default:u(()=>[i(y,{label:`姓名`,required:``},{default:u(()=>[i(g,{modelValue:Y.value.name,"onUpdate:modelValue":o[0]||=e=>Y.value.name=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:8},{default:u(()=>[i(y,{label:`高校`,required:``},{default:u(()=>[H.value?.university_text&&!Y.value.university_id?(a(),t(`p`,ce,` 论文抓取高校:`+_(H.value.university_text)+`(请在下拉中选择或新建以关联) `,1)):s(``,!0),d(`div`,le,[i(C,{modelValue:Y.value.university_id,"onUpdate:modelValue":o[1]||=e=>Y.value.university_id=e,filterable:``,placeholder:`选择高校`,style:{flex:`1`}},{default:u(()=>[(a(!0),t(m,null,h(J.value,e=>(a(),v(x,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),te.value?s(``,!0):(a(),v(T,{key:0,type:`primary`,size:`small`,class:`teachers-primary-btn`,onClick:Ae},{default:u(()=>[...o[23]||=[c(` 新建高校 `,-1)]]),_:1}))])]),_:1})]),_:1}),i(b,{xs:24,md:4},{default:u(()=>[i(y,{label:`城市`,required:``},{default:u(()=>[i(g,{modelValue:Y.value.city,"onUpdate:modelValue":o[2]||=e=>Y.value.city=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:8},{default:u(()=>[i(y,{label:`职称`,required:``},{default:u(()=>[i(g,{modelValue:Y.value.title,"onUpdate:modelValue":o[3]||=e=>Y.value.title=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:8},{default:u(()=>[i(y,{label:`研究方向`,required:``},{default:u(()=>[i(C,{modelValue:Y.value.research_direction_ids,"onUpdate:modelValue":o[4]||=e=>Y.value.research_direction_ids=e,multiple:``,filterable:``,"collapse-tags":``,"collapse-tags-tooltip":``,placeholder:`选择研究方向(可多选)`,style:{width:`100%`}},{default:u(()=>[(a(!0),t(m,null,h(Se.value,e=>(a(),v(x,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:6},{default:u(()=>[i(y,{label:`电话`},{default:u(()=>[i(g,{modelValue:Y.value.phone,"onUpdate:modelValue":o[5]||=e=>Y.value.phone=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:6},{default:u(()=>[i(y,{label:`邮箱`},{default:u(()=>[i(g,{modelValue:Y.value.email,"onUpdate:modelValue":o[6]||=e=>Y.value.email=e,type:`email`},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:4},{default:u(()=>[i(y,{label:`星级`},{default:u(()=>[i(C,{modelValue:Y.value.star_level_dict_item_id,"onUpdate:modelValue":o[7]||=e=>Y.value.star_level_dict_item_id=e,style:{width:`100%`},onChange:Fe},{default:u(()=>[(a(!0),t(m,null,h(q.value,e=>(a(),v(x,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),d(`span`,ue,_(n(z)(q.value.find(e=>e.id===Y.value.star_level_dict_item_id)?.value,q.value.find(e=>e.id===Y.value.star_level_dict_item_id)?.label)),1)]),_:1})]),_:1}),i(b,{xs:24,md:6},{default:u(()=>[i(y,{label:`状态`,required:``},{default:u(()=>[i(C,{modelValue:Y.value.status_dict_item_id,"onUpdate:modelValue":o[8]||=e=>Y.value.status_dict_item_id=e,placeholder:`请选择状态`,style:{width:`100%`}},{default:u(()=>[(a(!0),t(m,null,h(xe.value,e=>(a(),v(x,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:6},{default:u(()=>[i(y,{label:`下次跟进日期`},{default:u(()=>[i(E,{modelValue:Y.value.next_follow_date,"onUpdate:modelValue":o[9]||=e=>Y.value.next_follow_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`选择日期`,style:{width:`100%`}},null,8,[`modelValue`]),W.value?(a(),t(`p`,de,_(W.value),1)):s(``,!0)]),_:1})]),_:1})]),_:1})]),_:1})])),d(`div`,fe,[d(`div`,pe,[o[26]||=d(`h3`,null,`论文列表`,-1),d(`span`,me,`共 `+_(G.value.length)+` 篇`,1),S.value?s(``,!0):(a(),v(T,{key:0,size:`small`,type:`primary`,plain:``,onClick:Le},{default:u(()=>[...o[25]||=[c(` 添加论文 `,-1)]]),_:1}))]),i(N,{data:G.value,size:`small`,"row-key":`id`},{default:u(()=>[i(j,{prop:`title`,label:`标题`,"min-width":`200`,"show-overflow-tooltip":``}),i(j,{prop:`authors`,label:`作者`,width:`140`}),i(j,{prop:`school_name`,label:`学校`,width:`120`}),i(j,{prop:`published_at`,label:`发表时间`,width:`110`}),i(j,{label:`链接`,width:`70`},{default:u(({row:e})=>[e.url?(a(),v(M,{key:0,href:e.url,target:`_blank`},{default:u(()=>[...o[27]||=[c(`查看`,-1)]]),_:1},8,[`href`])):s(``,!0)]),_:1}),i(j,{label:`操作`,width:S.value?70:120},{default:u(({row:e})=>[i(T,{link:``,type:`primary`,onClick:t=>Be(e)},{default:u(()=>[...o[28]||=[c(`摘要`,-1)]]),_:1},8,[`onClick`]),S.value?s(``,!0):(a(),v(T,{key:0,link:``,type:`danger`,onClick:t=>ze(e)},{default:u(()=>[...o[29]||=[c(`删除`,-1)]]),_:1},8,[`onClick`]))]),_:1},8,[`width`])]),_:1},8,[`data`])]),d(`div`,he,[d(`div`,ge,[o[30]||=d(`h3`,null,`需求列表`,-1),d(`span`,_e,`共 `+_(K.value.length)+` 条`,1)]),i(N,{data:K.value,size:`small`,"row-key":`id`},{default:u(()=>[i(j,{label:`类型`,width:`100`},{default:u(({row:e})=>[i(P,{size:`small`,effect:`dark`},{default:u(()=>[c(_(e.type_item?.label),1)]),_:2},1024)]),_:1}),i(j,{prop:`title`,label:`标题`,"min-width":`180`,"show-overflow-tooltip":``}),i(j,{prop:`submitted_at`,label:`时间`,width:`110`}),i(j,{label:`处理状态`,width:`100`},{default:u(({row:e})=>[i(P,{type:n(F)(e.status_item?.value),size:`small`,effect:`dark`},{default:u(()=>[c(_(e.status_item?.label),1)]),_:2},1032,[`type`])]),_:1}),i(j,{label:`跟进记录`,width:`100`},{default:u(({row:e})=>[i(T,{size:`small`,onClick:t=>Ve(e)},{default:u(()=>[c(_(e.handle_logs_count||0)+`条记录 `,1)]),_:2},1032,[`onClick`])]),_:1})]),_:1},8,[`data`]),K.value.length?s(``,!0):(a(),v(I,{key:0,description:`暂无关联需求`,"image-size":64}))])])),[[R,V.value]]),i(L,{modelValue:X.value,"onUpdate:modelValue":o[17]||=e=>X.value=e,title:`新建高校`,width:`480px`,"append-to-body":``,"destroy-on-close":``},{footer:u(()=>[i(T,{onClick:o[16]||=e=>X.value=!1},{default:u(()=>[...o[33]||=[c(`取消`,-1)]]),_:1}),i(T,{type:`primary`,class:`teachers-primary-btn`,loading:Z.value,onClick:je},{default:u(()=>[...o[34]||=[c(` 保存 `,-1)]]),_:1},8,[`loading`])]),default:u(()=>[i(A,{"label-position":`top`,class:`form-small`},{default:u(()=>[i(y,{label:`高校名称`,required:``},{default:u(()=>[i(g,{modelValue:Q.value.name,"onUpdate:modelValue":o[11]||=e=>Q.value.name=e,placeholder:`如:复旦大学`},null,8,[`modelValue`])]),_:1}),i(D,{gutter:12},{default:u(()=>[i(b,{span:12},{default:u(()=>[i(y,{label:`经度`,required:``},{default:u(()=>[i(g,{modelValue:Q.value.longitude,"onUpdate:modelValue":o[12]||=e=>Q.value.longitude=e,placeholder:`如:121.5031`},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{span:12},{default:u(()=>[i(y,{label:`纬度`,required:``},{default:u(()=>[i(g,{modelValue:Q.value.latitude,"onUpdate:modelValue":o[13]||=e=>Q.value.latitude=e,placeholder:`如:31.2970`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1}),i(D,{gutter:12},{default:u(()=>[i(b,{span:12},{default:u(()=>[i(y,{label:`省份`},{default:u(()=>[i(g,{modelValue:Q.value.province,"onUpdate:modelValue":o[14]||=e=>Q.value.province=e,placeholder:`如:上海市`},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{span:12},{default:u(()=>[i(y,{label:`城市`},{default:u(()=>[i(g,{modelValue:Q.value.city,"onUpdate:modelValue":o[15]||=e=>Q.value.city=e,placeholder:`如:上海`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),i(L,{modelValue:Ce.value,"onUpdate:modelValue":o[18]||=e=>Ce.value=e,title:`论文摘要`,width:`520px`,"append-to-body":``},{default:u(()=>[d(`p`,ve,_(we.value),1)]),_:1},8,[`modelValue`]),i(ie,{modelValue:$.value,"onUpdate:modelValue":o[19]||=e=>$.value=e,"teacher-id":e.teacherId,"default-authors":H.value?.name||Y.value.name,"default-school-name":J.value.find(e=>e.id===Y.value.university_id)?.name||H.value?.university_name||``,onSaved:Re},null,8,[`modelValue`,`teacher-id`,`default-authors`,`default-school-name`]),i(L,{modelValue:Te.value,"onUpdate:modelValue":o[20]||=e=>Te.value=e,title:`需求跟进记录`,width:`640px`,"append-to-body":``},{default:u(()=>[d(`p`,ye,_(Ee.value),1),(a(!0),t(m,null,h(De.value,e=>(a(),t(`div`,{key:e.id,class:`log-card`},[d(`div`,be,[d(`strong`,null,_(e.operator_name),1),d(`span`,null,_(e.handled_at),1),e.status_item?(a(),v(P,{key:0,size:`small`,type:n(F)(e.status_item.value)},{default:u(()=>[c(_(e.status_item.label),1)]),_:2},1032,[`type`])):s(``,!0)]),d(`p`,null,_(e.content),1)]))),128)),De.value.length?s(``,!0):(a(),v(I,{key:0,description:`暂无记录`}))]),_:1},8,[`modelValue`])]),_:1},8,[`model-value`,`title`])}}}),W=e({default:()=>G}),G=S(U,[[`__scopeId`,`data-v-287a1810`]]);export{W as n,ie as r,G as t}; \ No newline at end of file diff --git a/public/admin/assets/activities-D7RRLXuc.js b/public/admin/assets/activities-DYl2M41A.js similarity index 97% rename from public/admin/assets/activities-D7RRLXuc.js rename to public/admin/assets/activities-DYl2M41A.js index 2d51c6c..44c645c 100644 --- a/public/admin/assets/activities-D7RRLXuc.js +++ b/public/admin/assets/activities-DYl2M41A.js @@ -1 +1 @@ -import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as ee,Xt as te,Y as s,at as c,b as l,d as ne,ht as u,m as d,ot as re,q as f,tn as p,x as m}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as h,l as g,s as _}from"./index-jb05DpEw.js";import{t as ie}from"./RichTextEditor-CvwjagK6.js";import{t as v}from"./usePageLoad-DFTLo_Lv.js";import{a as y,c as b,d as x,f as ae,i as oe,l as S,n as C,o as w,p as se,r as ce,s as le,t as T,u as ue}from"./activities-Da3PCUHo.js";import{a as de,i as fe,o as pe,s as me}from"./admin-list-CBoToEFo.js";import{a as E}from"./dict-CkTsGkap.js";import{a as he,i as ge,n as D,r as O,t as _e}from"./csv-export-Dog5TZxt.js";function ve(e,t){return D([`姓名`,`手机`,`公司`,`报名时间`],e.map(e=>[e.name,e.mobile,e.company??`—`,t(e.signed_up_at)]))}function ye(e,t,n){return D([`姓名`,`手机`,`公司`,`签到状态`,`签到时间`],e.map(e=>[e.name,e.mobile,e.company??`—`,t?e.session_checked_in_at?`已签到`:`未签到`:``,t?n(e.session_checked_in_at):``]))}var be={class:`list-page`},xe={class:`page-header`},Se={class:`list-filter-bar`},Ce={class:`table-row-actions`},we={class:`list-pager`},Te={class:`date-range`},Ee={class:`date-range`},De={class:`session-label-row`},Oe={class:`sessions-block`},ke={class:`dialog-footer-inner`},Ae={class:`signup-head`},je={class:`signup-head-row`},Me={key:0,class:`session-tabs`},Ne={key:1,class:`text-mute`},Pe={class:`sub-toolbar signup-filter-bar`},Fe={class:`list-pager`},k=_(n({__name:`index`,setup(n){let _=u(!1),D=u(!1),k=u([]),A=u({current_page:1,per_page:20,total:0}),j=u(1),M=u(``),N=u(``),P=u(``),F=u(``),I=u([]),L=u(!1),R=u(null),z=u({title:``,activity_type_dict_item_id:void 0,event_start_date:``,event_end_date:``,signup_start_date:``,signup_end_date:``,location:``,intro_html:``}),B=u([]),Ie=u(!1),V=u(null),H=u([]),Le=u([]),U=u({current_page:1,per_page:20,total:0}),W=u(1),G=u(``),K=u(``),q=u(``),J=u(!1),Re=u(!1),ze=u([]),Be=u(!1),Ve=u(null),He=u(``);async function Ue(){try{I.value=(await E(`activity_type`)).items}catch{g.warning(`活动类型字典加载失败,请执行 ActivityDictionarySeeder 或在字典中维护 activity_type`)}}async function Y(){_.value=!0;try{let e={page:j.value,page_size:A.value.per_page};M.value&&(e.keyword=M.value),N.value!==``&&(e.activity_type_dict_item_id=N.value),P.value!==``&&(e.progress_status=P.value),F.value!==``&&(e.published=F.value);let t=await le(e);k.value=t.items,A.value=t.meta}finally{_.value=!1}}function We(){j.value=1,Y()}function Ge(){M.value=``,N.value=``,P.value=``,F.value=``,j.value=1,Y()}function Ke(){B.value.push({title:``,starts_at:``,ends_at:``,venue:``,capacity:void 0})}function qe(e){B.value.splice(e,1)}function Je(){R.value=null,z.value={title:``,activity_type_dict_item_id:I.value[0]?.id,event_start_date:``,event_end_date:``,signup_start_date:``,signup_end_date:``,location:``,intro_html:``},B.value=[],L.value=!0}async function Ye(e){R.value=e;let t=await b(e.id);z.value={title:t.title,activity_type_dict_item_id:t.activity_type_dict_item_id??void 0,event_start_date:t.event_start_date||``,event_end_date:t.event_end_date||``,signup_start_date:t.signup_start_date||``,signup_end_date:t.signup_end_date||``,location:t.location||``,intro_html:t.intro_html||``},B.value=(await S(e.id)).map(e=>({id:e.id,title:e.title||``,starts_at:e.starts_at?e.starts_at.slice(0,16).replace(`T`,` `):``,ends_at:e.ends_at?e.ends_at.slice(0,16).replace(`T`,` `):``,venue:e.venue||``,capacity:e.capacity??void 0})),L.value=!0}function Xe(){return z.value.title?.trim()?z.value.activity_type_dict_item_id?!z.value.event_start_date||!z.value.event_end_date?(g.warning(`请填写活动日期`),!1):z.value.event_start_date>z.value.event_end_date?(g.warning(`活动结束日期不能早于开始日期`),!1):!z.value.signup_start_date||!z.value.signup_end_date?(g.warning(`请填写报名起止日期`),!1):z.value.signup_start_date>z.value.signup_end_date?(g.warning(`报名结束日期不能早于开始日期`),!1):!0:(g.warning(`请选择活动类型`),!1):(g.warning(`请填写活动名称`),!1)}function Ze(e){return e.slice(0,10)}function Qe(e){let t=z.value.event_start_date,n=z.value.event_end_date;return!t||!n?!0:e.starts_at&&Ze(e.starts_at)n?(g.warning(`场次「${e.title}」结束时间不能晚于活动结束日期`),!1):!0}function $e(e){let t=z.value.event_start_date,n=z.value.event_end_date;if(!t||!n)return!1;let r=`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`;return rn}function et(){let e=B.value.filter(e=>e.title?.trim()||e.starts_at||e.ends_at||e.venue||e.capacity);for(let t of e){if(!t.title?.trim()||!t.starts_at||!t.ends_at||!(t.capacity&&t.capacity>0))return g.warning(`场次信息不完整:标题、开始时间、结束时间、名额均为必填,且名额须大于 0`),!1;if(t.starts_at>t.ends_at)return g.warning(`场次「${t.title}」结束时间不能早于开始时间`),!1;if(!Qe(t))return!1}return B.value.filter(e=>e.title?.trim()&&e.starts_at&&e.ends_at&&(e.capacity??0)>0).length?!0:(g.warning(`保存并发布前须至少添加一个完整场次(标题、开始/结束时间、名额均必填且名额大于 0)`),!1)}async function tt(e){let t=R.value?await S(e):[],n=new Set;for(let t of B.value){if(!t.title?.trim()||!t.starts_at||!t.ends_at||!(t.capacity&&t.capacity>0))continue;if(!Qe(t))throw Error(`session_range_invalid`);let r={title:t.title.trim(),starts_at:`${t.starts_at}:00`,ends_at:`${t.ends_at}:00`,venue:t.venue||null,capacity:t.capacity};if(t.id)await se(e,t.id,r),n.add(t.id);else{let t=await ce(e,r);n.add(t.id)}}for(let r of t)n.has(r.id)||await y(e,r.id)}async function nt(e){if(!Xe()||e===1&&!et())return;let t=B.value.filter(e=>e.title?.trim()||e.starts_at||e.ends_at||e.venue||e.capacity);for(let e of t)if((e.starts_at||e.ends_at)&&!Qe(e))return;let n={title:z.value.title.trim(),activity_type_dict_item_id:z.value.activity_type_dict_item_id,event_start_date:z.value.event_start_date,event_end_date:z.value.event_end_date,signup_start_date:z.value.signup_start_date,signup_end_date:z.value.signup_end_date,location:z.value.location||null,intro_html:z.value.intro_html||null,published:e};D.value=!0;try{let t;R.value?(await ae(R.value.id,n),t=R.value.id):t=(await C(n)).id,await tt(t),g.success(e===1?`已保存并发布`:`已暂存草稿`),L.value=!1,await Y()}catch(e){if(e instanceof Error&&e.message===`session_range_invalid`)return;throw e}finally{D.value=!1}}async function rt(e){await h.confirm(`确定删除活动「${e.title}」?`,`提示`,{type:`warning`}),await oe(e.id),g.success(`已删除`),await Y()}function X(e){if(!e)return`—`;let t=new Date(e);if(Number.isNaN(t.getTime()))return`—`;let n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`}function Z(e){return e.title?e.title:e.starts_at?e.starts_at.slice(0,10).replace(/-/g,`.`):`场次 #${e.id}`}function it(e){return e?.starts_at?new Date(e.starts_at)<=new Date:!0}let at=()=>H.value.find(e=>e.id===q.value),Q=()=>it(at());async function $(){if(!V.value)return;let e={page:W.value,page_size:U.value.per_page};G.value.trim()&&(e.keyword=G.value.trim()),q.value!==``&&(e.activity_session_id=q.value),K.value!==``&&(e.checkin_status=K.value);let t=await ue(V.value.id,e);Le.value=t.items,U.value=t.meta}async function ot(e){V.value=e,Ie.value=!0,W.value=1,G.value=``,K.value=``,H.value=await S(e.id),q.value=H.value[0]?.id??``,await $()}async function st(e){q.value=e,W.value=1,await $()}function ct(){W.value=1,$()}function lt(){G.value=``,K.value=``,W.value=1,$()}async function ut(e){V.value&&(await h.confirm(`确定删除该报名记录?`,`提示`,{type:`warning`}),await w(V.value.id,e.id),await $(),await Y())}async function dt(e){!V.value||q.value===``||(await T(V.value.id,e.id,{activity_session_id:q.value}),g.success(`已完成手动补签`),await $())}function ft(e){Ve.value=e,He.value=he(e),Be.value=!0}async function pt(){if(V.value){J.value=!0,Re.value=!0,ze.value=[];try{let e=V.value.id,t=await x(e);ze.value=await Promise.all(H.value.map(async n=>{let r=await x(e,{activity_session_id:n.id}),i=it(n)?r.filter(e=>e.session_checked_in_at).length:0,a=t.filter(e=>e.activity_session_id===n.id);return{session:n,signup_count:a.length,checked_in_count:i,signupRows:a,signinRows:r}}))}catch{g.error(`导出数据加载失败`)}finally{Re.value=!1}}}function mt(e){if(!V.value)return;let t=O(V.value.title||`活动`),n=O(Z(e.session)),r=ve(e.signupRows,X);_e(`${t}_${n}_报名.csv`,r)}function ht(e){if(!V.value)return;let t=O(V.value.title||`活动`),n=O(Z(e.session)),r=ye(e.signinRows,it(e.session),X);_e(`${t}_${n}_签到.csv`,r)}return v(async()=>{await Ue(),await Y()}),(n,u)=>{let h=s(`el-button`),g=s(`el-input`),v=s(`el-option`),y=s(`el-select`),b=s(`el-table-column`),x=s(`el-table`),ae=s(`el-pagination`),oe=s(`el-card`),S=s(`el-form-item`),C=s(`el-col`),w=s(`el-date-picker`),se=s(`el-input-number`),ce=s(`el-row`),le=s(`el-form`),T=s(`el-dialog`),ue=s(`el-tag`),E=ee(`loading`);return i(),e(d,null,[l(`div`,be,[l(`div`,xe,[u[25]||=l(`h1`,{class:`page-title`},`活动管理`,-1),r(h,{type:`primary`,size:`small`,class:`btn-create`,onClick:Je},{default:c(()=>[...u[24]||=[o(`新建活动`,-1)]]),_:1})]),r(oe,{shadow:`never`,class:`admin-list-card`},{default:c(()=>[l(`div`,Se,[r(g,{modelValue:M.value,"onUpdate:modelValue":u[0]||=e=>M.value=e,placeholder:`搜索活动名称`,clearable:``,class:`filter-search`,onKeyup:ne(We,[`enter`])},null,8,[`modelValue`]),r(y,{modelValue:N.value,"onUpdate:modelValue":u[1]||=e=>N.value=e,clearable:``,placeholder:`活动类型`,class:`filter-select`,filterable:``},{default:c(()=>[(i(!0),e(d,null,f(I.value,e=>(i(),m(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(y,{modelValue:P.value,"onUpdate:modelValue":u[2]||=e=>P.value=e,clearable:``,placeholder:`活动状态`,class:`filter-select`},{default:c(()=>[r(v,{label:`未开始`,value:1}),r(v,{label:`进行中`,value:2}),r(v,{label:`已结束`,value:3})]),_:1},8,[`modelValue`]),r(y,{modelValue:F.value,"onUpdate:modelValue":u[3]||=e=>F.value=e,clearable:``,placeholder:`发布状态`,class:`filter-select`},{default:c(()=>[r(v,{label:`已发布`,value:1}),r(v,{label:`未发布`,value:0})]),_:1},8,[`modelValue`]),r(h,{type:`primary`,onClick:We},{default:c(()=>[...u[26]||=[o(`搜索`,-1)]]),_:1}),r(h,{onClick:Ge},{default:c(()=>[...u[27]||=[o(`重置`,-1)]]),_:1})]),re((i(),m(x,{data:k.value,"row-key":`id`},{default:c(()=>[r(b,{prop:`title`,label:`活动名称`,"min-width":`160`,"show-overflow-tooltip":``}),r(b,{label:`活动类型`,width:`100`},{default:c(({row:e})=>[o(p(e.activity_type_item?.label??`—`),1)]),_:1}),r(b,{label:`场次`,width:`72`,align:`center`},{default:c(({row:e})=>[o(p(e.sessions_count??0),1)]),_:1}),r(b,{label:`活动日期`,"min-width":`150`},{default:c(({row:e})=>[o(p(t(fe)(e.event_start_date,e.event_end_date)),1)]),_:1}),r(b,{label:`报名起止日期`,"min-width":`150`},{default:c(({row:e})=>[o(p(t(fe)(e.signup_start_date,e.signup_end_date)),1)]),_:1}),r(b,{prop:`location`,label:`活动地点`,"min-width":`120`,"show-overflow-tooltip":``}),r(b,{label:`活动状态`,width:`90`,align:`center`},{default:c(({row:e})=>[l(`span`,{class:te([`status-badge`,t(pe)(e.progress_status)])},p(t(de)(e.progress_status)),3)]),_:1}),r(b,{label:`发布状态`,width:`90`,align:`center`},{default:c(({row:e})=>[l(`span`,{class:te([`status-badge`,t(me)(e.published)])},p(e.published===1?`已发布`:`未发布`),3)]),_:1}),r(b,{label:`操作`,width:`280`,fixed:`right`},{default:c(({row:e})=>[l(`div`,Ce,[r(h,{class:`btn-action-brand`,onClick:t=>ot(e)},{default:c(()=>[...u[28]||=[o(`报名与签到`,-1)]]),_:1},8,[`onClick`]),r(h,{class:`btn-action-primary`,onClick:t=>ft(e)},{default:c(()=>[...u[29]||=[o(`签到码`,-1)]]),_:1},8,[`onClick`]),r(h,{class:`btn-action-secondary`,onClick:t=>Ye(e)},{default:c(()=>[...u[30]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),r(h,{class:`btn-action-secondary`,onClick:t=>rt(e)},{default:c(()=>[...u[31]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[E,_.value]]),l(`div`,we,[r(ae,{"current-page":j.value,"onUpdate:currentPage":u[4]||=e=>j.value=e,layout:`total, prev, pager, next`,total:A.value.total,"page-size":A.value.per_page,onCurrentChange:Y},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r(T,{modelValue:L.value,"onUpdate:modelValue":u[16]||=e=>L.value=e,title:R.value?`编辑活动`:`新建活动`,width:`1200px`,top:`4vh`,"destroy-on-close":``,class:`activity-dialog`},{footer:c(()=>[l(`div`,ke,[r(h,{onClick:u[13]||=e=>L.value=!1},{default:c(()=>[...u[37]||=[o(`取消`,-1)]]),_:1}),r(h,{loading:D.value,onClick:u[14]||=e=>nt(0)},{default:c(()=>[...u[38]||=[o(`暂存草稿`,-1)]]),_:1},8,[`loading`]),r(h,{type:`primary`,loading:D.value,onClick:u[15]||=e=>nt(1)},{default:c(()=>[...u[39]||=[o(`保存并发布`,-1)]]),_:1},8,[`loading`])])]),default:c(()=>[r(le,{"label-position":`top`,class:`activity-form`},{default:c(()=>[r(ce,{gutter:16},{default:c(()=>[r(C,{span:8},{default:c(()=>[r(S,{label:`活动名称`,required:``},{default:c(()=>[r(g,{modelValue:z.value.title,"onUpdate:modelValue":u[5]||=e=>z.value.title=e,placeholder:`请输入活动名称`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:8},{default:c(()=>[r(S,{label:`活动类型`,required:``},{default:c(()=>[r(y,{modelValue:z.value.activity_type_dict_item_id,"onUpdate:modelValue":u[6]||=e=>z.value.activity_type_dict_item_id=e,placeholder:`请选择`,filterable:``,style:{width:`100%`}},{default:c(()=>[(i(!0),e(d,null,f(I.value,e=>(i(),m(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:8},{default:c(()=>[r(S,{label:`活动日期`,required:``},{default:c(()=>[l(`div`,Te,[r(w,{modelValue:z.value.event_start_date,"onUpdate:modelValue":u[7]||=e=>z.value.event_start_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`开始`,style:{width:`100%`}},null,8,[`modelValue`]),u[32]||=l(`span`,{class:`range-sep`},`至`,-1),r(w,{modelValue:z.value.event_end_date,"onUpdate:modelValue":u[8]||=e=>z.value.event_end_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`结束`,style:{width:`100%`}},null,8,[`modelValue`])])]),_:1})]),_:1}),r(C,{span:8},{default:c(()=>[r(S,{label:`报名起止日期`,required:``},{default:c(()=>[l(`div`,Ee,[r(w,{modelValue:z.value.signup_start_date,"onUpdate:modelValue":u[9]||=e=>z.value.signup_start_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`开始`,style:{width:`100%`}},null,8,[`modelValue`]),u[33]||=l(`span`,{class:`range-sep`},`至`,-1),r(w,{modelValue:z.value.signup_end_date,"onUpdate:modelValue":u[10]||=e=>z.value.signup_end_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`结束`,style:{width:`100%`}},null,8,[`modelValue`])])]),_:1})]),_:1}),r(C,{span:8},{default:c(()=>[r(S,{label:`活动地点`},{default:c(()=>[r(g,{modelValue:z.value.location,"onUpdate:modelValue":u[11]||=e=>z.value.location=e,placeholder:`请输入活动地点`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:24},{default:c(()=>[r(S,{class:`session-form-item`},{label:c(()=>[l(`div`,De,[u[35]||=l(`span`,null,`活动场次`,-1),r(h,{type:`primary`,size:`small`,class:`btn-create btn-label-action`,onClick:Ke},{default:c(()=>[...u[34]||=[o(` 添加场次 `,-1)]]),_:1})])]),default:c(()=>[l(`div`,Oe,[(i(!0),e(d,null,f(B.value,(t,n)=>(i(),e(`div`,{key:n,class:`session-row`},[r(g,{modelValue:t.title,"onUpdate:modelValue":e=>t.title=e,placeholder:`场次标题,如:上午场`},null,8,[`modelValue`,`onUpdate:modelValue`]),r(w,{modelValue:t.starts_at,"onUpdate:modelValue":e=>t.starts_at=e,type:`datetime`,"value-format":`YYYY-MM-DD HH:mm`,format:`YYYY-MM-DD HH:mm`,placeholder:`开始时间`,"disabled-date":$e,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`]),r(w,{modelValue:t.ends_at,"onUpdate:modelValue":e=>t.ends_at=e,type:`datetime`,"value-format":`YYYY-MM-DD HH:mm`,format:`YYYY-MM-DD HH:mm`,placeholder:`结束时间`,"disabled-date":$e,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`]),r(g,{modelValue:t.venue,"onUpdate:modelValue":e=>t.venue=e,placeholder:`地点(可选)`},null,8,[`modelValue`,`onUpdate:modelValue`]),r(se,{modelValue:t.capacity,"onUpdate:modelValue":e=>t.capacity=e,min:1,placeholder:`名额`,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`]),r(h,{type:`danger`,plain:``,size:`small`,class:`session-row-delete`,onClick:e=>qe(n)},{default:c(()=>[...u[36]||=[o(` 删除 `,-1)]]),_:1},8,[`onClick`])]))),128))])]),_:1})]),_:1}),r(C,{span:24},{default:c(()=>[r(S,{label:`活动简介`,class:`intro-form-item`},{default:c(()=>[r(ie,{modelValue:z.value.intro_html,"onUpdate:modelValue":u[12]||=e=>z.value.intro_html=e,scope:`activities`,height:260},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`]),r(ge,{modelValue:Be.value,"onUpdate:modelValue":u[17]||=e=>Be.value=e,"course-name":Ve.value?.title||``,"signin-code":He.value},null,8,[`modelValue`,`course-name`,`signin-code`]),r(T,{modelValue:Ie.value,"onUpdate:modelValue":u[21]||=e=>Ie.value=e,title:`活动报名与签到:${V.value?.title||``}`,width:`960px`,top:`5vh`,class:`signup-dialog`},{default:c(()=>[l(`div`,Ae,[l(`div`,je,[H.value.length?(i(),e(`div`,Me,[(i(!0),e(d,null,f(H.value,e=>(i(),m(h,{key:e.id,size:`small`,type:q.value===e.id?`primary`:`default`,onClick:t=>st(e.id)},{default:c(()=>[o(p(Z(e)),1)]),_:2},1032,[`type`,`onClick`]))),128))])):(i(),e(`div`,Ne,`暂无场次,请先在活动中添加场次`)),r(h,{disabled:!H.value.length,onClick:pt},{default:c(()=>[...u[40]||=[o(`导出`,-1)]]),_:1},8,[`disabled`])])]),l(`div`,Pe,[r(g,{modelValue:G.value,"onUpdate:modelValue":u[18]||=e=>G.value=e,clearable:``,placeholder:`搜索姓名、手机、公司…`,style:{width:`220px`},onKeyup:ne(ct,[`enter`])},null,8,[`modelValue`]),r(y,{modelValue:K.value,"onUpdate:modelValue":u[19]||=e=>K.value=e,clearable:``,placeholder:`签到状态`,style:{width:`120px`}},{default:c(()=>[r(v,{label:`已签到`,value:1}),r(v,{label:`未签到`,value:0})]),_:1},8,[`modelValue`]),r(h,{type:`primary`,onClick:ct},{default:c(()=>[...u[41]||=[o(`搜索`,-1)]]),_:1}),r(h,{onClick:lt},{default:c(()=>[...u[42]||=[o(`重置`,-1)]]),_:1})]),r(x,{data:Le.value,size:`small`,style:{"margin-top":`12px`}},{default:c(()=>[r(b,{prop:`name`,label:`姓名`,width:`100`}),r(b,{prop:`mobile`,label:`手机`,width:`130`}),r(b,{prop:`company`,label:`公司`,"min-width":`120`,"show-overflow-tooltip":``}),r(b,{label:`报名时间`,width:`170`},{default:c(({row:e})=>[o(p(X(e.signed_up_at)),1)]),_:1}),r(b,{label:`签到状态`,width:`100`},{default:c(({row:t})=>[Q()?(i(),e(d,{key:0},[t.session_checked_in_at?(i(),m(ue,{key:0,type:`success`,size:`small`},{default:c(()=>[...u[43]||=[o(`已签到`,-1)]]),_:1})):(i(),m(ue,{key:1,type:`info`,size:`small`},{default:c(()=>[...u[44]||=[o(`未签到`,-1)]]),_:1}))],64)):a(``,!0)]),_:1}),r(b,{label:`签到时间`,width:`170`},{default:c(({row:e})=>[o(p(Q()?X(e.session_checked_in_at):``),1)]),_:1}),r(b,{label:`操作`,width:`120`,fixed:`right`},{default:c(({row:e})=>[Q()&&!e.session_checked_in_at?(i(),m(h,{key:0,type:`primary`,link:``,onClick:t=>dt(e)},{default:c(()=>[...u[45]||=[o(` 手动补签 `,-1)]]),_:1},8,[`onClick`])):Q()&&e.session_checked_in_at?(i(),m(h,{key:1,type:`info`,link:``,disabled:``},{default:c(()=>[...u[46]||=[o(` 已完成 `,-1)]]),_:1})):a(``,!0),r(h,{type:`danger`,link:``,onClick:t=>ut(e)},{default:c(()=>[...u[47]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`]),l(`div`,Fe,[r(ae,{"current-page":W.value,"onUpdate:currentPage":u[20]||=e=>W.value=e,layout:`total, prev, pager, next`,total:U.value.total,"page-size":U.value.per_page,onCurrentChange:$},null,8,[`current-page`,`total`,`page-size`])])]),_:1},8,[`modelValue`,`title`]),r(T,{modelValue:J.value,"onUpdate:modelValue":u[23]||=e=>J.value=e,title:`${V.value?.title||``}报名表导出`,width:`720px`,"append-to-body":``},{footer:c(()=>[r(h,{onClick:u[22]||=e=>J.value=!1},{default:c(()=>[...u[50]||=[o(`关闭`,-1)]]),_:1})]),default:c(()=>[re((i(),m(x,{data:ze.value,size:`small`},{default:c(()=>[r(b,{label:`场次`,"min-width":`140`},{default:c(({row:e})=>[o(p(Z(e.session)),1)]),_:1}),r(b,{prop:`signup_count`,label:`报名人数`,width:`100`}),r(b,{prop:`checked_in_count`,label:`已签到`,width:`90`}),r(b,{label:`报名导出`,width:`100`},{default:c(({row:e})=>[r(h,{type:`primary`,link:``,onClick:t=>mt(e)},{default:c(()=>[...u[48]||=[o(`导出报名`,-1)]]),_:1},8,[`onClick`])]),_:1}),r(b,{label:`签到导出`,width:`100`},{default:c(({row:e})=>[r(h,{type:`primary`,link:``,onClick:t=>ht(e)},{default:c(()=>[...u[49]||=[o(`导出签到`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])),[[E,Re.value]])]),_:1},8,[`modelValue`,`title`])],64)}}}),[[`__scopeId`,`data-v-f773acf8`]]);export{k as default}; \ No newline at end of file +import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as ee,Xt as te,Y as s,at as c,b as l,d as ne,ht as u,m as d,ot as re,q as f,tn as p,x as m}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as h,l as g,s as _}from"./index-DTIMLswB.js";import{t as ie}from"./RichTextEditor-BSUub6Rd.js";import{t as v}from"./usePageLoad-DFTLo_Lv.js";import{a as y,c as b,d as x,f as ae,i as oe,l as S,n as C,o as w,p as se,r as ce,s as le,t as T,u as ue}from"./activities-zOsA7OhR.js";import{a as de,i as fe,o as pe,s as me}from"./admin-list-CBoToEFo.js";import{a as E}from"./dict-X8lDWB9t.js";import{a as he,i as ge,n as D,r as O,t as _e}from"./csv-export-DYWqXZBS.js";function ve(e,t){return D([`姓名`,`手机`,`公司`,`报名时间`],e.map(e=>[e.name,e.mobile,e.company??`—`,t(e.signed_up_at)]))}function ye(e,t,n){return D([`姓名`,`手机`,`公司`,`签到状态`,`签到时间`],e.map(e=>[e.name,e.mobile,e.company??`—`,t?e.session_checked_in_at?`已签到`:`未签到`:``,t?n(e.session_checked_in_at):``]))}var be={class:`list-page`},xe={class:`page-header`},Se={class:`list-filter-bar`},Ce={class:`table-row-actions`},we={class:`list-pager`},Te={class:`date-range`},Ee={class:`date-range`},De={class:`session-label-row`},Oe={class:`sessions-block`},ke={class:`dialog-footer-inner`},Ae={class:`signup-head`},je={class:`signup-head-row`},Me={key:0,class:`session-tabs`},Ne={key:1,class:`text-mute`},Pe={class:`sub-toolbar signup-filter-bar`},Fe={class:`list-pager`},k=_(n({__name:`index`,setup(n){let _=u(!1),D=u(!1),k=u([]),A=u({current_page:1,per_page:20,total:0}),j=u(1),M=u(``),N=u(``),P=u(``),F=u(``),I=u([]),L=u(!1),R=u(null),z=u({title:``,activity_type_dict_item_id:void 0,event_start_date:``,event_end_date:``,signup_start_date:``,signup_end_date:``,location:``,intro_html:``}),B=u([]),Ie=u(!1),V=u(null),H=u([]),Le=u([]),U=u({current_page:1,per_page:20,total:0}),W=u(1),G=u(``),K=u(``),q=u(``),J=u(!1),Re=u(!1),ze=u([]),Be=u(!1),Ve=u(null),He=u(``);async function Ue(){try{I.value=(await E(`activity_type`)).items}catch{g.warning(`活动类型字典加载失败,请执行 ActivityDictionarySeeder 或在字典中维护 activity_type`)}}async function Y(){_.value=!0;try{let e={page:j.value,page_size:A.value.per_page};M.value&&(e.keyword=M.value),N.value!==``&&(e.activity_type_dict_item_id=N.value),P.value!==``&&(e.progress_status=P.value),F.value!==``&&(e.published=F.value);let t=await le(e);k.value=t.items,A.value=t.meta}finally{_.value=!1}}function We(){j.value=1,Y()}function Ge(){M.value=``,N.value=``,P.value=``,F.value=``,j.value=1,Y()}function Ke(){B.value.push({title:``,starts_at:``,ends_at:``,venue:``,capacity:void 0})}function qe(e){B.value.splice(e,1)}function Je(){R.value=null,z.value={title:``,activity_type_dict_item_id:I.value[0]?.id,event_start_date:``,event_end_date:``,signup_start_date:``,signup_end_date:``,location:``,intro_html:``},B.value=[],L.value=!0}async function Ye(e){R.value=e;let t=await b(e.id);z.value={title:t.title,activity_type_dict_item_id:t.activity_type_dict_item_id??void 0,event_start_date:t.event_start_date||``,event_end_date:t.event_end_date||``,signup_start_date:t.signup_start_date||``,signup_end_date:t.signup_end_date||``,location:t.location||``,intro_html:t.intro_html||``},B.value=(await S(e.id)).map(e=>({id:e.id,title:e.title||``,starts_at:e.starts_at?e.starts_at.slice(0,16).replace(`T`,` `):``,ends_at:e.ends_at?e.ends_at.slice(0,16).replace(`T`,` `):``,venue:e.venue||``,capacity:e.capacity??void 0})),L.value=!0}function Xe(){return z.value.title?.trim()?z.value.activity_type_dict_item_id?!z.value.event_start_date||!z.value.event_end_date?(g.warning(`请填写活动日期`),!1):z.value.event_start_date>z.value.event_end_date?(g.warning(`活动结束日期不能早于开始日期`),!1):!z.value.signup_start_date||!z.value.signup_end_date?(g.warning(`请填写报名起止日期`),!1):z.value.signup_start_date>z.value.signup_end_date?(g.warning(`报名结束日期不能早于开始日期`),!1):!0:(g.warning(`请选择活动类型`),!1):(g.warning(`请填写活动名称`),!1)}function Ze(e){return e.slice(0,10)}function Qe(e){let t=z.value.event_start_date,n=z.value.event_end_date;return!t||!n?!0:e.starts_at&&Ze(e.starts_at)n?(g.warning(`场次「${e.title}」结束时间不能晚于活动结束日期`),!1):!0}function $e(e){let t=z.value.event_start_date,n=z.value.event_end_date;if(!t||!n)return!1;let r=`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`;return rn}function et(){let e=B.value.filter(e=>e.title?.trim()||e.starts_at||e.ends_at||e.venue||e.capacity);for(let t of e){if(!t.title?.trim()||!t.starts_at||!t.ends_at||!(t.capacity&&t.capacity>0))return g.warning(`场次信息不完整:标题、开始时间、结束时间、名额均为必填,且名额须大于 0`),!1;if(t.starts_at>t.ends_at)return g.warning(`场次「${t.title}」结束时间不能早于开始时间`),!1;if(!Qe(t))return!1}return B.value.filter(e=>e.title?.trim()&&e.starts_at&&e.ends_at&&(e.capacity??0)>0).length?!0:(g.warning(`保存并发布前须至少添加一个完整场次(标题、开始/结束时间、名额均必填且名额大于 0)`),!1)}async function tt(e){let t=R.value?await S(e):[],n=new Set;for(let t of B.value){if(!t.title?.trim()||!t.starts_at||!t.ends_at||!(t.capacity&&t.capacity>0))continue;if(!Qe(t))throw Error(`session_range_invalid`);let r={title:t.title.trim(),starts_at:`${t.starts_at}:00`,ends_at:`${t.ends_at}:00`,venue:t.venue||null,capacity:t.capacity};if(t.id)await se(e,t.id,r),n.add(t.id);else{let t=await ce(e,r);n.add(t.id)}}for(let r of t)n.has(r.id)||await y(e,r.id)}async function nt(e){if(!Xe()||e===1&&!et())return;let t=B.value.filter(e=>e.title?.trim()||e.starts_at||e.ends_at||e.venue||e.capacity);for(let e of t)if((e.starts_at||e.ends_at)&&!Qe(e))return;let n={title:z.value.title.trim(),activity_type_dict_item_id:z.value.activity_type_dict_item_id,event_start_date:z.value.event_start_date,event_end_date:z.value.event_end_date,signup_start_date:z.value.signup_start_date,signup_end_date:z.value.signup_end_date,location:z.value.location||null,intro_html:z.value.intro_html||null,published:e};D.value=!0;try{let t;R.value?(await ae(R.value.id,n),t=R.value.id):t=(await C(n)).id,await tt(t),g.success(e===1?`已保存并发布`:`已暂存草稿`),L.value=!1,await Y()}catch(e){if(e instanceof Error&&e.message===`session_range_invalid`)return;throw e}finally{D.value=!1}}async function rt(e){await h.confirm(`确定删除活动「${e.title}」?`,`提示`,{type:`warning`}),await oe(e.id),g.success(`已删除`),await Y()}function X(e){if(!e)return`—`;let t=new Date(e);if(Number.isNaN(t.getTime()))return`—`;let n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`}function Z(e){return e.title?e.title:e.starts_at?e.starts_at.slice(0,10).replace(/-/g,`.`):`场次 #${e.id}`}function it(e){return e?.starts_at?new Date(e.starts_at)<=new Date:!0}let at=()=>H.value.find(e=>e.id===q.value),Q=()=>it(at());async function $(){if(!V.value)return;let e={page:W.value,page_size:U.value.per_page};G.value.trim()&&(e.keyword=G.value.trim()),q.value!==``&&(e.activity_session_id=q.value),K.value!==``&&(e.checkin_status=K.value);let t=await ue(V.value.id,e);Le.value=t.items,U.value=t.meta}async function ot(e){V.value=e,Ie.value=!0,W.value=1,G.value=``,K.value=``,H.value=await S(e.id),q.value=H.value[0]?.id??``,await $()}async function st(e){q.value=e,W.value=1,await $()}function ct(){W.value=1,$()}function lt(){G.value=``,K.value=``,W.value=1,$()}async function ut(e){V.value&&(await h.confirm(`确定删除该报名记录?`,`提示`,{type:`warning`}),await w(V.value.id,e.id),await $(),await Y())}async function dt(e){!V.value||q.value===``||(await T(V.value.id,e.id,{activity_session_id:q.value}),g.success(`已完成手动补签`),await $())}function ft(e){Ve.value=e,He.value=he(e),Be.value=!0}async function pt(){if(V.value){J.value=!0,Re.value=!0,ze.value=[];try{let e=V.value.id,t=await x(e);ze.value=await Promise.all(H.value.map(async n=>{let r=await x(e,{activity_session_id:n.id}),i=it(n)?r.filter(e=>e.session_checked_in_at).length:0,a=t.filter(e=>e.activity_session_id===n.id);return{session:n,signup_count:a.length,checked_in_count:i,signupRows:a,signinRows:r}}))}catch{g.error(`导出数据加载失败`)}finally{Re.value=!1}}}function mt(e){if(!V.value)return;let t=O(V.value.title||`活动`),n=O(Z(e.session)),r=ve(e.signupRows,X);_e(`${t}_${n}_报名.csv`,r)}function ht(e){if(!V.value)return;let t=O(V.value.title||`活动`),n=O(Z(e.session)),r=ye(e.signinRows,it(e.session),X);_e(`${t}_${n}_签到.csv`,r)}return v(async()=>{await Ue(),await Y()}),(n,u)=>{let h=s(`el-button`),g=s(`el-input`),v=s(`el-option`),y=s(`el-select`),b=s(`el-table-column`),x=s(`el-table`),ae=s(`el-pagination`),oe=s(`el-card`),S=s(`el-form-item`),C=s(`el-col`),w=s(`el-date-picker`),se=s(`el-input-number`),ce=s(`el-row`),le=s(`el-form`),T=s(`el-dialog`),ue=s(`el-tag`),E=ee(`loading`);return i(),e(d,null,[l(`div`,be,[l(`div`,xe,[u[25]||=l(`h1`,{class:`page-title`},`活动管理`,-1),r(h,{type:`primary`,size:`small`,class:`btn-create`,onClick:Je},{default:c(()=>[...u[24]||=[o(`新建活动`,-1)]]),_:1})]),r(oe,{shadow:`never`,class:`admin-list-card`},{default:c(()=>[l(`div`,Se,[r(g,{modelValue:M.value,"onUpdate:modelValue":u[0]||=e=>M.value=e,placeholder:`搜索活动名称`,clearable:``,class:`filter-search`,onKeyup:ne(We,[`enter`])},null,8,[`modelValue`]),r(y,{modelValue:N.value,"onUpdate:modelValue":u[1]||=e=>N.value=e,clearable:``,placeholder:`活动类型`,class:`filter-select`,filterable:``},{default:c(()=>[(i(!0),e(d,null,f(I.value,e=>(i(),m(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(y,{modelValue:P.value,"onUpdate:modelValue":u[2]||=e=>P.value=e,clearable:``,placeholder:`活动状态`,class:`filter-select`},{default:c(()=>[r(v,{label:`未开始`,value:1}),r(v,{label:`进行中`,value:2}),r(v,{label:`已结束`,value:3})]),_:1},8,[`modelValue`]),r(y,{modelValue:F.value,"onUpdate:modelValue":u[3]||=e=>F.value=e,clearable:``,placeholder:`发布状态`,class:`filter-select`},{default:c(()=>[r(v,{label:`已发布`,value:1}),r(v,{label:`未发布`,value:0})]),_:1},8,[`modelValue`]),r(h,{type:`primary`,onClick:We},{default:c(()=>[...u[26]||=[o(`搜索`,-1)]]),_:1}),r(h,{onClick:Ge},{default:c(()=>[...u[27]||=[o(`重置`,-1)]]),_:1})]),re((i(),m(x,{data:k.value,"row-key":`id`},{default:c(()=>[r(b,{prop:`title`,label:`活动名称`,"min-width":`160`,"show-overflow-tooltip":``}),r(b,{label:`活动类型`,width:`100`},{default:c(({row:e})=>[o(p(e.activity_type_item?.label??`—`),1)]),_:1}),r(b,{label:`场次`,width:`72`,align:`center`},{default:c(({row:e})=>[o(p(e.sessions_count??0),1)]),_:1}),r(b,{label:`活动日期`,"min-width":`150`},{default:c(({row:e})=>[o(p(t(fe)(e.event_start_date,e.event_end_date)),1)]),_:1}),r(b,{label:`报名起止日期`,"min-width":`150`},{default:c(({row:e})=>[o(p(t(fe)(e.signup_start_date,e.signup_end_date)),1)]),_:1}),r(b,{prop:`location`,label:`活动地点`,"min-width":`120`,"show-overflow-tooltip":``}),r(b,{label:`活动状态`,width:`90`,align:`center`},{default:c(({row:e})=>[l(`span`,{class:te([`status-badge`,t(pe)(e.progress_status)])},p(t(de)(e.progress_status)),3)]),_:1}),r(b,{label:`发布状态`,width:`90`,align:`center`},{default:c(({row:e})=>[l(`span`,{class:te([`status-badge`,t(me)(e.published)])},p(e.published===1?`已发布`:`未发布`),3)]),_:1}),r(b,{label:`操作`,width:`280`,fixed:`right`},{default:c(({row:e})=>[l(`div`,Ce,[r(h,{class:`btn-action-brand`,onClick:t=>ot(e)},{default:c(()=>[...u[28]||=[o(`报名与签到`,-1)]]),_:1},8,[`onClick`]),r(h,{class:`btn-action-primary`,onClick:t=>ft(e)},{default:c(()=>[...u[29]||=[o(`签到码`,-1)]]),_:1},8,[`onClick`]),r(h,{class:`btn-action-secondary`,onClick:t=>Ye(e)},{default:c(()=>[...u[30]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),r(h,{class:`btn-action-secondary`,onClick:t=>rt(e)},{default:c(()=>[...u[31]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[E,_.value]]),l(`div`,we,[r(ae,{"current-page":j.value,"onUpdate:currentPage":u[4]||=e=>j.value=e,layout:`total, prev, pager, next`,total:A.value.total,"page-size":A.value.per_page,onCurrentChange:Y},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r(T,{modelValue:L.value,"onUpdate:modelValue":u[16]||=e=>L.value=e,title:R.value?`编辑活动`:`新建活动`,width:`1200px`,top:`4vh`,"destroy-on-close":``,class:`activity-dialog`},{footer:c(()=>[l(`div`,ke,[r(h,{onClick:u[13]||=e=>L.value=!1},{default:c(()=>[...u[37]||=[o(`取消`,-1)]]),_:1}),r(h,{loading:D.value,onClick:u[14]||=e=>nt(0)},{default:c(()=>[...u[38]||=[o(`暂存草稿`,-1)]]),_:1},8,[`loading`]),r(h,{type:`primary`,loading:D.value,onClick:u[15]||=e=>nt(1)},{default:c(()=>[...u[39]||=[o(`保存并发布`,-1)]]),_:1},8,[`loading`])])]),default:c(()=>[r(le,{"label-position":`top`,class:`activity-form`},{default:c(()=>[r(ce,{gutter:16},{default:c(()=>[r(C,{span:8},{default:c(()=>[r(S,{label:`活动名称`,required:``},{default:c(()=>[r(g,{modelValue:z.value.title,"onUpdate:modelValue":u[5]||=e=>z.value.title=e,placeholder:`请输入活动名称`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:8},{default:c(()=>[r(S,{label:`活动类型`,required:``},{default:c(()=>[r(y,{modelValue:z.value.activity_type_dict_item_id,"onUpdate:modelValue":u[6]||=e=>z.value.activity_type_dict_item_id=e,placeholder:`请选择`,filterable:``,style:{width:`100%`}},{default:c(()=>[(i(!0),e(d,null,f(I.value,e=>(i(),m(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:8},{default:c(()=>[r(S,{label:`活动日期`,required:``},{default:c(()=>[l(`div`,Te,[r(w,{modelValue:z.value.event_start_date,"onUpdate:modelValue":u[7]||=e=>z.value.event_start_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`开始`,style:{width:`100%`}},null,8,[`modelValue`]),u[32]||=l(`span`,{class:`range-sep`},`至`,-1),r(w,{modelValue:z.value.event_end_date,"onUpdate:modelValue":u[8]||=e=>z.value.event_end_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`结束`,style:{width:`100%`}},null,8,[`modelValue`])])]),_:1})]),_:1}),r(C,{span:8},{default:c(()=>[r(S,{label:`报名起止日期`,required:``},{default:c(()=>[l(`div`,Ee,[r(w,{modelValue:z.value.signup_start_date,"onUpdate:modelValue":u[9]||=e=>z.value.signup_start_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`开始`,style:{width:`100%`}},null,8,[`modelValue`]),u[33]||=l(`span`,{class:`range-sep`},`至`,-1),r(w,{modelValue:z.value.signup_end_date,"onUpdate:modelValue":u[10]||=e=>z.value.signup_end_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`结束`,style:{width:`100%`}},null,8,[`modelValue`])])]),_:1})]),_:1}),r(C,{span:8},{default:c(()=>[r(S,{label:`活动地点`},{default:c(()=>[r(g,{modelValue:z.value.location,"onUpdate:modelValue":u[11]||=e=>z.value.location=e,placeholder:`请输入活动地点`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:24},{default:c(()=>[r(S,{class:`session-form-item`},{label:c(()=>[l(`div`,De,[u[35]||=l(`span`,null,`活动场次`,-1),r(h,{type:`primary`,size:`small`,class:`btn-create btn-label-action`,onClick:Ke},{default:c(()=>[...u[34]||=[o(` 添加场次 `,-1)]]),_:1})])]),default:c(()=>[l(`div`,Oe,[(i(!0),e(d,null,f(B.value,(t,n)=>(i(),e(`div`,{key:n,class:`session-row`},[r(g,{modelValue:t.title,"onUpdate:modelValue":e=>t.title=e,placeholder:`场次标题,如:上午场`},null,8,[`modelValue`,`onUpdate:modelValue`]),r(w,{modelValue:t.starts_at,"onUpdate:modelValue":e=>t.starts_at=e,type:`datetime`,"value-format":`YYYY-MM-DD HH:mm`,format:`YYYY-MM-DD HH:mm`,placeholder:`开始时间`,"disabled-date":$e,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`]),r(w,{modelValue:t.ends_at,"onUpdate:modelValue":e=>t.ends_at=e,type:`datetime`,"value-format":`YYYY-MM-DD HH:mm`,format:`YYYY-MM-DD HH:mm`,placeholder:`结束时间`,"disabled-date":$e,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`]),r(g,{modelValue:t.venue,"onUpdate:modelValue":e=>t.venue=e,placeholder:`地点(可选)`},null,8,[`modelValue`,`onUpdate:modelValue`]),r(se,{modelValue:t.capacity,"onUpdate:modelValue":e=>t.capacity=e,min:1,placeholder:`名额`,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`]),r(h,{type:`danger`,plain:``,size:`small`,class:`session-row-delete`,onClick:e=>qe(n)},{default:c(()=>[...u[36]||=[o(` 删除 `,-1)]]),_:1},8,[`onClick`])]))),128))])]),_:1})]),_:1}),r(C,{span:24},{default:c(()=>[r(S,{label:`活动简介`,class:`intro-form-item`},{default:c(()=>[r(ie,{modelValue:z.value.intro_html,"onUpdate:modelValue":u[12]||=e=>z.value.intro_html=e,scope:`activities`,height:260},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`]),r(ge,{modelValue:Be.value,"onUpdate:modelValue":u[17]||=e=>Be.value=e,"course-name":Ve.value?.title||``,"signin-code":He.value},null,8,[`modelValue`,`course-name`,`signin-code`]),r(T,{modelValue:Ie.value,"onUpdate:modelValue":u[21]||=e=>Ie.value=e,title:`活动报名与签到:${V.value?.title||``}`,width:`960px`,top:`5vh`,class:`signup-dialog`},{default:c(()=>[l(`div`,Ae,[l(`div`,je,[H.value.length?(i(),e(`div`,Me,[(i(!0),e(d,null,f(H.value,e=>(i(),m(h,{key:e.id,size:`small`,type:q.value===e.id?`primary`:`default`,onClick:t=>st(e.id)},{default:c(()=>[o(p(Z(e)),1)]),_:2},1032,[`type`,`onClick`]))),128))])):(i(),e(`div`,Ne,`暂无场次,请先在活动中添加场次`)),r(h,{disabled:!H.value.length,onClick:pt},{default:c(()=>[...u[40]||=[o(`导出`,-1)]]),_:1},8,[`disabled`])])]),l(`div`,Pe,[r(g,{modelValue:G.value,"onUpdate:modelValue":u[18]||=e=>G.value=e,clearable:``,placeholder:`搜索姓名、手机、公司…`,style:{width:`220px`},onKeyup:ne(ct,[`enter`])},null,8,[`modelValue`]),r(y,{modelValue:K.value,"onUpdate:modelValue":u[19]||=e=>K.value=e,clearable:``,placeholder:`签到状态`,style:{width:`120px`}},{default:c(()=>[r(v,{label:`已签到`,value:1}),r(v,{label:`未签到`,value:0})]),_:1},8,[`modelValue`]),r(h,{type:`primary`,onClick:ct},{default:c(()=>[...u[41]||=[o(`搜索`,-1)]]),_:1}),r(h,{onClick:lt},{default:c(()=>[...u[42]||=[o(`重置`,-1)]]),_:1})]),r(x,{data:Le.value,size:`small`,style:{"margin-top":`12px`}},{default:c(()=>[r(b,{prop:`name`,label:`姓名`,width:`100`}),r(b,{prop:`mobile`,label:`手机`,width:`130`}),r(b,{prop:`company`,label:`公司`,"min-width":`120`,"show-overflow-tooltip":``}),r(b,{label:`报名时间`,width:`170`},{default:c(({row:e})=>[o(p(X(e.signed_up_at)),1)]),_:1}),r(b,{label:`签到状态`,width:`100`},{default:c(({row:t})=>[Q()?(i(),e(d,{key:0},[t.session_checked_in_at?(i(),m(ue,{key:0,type:`success`,size:`small`},{default:c(()=>[...u[43]||=[o(`已签到`,-1)]]),_:1})):(i(),m(ue,{key:1,type:`info`,size:`small`},{default:c(()=>[...u[44]||=[o(`未签到`,-1)]]),_:1}))],64)):a(``,!0)]),_:1}),r(b,{label:`签到时间`,width:`170`},{default:c(({row:e})=>[o(p(Q()?X(e.session_checked_in_at):``),1)]),_:1}),r(b,{label:`操作`,width:`120`,fixed:`right`},{default:c(({row:e})=>[Q()&&!e.session_checked_in_at?(i(),m(h,{key:0,type:`primary`,link:``,onClick:t=>dt(e)},{default:c(()=>[...u[45]||=[o(` 手动补签 `,-1)]]),_:1},8,[`onClick`])):Q()&&e.session_checked_in_at?(i(),m(h,{key:1,type:`info`,link:``,disabled:``},{default:c(()=>[...u[46]||=[o(` 已完成 `,-1)]]),_:1})):a(``,!0),r(h,{type:`danger`,link:``,onClick:t=>ut(e)},{default:c(()=>[...u[47]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`]),l(`div`,Fe,[r(ae,{"current-page":W.value,"onUpdate:currentPage":u[20]||=e=>W.value=e,layout:`total, prev, pager, next`,total:U.value.total,"page-size":U.value.per_page,onCurrentChange:$},null,8,[`current-page`,`total`,`page-size`])])]),_:1},8,[`modelValue`,`title`]),r(T,{modelValue:J.value,"onUpdate:modelValue":u[23]||=e=>J.value=e,title:`${V.value?.title||``}报名表导出`,width:`720px`,"append-to-body":``},{footer:c(()=>[r(h,{onClick:u[22]||=e=>J.value=!1},{default:c(()=>[...u[50]||=[o(`关闭`,-1)]]),_:1})]),default:c(()=>[re((i(),m(x,{data:ze.value,size:`small`},{default:c(()=>[r(b,{label:`场次`,"min-width":`140`},{default:c(({row:e})=>[o(p(Z(e.session)),1)]),_:1}),r(b,{prop:`signup_count`,label:`报名人数`,width:`100`}),r(b,{prop:`checked_in_count`,label:`已签到`,width:`90`}),r(b,{label:`报名导出`,width:`100`},{default:c(({row:e})=>[r(h,{type:`primary`,link:``,onClick:t=>mt(e)},{default:c(()=>[...u[48]||=[o(`导出报名`,-1)]]),_:1},8,[`onClick`])]),_:1}),r(b,{label:`签到导出`,width:`100`},{default:c(({row:e})=>[r(h,{type:`primary`,link:``,onClick:t=>ht(e)},{default:c(()=>[...u[49]||=[o(`导出签到`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])),[[E,Re.value]])]),_:1},8,[`modelValue`,`title`])],64)}}}),[[`__scopeId`,`data-v-f773acf8`]]);export{k as default}; \ No newline at end of file diff --git a/public/admin/assets/activities-Da3PCUHo.js b/public/admin/assets/activities-zOsA7OhR.js similarity index 91% rename from public/admin/assets/activities-Da3PCUHo.js rename to public/admin/assets/activities-zOsA7OhR.js index 0d4f549..620b431 100644 --- a/public/admin/assets/activities-Da3PCUHo.js +++ b/public/admin/assets/activities-zOsA7OhR.js @@ -1 +1 @@ -import{r as e}from"./index-jb05DpEw.js";async function t(t){let{data:n}=await e.get(`/admin/v1/activities`,{params:t});return n.data}async function n(t){let{data:n}=await e.get(`/admin/v1/activities/${t}`);return n.data}async function r(t){let{data:n}=await e.post(`/admin/v1/activities`,t);return n.data}async function i(t,n){let{data:r}=await e.put(`/admin/v1/activities/${t}`,n);return r}async function a(t){let{data:n}=await e.delete(`/admin/v1/activities/${t}`);return n}async function o(t){let{data:n}=await e.get(`/admin/v1/activities/${t}/sessions`);return n.data.items}async function s(t,n){let{data:r}=await e.post(`/admin/v1/activities/${t}/sessions`,n);return r.data}async function c(t,n,r){let{data:i}=await e.put(`/admin/v1/activities/${t}/sessions/${n}`,r);return i}async function l(t,n){let{data:r}=await e.delete(`/admin/v1/activities/${t}/sessions/${n}`);return r}async function u(t,n){let{data:r}=await e.get(`/admin/v1/activities/${t}/signups`,{params:n});return r.data}async function d(e,t={}){let n=1,r=[];for(;;){let i=await u(e,{...t,page:n,page_size:200});if(r.push(...i.items),n>=i.meta.last_page||i.items.length===0)break;n+=1}return r}async function f(t,n){let{data:r}=await e.delete(`/admin/v1/activities/${t}/signups/${n}`);return r}async function p(t,n,r){let{data:i}=await e.post(`/admin/v1/activities/${t}/signups/${n}/checkin`,r);return i}export{l as a,n as c,d,i as f,a as i,o as l,r as n,f as o,c as p,s as r,t as s,p as t,u}; \ No newline at end of file +import{r as e}from"./index-DTIMLswB.js";async function t(t){let{data:n}=await e.get(`/admin/v1/activities`,{params:t});return n.data}async function n(t){let{data:n}=await e.get(`/admin/v1/activities/${t}`);return n.data}async function r(t){let{data:n}=await e.post(`/admin/v1/activities`,t);return n.data}async function i(t,n){let{data:r}=await e.put(`/admin/v1/activities/${t}`,n);return r}async function a(t){let{data:n}=await e.delete(`/admin/v1/activities/${t}`);return n}async function o(t){let{data:n}=await e.get(`/admin/v1/activities/${t}/sessions`);return n.data.items}async function s(t,n){let{data:r}=await e.post(`/admin/v1/activities/${t}/sessions`,n);return r.data}async function c(t,n,r){let{data:i}=await e.put(`/admin/v1/activities/${t}/sessions/${n}`,r);return i}async function l(t,n){let{data:r}=await e.delete(`/admin/v1/activities/${t}/sessions/${n}`);return r}async function u(t,n){let{data:r}=await e.get(`/admin/v1/activities/${t}/signups`,{params:n});return r.data}async function d(e,t={}){let n=1,r=[];for(;;){let i=await u(e,{...t,page:n,page_size:200});if(r.push(...i.items),n>=i.meta.last_page||i.items.length===0)break;n+=1}return r}async function f(t,n){let{data:r}=await e.delete(`/admin/v1/activities/${t}/signups/${n}`);return r}async function p(t,n,r){let{data:i}=await e.post(`/admin/v1/activities/${t}/signups/${n}/checkin`,r);return i}export{l as a,n as c,d,i as f,a as i,o as l,r as n,f as o,c as p,s as r,t as s,p as t,u}; \ No newline at end of file diff --git a/public/admin/assets/assets-Wj17Zlgs.js b/public/admin/assets/assets-B5_Et8Pj.js similarity index 94% rename from public/admin/assets/assets-Wj17Zlgs.js rename to public/admin/assets/assets-B5_Et8Pj.js index 38cf1b1..45c3458 100644 --- a/public/admin/assets/assets-Wj17Zlgs.js +++ b/public/admin/assets/assets-B5_Et8Pj.js @@ -1 +1 @@ -import{r as e}from"./index-jb05DpEw.js";async function t(t){let{data:n}=await e.get(`/admin/v1/universities`,{params:t});return n.data}async function n(t){let{data:n}=await e.post(`/admin/v1/universities`,t);return n.data}async function r(t,n){let{data:r}=await e.put(`/admin/v1/universities/${t}`,n);return r.data}async function i(t){let{data:n}=await e.delete(`/admin/v1/universities/${t}`);return n}async function a(t){let{data:n}=await e.get(`/admin/v1/papers`,{params:t});return n.data}async function o(){let{data:t}=await e.get(`/admin/v1/papers/filter-options`);return t.data}async function s(t){let{data:n}=await e.get(`/admin/v1/papers/${t}`);return n.data}async function c(t){let{data:n}=await e.delete(`/admin/v1/papers/${t}`);return n}async function l(t,n){let{data:r}=await e.post(`/admin/v1/papers/${t}/teachers`,{teacher_ids:n});return r}async function u(t){let{data:n}=await e.post(`/admin/v1/crawl-jobs/resolve-url`,t);return n.data}async function d(t){let{data:n}=await e.post(`/admin/v1/crawl-jobs`,t,{timeout:3e5});return n.data}async function f(t){let{data:n}=await e.get(`/admin/v1/crawl-jobs/${t}`);return n.data}async function p(t,n){let{data:r}=await e.get(`/admin/v1/crawl-jobs/${t}/items`,{params:n});return r.data}async function m(e,t){let n=[],r=1;for(;;){let i=await p(e,{...t,page:r,page_size:200});if(n.push(...i.items),r>=i.meta.last_page||i.items.length===0)break;r+=1}return n}async function h(t,n){let{data:r}=await e.post(`/admin/v1/crawl-jobs/${t}/import`,n);return r.data}async function g(){let{data:t}=await e.get(`/admin/v1/radar-map`);return t.data}export{m as a,o as c,t as d,h as f,r as h,i,a as l,d as m,n,f as o,u as p,c as r,s,l as t,g as u}; \ No newline at end of file +import{r as e}from"./index-DTIMLswB.js";async function t(t){let{data:n}=await e.get(`/admin/v1/universities`,{params:t});return n.data}async function n(t){let{data:n}=await e.post(`/admin/v1/universities`,t);return n.data}async function r(t,n){let{data:r}=await e.put(`/admin/v1/universities/${t}`,n);return r.data}async function i(t){let{data:n}=await e.delete(`/admin/v1/universities/${t}`);return n}async function a(t){let{data:n}=await e.get(`/admin/v1/papers`,{params:t});return n.data}async function o(){let{data:t}=await e.get(`/admin/v1/papers/filter-options`);return t.data}async function s(t){let{data:n}=await e.get(`/admin/v1/papers/${t}`);return n.data}async function c(t){let{data:n}=await e.delete(`/admin/v1/papers/${t}`);return n}async function l(t,n){let{data:r}=await e.post(`/admin/v1/papers/${t}/teachers`,{teacher_ids:n});return r}async function u(t){let{data:n}=await e.post(`/admin/v1/crawl-jobs/resolve-url`,t);return n.data}async function d(t){let{data:n}=await e.post(`/admin/v1/crawl-jobs`,t,{timeout:3e5});return n.data}async function f(t){let{data:n}=await e.get(`/admin/v1/crawl-jobs/${t}`);return n.data}async function p(t,n){let{data:r}=await e.get(`/admin/v1/crawl-jobs/${t}/items`,{params:n});return r.data}async function m(e,t){let n=[],r=1;for(;;){let i=await p(e,{...t,page:r,page_size:200});if(n.push(...i.items),r>=i.meta.last_page||i.items.length===0)break;r+=1}return n}async function h(t,n){let{data:r}=await e.post(`/admin/v1/crawl-jobs/${t}/import`,n);return r.data}async function g(){let{data:t}=await e.get(`/admin/v1/radar-map`);return t.data}export{m as a,o as c,t as d,h as f,r as h,i,a as l,d as m,n,f as o,u as p,c as r,s,l as t,g as u}; \ No newline at end of file diff --git a/public/admin/assets/audit-logs-BR7rcSR4.js b/public/admin/assets/audit-logs-BSSuoZTi.js similarity index 97% rename from public/admin/assets/audit-logs-BR7rcSR4.js rename to public/admin/assets/audit-logs-BSSuoZTi.js index 4386bcc..da00290 100644 --- a/public/admin/assets/audit-logs-BR7rcSR4.js +++ b/public/admin/assets/audit-logs-BSSuoZTi.js @@ -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-jb05DpEw.js";import{t as m}from"./usePageLoad-DFTLo_Lv.js";async function h(e){let{data:t}=await p.get(`/admin/v1/operation-logs`,{params:e});return t.data}var g={class:`list-page`},_={class:`list-filter-bar`},v={class:`list-pager`},y=t({__name:`index`,setup(t){let p=u(!1),y=u([]),b=u({current_page:1,per_page:20,total:0}),x=u(1),S=u(``),C=u(``),w=u(``);async function T(){p.value=!0;try{let e=await h({page:x.value,page_size:b.value.per_page,keyword:S.value||void 0,from:C.value||void 0,to:w.value||void 0});y.value=e.items,b.value=e.meta}finally{p.value=!1}}function E(){x.value=1,T()}function D(){S.value=``,C.value=``,w.value=``,x.value=1,T()}return m(T),(t,u)=>{let m=o(`el-input`),h=o(`el-date-picker`),O=o(`el-button`),k=o(`el-table-column`),A=o(`el-table`),j=o(`el-pagination`),M=o(`el-card`),N=a(`loading`);return r(),e(`div`,g,[u[6]||=c(`div`,{class:`page-header`},[c(`h1`,{class:`page-title`},`操作日志`)],-1),n(M,{shadow:`never`,class:`admin-list-card`},{default:s(()=>[c(`div`,_,[n(m,{modelValue:S.value,"onUpdate:modelValue":u[0]||=e=>S.value=e,placeholder:`接口路径/操作人`,clearable:``,class:`filter-search`,onKeyup:l(E,[`enter`])},null,8,[`modelValue`]),n(h,{modelValue:C.value,"onUpdate:modelValue":u[1]||=e=>C.value=e,type:`datetime`,placeholder:`开始时间`,"value-format":`YYYY-MM-DD HH:mm:ss`,style:{width:`190px`}},null,8,[`modelValue`]),n(h,{modelValue:w.value,"onUpdate:modelValue":u[2]||=e=>w.value=e,type:`datetime`,placeholder:`结束时间`,"value-format":`YYYY-MM-DD HH:mm:ss`,style:{width:`190px`}},null,8,[`modelValue`]),n(O,{type:`primary`,onClick:E},{default:s(()=>[...u[4]||=[i(`搜索`,-1)]]),_:1}),n(O,{onClick:D},{default:s(()=>[...u[5]||=[i(`重置`,-1)]]),_:1})]),d((r(),f(A,{data:y.value,"row-key":`id`},{default:s(()=>[n(k,{prop:`operated_at`,label:`操作时间`,width:`180`}),n(k,{prop:`operator_name`,label:`操作人`,width:`120`}),n(k,{prop:`http_method`,label:`方法`,width:`80`}),n(k,{prop:`api_path`,label:`接口`,"min-width":`220`,"show-overflow-tooltip":``}),n(k,{prop:`action_label`,label:`操作项`,"min-width":`160`,"show-overflow-tooltip":``}),n(k,{prop:`ip`,label:`IP`,width:`140`}),n(k,{prop:`response_code`,label:`状态码`,width:`90`,align:`center`}),n(k,{prop:`duration_ms`,label:`耗时ms`,width:`90`,align:`center`})]),_:1},8,[`data`])),[[N,p.value]]),c(`div`,v,[n(j,{"current-page":x.value,"onUpdate:currentPage":u[3]||=e=>x.value=e,layout:`total, prev, pager, next`,total:b.value.total,"page-size":b.value.per_page,onCurrentChange:T},null,8,[`current-page`,`total`,`page-size`])])]),_:1})])}}});export{y as default}; \ No newline at end of file +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-DTIMLswB.js";import{t as m}from"./usePageLoad-DFTLo_Lv.js";async function h(e){let{data:t}=await p.get(`/admin/v1/operation-logs`,{params:e});return t.data}var g={class:`list-page`},_={class:`list-filter-bar`},v={class:`list-pager`},y=t({__name:`index`,setup(t){let p=u(!1),y=u([]),b=u({current_page:1,per_page:20,total:0}),x=u(1),S=u(``),C=u(``),w=u(``);async function T(){p.value=!0;try{let e=await h({page:x.value,page_size:b.value.per_page,keyword:S.value||void 0,from:C.value||void 0,to:w.value||void 0});y.value=e.items,b.value=e.meta}finally{p.value=!1}}function E(){x.value=1,T()}function D(){S.value=``,C.value=``,w.value=``,x.value=1,T()}return m(T),(t,u)=>{let m=o(`el-input`),h=o(`el-date-picker`),O=o(`el-button`),k=o(`el-table-column`),A=o(`el-table`),j=o(`el-pagination`),M=o(`el-card`),N=a(`loading`);return r(),e(`div`,g,[u[6]||=c(`div`,{class:`page-header`},[c(`h1`,{class:`page-title`},`操作日志`)],-1),n(M,{shadow:`never`,class:`admin-list-card`},{default:s(()=>[c(`div`,_,[n(m,{modelValue:S.value,"onUpdate:modelValue":u[0]||=e=>S.value=e,placeholder:`接口路径/操作人`,clearable:``,class:`filter-search`,onKeyup:l(E,[`enter`])},null,8,[`modelValue`]),n(h,{modelValue:C.value,"onUpdate:modelValue":u[1]||=e=>C.value=e,type:`datetime`,placeholder:`开始时间`,"value-format":`YYYY-MM-DD HH:mm:ss`,style:{width:`190px`}},null,8,[`modelValue`]),n(h,{modelValue:w.value,"onUpdate:modelValue":u[2]||=e=>w.value=e,type:`datetime`,placeholder:`结束时间`,"value-format":`YYYY-MM-DD HH:mm:ss`,style:{width:`190px`}},null,8,[`modelValue`]),n(O,{type:`primary`,onClick:E},{default:s(()=>[...u[4]||=[i(`搜索`,-1)]]),_:1}),n(O,{onClick:D},{default:s(()=>[...u[5]||=[i(`重置`,-1)]]),_:1})]),d((r(),f(A,{data:y.value,"row-key":`id`},{default:s(()=>[n(k,{prop:`operated_at`,label:`操作时间`,width:`180`}),n(k,{prop:`operator_name`,label:`操作人`,width:`120`}),n(k,{prop:`http_method`,label:`方法`,width:`80`}),n(k,{prop:`api_path`,label:`接口`,"min-width":`220`,"show-overflow-tooltip":``}),n(k,{prop:`action_label`,label:`操作项`,"min-width":`160`,"show-overflow-tooltip":``}),n(k,{prop:`ip`,label:`IP`,width:`140`}),n(k,{prop:`response_code`,label:`状态码`,width:`90`,align:`center`}),n(k,{prop:`duration_ms`,label:`耗时ms`,width:`90`,align:`center`})]),_:1},8,[`data`])),[[N,p.value]]),c(`div`,v,[n(j,{"current-page":x.value,"onUpdate:currentPage":u[3]||=e=>x.value=e,layout:`total, prev, pager, next`,total:b.value.total,"page-size":b.value.per_page,onCurrentChange:T},null,8,[`current-page`,`total`,`page-size`])])]),_:1})])}}});export{y as default}; \ No newline at end of file diff --git a/public/admin/assets/banners-BY60jvD-.js b/public/admin/assets/banners-BMy9ge9T.js similarity index 98% rename from public/admin/assets/banners-BY60jvD-.js rename to public/admin/assets/banners-BMy9ge9T.js index fa4fd9d..fa1f2a6 100644 --- a/public/admin/assets/banners-BY60jvD-.js +++ b/public/admin/assets/banners-BMy9ge9T.js @@ -1 +1 @@ -import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as s,Xt as ee,Y as c,at as l,b as u,d as te,ht as d,m as f,ot as p,q as m,tn as ne,x as h}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as g,l as _,r as v,s as y}from"./index-jb05DpEw.js";import{n as b,t as x}from"./RichTextEditor-CvwjagK6.js";import{t as S}from"./usePageLoad-DFTLo_Lv.js";import{s as C}from"./activities-Da3PCUHo.js";import{l as w}from"./courses-U0J1-mMf.js";import{r as re}from"./admin-list-CBoToEFo.js";async function T(e){let{data:t}=await v.get(`/admin/v1/banners`,{params:e});return t.data}async function E(e){let{data:t}=await v.get(`/admin/v1/banners/${e}`);return t.data}async function D(e){let{data:t}=await v.post(`/admin/v1/banners`,e);return t.data}async function O(e,t){let{data:n}=await v.put(`/admin/v1/banners/${e}`,t);return n.data}async function k(e){let{data:t}=await v.delete(`/admin/v1/banners/${e}`);return t}var A={class:`list-page`},j={class:`page-header`},M={class:`list-filter-bar`},N={key:1,class:`text-mute`},ie={class:`table-row-actions`},ae={class:`list-pager`},oe={class:`upload-row`},se={key:0,class:`thumb-preview`},ce=[`src`],P=y(n({__name:`index`,setup(n){let v=[{value:`course`,label:`课程`},{value:`activity`,label:`活动`},{value:`custom`,label:`自定义`}],y=d(!1),P=d(!1),F=d([]),I=d({current_page:1,per_page:20,total:0}),L=d(1),R=d(``),z=d(``),B=d(``),V=d(!1),H=d(null),U=d({type:`course`,course_id:void 0,activity_id:void 0,title:``,cover_url:``,content_html:``,sort:0,status:1}),W=d([]),G=d([]),K=d(!1),q=d(!1);async function J(){y.value=!0;try{let e={page:L.value,page_size:I.value.per_page};R.value&&(e.keyword=R.value),z.value&&(e.type=z.value),B.value!==``&&(e.status=B.value);let t=await T(e);F.value=t.items,I.value=t.meta}finally{y.value=!1}}function Y(){L.value=1,J()}function le(){R.value=``,z.value=``,B.value=``,L.value=1,J()}async function X(e=``){K.value=!0;try{W.value=(await w({keyword:e,page:1,page_size:30})).items.map(e=>({id:e.id,title:e.title}))}finally{K.value=!1}}async function Z(e=``){q.value=!0;try{G.value=(await C({keyword:e,page:1,page_size:30})).items.map(e=>({id:e.id,title:e.title}))}finally{q.value=!1}}function ue(e){U.value.course_id=void 0,U.value.activity_id=void 0,U.value.title=``,U.value.cover_url=``,U.value.content_html=``,e===`course`&&X(),e===`activity`&&Z()}function de(){H.value=null,U.value={type:`course`,course_id:void 0,activity_id:void 0,title:``,cover_url:``,content_html:``,sort:0,status:1},W.value=[],G.value=[],V.value=!0,X()}async function fe(e){H.value=e;let t=await E(e.id);U.value={type:t.type,course_id:t.course_id??void 0,activity_id:t.activity_id??void 0,title:t.title||``,cover_url:t.cover_url||``,content_html:t.content_html||``,sort:t.sort,status:t.status},t.type===`course`&&t.course_id&&(W.value=[{id:t.course_id,title:t.course_title||`#${t.course_id}`}]),t.type===`activity`&&t.activity_id&&(G.value=[{id:t.activity_id,title:t.activity_title||`#${t.activity_id}`}]),V.value=!0,t.type===`course`&&X(),t.type===`activity`&&Z()}function Q(){if(U.value.type===`course`&&!U.value.course_id)return _.warning(`请选择课程`),!1;if(U.value.type===`activity`&&!U.value.activity_id)return _.warning(`请选择活动`),!1;if(U.value.type===`custom`){if(!U.value.title.trim())return _.warning(`请填写标题`),!1;if(!U.value.cover_url)return _.warning(`请上传封面图`),!1}return!0}async function pe(){if(!Q())return;let e={type:U.value.type,sort:U.value.sort,status:U.value.status,course_id:U.value.type===`course`?U.value.course_id:null,activity_id:U.value.type===`activity`?U.value.activity_id:null,title:U.value.type===`custom`?U.value.title.trim():null,cover_url:U.value.type===`custom`?U.value.cover_url:null,content_html:U.value.type===`custom`&&U.value.content_html?.replace(/<[^>]+>/g,``).trim()?U.value.content_html:null};P.value=!0;try{H.value?await O(H.value.id,e):await D(e),_.success(`已保存`),V.value=!1,await J()}finally{P.value=!1}}async function $(e){await g.confirm(`确定删除 Banner「${e.summary||e.id}」?`,`提示`,{type:`warning`}),await k(e.id),_.success(`已删除`),await J()}async function me(e){let t=e.file,n=t instanceof File?t:t.raw;if(!n){e.onError?.(Error(`no file`));return}try{let t=await b(n);U.value.cover_url=t.url,_.success(`封面上传成功`),e.onSuccess?.({})}catch{_.error(`封面上传失败`),e.onError?.(Error(`upload failed`))}}return S(J),(n,d)=>{let g=c(`el-button`),_=c(`el-input`),b=c(`el-option`),S=c(`el-select`),C=c(`el-table-column`),w=c(`el-image`),T=c(`el-table`),E=c(`el-pagination`),D=c(`el-card`),O=c(`el-form-item`),k=c(`el-col`),Q=c(`el-input-number`),he=c(`el-switch`),ge=c(`el-row`),_e=c(`el-upload`),ve=c(`el-form`),ye=c(`el-dialog`),be=s(`loading`);return i(),e(f,null,[u(`div`,A,[u(`div`,j,[d[15]||=u(`h1`,{class:`page-title`},`Banner图管理`,-1),r(g,{type:`primary`,size:`small`,class:`btn-create`,onClick:de},{default:l(()=>[...d[14]||=[o(`新增 Banner`,-1)]]),_:1})]),r(D,{shadow:`never`,class:`admin-list-card`},{default:l(()=>[u(`div`,M,[r(_,{modelValue:R.value,"onUpdate:modelValue":d[0]||=e=>R.value=e,placeholder:`搜索标题、课程、活动…`,clearable:``,class:`filter-search`,onKeyup:te(Y,[`enter`])},null,8,[`modelValue`]),r(S,{modelValue:z.value,"onUpdate:modelValue":d[1]||=e=>z.value=e,clearable:``,placeholder:`类型`,class:`filter-select`},{default:l(()=>[(i(),e(f,null,m(v,e=>r(b,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`]),r(S,{modelValue:B.value,"onUpdate:modelValue":d[2]||=e=>B.value=e,clearable:``,placeholder:`状态`,class:`filter-select`},{default:l(()=>[r(b,{label:`启用`,value:1}),r(b,{label:`停用`,value:0})]),_:1},8,[`modelValue`]),r(g,{type:`primary`,onClick:Y},{default:l(()=>[...d[16]||=[o(`搜索`,-1)]]),_:1}),r(g,{onClick:le},{default:l(()=>[...d[17]||=[o(`重置`,-1)]]),_:1})]),p((i(),h(T,{data:F.value,"row-key":`id`},{default:l(()=>[r(C,{prop:`type_label`,label:`类型`,width:`90`}),r(C,{prop:`summary`,label:`展示内容`,"min-width":`200`,"show-overflow-tooltip":``}),r(C,{label:`封面`,width:`100`,align:`center`},{default:l(({row:t})=>[t.type===`custom`&&t.cover_url?(i(),h(w,{key:0,src:t.cover_url,"preview-src-list":[t.cover_url],fit:`cover`,class:`list-cover-thumb`,"preview-teleported":``},null,8,[`src`,`preview-src-list`])):(i(),e(`span`,N,`—`))]),_:1}),r(C,{prop:`sort`,label:`排序`,width:`80`,align:`center`}),r(C,{label:`状态`,width:`90`,align:`center`},{default:l(({row:e})=>[u(`span`,{class:ee([`status-badge`,t(re)(e.status)])},ne(e.status===1?`启用`:`停用`),3)]),_:1}),r(C,{label:`操作`,width:`160`,fixed:`right`},{default:l(({row:e})=>[u(`div`,ie,[r(g,{class:`btn-action-secondary`,onClick:t=>fe(e)},{default:l(()=>[...d[18]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),r(g,{class:`btn-action-secondary`,onClick:t=>$(e)},{default:l(()=>[...d[19]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[be,y.value]]),u(`div`,ae,[r(E,{"current-page":L.value,"onUpdate:currentPage":d[3]||=e=>L.value=e,layout:`total, prev, pager, next`,total:I.value.total,"page-size":I.value.per_page,onCurrentChange:J},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r(ye,{modelValue:V.value,"onUpdate:modelValue":d[13]||=e=>V.value=e,title:H.value?`编辑 Banner`:`新增 Banner`,width:`960px`,top:`4vh`,"destroy-on-close":``,class:`banner-dialog`},{footer:l(()=>[r(g,{onClick:d[12]||=e=>V.value=!1},{default:l(()=>[...d[22]||=[o(`取消`,-1)]]),_:1}),r(g,{type:`primary`,loading:P.value,onClick:pe},{default:l(()=>[...d[23]||=[o(`保存`,-1)]]),_:1},8,[`loading`])]),default:l(()=>[r(ve,{"label-position":`top`,class:`banner-form`},{default:l(()=>[r(ge,{gutter:16},{default:l(()=>[r(k,{span:8},{default:l(()=>[r(O,{label:`类型`,required:``},{default:l(()=>[r(S,{modelValue:U.value.type,"onUpdate:modelValue":d[4]||=e=>U.value.type=e,style:{width:`100%`},onChange:ue},{default:l(()=>[(i(),e(f,null,m(v,e=>r(b,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(k,{span:8},{default:l(()=>[r(O,{label:`排序`,required:``},{default:l(()=>[r(Q,{modelValue:U.value.sort,"onUpdate:modelValue":d[5]||=e=>U.value.sort=e,min:0,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1}),r(k,{span:8},{default:l(()=>[r(O,{label:`状态`},{default:l(()=>[r(he,{modelValue:U.value.status,"onUpdate:modelValue":d[6]||=e=>U.value.status=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1}),U.value.type===`course`?(i(),h(O,{key:0,label:`选择课程`,required:``},{default:l(()=>[r(S,{modelValue:U.value.course_id,"onUpdate:modelValue":d[7]||=e=>U.value.course_id=e,filterable:``,remote:``,"reserve-keyword":``,placeholder:`搜索课程名称或编号`,"remote-method":X,loading:K.value,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,m(W.value,e=>(i(),h(b,{key:e.id,label:e.title,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`loading`])]),_:1})):a(``,!0),U.value.type===`activity`?(i(),h(O,{key:1,label:`选择活动`,required:``},{default:l(()=>[r(S,{modelValue:U.value.activity_id,"onUpdate:modelValue":d[8]||=e=>U.value.activity_id=e,filterable:``,remote:``,"reserve-keyword":``,placeholder:`搜索活动名称`,"remote-method":Z,loading:q.value,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,m(G.value,e=>(i(),h(b,{key:e.id,label:e.title,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`loading`])]),_:1})):a(``,!0),U.value.type===`custom`?(i(),e(f,{key:2},[r(O,{label:`标题`,required:``},{default:l(()=>[r(_,{modelValue:U.value.title,"onUpdate:modelValue":d[9]||=e=>U.value.title=e,placeholder:`请输入 Banner 标题`},null,8,[`modelValue`])]),_:1}),r(O,{label:`封面图`,required:``},{default:l(()=>[u(`div`,oe,[r(_e,{"show-file-list":!1,accept:`image/*`,"http-request":me},{default:l(()=>[r(g,{type:`primary`,plain:``,size:`small`},{default:l(()=>[...d[20]||=[o(`上传图片`,-1)]]),_:1})]),_:1}),U.value.cover_url?(i(),h(g,{key:0,size:`small`,onClick:d[10]||=e=>U.value.cover_url=``},{default:l(()=>[...d[21]||=[o(`移除`,-1)]]),_:1})):a(``,!0)]),U.value.cover_url?(i(),e(`div`,se,[u(`img`,{src:U.value.cover_url,alt:`封面`},null,8,ce)])):a(``,!0)]),_:1}),r(O,{label:`内容`,class:`intro-form-item`},{default:l(()=>[r(x,{modelValue:U.value.content_html,"onUpdate:modelValue":d[11]||=e=>U.value.content_html=e,scope:`banners`,height:320},null,8,[`modelValue`])]),_:1})],64)):a(``,!0)]),_:1})]),_:1},8,[`modelValue`,`title`])],64)}}}),[[`__scopeId`,`data-v-d8891ff1`]]);export{P as default}; \ No newline at end of file +import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as s,Xt as ee,Y as c,at as l,b as u,d as te,ht as d,m as f,ot as p,q as m,tn as ne,x as h}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as g,l as _,r as v,s as y}from"./index-DTIMLswB.js";import{n as b,t as x}from"./RichTextEditor-BSUub6Rd.js";import{t as S}from"./usePageLoad-DFTLo_Lv.js";import{s as C}from"./activities-zOsA7OhR.js";import{l as w}from"./courses-BrM6G2gc.js";import{r as re}from"./admin-list-CBoToEFo.js";async function T(e){let{data:t}=await v.get(`/admin/v1/banners`,{params:e});return t.data}async function E(e){let{data:t}=await v.get(`/admin/v1/banners/${e}`);return t.data}async function D(e){let{data:t}=await v.post(`/admin/v1/banners`,e);return t.data}async function O(e,t){let{data:n}=await v.put(`/admin/v1/banners/${e}`,t);return n.data}async function k(e){let{data:t}=await v.delete(`/admin/v1/banners/${e}`);return t}var A={class:`list-page`},j={class:`page-header`},M={class:`list-filter-bar`},N={key:1,class:`text-mute`},ie={class:`table-row-actions`},ae={class:`list-pager`},oe={class:`upload-row`},se={key:0,class:`thumb-preview`},ce=[`src`],P=y(n({__name:`index`,setup(n){let v=[{value:`course`,label:`课程`},{value:`activity`,label:`活动`},{value:`custom`,label:`自定义`}],y=d(!1),P=d(!1),F=d([]),I=d({current_page:1,per_page:20,total:0}),L=d(1),R=d(``),z=d(``),B=d(``),V=d(!1),H=d(null),U=d({type:`course`,course_id:void 0,activity_id:void 0,title:``,cover_url:``,content_html:``,sort:0,status:1}),W=d([]),G=d([]),K=d(!1),q=d(!1);async function J(){y.value=!0;try{let e={page:L.value,page_size:I.value.per_page};R.value&&(e.keyword=R.value),z.value&&(e.type=z.value),B.value!==``&&(e.status=B.value);let t=await T(e);F.value=t.items,I.value=t.meta}finally{y.value=!1}}function Y(){L.value=1,J()}function le(){R.value=``,z.value=``,B.value=``,L.value=1,J()}async function X(e=``){K.value=!0;try{W.value=(await w({keyword:e,page:1,page_size:30})).items.map(e=>({id:e.id,title:e.title}))}finally{K.value=!1}}async function Z(e=``){q.value=!0;try{G.value=(await C({keyword:e,page:1,page_size:30})).items.map(e=>({id:e.id,title:e.title}))}finally{q.value=!1}}function ue(e){U.value.course_id=void 0,U.value.activity_id=void 0,U.value.title=``,U.value.cover_url=``,U.value.content_html=``,e===`course`&&X(),e===`activity`&&Z()}function de(){H.value=null,U.value={type:`course`,course_id:void 0,activity_id:void 0,title:``,cover_url:``,content_html:``,sort:0,status:1},W.value=[],G.value=[],V.value=!0,X()}async function fe(e){H.value=e;let t=await E(e.id);U.value={type:t.type,course_id:t.course_id??void 0,activity_id:t.activity_id??void 0,title:t.title||``,cover_url:t.cover_url||``,content_html:t.content_html||``,sort:t.sort,status:t.status},t.type===`course`&&t.course_id&&(W.value=[{id:t.course_id,title:t.course_title||`#${t.course_id}`}]),t.type===`activity`&&t.activity_id&&(G.value=[{id:t.activity_id,title:t.activity_title||`#${t.activity_id}`}]),V.value=!0,t.type===`course`&&X(),t.type===`activity`&&Z()}function Q(){if(U.value.type===`course`&&!U.value.course_id)return _.warning(`请选择课程`),!1;if(U.value.type===`activity`&&!U.value.activity_id)return _.warning(`请选择活动`),!1;if(U.value.type===`custom`){if(!U.value.title.trim())return _.warning(`请填写标题`),!1;if(!U.value.cover_url)return _.warning(`请上传封面图`),!1}return!0}async function pe(){if(!Q())return;let e={type:U.value.type,sort:U.value.sort,status:U.value.status,course_id:U.value.type===`course`?U.value.course_id:null,activity_id:U.value.type===`activity`?U.value.activity_id:null,title:U.value.type===`custom`?U.value.title.trim():null,cover_url:U.value.type===`custom`?U.value.cover_url:null,content_html:U.value.type===`custom`&&U.value.content_html?.replace(/<[^>]+>/g,``).trim()?U.value.content_html:null};P.value=!0;try{H.value?await O(H.value.id,e):await D(e),_.success(`已保存`),V.value=!1,await J()}finally{P.value=!1}}async function $(e){await g.confirm(`确定删除 Banner「${e.summary||e.id}」?`,`提示`,{type:`warning`}),await k(e.id),_.success(`已删除`),await J()}async function me(e){let t=e.file,n=t instanceof File?t:t.raw;if(!n){e.onError?.(Error(`no file`));return}try{let t=await b(n);U.value.cover_url=t.url,_.success(`封面上传成功`),e.onSuccess?.({})}catch{_.error(`封面上传失败`),e.onError?.(Error(`upload failed`))}}return S(J),(n,d)=>{let g=c(`el-button`),_=c(`el-input`),b=c(`el-option`),S=c(`el-select`),C=c(`el-table-column`),w=c(`el-image`),T=c(`el-table`),E=c(`el-pagination`),D=c(`el-card`),O=c(`el-form-item`),k=c(`el-col`),Q=c(`el-input-number`),he=c(`el-switch`),ge=c(`el-row`),_e=c(`el-upload`),ve=c(`el-form`),ye=c(`el-dialog`),be=s(`loading`);return i(),e(f,null,[u(`div`,A,[u(`div`,j,[d[15]||=u(`h1`,{class:`page-title`},`Banner图管理`,-1),r(g,{type:`primary`,size:`small`,class:`btn-create`,onClick:de},{default:l(()=>[...d[14]||=[o(`新增 Banner`,-1)]]),_:1})]),r(D,{shadow:`never`,class:`admin-list-card`},{default:l(()=>[u(`div`,M,[r(_,{modelValue:R.value,"onUpdate:modelValue":d[0]||=e=>R.value=e,placeholder:`搜索标题、课程、活动…`,clearable:``,class:`filter-search`,onKeyup:te(Y,[`enter`])},null,8,[`modelValue`]),r(S,{modelValue:z.value,"onUpdate:modelValue":d[1]||=e=>z.value=e,clearable:``,placeholder:`类型`,class:`filter-select`},{default:l(()=>[(i(),e(f,null,m(v,e=>r(b,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`]),r(S,{modelValue:B.value,"onUpdate:modelValue":d[2]||=e=>B.value=e,clearable:``,placeholder:`状态`,class:`filter-select`},{default:l(()=>[r(b,{label:`启用`,value:1}),r(b,{label:`停用`,value:0})]),_:1},8,[`modelValue`]),r(g,{type:`primary`,onClick:Y},{default:l(()=>[...d[16]||=[o(`搜索`,-1)]]),_:1}),r(g,{onClick:le},{default:l(()=>[...d[17]||=[o(`重置`,-1)]]),_:1})]),p((i(),h(T,{data:F.value,"row-key":`id`},{default:l(()=>[r(C,{prop:`type_label`,label:`类型`,width:`90`}),r(C,{prop:`summary`,label:`展示内容`,"min-width":`200`,"show-overflow-tooltip":``}),r(C,{label:`封面`,width:`100`,align:`center`},{default:l(({row:t})=>[t.type===`custom`&&t.cover_url?(i(),h(w,{key:0,src:t.cover_url,"preview-src-list":[t.cover_url],fit:`cover`,class:`list-cover-thumb`,"preview-teleported":``},null,8,[`src`,`preview-src-list`])):(i(),e(`span`,N,`—`))]),_:1}),r(C,{prop:`sort`,label:`排序`,width:`80`,align:`center`}),r(C,{label:`状态`,width:`90`,align:`center`},{default:l(({row:e})=>[u(`span`,{class:ee([`status-badge`,t(re)(e.status)])},ne(e.status===1?`启用`:`停用`),3)]),_:1}),r(C,{label:`操作`,width:`160`,fixed:`right`},{default:l(({row:e})=>[u(`div`,ie,[r(g,{class:`btn-action-secondary`,onClick:t=>fe(e)},{default:l(()=>[...d[18]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),r(g,{class:`btn-action-secondary`,onClick:t=>$(e)},{default:l(()=>[...d[19]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[be,y.value]]),u(`div`,ae,[r(E,{"current-page":L.value,"onUpdate:currentPage":d[3]||=e=>L.value=e,layout:`total, prev, pager, next`,total:I.value.total,"page-size":I.value.per_page,onCurrentChange:J},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r(ye,{modelValue:V.value,"onUpdate:modelValue":d[13]||=e=>V.value=e,title:H.value?`编辑 Banner`:`新增 Banner`,width:`960px`,top:`4vh`,"destroy-on-close":``,class:`banner-dialog`},{footer:l(()=>[r(g,{onClick:d[12]||=e=>V.value=!1},{default:l(()=>[...d[22]||=[o(`取消`,-1)]]),_:1}),r(g,{type:`primary`,loading:P.value,onClick:pe},{default:l(()=>[...d[23]||=[o(`保存`,-1)]]),_:1},8,[`loading`])]),default:l(()=>[r(ve,{"label-position":`top`,class:`banner-form`},{default:l(()=>[r(ge,{gutter:16},{default:l(()=>[r(k,{span:8},{default:l(()=>[r(O,{label:`类型`,required:``},{default:l(()=>[r(S,{modelValue:U.value.type,"onUpdate:modelValue":d[4]||=e=>U.value.type=e,style:{width:`100%`},onChange:ue},{default:l(()=>[(i(),e(f,null,m(v,e=>r(b,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(k,{span:8},{default:l(()=>[r(O,{label:`排序`,required:``},{default:l(()=>[r(Q,{modelValue:U.value.sort,"onUpdate:modelValue":d[5]||=e=>U.value.sort=e,min:0,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1}),r(k,{span:8},{default:l(()=>[r(O,{label:`状态`},{default:l(()=>[r(he,{modelValue:U.value.status,"onUpdate:modelValue":d[6]||=e=>U.value.status=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1}),U.value.type===`course`?(i(),h(O,{key:0,label:`选择课程`,required:``},{default:l(()=>[r(S,{modelValue:U.value.course_id,"onUpdate:modelValue":d[7]||=e=>U.value.course_id=e,filterable:``,remote:``,"reserve-keyword":``,placeholder:`搜索课程名称或编号`,"remote-method":X,loading:K.value,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,m(W.value,e=>(i(),h(b,{key:e.id,label:e.title,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`loading`])]),_:1})):a(``,!0),U.value.type===`activity`?(i(),h(O,{key:1,label:`选择活动`,required:``},{default:l(()=>[r(S,{modelValue:U.value.activity_id,"onUpdate:modelValue":d[8]||=e=>U.value.activity_id=e,filterable:``,remote:``,"reserve-keyword":``,placeholder:`搜索活动名称`,"remote-method":Z,loading:q.value,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,m(G.value,e=>(i(),h(b,{key:e.id,label:e.title,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`loading`])]),_:1})):a(``,!0),U.value.type===`custom`?(i(),e(f,{key:2},[r(O,{label:`标题`,required:``},{default:l(()=>[r(_,{modelValue:U.value.title,"onUpdate:modelValue":d[9]||=e=>U.value.title=e,placeholder:`请输入 Banner 标题`},null,8,[`modelValue`])]),_:1}),r(O,{label:`封面图`,required:``},{default:l(()=>[u(`div`,oe,[r(_e,{"show-file-list":!1,accept:`image/*`,"http-request":me},{default:l(()=>[r(g,{type:`primary`,plain:``,size:`small`},{default:l(()=>[...d[20]||=[o(`上传图片`,-1)]]),_:1})]),_:1}),U.value.cover_url?(i(),h(g,{key:0,size:`small`,onClick:d[10]||=e=>U.value.cover_url=``},{default:l(()=>[...d[21]||=[o(`移除`,-1)]]),_:1})):a(``,!0)]),U.value.cover_url?(i(),e(`div`,se,[u(`img`,{src:U.value.cover_url,alt:`封面`},null,8,ce)])):a(``,!0)]),_:1}),r(O,{label:`内容`,class:`intro-form-item`},{default:l(()=>[r(x,{modelValue:U.value.content_html,"onUpdate:modelValue":d[11]||=e=>U.value.content_html=e,scope:`banners`,height:320},null,8,[`modelValue`])]),_:1})],64)):a(``,!0)]),_:1})]),_:1},8,[`modelValue`,`title`])],64)}}}),[[`__scopeId`,`data-v-d8891ff1`]]);export{P as default}; \ No newline at end of file diff --git a/public/admin/assets/courses-BaY1NbOC.js b/public/admin/assets/courses-BnsdmT2t.js similarity index 99% rename from public/admin/assets/courses-BaY1NbOC.js rename to public/admin/assets/courses-BnsdmT2t.js index 7eaf73c..550eb9b 100644 --- a/public/admin/assets/courses-BaY1NbOC.js +++ b/public/admin/assets/courses-BnsdmT2t.js @@ -1,4 +1,4 @@ -import{a as e,i as t,n,r,t as i}from"./rolldown-runtime-BYbx6iT9.js";import{$t as a,At as o,Bt as s,C as c,Ct as l,D as u,Dt as d,E as f,Et as p,Ft as m,G as h,Gt as g,Jt as _,Kt as v,Nt as y,Ot as b,Pt as x,Rt as S,S as C,T as w,Tt as T,Vt as E,Wt as ee,X as D,Xt as te,Y as O,Yt as k,at as A,b as j,d as ne,en as re,f as ie,ht as M,i as ae,kt as N,m as oe,nn as se,o as ce,ot as le,q as ue,qt as de,rt as fe,tn as pe,u as me,wt as he,x as P,y as ge,zt as _e}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as F,l as I,s as ve}from"./index-jb05DpEw.js";import{r as ye,t as be}from"./RichTextEditor-CvwjagK6.js";import{t as xe}from"./usePageLoad-DFTLo_Lv.js";import{a as Se,c as Ce,i as we,l as Te,n as Ee,o as De,r as Oe,s as ke,t as Ae,u as je}from"./courses-U0J1-mMf.js";import{a as Me,i as Ne,o as Pe,s as Fe}from"./admin-list-CBoToEFo.js";import{f as Ie}from"./teachers-CirjzrhY.js";import{a as Le,s as Re}from"./dict-CkTsGkap.js";import{i as ze,n as Be,o as Ve,r as He,t as Ue}from"./csv-export-Dog5TZxt.js";import{a as We}from"./news-CB2Z7r6R.js";function Ge(e){Object.getOwnPropertySymbols(e).forEach(t=>{hi[t]=e[t]})}function Ke(e,t=``){return{type:0,source:t,children:e,helpers:new Set,components:[],directives:[],hoists:[],imports:[],cached:[],temps:0,codegenNode:void 0,loc:bi}}function qe(e,t,n,r,i,a,o,s=!1,c=!1,l=!1,u=bi){return e&&(s?(e.helper(Fr),e.helper(st(e.inSSR,l))):e.helper(ot(e.inSSR,l)),o&&e.helper(qr)),{type:13,tag:t,props:n,children:r,patchFlag:i,dynamicProps:a,directives:o,isBlock:s,disableTracking:c,isComponent:l,loc:u}}function L(e,t=bi){return{type:17,loc:t,elements:e}}function Je(e,t=bi){return{type:15,loc:t,properties:e}}function Ye(e,t){return{type:16,loc:bi,key:v(e)?R(e,!0):e,value:t}}function R(e,t=!1,n=bi,r=0){return{type:4,loc:n,content:e,isStatic:t,constType:t?3:r}}function Xe(e,t){return{type:5,loc:t,content:v(e)?R(e,!1,t):e}}function Ze(e,t=bi){return{type:8,loc:t,children:e}}function z(e,t=[],n=bi){return{type:14,loc:n,callee:e,arguments:t}}function B(e,t=void 0,n=!1,r=!1,i=bi){return{type:18,params:e,returns:t,newline:n,isSlot:r,loc:i}}function Qe(e,t,n,r=!0){return{type:19,test:e,consequent:t,alternate:n,newline:r,loc:bi}}function $e(e,t,n=!1,r=!1){return{type:20,index:e,value:t,needPauseTracking:n,inVOnce:r,needArraySpread:!1,loc:bi}}function et(e){return{type:21,body:e,loc:bi}}function tt(e){return{type:22,elements:e,loc:bi}}function nt(e,t,n){return{type:23,test:e,consequent:t,alternate:n,loc:bi}}function rt(e,t){return{type:24,left:e,right:t,loc:bi}}function it(e){return{type:25,expressions:e,loc:bi}}function at(e){return{type:26,returns:e,loc:bi}}function ot(e,t){return e||t?Rr:zr}function st(e,t){return e||t?Ir:Lr}function ct(e,{helper:t,removeHelper:n,inSSR:r}){e.isBlock||(e.isBlock=!0,n(ot(r,e.isComponent)),t(Fr),t(st(r,e.isComponent)))}function lt(e){return e>=97&&e<=122||e>=65&&e<=90}function ut(e){return e===32||e===10||e===9||e===12||e===13}function dt(e){return e===47||e===62||ut(e)}function ft(e){let t=new Uint8Array(e.length);for(let n=0;n{hi[t]=e[t]})}function Ke(e,t=``){return{type:0,source:t,children:e,helpers:new Set,components:[],directives:[],hoists:[],imports:[],cached:[],temps:0,codegenNode:void 0,loc:bi}}function qe(e,t,n,r,i,a,o,s=!1,c=!1,l=!1,u=bi){return e&&(s?(e.helper(Fr),e.helper(st(e.inSSR,l))):e.helper(ot(e.inSSR,l)),o&&e.helper(qr)),{type:13,tag:t,props:n,children:r,patchFlag:i,dynamicProps:a,directives:o,isBlock:s,disableTracking:c,isComponent:l,loc:u}}function L(e,t=bi){return{type:17,loc:t,elements:e}}function Je(e,t=bi){return{type:15,loc:t,properties:e}}function Ye(e,t){return{type:16,loc:bi,key:v(e)?R(e,!0):e,value:t}}function R(e,t=!1,n=bi,r=0){return{type:4,loc:n,content:e,isStatic:t,constType:t?3:r}}function Xe(e,t){return{type:5,loc:t,content:v(e)?R(e,!1,t):e}}function Ze(e,t=bi){return{type:8,loc:t,children:e}}function z(e,t=[],n=bi){return{type:14,loc:n,callee:e,arguments:t}}function B(e,t=void 0,n=!1,r=!1,i=bi){return{type:18,params:e,returns:t,newline:n,isSlot:r,loc:i}}function Qe(e,t,n,r=!0){return{type:19,test:e,consequent:t,alternate:n,newline:r,loc:bi}}function $e(e,t,n=!1,r=!1){return{type:20,index:e,value:t,needPauseTracking:n,inVOnce:r,needArraySpread:!1,loc:bi}}function et(e){return{type:21,body:e,loc:bi}}function tt(e){return{type:22,elements:e,loc:bi}}function nt(e,t,n){return{type:23,test:e,consequent:t,alternate:n,loc:bi}}function rt(e,t){return{type:24,left:e,right:t,loc:bi}}function it(e){return{type:25,expressions:e,loc:bi}}function at(e){return{type:26,returns:e,loc:bi}}function ot(e,t){return e||t?Rr:zr}function st(e,t){return e||t?Ir:Lr}function ct(e,{helper:t,removeHelper:n,inSSR:r}){e.isBlock||(e.isBlock=!0,n(ot(r,e.isComponent)),t(Fr),t(st(r,e.isComponent)))}function lt(e){return e>=97&&e<=122||e>=65&&e<=90}function ut(e){return e===32||e===10||e===9||e===12||e===13}function dt(e){return e===47||e===62||ut(e)}function ft(e){let t=new Uint8Array(e.length);for(let n=0;n{e&&Ot(e,t)});break;case`RestElement`:Ot(e.argument,t);break;case`AssignmentPattern`:Ot(e.left,t);break}return t}function kt(e){return Mi.includes(e.type)?kt(e.expression):e}function At(e){switch(e){case`Teleport`:case`teleport`:return jr;case`Suspense`:case`suspense`:return Mr;case`KeepAlive`:case`keep-alive`:return Nr;case`BaseTransition`:case`base-transition`:return Pr}}function jt(e,t,n=t.length){return Mt({offset:e.offset,line:e.line,column:e.column},t,n)}function Mt(e,t,n=t.length){let r=0,i=-1;for(let e=0;ee.type===7&&e.name===`bind`&&(!e.arg||e.arg.type!==4||!e.arg.isStatic))}function Rt(e){return e.type===5||e.type===2}function zt(e){return e.type===7&&e.name===`pre`}function Bt(e){return e.type===7&&e.name===`slot`}function Vt(e){return e.type===1&&e.tagType===3}function Ht(e){return e.type===1&&e.tagType===2}function Ut(e,t=[]){if(e&&!v(e)&&e.type===14){let n=e.callee;if(!v(n)&&qi.has(n))return Ut(e.arguments[0],t.concat(e))}return[e,t]}function Wt(e,t,n){let r,i=e.type===13?e.props:e.arguments[2],a=[],o;if(i&&!v(i)&&i.type===14){let e=Ut(i);i=e[0],a=e[1],o=a[a.length-1]}if(i==null||v(i))r=Je([t]);else if(i.type===14){let e=i.arguments[0];!v(e)&&e.type===15?Gt(t,e)||e.properties.unshift(t):i.callee===ri?r=z(n.helper(Qr),[Je([t]),i]):i.arguments.unshift(Je([t])),!r&&(r=i)}else i.type===15?(Gt(t,i)||i.properties.unshift(t),r=i):(r=z(n.helper(Qr),[Je([t]),i]),o&&o.callee===ni&&(o=a[a.length-2]));e.type===13?o?o.arguments[0]=r:e.props=r:o?o.arguments[0]=r:e.arguments[2]=r}function Gt(e,t){let n=!1;if(e.key.type===4){let r=e.key.content;n=t.properties.some(e=>e.key.type===4&&e.key.content===r)}return n}function Kt(e,t){return`_${t}_${e.replace(/[^\w]/g,(t,n)=>t===`-`?`_`:e.charCodeAt(n).toString())}`}function qt(e,t){if(!e||Object.keys(t).length===0)return!1;switch(e.type){case 1:for(let n=0;nqt(e,t));case 11:return qt(e.source,t)?!0:e.children.some(e=>qt(e,t));case 9:return e.branches.some(e=>qt(e,t));case 10:return qt(e.condition,t)?!0:e.children.some(e=>qt(e,t));case 4:return!e.isStatic&&Fi(e.content)&&!!t[e.content];case 8:return e.children.some(e=>s(e)&&qt(e,t));case 5:case 12:return qt(e.content,t);case 2:case 3:case 20:return!1;default:return!1}}function Jt(e){return e.type===14&&e.callee===pi?e.arguments[1].returns:e}function Yt(e){for(let t=0;t{let i=t.start.offset+n;return _n(e,!1,pn(i,i+e.length),0,+!!r)},s={source:o(a.trim(),n.indexOf(a,i.length)),value:void 0,key:void 0,index:void 0,finalized:!1},c=i.trim().replace(sa,``).trim(),l=i.indexOf(c),u=c.match(oa);if(u){c=c.replace(oa,``).trim();let e=u[1].trim(),t;if(e&&(t=n.indexOf(e,l+c.length),s.key=o(e,t,!0)),u[2]){let r=u[2].trim();r&&(s.index=o(r,n.indexOf(r,s.key?t+e.length:l+c.length),!0))}}return c&&(s.value=o(c,l,!0)),s}function $t(e,t){return Zi.slice(e,t)}function en(e){aa.inSFCRoot&&(Qi.innerLoc=pn(e+1,e+1)),fn(Qi);let{tag:t,ns:n}=Qi;n===0&&H.isPreTag(t)&&na++,H.isVoidTag(t)?nn(Qi,e):(W.unshift(Qi),(n===1||n===2)&&(aa.inXML=!0)),Qi=null}function tn(e,t,n){{let t=W[0]&&W[0].tag;t!==`script`&&t!==`style`&&e.includes(`&`)&&(e=H.decodeEntities(e,!1))}let r=W[0]||Xi,i=r.children[r.children.length-1];i&&i.type===2?(i.content+=e,hn(i.loc,n)):r.children.push({type:2,content:e,loc:pn(t,n)})}function nn(e,t,n=!1){n?hn(e.loc,an(t,60)):hn(e.loc,rn(t,62)+1),aa.inSFCRoot&&(e.children.length?e.innerLoc.end=N({},e.children[e.children.length-1].loc.end):e.innerLoc.end=N({},e.innerLoc.start),e.innerLoc.source=$t(e.innerLoc.start.offset,e.innerLoc.end.offset));let{tag:r,ns:i,children:a}=e;if(ra||(r===`slot`?e.tagType=2:on(e)?e.tagType=3:sn(e)&&(e.tagType=1)),aa.inRCDATA||(e.children=ln(a)),i===0&&H.isIgnoreNewlineTag(r)){let e=a[0];e&&e.type===2&&(e.content=e.content.replace(/^\r?\n/,``))}i===0&&H.isPreTag(r)&&na--,ia===e&&(ra=aa.inVPre=!1,ia=null),aa.inXML&&(W[0]?W[0].ns:H.ns)===0&&(aa.inXML=!1);{let t=e.props;if(!aa.inSFCRoot&&mt(`COMPILER_NATIVE_TEMPLATE`,H)&&e.tag===`template`&&!on(e)){let t=W[0]||Xi,n=t.children.indexOf(e);t.children.splice(n,1,...e.children)}let n=t.find(e=>e.type===6&&e.name===`inline-template`);n&&ht(`COMPILER_INLINE_TEMPLATE`,H,n.loc)&&e.children.length&&(n.value={type:2,content:$t(e.children[0].loc.start.offset,e.children[e.children.length-1].loc.end.offset),loc:n.loc})}}function rn(e,t){let n=e;for(;Zi.charCodeAt(n)!==t&&n=0;)n--;return n}function on({tag:e,props:t}){if(e===`template`){for(let e=0;e64&&e<91}function ln(e){let t=H.whitespace!==`preserve`,n=!1;for(let r=0;re.type!==3);return t.length===1&&t[0].type===1&&!Ht(t[0])?t[0]:null}function Cn(e,t,n,r=!1,i=!1){let{children:a}=e,o=[];for(let t=0;t0){if(e>=2){s.codegenNode.patchFlag=-1,o.push(s);continue}}else{let e=s.codegenNode;if(e.type===13){let t=e.patchFlag;if((t===void 0||t===512||t===1)&&En(s,n)>=2){let t=Dn(s);t&&(e.props=n.hoist(t))}e.dynamicProps&&=n.hoist(e.dynamicProps)}}}else if(s.type===12&&(r?0:wn(s,n))>=2){s.codegenNode.type===14&&s.codegenNode.arguments.length>0&&s.codegenNode.arguments.push(`-1`),o.push(s);continue}if(s.type===1){let t=s.tagType===1;t&&n.scopes.vSlot++,Cn(s,e,n,!1,i),t&&n.scopes.vSlot--}else if(s.type===11)Cn(s,e,n,s.children.length===1,!0);else if(s.type===9)for(let t=0;te.key===t||e.key.content===t);return n&&n.value}}o.length&&n.transformHoist&&n.transformHoist(a,n,e)}function wn(e,t){let{constantCache:n}=t;switch(e.type){case 1:if(e.tagType!==0)return 0;let r=n.get(e);if(r!==void 0)return r;let i=e.codegenNode;if(i.type!==13||i.isBlock&&e.tag!==`svg`&&e.tag!==`foreignObject`&&e.tag!==`math`)return 0;if(i.patchFlag===void 0){let r=3,a=En(e,t);if(a===0)return n.set(e,0),0;a1)for(let i=0;in&&(D.childIndex--,D.onNodeRemoved()),D.parent.children.splice(n,1)},onNodeRemoved:p,addIdentifiers(e){},removeIdentifiers(e){},hoist(e){v(e)&&(e=R(e)),D.hoists.push(e);let t=R(`_hoisted_${D.hoists.length}`,!1,e.loc,2);return t.hoisted=e,t},cache(e,t=!1,n=!1){let r=$e(D.cached.length,e,t,n);return D.cached.push(r),r}};return D.filters=new Set,D}function kn(e,t){let n=On(e,t);Mn(e,n),t.hoistStatic&&xn(e,n),t.ssr||An(e,n),e.helpers=new Set([...n.helpers.keys()]),e.components=[...n.components],e.directives=[...n.directives],e.imports=n.imports,e.hoists=n.hoists,e.temps=n.temps,e.cached=n.cached,e.transformed=!0,e.filters=[...n.filters]}function An(e,t){let{helper:n}=t,{children:r}=e;if(r.length===1){let n=Sn(e);if(n&&n.codegenNode){let r=n.codegenNode;r.type===13&&ct(r,t),e.codegenNode=r}else e.codegenNode=r[0]}else r.length>1&&(e.codegenNode=qe(t,n(Ar),void 0,e.children,64,void 0,void 0,!0,void 0,!1))}function jn(e,t){let n=0,r=()=>{n--};for(;nt===e:t=>e.test(t);return(e,r)=>{if(e.type===1){let{props:i}=e;if(e.tagType===3&&i.some(Bt))return;let a=[];for(let o=0;o0,p=!a&&r!==`module`;if(In(e,n),i(`function ${u?`ssrRender`:`render`}(${(u?[`_ctx`,`_push`,`_parent`,`_attrs`]:[`_ctx`,`_cache`]).join(`, `)}) {`),o(),p&&(i(`with (_ctx) {`),o(),f&&(i(`const { ${d.map(fa).join(`, `)} } = _Vue diff --git a/public/admin/assets/courses-U0J1-mMf.js b/public/admin/assets/courses-BrM6G2gc.js similarity index 91% rename from public/admin/assets/courses-U0J1-mMf.js rename to public/admin/assets/courses-BrM6G2gc.js index 4950870..e8502a7 100644 --- a/public/admin/assets/courses-U0J1-mMf.js +++ b/public/admin/assets/courses-BrM6G2gc.js @@ -1 +1 @@ -import{r as e}from"./index-jb05DpEw.js";async function t(t){let{data:n}=await e.get(`/admin/v1/courses`,{params:t});return n.data}async function n(t){let{data:n}=await e.get(`/admin/v1/courses/${t}`);return n.data}async function r(t){let{data:n}=await e.post(`/admin/v1/courses`,t);return n.data}async function i(t,n){let{data:r}=await e.put(`/admin/v1/courses/${t}`,n);return r}async function a(t){let{data:n}=await e.delete(`/admin/v1/courses/${t}`);return n}async function o(t){let{data:n}=await e.get(`/admin/v1/courses/${t}/checkin-days`);return n.data.items}async function s(t,n){let{data:r}=await e.get(`/admin/v1/courses/${t}/signups`,{params:n});return r.data}async function c(e,t={}){let n=1,r=[];for(;;){let i=await s(e,{...t,page:n,page_size:200});if(r.push(...i.items),n>=i.meta.last_page||i.items.length===0)break;n+=1}return r}async function l(t,n){let{data:r}=await e.delete(`/admin/v1/courses/${t}/signups/${n}`);return r}async function u(t,n,r){let{data:i}=await e.post(`/admin/v1/courses/${t}/signups/${n}/checkin`,r);return i}export{c as a,s as c,l as i,t as l,r as n,n as o,a as r,o as s,u as t,i as u}; \ No newline at end of file +import{r as e}from"./index-DTIMLswB.js";async function t(t){let{data:n}=await e.get(`/admin/v1/courses`,{params:t});return n.data}async function n(t){let{data:n}=await e.get(`/admin/v1/courses/${t}`);return n.data}async function r(t){let{data:n}=await e.post(`/admin/v1/courses`,t);return n.data}async function i(t,n){let{data:r}=await e.put(`/admin/v1/courses/${t}`,n);return r}async function a(t){let{data:n}=await e.delete(`/admin/v1/courses/${t}`);return n}async function o(t){let{data:n}=await e.get(`/admin/v1/courses/${t}/checkin-days`);return n.data.items}async function s(t,n){let{data:r}=await e.get(`/admin/v1/courses/${t}/signups`,{params:n});return r.data}async function c(e,t={}){let n=1,r=[];for(;;){let i=await s(e,{...t,page:n,page_size:200});if(r.push(...i.items),n>=i.meta.last_page||i.items.length===0)break;n+=1}return r}async function l(t,n){let{data:r}=await e.delete(`/admin/v1/courses/${t}/signups/${n}`);return r}async function u(t,n,r){let{data:i}=await e.post(`/admin/v1/courses/${t}/signups/${n}/checkin`,r);return i}export{c as a,s as c,l as i,t as l,r as n,n as o,a as r,o as s,u as t,i as u}; \ No newline at end of file diff --git a/public/admin/assets/crawler-OUbh_VNx.js b/public/admin/assets/crawler-DXXsyrmH.js similarity index 98% rename from public/admin/assets/crawler-OUbh_VNx.js rename to public/admin/assets/crawler-DXXsyrmH.js index 32e9327..c0dce93 100644 --- a/public/admin/assets/crawler-OUbh_VNx.js +++ b/public/admin/assets/crawler-DXXsyrmH.js @@ -1 +1 @@ -import{C as e,D as t,E as n,G as r,S as i,T as a,X as ee,Y as o,at as s,b as c,f as te,ht as l,m as u,ot as ne,q as d,rt as f,tn as p,x as m,y as h}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{l as g,o as _,s as v}from"./index-jb05DpEw.js";import{t as y}from"./usePageLoad-DFTLo_Lv.js";import{a as b,f as x,m as S,o as C,p as w}from"./assets-Wj17Zlgs.js";import{r as T}from"./research-directions-Y7zStqVF.js";import{p as re}from"./teachers-CirjzrhY.js";import{a as E}from"./dict-CkTsGkap.js";var ie={class:`list-page`},ae={key:0,class:`crawl-resolve-hint`},oe={key:1,class:`crawl-resolve-hint`},se={key:0},ce={key:1},le={key:2},ue={key:3},de={key:1,class:`result-actions`},fe={key:1,class:`teacher-batch-bar`},pe={key:2,class:`teacher-batch-bar`},me=[`href`],D=v(t({__name:`index`,setup(t){let v=_(),D=l(!1),O=l(!1),k=l(!1),A=l(null),j=l(null),M=l(null),N=null,P=l(!1),F=l(`paper`),I=l([]),L=l([]),R=l([]),z=l(!1),B=l([]),V=l({target_type:`paper`,request_url:`https://arxiv.org/`,params:{}}),H={paper:[{key:`keyword`,type:`textarea`,label:`搜索关键词(选填)`,required:!1,placeholder:`多个关键词用逗号或换行分隔,如:graph neural, AI`},{key:`max_results`,type:`number`,label:`条数上限`,default:20,min:1,max:50}],industry_news:[{key:`keyword`,type:`textarea`,label:`搜索关键词(选填)`,required:!1,placeholder:`多个关键词用空格、逗号或换行分隔,如:融资 科创板 AI`},{key:`max_pages`,type:`number`,label:`抓取页数`,default:5,min:1,max:50},{key:`max_results`,type:`number`,label:`条数上限`,default:30,min:1,max:50}]},U=l([]),W=l([]),G=l({source:``,category_id:void 0}),K=l([]),q=l([]),J=l({university_id:void 0,city:``,research_direction_ids:[]}),he=h(()=>V.value.target_type===`teacher`?R.value:F.value===`teacher_lead`?L.value:I.value),ge=h(()=>V.value.target_type===`teacher`?U.value.filter(e=>e.key!==`keyword`&&e.key!==`max_results`&&e.key!==`max_pages`):[]);function Y(e){return e===`paper`||e===`industry_news`?H[e]:[]}function X(e,t=!0){let n=Y(e);if(n.length===0)return;U.value=n;let r=t?{...V.value.params}:{};if(xe(n),t)for(let e of n)r[e.key]!==void 0&&(V.value.params[e.key]=r[e.key])}function Z(){V.value.target_type===`teacher`&&(V.value.params.keyword===void 0&&(V.value.params.keyword=``),V.value.params.max_results===void 0&&(V.value.params.max_results=200),V.value.params.max_pages===void 0&&(V.value.params.max_pages=5))}function _e(){V.value.target_type===`industry_news`&&(V.value.params.keyword===void 0&&(V.value.params.keyword=``),V.value.params.max_pages===void 0&&(V.value.params.max_pages=5),V.value.params.max_results===void 0&&(V.value.params.max_results=30))}function ve(e){(e===`paper`||e===`industry_news`)&&(X(e,!0),e===`industry_news`&&_e())}function Q(e){if(!e)return`—`;let t=e.match(/^(\d{4}-\d{2}-\d{2})/);return t?t[1]:e}function ye(e){return!!(e.lead_author_university?.trim()||e.school_name?.trim())}function be(e){return[...e].sort((e,t)=>{let n=ye(e);return n===ye(t)?(e.lead_author_name||``).localeCompare(t.lead_author_name||``,`zh-CN`):n?-1:1})}function xe(e){let t={};for(let n of e)n.type===`checkbox`?t[n.key]=Array.isArray(n.default)?[...n.default]:[]:n.type===`number`?t[n.key]=n.default??20:t[n.key]=n.default??``;V.value.params=t}function Se(e){return e===`paper`?`https://arxiv.org/`:e===`teacher`?`https://`:`https://www.pedaily.cn/all/`}function Ce(e){let t=e.trim();return t&&!/^https?:\/\//i.test(t)?`https://${t}`:t}function we(){A.value=null,P.value=!1,I.value=[],L.value=[],R.value=[],B.value=[],G.value={source:``,category_id:void 0}}function Te(){we(),F.value=`paper`,D.value=!1,k.value=!1,V.value={target_type:`paper`,request_url:Se(`paper`),params:{}},j.value=null,M.value=null,U.value=[],ve(`paper`),$()}async function $(){if(N)return N;N=(async()=>{if(!V.value.request_url){j.value=null,M.value=null;return}let e=Ce(V.value.request_url);e!==V.value.request_url&&(V.value.request_url=e);let t=V.value.target_type;(t===`paper`||t===`industry_news`)&&X(t,!0),O.value=!0;try{j.value=await w({request_url:V.value.request_url,target_type:t}),M.value=V.value.request_url,t===`teacher`?(U.value=j.value.param_schema?.fields??[],xe(U.value),Z()):X(t,!0)}catch{j.value=null,M.value=null,t===`teacher`?U.value=[]:X(t,!0)}finally{O.value=!1}})();try{await N}finally{N=null}}async function Ee(){if(!V.value.request_url.trim())return g.warning(`请填写目标地址`),!1;let e=Ce(V.value.request_url);return e!==V.value.request_url&&(V.value.request_url=e),(!j.value||M.value!==V.value.request_url)&&await $(),!!j.value}async function De(){await $()}f(()=>V.value.target_type,e=>{we(),j.value=null,M.value=null,U.value=[],V.value.request_url=Se(e),e===`teacher`?Z():(e===`paper`||e===`industry_news`)&&X(e,!1),e===`industry_news`&&Ne(),$()});async function Oe(){let[e,t]=await Promise.all([re({page:1,page_size:300}),T()]);K.value=e.items.map(e=>({id:e.id,name:e.name,city:e.city})),q.value=t.map(e=>({id:e.id,name:e.name}))}function ke(e){if(!e)return;let t=K.value.find(t=>t.id===e);t?.city&&!J.value.city&&(J.value.city=t.city||``)}function Ae(){let e=G.value.source.trim(),t=G.value.category_id;if(!(!e&&!t))return{source:e||void 0,category_dict_item_id:t}}function je(){let{university_id:e,city:t,research_direction_ids:n}=J.value,r=e!=null&&e>0,i=t.trim()!==``,a=n.length>0;if(!(!r&&!i&&!a))return{university_id:r?e:void 0,city:i?t.trim():void 0,research_direction_ids:a?n:void 0}}async function Me(){if(!await Ee()){g.warning(`无法识别该地址,请检查入库类型与 URL 是否可访问(需为 http/https 列表或详情页)`);return}D.value=!0;try{A.value=await S({target_type:V.value.target_type,request_url:V.value.request_url,params:V.value.params});let e=A.value.items_fetched??A.value.preview_count??0,t=V.value.target_type===`paper`&&(A.value.preview_teacher_lead_count??0)>0?`,另 ${A.value.preview_teacher_lead_count} 位第一作者待入库`:``;g.success(`抓取完成,共 ${e} 条待预览${t}`)}finally{D.value=!1}}async function Ne(){if(!(W.value.length>0))try{W.value=(await E(`news_category`)).items.map(e=>({id:e.id,label:e.label}))}catch{g.warning(`资讯分类加载失败`)}}async function Pe(){if(A.value?.id){z.value=!0,P.value=!0,B.value=[],F.value=V.value.target_type===`teacher`?`teacher`:`paper`;try{V.value.target_type===`industry_news`&&await Ne(),V.value.target_type===`teacher`&&await Oe();let e=A.value.id;if(V.value.target_type===`paper`){let[t,n]=await Promise.all([b(e,{item_kind:`paper`}),b(e,{item_kind:`teacher_lead`})]);I.value=t,L.value=be(n)}else V.value.target_type===`teacher`?R.value=await b(e,{item_kind:`teacher`}):I.value=await b(e)}finally{z.value=!1}}}function Fe(e){B.value=e.filter(e=>e.selectable)}f(F,()=>{B.value=[]});async function Ie(){if(!A.value?.id)return;if(B.value.length===0){g.warning(`请先勾选要入库的条目`);return}let e={item_ids:B.value.map(e=>e.id)},t=je();if(t&&(e.teacher_defaults=t),V.value.target_type===`industry_news`){let t=Ae();t&&(e.news_defaults=t)}k.value=!0;try{let t=await x(A.value.id,e),n=t.failed>0?`,失败 ${t.failed} 条`:``;g.success(`已入库 ${t.imported} 条,跳过 ${t.skipped} 条${n}`),await Pe(),A.value=await C(A.value.id)}finally{k.value=!1}}function Le(){A.value?.id&&(V.value.target_type===`paper`?v.push({path:`/papers`,query:{crawl_job_id:String(A.value.id)}}):V.value.target_type===`teacher`?v.push({path:`/teachers`}):v.push({path:`/news`,query:{crawl_job_id:String(A.value.id)}}))}let Re=()=>A.value?.status===`completed`&&(A.value.items_fetched??0)>0,ze=h(()=>{let e=B.value.length;return V.value.target_type===`industry_news`?`入库资讯(已勾选 ${e} 条)`:V.value.target_type===`teacher`||F.value===`teacher_lead`?`入库老师(已勾选 ${e} 条)`:`入库论文(已勾选 ${e} 条)`});return y(Te),(t,l)=>{let f=o(`el-radio`),h=o(`el-radio-group`),g=o(`el-form-item`),_=o(`el-input`),v=o(`el-input-number`),y=o(`el-checkbox`),b=o(`el-checkbox-group`),x=o(`el-button`),S=o(`el-form`),C=o(`el-alert`),w=o(`el-card`),T=o(`el-tab-pane`),re=o(`el-tabs`),E=o(`el-option`),M=o(`el-select`),N=o(`el-table-column`),R=o(`el-tag`),H=o(`el-table`),U=o(`el-dialog`),Y=ee(`loading`);return r(),e(`div`,ie,[l[29]||=c(`div`,{class:`page-header`},[c(`h1`,{class:`page-title`},`数据采集`)],-1),n(w,{shadow:`never`,class:`admin-list-card`},{default:s(()=>[n(S,{"label-position":`top`,class:`crawler-form`,onSubmit:te(Me,[`prevent`])},{default:s(()=>[n(g,{label:`入库类型`,required:``},{default:s(()=>[n(h,{modelValue:V.value.target_type,"onUpdate:modelValue":l[0]||=e=>V.value.target_type=e},{default:s(()=>[n(f,{label:`paper`},{default:s(()=>[...l[18]||=[a(`论文 → 论文库`,-1)]]),_:1}),n(f,{label:`industry_news`},{default:s(()=>[...l[19]||=[a(`行业资讯 → 资讯管理`,-1)]]),_:1}),n(f,{label:`teacher`},{default:s(()=>[...l[20]||=[a(`老师库 → 老师库`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),_:1}),n(g,{label:`目标地址`,required:``},{default:s(()=>[n(_,{modelValue:V.value.request_url,"onUpdate:modelValue":l[1]||=e=>V.value.request_url=e,type:`url`,placeholder:`https:// 资讯/论文列表页或单篇详情页`,onBlur:De},null,8,[`modelValue`]),O.value?(r(),e(`p`,ae,`正在识别采集源…`)):j.value?.source_name?(r(),e(`p`,oe,` 已识别采集源:`+p(j.value.source_name),1)):i(``,!0)]),_:1}),V.value.target_type===`paper`||V.value.target_type===`industry_news`?(r(),e(u,{key:0},[n(g,{label:`搜索关键词(选填)`},{default:s(()=>[n(_,{modelValue:V.value.params.keyword,"onUpdate:modelValue":l[2]||=e=>V.value.params.keyword=e,type:`textarea`,rows:2,placeholder:V.value.target_type===`paper`?`多个关键词用逗号或换行分隔,如:graph neural, AI`:`多个关键词用空格、逗号或换行分隔,如:融资 科创板 AI`},null,8,[`modelValue`,`placeholder`])]),_:1}),V.value.target_type===`industry_news`?(r(),m(g,{key:0,label:`抓取页数`},{default:s(()=>[n(v,{modelValue:V.value.params.max_pages,"onUpdate:modelValue":l[3]||=e=>V.value.params.max_pages=e,min:1,max:50},null,8,[`modelValue`])]),_:1})):i(``,!0),n(g,{label:`条数上限`},{default:s(()=>[n(v,{modelValue:V.value.params.max_results,"onUpdate:modelValue":l[4]||=e=>V.value.params.max_results=e,min:1,max:50},null,8,[`modelValue`])]),_:1})],64)):i(``,!0),V.value.target_type===`teacher`?(r(),e(u,{key:1},[n(g,{label:`搜索关键词(选填)`},{default:s(()=>[n(_,{modelValue:V.value.params.keyword,"onUpdate:modelValue":l[5]||=e=>V.value.params.keyword=e,type:`textarea`,rows:2,placeholder:`多个关键词用空格、逗号或换行分隔`},null,8,[`modelValue`])]),_:1}),n(g,{label:`抓取页数`},{default:s(()=>[n(v,{modelValue:V.value.params.max_pages,"onUpdate:modelValue":l[6]||=e=>V.value.params.max_pages=e,min:1,max:50},null,8,[`modelValue`])]),_:1}),n(g,{label:`条数上限`},{default:s(()=>[n(v,{modelValue:V.value.params.max_results,"onUpdate:modelValue":l[7]||=e=>V.value.params.max_results=e,min:1,max:500},null,8,[`modelValue`])]),_:1})],64)):i(``,!0),(r(!0),e(u,null,d(ge.value,t=>(r(),m(g,{key:t.key,label:t.label,required:t.required},{default:s(()=>[t.type===`checkbox`?(r(),m(b,{key:0,modelValue:V.value.params[t.key],"onUpdate:modelValue":e=>V.value.params[t.key]=e},{default:s(()=>[(r(!0),e(u,null,d(t.options,e=>(r(),m(y,{key:e,value:e},{default:s(()=>[a(p(e),1)]),_:2},1032,[`value`]))),128))]),_:2},1032,[`modelValue`,`onUpdate:modelValue`])):t.type===`number`?(r(),m(v,{key:1,modelValue:V.value.params[t.key],"onUpdate:modelValue":e=>V.value.params[t.key]=e,min:t.min??1,max:t.max??50},null,8,[`modelValue`,`onUpdate:modelValue`,`min`,`max`])):t.type===`textarea`?(r(),m(_,{key:2,modelValue:V.value.params[t.key],"onUpdate:modelValue":e=>V.value.params[t.key]=e,type:`textarea`,rows:3,placeholder:t.placeholder},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`])):(r(),m(_,{key:3,modelValue:V.value.params[t.key],"onUpdate:modelValue":e=>V.value.params[t.key]=e,placeholder:t.placeholder},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]))]),_:2},1032,[`label`,`required`]))),128)),n(x,{type:`primary`,"native-type":`submit`,loading:D.value},{default:s(()=>[...l[21]||=[a(` 手动抓取 `,-1)]]),_:1},8,[`loading`])]),_:1}),A.value?(r(),m(C,{key:0,class:`result-alert`,type:`success`,closable:!1,"show-icon":``},{default:s(()=>[c(`p`,null,`地址:`+p(A.value.request_url||A.value.platform_url),1),A.value.source_name?(r(),e(`p`,se,`采集源:`+p(A.value.source_name),1)):i(``,!0),c(`p`,null,`状态:`+p(A.value.status===`completed`?`已完成`:A.value.status),1),A.value.result_summary?(r(),e(`p`,ce,p(A.value.result_summary),1)):i(``,!0),V.value.target_type===`paper`&&A.value.preview_teacher_lead_count?(r(),e(`p`,le,` 第一作者待入库:`+p(A.value.preview_teacher_lead_count)+` 人 `,1)):i(``,!0),A.value.items_imported?(r(),e(`p`,ue,`已入库 `+p(A.value.items_imported)+` 条`,1)):i(``,!0)]),_:1})):i(``,!0),A.value?(r(),e(`div`,de,[Re()?(r(),m(x,{key:0,type:`primary`,onClick:Pe},{default:s(()=>[a(` 查看抓取内容(`+p(A.value.items_fetched)+` 条) `,1)]),_:1})):i(``,!0),n(x,{onClick:Le},{default:s(()=>[...l[22]||=[a(`在库中查看已入库`,-1)]]),_:1})])):i(``,!0)]),_:1}),n(U,{modelValue:P.value,"onUpdate:modelValue":l[16]||=e=>P.value=e,title:`本次抓取结果(勾选后入库)`,width:`960px`,"destroy-on-close":``,onClosed:l[17]||=e=>B.value=[]},{footer:s(()=>[n(x,{onClick:l[15]||=e=>P.value=!1},{default:s(()=>[...l[28]||=[a(`关闭`,-1)]]),_:1}),n(x,{type:`primary`,loading:k.value,onClick:Ie},{default:s(()=>[a(p(ze.value),1)]),_:1},8,[`loading`])]),default:s(()=>[V.value.target_type===`paper`?(r(),m(re,{key:0,modelValue:F.value,"onUpdate:modelValue":l[8]||=e=>F.value=e,class:`preview-tabs`},{default:s(()=>[n(T,{label:`论文(${I.value.length})`,name:`paper`},null,8,[`label`]),n(T,{label:`入库老师(${L.value.length})`,name:`teacher_lead`},null,8,[`label`])]),_:1},8,[`modelValue`])):i(``,!0),V.value.target_type===`industry_news`?(r(),e(`div`,fe,[n(_,{modelValue:G.value.source,"onUpdate:modelValue":l[9]||=e=>G.value.source=e,placeholder:`批量来源(选填)`,clearable:``,style:{width:`200px`}},null,8,[`modelValue`]),n(M,{modelValue:G.value.category_id,"onUpdate:modelValue":l[10]||=e=>G.value.category_id=e,placeholder:`批量资讯分类(选填)`,clearable:``,filterable:``,style:{width:`200px`}},{default:s(()=>[(r(!0),e(u,null,d(W.value,e=>(r(),m(E,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),l[23]||=c(`span`,{class:`batch-hint`},`选填;不填则使用每条抓取到的来源与自动匹配分类`,-1)])):i(``,!0),V.value.target_type===`teacher`?(r(),e(`div`,pe,[n(M,{modelValue:J.value.university_id,"onUpdate:modelValue":l[11]||=e=>J.value.university_id=e,filterable:``,placeholder:`批量高校(选填)`,clearable:``,style:{width:`200px`},onChange:ke},{default:s(()=>[(r(!0),e(u,null,d(K.value,e=>(r(),m(E,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),n(_,{modelValue:J.value.city,"onUpdate:modelValue":l[12]||=e=>J.value.city=e,placeholder:`批量城市(选填)`,clearable:``,style:{width:`140px`}},null,8,[`modelValue`]),n(M,{modelValue:J.value.research_direction_ids,"onUpdate:modelValue":l[13]||=e=>J.value.research_direction_ids=e,multiple:``,filterable:``,"collapse-tags":``,placeholder:`研究方向(可选)`,style:{width:`220px`}},{default:s(()=>[(r(!0),e(u,null,d(q.value,e=>(r(),m(E,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),l[24]||=c(`span`,{class:`batch-hint`},`选填;不填则使用每条抓取到的学校/机构信息`,-1)])):i(``,!0),ne((r(),m(H,{data:he.value,"row-key":`id`,size:`small`,onSelectionChange:Fe},{default:s(()=>[n(N,{type:`selection`,width:`48`,selectable:e=>!!e.selectable},null,8,[`selectable`]),V.value.target_type===`paper`&&F.value===`paper`?(r(),e(u,{key:0},[n(N,{prop:`title`,label:`论文标题`,"min-width":`200`,"show-overflow-tooltip":``}),n(N,{prop:`authors`,label:`作者`,width:`120`,"show-overflow-tooltip":``}),n(N,{label:`发表日期`,width:`110`},{default:s(({row:e})=>[a(p(Q(e.published_at)),1)]),_:1}),n(N,{prop:`school_name`,label:`学校`,width:`120`,"show-overflow-tooltip":``})],64)):V.value.target_type===`paper`&&F.value===`teacher_lead`?(r(),e(u,{key:1},[n(N,{prop:`lead_author_name`,label:`姓名`,width:`100`}),n(N,{prop:`lead_author_email`,label:`邮箱`,width:`160`,"show-overflow-tooltip":``}),n(N,{prop:`lead_author_university`,label:`学校`,width:`160`,"show-overflow-tooltip":``},{default:s(({row:e})=>[a(p(e.lead_author_university||e.school_name||`—`),1)]),_:1}),n(N,{prop:`paper_title`,label:`来源论文`,"min-width":`200`,"show-overflow-tooltip":``})],64)):V.value.target_type===`teacher`?(r(),e(u,{key:2},[n(N,{prop:`title`,label:`姓名`,width:`96`}),n(N,{label:`职称`,width:`88`,"show-overflow-tooltip":``},{default:s(({row:e})=>[a(p(e.lead_author_academic_title||`—`),1)]),_:1}),n(N,{prop:`lead_author_university`,label:`高校`,width:`140`,"show-overflow-tooltip":``},{default:s(({row:e})=>[a(p(e.lead_author_university||e.school_name||`—`),1)]),_:1}),n(N,{prop:`lead_author_email`,label:`邮箱`,width:`150`,"show-overflow-tooltip":``}),n(N,{prop:`summary`,label:`简介`,"min-width":`160`,"show-overflow-tooltip":``})],64)):(r(),e(u,{key:3},[n(N,{prop:`title`,label:`标题`,"min-width":`200`,"show-overflow-tooltip":``}),n(N,{prop:`source_name`,label:`采集源`,width:`120`,"show-overflow-tooltip":``}),n(N,{prop:`category_label`,label:`匹配分类`,width:`120`,"show-overflow-tooltip":``},{default:s(({row:e})=>[a(p(e.category_label||`—`),1)]),_:1}),n(N,{label:`发布时间`,width:`110`},{default:s(({row:e})=>[a(p(Q(e.published_at)),1)]),_:1})],64)),n(N,{label:`状态`,width:`88`},{default:s(({row:e})=>[e.is_duplicate?(r(),m(R,{key:0,type:`info`,size:`small`},{default:s(()=>[...l[25]||=[a(`已存在`,-1)]]),_:1})):e.status===`imported`?(r(),m(R,{key:1,type:`success`,size:`small`},{default:s(()=>[...l[26]||=[a(`已入库`,-1)]]),_:1})):(r(),m(R,{key:2,type:`warning`,size:`small`},{default:s(()=>[...l[27]||=[a(`待入库`,-1)]]),_:1}))]),_:1}),n(N,{label:`链接`,width:`64`},{default:s(({row:t})=>[t.url?(r(),e(`a`,{key:0,href:t.url,target:`_blank`,rel:`noopener`,onClick:l[14]||=te(()=>{},[`stop`])},`查看`,8,me)):i(``,!0)]),_:1})]),_:1},8,[`data`])),[[Y,z.value]])]),_:1},8,[`modelValue`])])}}}),[[`__scopeId`,`data-v-2b93f235`]]);export{D as default}; \ No newline at end of file +import{C as e,D as t,E as n,G as r,S as i,T as a,X as ee,Y as o,at as s,b as c,f as te,ht as l,m as u,ot as ne,q as d,rt as f,tn as p,x as m,y as h}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{l as g,o as _,s as v}from"./index-DTIMLswB.js";import{t as y}from"./usePageLoad-DFTLo_Lv.js";import{a as b,f as x,m as S,o as C,p as w}from"./assets-B5_Et8Pj.js";import{r as T}from"./research-directions-StGwN-O7.js";import{p as re}from"./teachers-Cve-7Sy4.js";import{a as E}from"./dict-X8lDWB9t.js";var ie={class:`list-page`},ae={key:0,class:`crawl-resolve-hint`},oe={key:1,class:`crawl-resolve-hint`},se={key:0},ce={key:1},le={key:2},ue={key:3},de={key:1,class:`result-actions`},fe={key:1,class:`teacher-batch-bar`},pe={key:2,class:`teacher-batch-bar`},me=[`href`],D=v(t({__name:`index`,setup(t){let v=_(),D=l(!1),O=l(!1),k=l(!1),A=l(null),j=l(null),M=l(null),N=null,P=l(!1),F=l(`paper`),I=l([]),L=l([]),R=l([]),z=l(!1),B=l([]),V=l({target_type:`paper`,request_url:`https://arxiv.org/`,params:{}}),H={paper:[{key:`keyword`,type:`textarea`,label:`搜索关键词(选填)`,required:!1,placeholder:`多个关键词用逗号或换行分隔,如:graph neural, AI`},{key:`max_results`,type:`number`,label:`条数上限`,default:20,min:1,max:50}],industry_news:[{key:`keyword`,type:`textarea`,label:`搜索关键词(选填)`,required:!1,placeholder:`多个关键词用空格、逗号或换行分隔,如:融资 科创板 AI`},{key:`max_pages`,type:`number`,label:`抓取页数`,default:5,min:1,max:50},{key:`max_results`,type:`number`,label:`条数上限`,default:30,min:1,max:50}]},U=l([]),W=l([]),G=l({source:``,category_id:void 0}),K=l([]),q=l([]),J=l({university_id:void 0,city:``,research_direction_ids:[]}),he=h(()=>V.value.target_type===`teacher`?R.value:F.value===`teacher_lead`?L.value:I.value),ge=h(()=>V.value.target_type===`teacher`?U.value.filter(e=>e.key!==`keyword`&&e.key!==`max_results`&&e.key!==`max_pages`):[]);function Y(e){return e===`paper`||e===`industry_news`?H[e]:[]}function X(e,t=!0){let n=Y(e);if(n.length===0)return;U.value=n;let r=t?{...V.value.params}:{};if(xe(n),t)for(let e of n)r[e.key]!==void 0&&(V.value.params[e.key]=r[e.key])}function Z(){V.value.target_type===`teacher`&&(V.value.params.keyword===void 0&&(V.value.params.keyword=``),V.value.params.max_results===void 0&&(V.value.params.max_results=200),V.value.params.max_pages===void 0&&(V.value.params.max_pages=5))}function _e(){V.value.target_type===`industry_news`&&(V.value.params.keyword===void 0&&(V.value.params.keyword=``),V.value.params.max_pages===void 0&&(V.value.params.max_pages=5),V.value.params.max_results===void 0&&(V.value.params.max_results=30))}function ve(e){(e===`paper`||e===`industry_news`)&&(X(e,!0),e===`industry_news`&&_e())}function Q(e){if(!e)return`—`;let t=e.match(/^(\d{4}-\d{2}-\d{2})/);return t?t[1]:e}function ye(e){return!!(e.lead_author_university?.trim()||e.school_name?.trim())}function be(e){return[...e].sort((e,t)=>{let n=ye(e);return n===ye(t)?(e.lead_author_name||``).localeCompare(t.lead_author_name||``,`zh-CN`):n?-1:1})}function xe(e){let t={};for(let n of e)n.type===`checkbox`?t[n.key]=Array.isArray(n.default)?[...n.default]:[]:n.type===`number`?t[n.key]=n.default??20:t[n.key]=n.default??``;V.value.params=t}function Se(e){return e===`paper`?`https://arxiv.org/`:e===`teacher`?`https://`:`https://www.pedaily.cn/all/`}function Ce(e){let t=e.trim();return t&&!/^https?:\/\//i.test(t)?`https://${t}`:t}function we(){A.value=null,P.value=!1,I.value=[],L.value=[],R.value=[],B.value=[],G.value={source:``,category_id:void 0}}function Te(){we(),F.value=`paper`,D.value=!1,k.value=!1,V.value={target_type:`paper`,request_url:Se(`paper`),params:{}},j.value=null,M.value=null,U.value=[],ve(`paper`),$()}async function $(){if(N)return N;N=(async()=>{if(!V.value.request_url){j.value=null,M.value=null;return}let e=Ce(V.value.request_url);e!==V.value.request_url&&(V.value.request_url=e);let t=V.value.target_type;(t===`paper`||t===`industry_news`)&&X(t,!0),O.value=!0;try{j.value=await w({request_url:V.value.request_url,target_type:t}),M.value=V.value.request_url,t===`teacher`?(U.value=j.value.param_schema?.fields??[],xe(U.value),Z()):X(t,!0)}catch{j.value=null,M.value=null,t===`teacher`?U.value=[]:X(t,!0)}finally{O.value=!1}})();try{await N}finally{N=null}}async function Ee(){if(!V.value.request_url.trim())return g.warning(`请填写目标地址`),!1;let e=Ce(V.value.request_url);return e!==V.value.request_url&&(V.value.request_url=e),(!j.value||M.value!==V.value.request_url)&&await $(),!!j.value}async function De(){await $()}f(()=>V.value.target_type,e=>{we(),j.value=null,M.value=null,U.value=[],V.value.request_url=Se(e),e===`teacher`?Z():(e===`paper`||e===`industry_news`)&&X(e,!1),e===`industry_news`&&Ne(),$()});async function Oe(){let[e,t]=await Promise.all([re({page:1,page_size:300}),T()]);K.value=e.items.map(e=>({id:e.id,name:e.name,city:e.city})),q.value=t.map(e=>({id:e.id,name:e.name}))}function ke(e){if(!e)return;let t=K.value.find(t=>t.id===e);t?.city&&!J.value.city&&(J.value.city=t.city||``)}function Ae(){let e=G.value.source.trim(),t=G.value.category_id;if(!(!e&&!t))return{source:e||void 0,category_dict_item_id:t}}function je(){let{university_id:e,city:t,research_direction_ids:n}=J.value,r=e!=null&&e>0,i=t.trim()!==``,a=n.length>0;if(!(!r&&!i&&!a))return{university_id:r?e:void 0,city:i?t.trim():void 0,research_direction_ids:a?n:void 0}}async function Me(){if(!await Ee()){g.warning(`无法识别该地址,请检查入库类型与 URL 是否可访问(需为 http/https 列表或详情页)`);return}D.value=!0;try{A.value=await S({target_type:V.value.target_type,request_url:V.value.request_url,params:V.value.params});let e=A.value.items_fetched??A.value.preview_count??0,t=V.value.target_type===`paper`&&(A.value.preview_teacher_lead_count??0)>0?`,另 ${A.value.preview_teacher_lead_count} 位第一作者待入库`:``;g.success(`抓取完成,共 ${e} 条待预览${t}`)}finally{D.value=!1}}async function Ne(){if(!(W.value.length>0))try{W.value=(await E(`news_category`)).items.map(e=>({id:e.id,label:e.label}))}catch{g.warning(`资讯分类加载失败`)}}async function Pe(){if(A.value?.id){z.value=!0,P.value=!0,B.value=[],F.value=V.value.target_type===`teacher`?`teacher`:`paper`;try{V.value.target_type===`industry_news`&&await Ne(),V.value.target_type===`teacher`&&await Oe();let e=A.value.id;if(V.value.target_type===`paper`){let[t,n]=await Promise.all([b(e,{item_kind:`paper`}),b(e,{item_kind:`teacher_lead`})]);I.value=t,L.value=be(n)}else V.value.target_type===`teacher`?R.value=await b(e,{item_kind:`teacher`}):I.value=await b(e)}finally{z.value=!1}}}function Fe(e){B.value=e.filter(e=>e.selectable)}f(F,()=>{B.value=[]});async function Ie(){if(!A.value?.id)return;if(B.value.length===0){g.warning(`请先勾选要入库的条目`);return}let e={item_ids:B.value.map(e=>e.id)},t=je();if(t&&(e.teacher_defaults=t),V.value.target_type===`industry_news`){let t=Ae();t&&(e.news_defaults=t)}k.value=!0;try{let t=await x(A.value.id,e),n=t.failed>0?`,失败 ${t.failed} 条`:``;g.success(`已入库 ${t.imported} 条,跳过 ${t.skipped} 条${n}`),await Pe(),A.value=await C(A.value.id)}finally{k.value=!1}}function Le(){A.value?.id&&(V.value.target_type===`paper`?v.push({path:`/papers`,query:{crawl_job_id:String(A.value.id)}}):V.value.target_type===`teacher`?v.push({path:`/teachers`}):v.push({path:`/news`,query:{crawl_job_id:String(A.value.id)}}))}let Re=()=>A.value?.status===`completed`&&(A.value.items_fetched??0)>0,ze=h(()=>{let e=B.value.length;return V.value.target_type===`industry_news`?`入库资讯(已勾选 ${e} 条)`:V.value.target_type===`teacher`||F.value===`teacher_lead`?`入库老师(已勾选 ${e} 条)`:`入库论文(已勾选 ${e} 条)`});return y(Te),(t,l)=>{let f=o(`el-radio`),h=o(`el-radio-group`),g=o(`el-form-item`),_=o(`el-input`),v=o(`el-input-number`),y=o(`el-checkbox`),b=o(`el-checkbox-group`),x=o(`el-button`),S=o(`el-form`),C=o(`el-alert`),w=o(`el-card`),T=o(`el-tab-pane`),re=o(`el-tabs`),E=o(`el-option`),M=o(`el-select`),N=o(`el-table-column`),R=o(`el-tag`),H=o(`el-table`),U=o(`el-dialog`),Y=ee(`loading`);return r(),e(`div`,ie,[l[29]||=c(`div`,{class:`page-header`},[c(`h1`,{class:`page-title`},`数据采集`)],-1),n(w,{shadow:`never`,class:`admin-list-card`},{default:s(()=>[n(S,{"label-position":`top`,class:`crawler-form`,onSubmit:te(Me,[`prevent`])},{default:s(()=>[n(g,{label:`入库类型`,required:``},{default:s(()=>[n(h,{modelValue:V.value.target_type,"onUpdate:modelValue":l[0]||=e=>V.value.target_type=e},{default:s(()=>[n(f,{label:`paper`},{default:s(()=>[...l[18]||=[a(`论文 → 论文库`,-1)]]),_:1}),n(f,{label:`industry_news`},{default:s(()=>[...l[19]||=[a(`行业资讯 → 资讯管理`,-1)]]),_:1}),n(f,{label:`teacher`},{default:s(()=>[...l[20]||=[a(`老师库 → 老师库`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),_:1}),n(g,{label:`目标地址`,required:``},{default:s(()=>[n(_,{modelValue:V.value.request_url,"onUpdate:modelValue":l[1]||=e=>V.value.request_url=e,type:`url`,placeholder:`https:// 资讯/论文列表页或单篇详情页`,onBlur:De},null,8,[`modelValue`]),O.value?(r(),e(`p`,ae,`正在识别采集源…`)):j.value?.source_name?(r(),e(`p`,oe,` 已识别采集源:`+p(j.value.source_name),1)):i(``,!0)]),_:1}),V.value.target_type===`paper`||V.value.target_type===`industry_news`?(r(),e(u,{key:0},[n(g,{label:`搜索关键词(选填)`},{default:s(()=>[n(_,{modelValue:V.value.params.keyword,"onUpdate:modelValue":l[2]||=e=>V.value.params.keyword=e,type:`textarea`,rows:2,placeholder:V.value.target_type===`paper`?`多个关键词用逗号或换行分隔,如:graph neural, AI`:`多个关键词用空格、逗号或换行分隔,如:融资 科创板 AI`},null,8,[`modelValue`,`placeholder`])]),_:1}),V.value.target_type===`industry_news`?(r(),m(g,{key:0,label:`抓取页数`},{default:s(()=>[n(v,{modelValue:V.value.params.max_pages,"onUpdate:modelValue":l[3]||=e=>V.value.params.max_pages=e,min:1,max:50},null,8,[`modelValue`])]),_:1})):i(``,!0),n(g,{label:`条数上限`},{default:s(()=>[n(v,{modelValue:V.value.params.max_results,"onUpdate:modelValue":l[4]||=e=>V.value.params.max_results=e,min:1,max:50},null,8,[`modelValue`])]),_:1})],64)):i(``,!0),V.value.target_type===`teacher`?(r(),e(u,{key:1},[n(g,{label:`搜索关键词(选填)`},{default:s(()=>[n(_,{modelValue:V.value.params.keyword,"onUpdate:modelValue":l[5]||=e=>V.value.params.keyword=e,type:`textarea`,rows:2,placeholder:`多个关键词用空格、逗号或换行分隔`},null,8,[`modelValue`])]),_:1}),n(g,{label:`抓取页数`},{default:s(()=>[n(v,{modelValue:V.value.params.max_pages,"onUpdate:modelValue":l[6]||=e=>V.value.params.max_pages=e,min:1,max:50},null,8,[`modelValue`])]),_:1}),n(g,{label:`条数上限`},{default:s(()=>[n(v,{modelValue:V.value.params.max_results,"onUpdate:modelValue":l[7]||=e=>V.value.params.max_results=e,min:1,max:500},null,8,[`modelValue`])]),_:1})],64)):i(``,!0),(r(!0),e(u,null,d(ge.value,t=>(r(),m(g,{key:t.key,label:t.label,required:t.required},{default:s(()=>[t.type===`checkbox`?(r(),m(b,{key:0,modelValue:V.value.params[t.key],"onUpdate:modelValue":e=>V.value.params[t.key]=e},{default:s(()=>[(r(!0),e(u,null,d(t.options,e=>(r(),m(y,{key:e,value:e},{default:s(()=>[a(p(e),1)]),_:2},1032,[`value`]))),128))]),_:2},1032,[`modelValue`,`onUpdate:modelValue`])):t.type===`number`?(r(),m(v,{key:1,modelValue:V.value.params[t.key],"onUpdate:modelValue":e=>V.value.params[t.key]=e,min:t.min??1,max:t.max??50},null,8,[`modelValue`,`onUpdate:modelValue`,`min`,`max`])):t.type===`textarea`?(r(),m(_,{key:2,modelValue:V.value.params[t.key],"onUpdate:modelValue":e=>V.value.params[t.key]=e,type:`textarea`,rows:3,placeholder:t.placeholder},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`])):(r(),m(_,{key:3,modelValue:V.value.params[t.key],"onUpdate:modelValue":e=>V.value.params[t.key]=e,placeholder:t.placeholder},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]))]),_:2},1032,[`label`,`required`]))),128)),n(x,{type:`primary`,"native-type":`submit`,loading:D.value},{default:s(()=>[...l[21]||=[a(` 手动抓取 `,-1)]]),_:1},8,[`loading`])]),_:1}),A.value?(r(),m(C,{key:0,class:`result-alert`,type:`success`,closable:!1,"show-icon":``},{default:s(()=>[c(`p`,null,`地址:`+p(A.value.request_url||A.value.platform_url),1),A.value.source_name?(r(),e(`p`,se,`采集源:`+p(A.value.source_name),1)):i(``,!0),c(`p`,null,`状态:`+p(A.value.status===`completed`?`已完成`:A.value.status),1),A.value.result_summary?(r(),e(`p`,ce,p(A.value.result_summary),1)):i(``,!0),V.value.target_type===`paper`&&A.value.preview_teacher_lead_count?(r(),e(`p`,le,` 第一作者待入库:`+p(A.value.preview_teacher_lead_count)+` 人 `,1)):i(``,!0),A.value.items_imported?(r(),e(`p`,ue,`已入库 `+p(A.value.items_imported)+` 条`,1)):i(``,!0)]),_:1})):i(``,!0),A.value?(r(),e(`div`,de,[Re()?(r(),m(x,{key:0,type:`primary`,onClick:Pe},{default:s(()=>[a(` 查看抓取内容(`+p(A.value.items_fetched)+` 条) `,1)]),_:1})):i(``,!0),n(x,{onClick:Le},{default:s(()=>[...l[22]||=[a(`在库中查看已入库`,-1)]]),_:1})])):i(``,!0)]),_:1}),n(U,{modelValue:P.value,"onUpdate:modelValue":l[16]||=e=>P.value=e,title:`本次抓取结果(勾选后入库)`,width:`960px`,"destroy-on-close":``,onClosed:l[17]||=e=>B.value=[]},{footer:s(()=>[n(x,{onClick:l[15]||=e=>P.value=!1},{default:s(()=>[...l[28]||=[a(`关闭`,-1)]]),_:1}),n(x,{type:`primary`,loading:k.value,onClick:Ie},{default:s(()=>[a(p(ze.value),1)]),_:1},8,[`loading`])]),default:s(()=>[V.value.target_type===`paper`?(r(),m(re,{key:0,modelValue:F.value,"onUpdate:modelValue":l[8]||=e=>F.value=e,class:`preview-tabs`},{default:s(()=>[n(T,{label:`论文(${I.value.length})`,name:`paper`},null,8,[`label`]),n(T,{label:`入库老师(${L.value.length})`,name:`teacher_lead`},null,8,[`label`])]),_:1},8,[`modelValue`])):i(``,!0),V.value.target_type===`industry_news`?(r(),e(`div`,fe,[n(_,{modelValue:G.value.source,"onUpdate:modelValue":l[9]||=e=>G.value.source=e,placeholder:`批量来源(选填)`,clearable:``,style:{width:`200px`}},null,8,[`modelValue`]),n(M,{modelValue:G.value.category_id,"onUpdate:modelValue":l[10]||=e=>G.value.category_id=e,placeholder:`批量资讯分类(选填)`,clearable:``,filterable:``,style:{width:`200px`}},{default:s(()=>[(r(!0),e(u,null,d(W.value,e=>(r(),m(E,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),l[23]||=c(`span`,{class:`batch-hint`},`选填;不填则使用每条抓取到的来源与自动匹配分类`,-1)])):i(``,!0),V.value.target_type===`teacher`?(r(),e(`div`,pe,[n(M,{modelValue:J.value.university_id,"onUpdate:modelValue":l[11]||=e=>J.value.university_id=e,filterable:``,placeholder:`批量高校(选填)`,clearable:``,style:{width:`200px`},onChange:ke},{default:s(()=>[(r(!0),e(u,null,d(K.value,e=>(r(),m(E,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),n(_,{modelValue:J.value.city,"onUpdate:modelValue":l[12]||=e=>J.value.city=e,placeholder:`批量城市(选填)`,clearable:``,style:{width:`140px`}},null,8,[`modelValue`]),n(M,{modelValue:J.value.research_direction_ids,"onUpdate:modelValue":l[13]||=e=>J.value.research_direction_ids=e,multiple:``,filterable:``,"collapse-tags":``,placeholder:`研究方向(可选)`,style:{width:`220px`}},{default:s(()=>[(r(!0),e(u,null,d(q.value,e=>(r(),m(E,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),l[24]||=c(`span`,{class:`batch-hint`},`选填;不填则使用每条抓取到的学校/机构信息`,-1)])):i(``,!0),ne((r(),m(H,{data:he.value,"row-key":`id`,size:`small`,onSelectionChange:Fe},{default:s(()=>[n(N,{type:`selection`,width:`48`,selectable:e=>!!e.selectable},null,8,[`selectable`]),V.value.target_type===`paper`&&F.value===`paper`?(r(),e(u,{key:0},[n(N,{prop:`title`,label:`论文标题`,"min-width":`200`,"show-overflow-tooltip":``}),n(N,{prop:`authors`,label:`作者`,width:`120`,"show-overflow-tooltip":``}),n(N,{label:`发表日期`,width:`110`},{default:s(({row:e})=>[a(p(Q(e.published_at)),1)]),_:1}),n(N,{prop:`school_name`,label:`学校`,width:`120`,"show-overflow-tooltip":``})],64)):V.value.target_type===`paper`&&F.value===`teacher_lead`?(r(),e(u,{key:1},[n(N,{prop:`lead_author_name`,label:`姓名`,width:`100`}),n(N,{prop:`lead_author_email`,label:`邮箱`,width:`160`,"show-overflow-tooltip":``}),n(N,{prop:`lead_author_university`,label:`学校`,width:`160`,"show-overflow-tooltip":``},{default:s(({row:e})=>[a(p(e.lead_author_university||e.school_name||`—`),1)]),_:1}),n(N,{prop:`paper_title`,label:`来源论文`,"min-width":`200`,"show-overflow-tooltip":``})],64)):V.value.target_type===`teacher`?(r(),e(u,{key:2},[n(N,{prop:`title`,label:`姓名`,width:`96`}),n(N,{label:`职称`,width:`88`,"show-overflow-tooltip":``},{default:s(({row:e})=>[a(p(e.lead_author_academic_title||`—`),1)]),_:1}),n(N,{prop:`lead_author_university`,label:`高校`,width:`140`,"show-overflow-tooltip":``},{default:s(({row:e})=>[a(p(e.lead_author_university||e.school_name||`—`),1)]),_:1}),n(N,{prop:`lead_author_email`,label:`邮箱`,width:`150`,"show-overflow-tooltip":``}),n(N,{prop:`summary`,label:`简介`,"min-width":`160`,"show-overflow-tooltip":``})],64)):(r(),e(u,{key:3},[n(N,{prop:`title`,label:`标题`,"min-width":`200`,"show-overflow-tooltip":``}),n(N,{prop:`source_name`,label:`采集源`,width:`120`,"show-overflow-tooltip":``}),n(N,{prop:`category_label`,label:`匹配分类`,width:`120`,"show-overflow-tooltip":``},{default:s(({row:e})=>[a(p(e.category_label||`—`),1)]),_:1}),n(N,{label:`发布时间`,width:`110`},{default:s(({row:e})=>[a(p(Q(e.published_at)),1)]),_:1})],64)),n(N,{label:`状态`,width:`88`},{default:s(({row:e})=>[e.is_duplicate?(r(),m(R,{key:0,type:`info`,size:`small`},{default:s(()=>[...l[25]||=[a(`已存在`,-1)]]),_:1})):e.status===`imported`?(r(),m(R,{key:1,type:`success`,size:`small`},{default:s(()=>[...l[26]||=[a(`已入库`,-1)]]),_:1})):(r(),m(R,{key:2,type:`warning`,size:`small`},{default:s(()=>[...l[27]||=[a(`待入库`,-1)]]),_:1}))]),_:1}),n(N,{label:`链接`,width:`64`},{default:s(({row:t})=>[t.url?(r(),e(`a`,{key:0,href:t.url,target:`_blank`,rel:`noopener`,onClick:l[14]||=te(()=>{},[`stop`])},`查看`,8,me)):i(``,!0)]),_:1})]),_:1},8,[`data`])),[[Y,z.value]])]),_:1},8,[`modelValue`])])}}}),[[`__scopeId`,`data-v-2b93f235`]]);export{D as default}; \ No newline at end of file diff --git a/public/admin/assets/csv-export-Dog5TZxt.js b/public/admin/assets/csv-export-DYWqXZBS.js similarity index 99% rename from public/admin/assets/csv-export-Dog5TZxt.js rename to public/admin/assets/csv-export-DYWqXZBS.js index 01f3d3f..e16ae15 100644 --- a/public/admin/assets/csv-export-Dog5TZxt.js +++ b/public/admin/assets/csv-export-DYWqXZBS.js @@ -1,4 +1,4 @@ -import{a as e,t}from"./rolldown-runtime-BYbx6iT9.js";import{C as n,D as r,E as i,G as a,S as o,T as s,Y as c,at as l,b as u,ht as d,rt as f,tn as p,x as m,z as h}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{i as g,r as _,s as v}from"./index-jb05DpEw.js";async function y(e){try{let{data:t}=await _.get(`/admin/v1/signin-qrcode`,{params:{code:e},responseType:`blob`});return t}catch(e){throw g.isAxiosError(e)&&e.response?.data instanceof Blob?Error(await b(e.response.data)):e}}async function b(e){try{let t=await e.text();return JSON.parse(t).message||`生成小程序码失败`}catch{return`生成小程序码失败`}}var x=t(((e,t)=>{t.exports=function(){return typeof Promise==`function`&&Promise.prototype&&Promise.prototype.then}})),S=t((e=>{var t,n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(e){if(!e)throw Error(`"version" cannot be null or undefined`);if(e<1||e>40)throw Error(`"version" should be in range from 1 to 40`);return e*4+17},e.getSymbolTotalCodewords=function(e){return n[e]},e.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t},e.setToSJISFunction=function(e){if(typeof e!=`function`)throw Error(`"toSJISFunc" is not a valid function.`);t=e},e.isKanjiModeEnabled=function(){return t!==void 0},e.toSJIS=function(e){return t(e)}})),C=t((e=>{e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`l`:case`low`:return e.L;case`m`:case`medium`:return e.M;case`q`:case`quartile`:return e.Q;case`h`:case`high`:return e.H;default:throw Error(`Unknown EC Level: `+t)}}e.isValid=function(e){return e&&e.bit!==void 0&&e.bit>=0&&e.bit<4},e.from=function(n,r){if(e.isValid(n))return n;try{return t(n)}catch{return r}}})),w=t(((e,t)=>{function n(){this.buffer=[],this.length=0}n.prototype={get:function(e){let t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(let n=0;n>>t-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},t.exports=n})),T=t(((e,t)=>{function n(e){if(!e||e<1)throw Error(`BitMatrix size must be defined and greater than 0`);this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}n.prototype.set=function(e,t,n,r){let i=e*this.size+t;this.data[i]=n,r&&(this.reservedBit[i]=!0)},n.prototype.get=function(e,t){return this.data[e*this.size+t]},n.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},n.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},t.exports=n})),E=t((e=>{var t=S().getSymbolSize;e.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=t(e),i=r===145?26:Math.ceil((r-13)/(2*n-2))*2,a=[r-7];for(let e=1;e{var t=S().getSymbolSize,n=7;e.getPositions=function(e){let r=t(e);return[[0,0],[r-n,0],[0,r-n]]}})),O=t((e=>{e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var t={N1:3,N2:3,N3:40,N4:10};e.isValid=function(e){return e!=null&&e!==``&&!isNaN(e)&&e>=0&&e<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(e){let n=e.size,r=0,i=0,a=0,o=null,s=null;for(let c=0;c=5&&(r+=t.N1+(i-5)),o=n,i=1),n=e.get(l,c),n===s?a++:(a>=5&&(r+=t.N1+(a-5)),s=n,a=1)}i>=5&&(r+=t.N1+(i-5)),a>=5&&(r+=t.N1+(a-5))}return r},e.getPenaltyN2=function(e){let n=e.size,r=0;for(let t=0;t=10&&(i===1488||i===93)&&r++,a=a<<1&2047|e.get(o,t),o>=10&&(a===1488||a===93)&&r++}return r*t.N3},e.getPenaltyN4=function(e){let n=0,r=e.data.length;for(let t=0;t{var t=C(),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(e,r){switch(r){case t.L:return n[(e-1)*4+0];case t.M:return n[(e-1)*4+1];case t.Q:return n[(e-1)*4+2];case t.H:return n[(e-1)*4+3];default:return}},e.getTotalCodewordsCount=function(e,n){switch(n){case t.L:return r[(e-1)*4+0];case t.M:return r[(e-1)*4+1];case t.Q:return r[(e-1)*4+2];case t.H:return r[(e-1)*4+3];default:return}}})),A=t((e=>{var t=new Uint8Array(512),n=new Uint8Array(256);(function(){let e=1;for(let r=0;r<255;r++)t[r]=e,n[e]=r,e<<=1,e&256&&(e^=285);for(let e=255;e<512;e++)t[e]=t[e-255]})(),e.log=function(e){if(e<1)throw Error(`log(`+e+`)`);return n[e]},e.exp=function(e){return t[e]},e.mul=function(e,r){return e===0||r===0?0:t[n[e]+n[r]]}})),j=t((e=>{var t=A();e.mul=function(e,n){let r=new Uint8Array(e.length+n.length-1);for(let i=0;i=0;){let e=r[0];for(let i=0;i{var n=j();function r(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}r.prototype.initialize=function(e){this.degree=e,this.genPoly=n.generateECPolynomial(this.degree)},r.prototype.encode=function(e){if(!this.genPoly)throw Error(`Encoder not initialized`);let t=new Uint8Array(e.length+this.degree);t.set(e);let r=n.mod(t,this.genPoly),i=this.degree-r.length;if(i>0){let e=new Uint8Array(this.degree);return e.set(r,i),e}return r},t.exports=r})),N=t((e=>{e.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}})),P=t((e=>{var t=`[0-9]+`,n=`[A-Z $%*+\\-./:]+`,r=`(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+`;r=r.replace(/u/g,`\\u`);var i=`(?:(?![A-Z0-9 $%*+\\-./:]|`+r+`)(?:.|[\r +import{a as e,t}from"./rolldown-runtime-BYbx6iT9.js";import{C as n,D as r,E as i,G as a,S as o,T as s,Y as c,at as l,b as u,ht as d,rt as f,tn as p,x as m,z as h}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{i as g,r as _,s as v}from"./index-DTIMLswB.js";async function y(e){try{let{data:t}=await _.get(`/admin/v1/signin-qrcode`,{params:{code:e},responseType:`blob`});return t}catch(e){throw g.isAxiosError(e)&&e.response?.data instanceof Blob?Error(await b(e.response.data)):e}}async function b(e){try{let t=await e.text();return JSON.parse(t).message||`生成小程序码失败`}catch{return`生成小程序码失败`}}var x=t(((e,t)=>{t.exports=function(){return typeof Promise==`function`&&Promise.prototype&&Promise.prototype.then}})),S=t((e=>{var t,n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(e){if(!e)throw Error(`"version" cannot be null or undefined`);if(e<1||e>40)throw Error(`"version" should be in range from 1 to 40`);return e*4+17},e.getSymbolTotalCodewords=function(e){return n[e]},e.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t},e.setToSJISFunction=function(e){if(typeof e!=`function`)throw Error(`"toSJISFunc" is not a valid function.`);t=e},e.isKanjiModeEnabled=function(){return t!==void 0},e.toSJIS=function(e){return t(e)}})),C=t((e=>{e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`l`:case`low`:return e.L;case`m`:case`medium`:return e.M;case`q`:case`quartile`:return e.Q;case`h`:case`high`:return e.H;default:throw Error(`Unknown EC Level: `+t)}}e.isValid=function(e){return e&&e.bit!==void 0&&e.bit>=0&&e.bit<4},e.from=function(n,r){if(e.isValid(n))return n;try{return t(n)}catch{return r}}})),w=t(((e,t)=>{function n(){this.buffer=[],this.length=0}n.prototype={get:function(e){let t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(let n=0;n>>t-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},t.exports=n})),T=t(((e,t)=>{function n(e){if(!e||e<1)throw Error(`BitMatrix size must be defined and greater than 0`);this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}n.prototype.set=function(e,t,n,r){let i=e*this.size+t;this.data[i]=n,r&&(this.reservedBit[i]=!0)},n.prototype.get=function(e,t){return this.data[e*this.size+t]},n.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},n.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},t.exports=n})),E=t((e=>{var t=S().getSymbolSize;e.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=t(e),i=r===145?26:Math.ceil((r-13)/(2*n-2))*2,a=[r-7];for(let e=1;e{var t=S().getSymbolSize,n=7;e.getPositions=function(e){let r=t(e);return[[0,0],[r-n,0],[0,r-n]]}})),O=t((e=>{e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var t={N1:3,N2:3,N3:40,N4:10};e.isValid=function(e){return e!=null&&e!==``&&!isNaN(e)&&e>=0&&e<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(e){let n=e.size,r=0,i=0,a=0,o=null,s=null;for(let c=0;c=5&&(r+=t.N1+(i-5)),o=n,i=1),n=e.get(l,c),n===s?a++:(a>=5&&(r+=t.N1+(a-5)),s=n,a=1)}i>=5&&(r+=t.N1+(i-5)),a>=5&&(r+=t.N1+(a-5))}return r},e.getPenaltyN2=function(e){let n=e.size,r=0;for(let t=0;t=10&&(i===1488||i===93)&&r++,a=a<<1&2047|e.get(o,t),o>=10&&(a===1488||a===93)&&r++}return r*t.N3},e.getPenaltyN4=function(e){let n=0,r=e.data.length;for(let t=0;t{var t=C(),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(e,r){switch(r){case t.L:return n[(e-1)*4+0];case t.M:return n[(e-1)*4+1];case t.Q:return n[(e-1)*4+2];case t.H:return n[(e-1)*4+3];default:return}},e.getTotalCodewordsCount=function(e,n){switch(n){case t.L:return r[(e-1)*4+0];case t.M:return r[(e-1)*4+1];case t.Q:return r[(e-1)*4+2];case t.H:return r[(e-1)*4+3];default:return}}})),A=t((e=>{var t=new Uint8Array(512),n=new Uint8Array(256);(function(){let e=1;for(let r=0;r<255;r++)t[r]=e,n[e]=r,e<<=1,e&256&&(e^=285);for(let e=255;e<512;e++)t[e]=t[e-255]})(),e.log=function(e){if(e<1)throw Error(`log(`+e+`)`);return n[e]},e.exp=function(e){return t[e]},e.mul=function(e,r){return e===0||r===0?0:t[n[e]+n[r]]}})),j=t((e=>{var t=A();e.mul=function(e,n){let r=new Uint8Array(e.length+n.length-1);for(let i=0;i=0;){let e=r[0];for(let i=0;i{var n=j();function r(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}r.prototype.initialize=function(e){this.degree=e,this.genPoly=n.generateECPolynomial(this.degree)},r.prototype.encode=function(e){if(!this.genPoly)throw Error(`Encoder not initialized`);let t=new Uint8Array(e.length+this.degree);t.set(e);let r=n.mod(t,this.genPoly),i=this.degree-r.length;if(i>0){let e=new Uint8Array(this.degree);return e.set(r,i),e}return r},t.exports=r})),N=t((e=>{e.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}})),P=t((e=>{var t=`[0-9]+`,n=`[A-Z $%*+\\-./:]+`,r=`(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+`;r=r.replace(/u/g,`\\u`);var i=`(?:(?![A-Z0-9 $%*+\\-./:]|`+r+`)(?:.|[\r ]))+`;e.KANJI=new RegExp(r,`g`),e.BYTE_KANJI=RegExp(`[^A-Z0-9 $%*+\\-./:]+`,`g`),e.BYTE=new RegExp(i,`g`),e.NUMERIC=new RegExp(t,`g`),e.ALPHANUMERIC=new RegExp(n,`g`);var a=RegExp(`^`+r+`$`),o=RegExp(`^`+t+`$`),s=RegExp(`^[A-Z0-9 $%*+\\-./:]+$`);e.testKanji=function(e){return a.test(e)},e.testNumeric=function(e){return o.test(e)},e.testAlphanumeric=function(e){return s.test(e)}})),F=t((e=>{var t=N(),n=P();e.NUMERIC={id:`Numeric`,bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:`Alphanumeric`,bit:2,ccBits:[9,11,13]},e.BYTE={id:`Byte`,bit:4,ccBits:[8,16,16]},e.KANJI={id:`Kanji`,bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(e,n){if(!e.ccBits)throw Error(`Invalid mode: `+e);if(!t.isValid(n))throw Error(`Invalid version: `+n);return n>=1&&n<10?e.ccBits[0]:n<27?e.ccBits[1]:e.ccBits[2]},e.getBestModeForData=function(t){return n.testNumeric(t)?e.NUMERIC:n.testAlphanumeric(t)?e.ALPHANUMERIC:n.testKanji(t)?e.KANJI:e.BYTE},e.toString=function(e){if(e&&e.id)return e.id;throw Error(`Invalid mode`)},e.isValid=function(e){return e&&e.bit&&e.ccBits};function r(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`numeric`:return e.NUMERIC;case`alphanumeric`:return e.ALPHANUMERIC;case`kanji`:return e.KANJI;case`byte`:return e.BYTE;default:throw Error(`Unknown mode: `+t)}}e.from=function(t,n){if(e.isValid(t))return t;try{return r(t)}catch{return n}}})),I=t((e=>{var t=S(),n=k(),r=C(),i=F(),a=N(),o=7973,s=t.getBCHDigit(o);function c(t,n,r){for(let i=1;i<=40;i++)if(n<=e.getCapacity(i,r,t))return i}function l(e,t){return i.getCharCountIndicator(e,t)+4}function u(e,t){let n=0;return e.forEach(function(e){let r=l(e.mode,t);n+=r+e.getBitsLength()}),n}function d(t,n){for(let r=1;r<=40;r++)if(u(t,r)<=e.getCapacity(r,n,i.MIXED))return r}e.from=function(e,t){return a.isValid(e)?parseInt(e,10):t},e.getCapacity=function(e,r,o){if(!a.isValid(e))throw Error(`Invalid QR Code version`);o===void 0&&(o=i.BYTE);let s=(t.getSymbolTotalCodewords(e)-n.getTotalCodewordsCount(e,r))*8;if(o===i.MIXED)return s;let c=s-l(o,e);switch(o){case i.NUMERIC:return Math.floor(c/10*3);case i.ALPHANUMERIC:return Math.floor(c/11*2);case i.KANJI:return Math.floor(c/13);case i.BYTE:default:return Math.floor(c/8)}},e.getBestVersionForData=function(e,t){let n,i=r.from(t,r.M);if(Array.isArray(e)){if(e.length>1)return d(e,i);if(e.length===0)return 1;n=e[0]}else n=e;return c(n.mode,n.getLength(),i)},e.getEncodedBits=function(e){if(!a.isValid(e)||e<7)throw Error(`Invalid QR Code version`);let n=e<<12;for(;t.getBCHDigit(n)-s>=0;)n^=o<{var t=S(),n=1335,r=21522,i=t.getBCHDigit(n);e.getEncodedBits=function(e,a){let o=e.bit<<3|a,s=o<<10;for(;t.getBCHDigit(s)-i>=0;)s^=n<{var n=F();function r(e){this.mode=n.NUMERIC,this.data=e.toString()}r.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){let t,n,r;for(t=0;t+3<=this.data.length;t+=3)n=this.data.substr(t,3),r=parseInt(n,10),e.put(r,10);let i=this.data.length-t;i>0&&(n=this.data.substr(t),r=parseInt(n,10),e.put(r,i*3+1))},t.exports=r})),L=t(((e,t)=>{var n=F(),r=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`.split(``);function i(e){this.mode=n.ALPHANUMERIC,this.data=e}i.getBitsLength=function(e){return 11*Math.floor(e/2)+e%2*6},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let n=r.indexOf(this.data[t])*45;n+=r.indexOf(this.data[t+1]),e.put(n,11)}this.data.length%2&&e.put(r.indexOf(this.data[t]),6)},t.exports=i})),R=t(((e,t)=>{var n=F();function r(e){this.mode=n.BYTE,typeof e==`string`?this.data=new TextEncoder().encode(e):this.data=new Uint8Array(e)}r.getBitsLength=function(e){return e*8},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){for(let t=0,n=this.data.length;t{var n=F(),r=S();function i(e){this.mode=n.KANJI,this.data=e}i.getBitsLength=function(e){return e*13},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw Error(`Invalid SJIS character: `+this.data[t]+` Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),e.put(n,13)}},t.exports=i})),B=t(((e,t)=>{var n={single_source_shortest_paths:function(e,t,r){var i={},a={};a[t]=0;var o=n.PriorityQueue.make();o.push(t,0);for(var s,c,l,u,d,f,p,m,h;!o.empty();)for(l in s=o.pop(),c=s.value,u=s.cost,d=e[c]||{},d)d.hasOwnProperty(l)&&(f=d[l],p=u+f,m=a[l],h=a[l]===void 0,(h||m>p)&&(a[l]=p,o.push(l,p),i[l]=c));if(r!==void 0&&a[r]===void 0){var g=[`Could not find a path from `,t,` to `,r,`.`].join(``);throw Error(g)}return i},extract_shortest_path_from_predecessor_list:function(e,t){for(var n=[],r=t;r;)n.push(r),e[r],r=e[r];return n.reverse(),n},find_path:function(e,t,r){var i=n.single_source_shortest_paths(e,t,r);return n.extract_shortest_path_from_predecessor_list(i,r)},PriorityQueue:{make:function(e){var t=n.PriorityQueue,r={},i;for(i in e||={},t)t.hasOwnProperty(i)&&(r[i]=t[i]);return r.queue=[],r.sorter=e.sorter||t.default_sorter,r},default_sorter:function(e,t){return e.cost-t.cost},push:function(e,t){var n={value:e,cost:t};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};t!==void 0&&(t.exports=n)})),V=t((e=>{var t=F(),n=te(),r=L(),i=R(),a=z(),o=P(),s=S(),c=B();function l(e){return unescape(encodeURIComponent(e)).length}function u(e,t,n){let r=[],i;for(;(i=e.exec(n))!==null;)r.push({data:i[0],index:i.index,mode:t,length:i[0].length});return r}function d(e){let n=u(o.NUMERIC,t.NUMERIC,e),r=u(o.ALPHANUMERIC,t.ALPHANUMERIC,e),i,a;return s.isKanjiModeEnabled()?(i=u(o.BYTE,t.BYTE,e),a=u(o.KANJI,t.KANJI,e)):(i=u(o.BYTE_KANJI,t.BYTE,e),a=[]),n.concat(r,i,a).sort(function(e,t){return e.index-t.index}).map(function(e){return{data:e.data,mode:e.mode,length:e.length}})}function f(e,o){switch(o){case t.NUMERIC:return n.getBitsLength(e);case t.ALPHANUMERIC:return r.getBitsLength(e);case t.KANJI:return a.getBitsLength(e);case t.BYTE:return i.getBitsLength(e)}}function p(e){return e.reduce(function(e,t){let n=e.length-1>=0?e[e.length-1]:null;return n&&n.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}function m(e){let n=[];for(let r=0;r{var t=S(),n=C(),r=w(),i=T(),a=E(),o=D(),s=O(),c=k(),l=M(),u=I(),d=ee(),f=F(),p=V();function m(e,t){let n=e.size,r=o.getPositions(t);for(let t=0;t=0&&t<=6&&(r===0||r===6)||r>=0&&r<=6&&(t===0||t===6)||t>=2&&t<=4&&r>=2&&r<=4?e.set(i+t,a+r,!0,!0):e.set(i+t,a+r,!1,!0))}}function h(e){let t=e.size;for(let n=8;n>t&1)==1,e.set(i,a,o,!0),e.set(a,i,o,!0)}function v(e,t,n){let r=e.size,i=d.getEncodedBits(t,n),a,o;for(a=0;a<15;a++)o=(i>>a&1)==1,a<6?e.set(a,8,o,!0):a<8?e.set(a+1,8,o,!0):e.set(r-15+a,8,o,!0),a<8?e.set(8,r-a-1,o,!0):a<9?e.set(8,15-a-1+1,o,!0):e.set(8,15-a-1,o,!0);e.set(r-8,8,1,!0)}function y(e,t){let n=e.size,r=-1,i=n-1,a=7,o=0;for(let s=n-1;s>0;s-=2)for(s===6&&s--;;){for(let n=0;n<2;n++)if(!e.isReserved(i,s-n)){let r=!1;o>>a&1)==1),e.set(i,s-n,r),a--,a===-1&&(o++,a=7)}if(i+=r,i<0||n<=i){i-=r,r=-r;break}}}function b(e,n,i){let a=new r;i.forEach(function(t){a.put(t.mode.bit,4),a.put(t.getLength(),f.getCharCountIndicator(t.mode,e)),t.write(a)});let o=(t.getSymbolTotalCodewords(e)-c.getTotalCodewordsCount(e,n))*8;for(a.getLengthInBits()+4<=o&&a.put(0,4);a.getLengthInBits()%8!=0;)a.putBit(0);let s=(o-a.getLengthInBits())/8;for(let e=0;ee?.trim()).filter(Boolean);return t.length?t.join(`、`):`—`}function k(e){return e.news?.title?e.news.title:e.news_link_url?e.news_link_url:`—`}function A(e){return e.starts_at?e.starts_at.replace(`T`,` `).slice(0,16):`—`}function j(e){return e.ends_at?e.ends_at.replace(`T`,` `).slice(0,16):`—`}async function M(){let e=o.event;if(e){v.value=!0,S.value=null,C.value=null,w.value=[];try{e.type===`course`?S.value=await L(e.entity_id):(C.value=await F(e.entity_id),w.value=await I(e.entity_id))}catch{D.error(`加载详情失败`),a.value=!1}finally{v.value=!1}}}y(()=>[a.value,o.event?.entity_id,o.event?.type,o.event?.start_date],([e])=>{e&&o.event&&M()});let N=()=>o.event?o.event.type===`course`?`课程详情`:`活动详情`:`详情`;return(o,m)=>{let h=d(`el-descriptions-item`),y=d(`el-descriptions`),D=d(`el-table-column`),M=d(`el-table`),P=d(`el-empty`),F=d(`el-button`),I=d(`el-dialog`),L=l(`loading`);return i(),x(I,{modelValue:a.value,"onUpdate:modelValue":m[1]||=e=>a.value=e,title:N(),width:`960px`,top:`5vh`,"destroy-on-close":``,"append-to-body":``,class:`calendar-event-detail-dialog`},{footer:f(()=>[r(F,{onClick:m[0]||=e=>a.value=!1},{default:f(()=>[...m[9]||=[c(`关闭`,-1)]]),_:1})]),default:f(()=>[_((i(),e(`div`,te,[n.event&&S.value&&n.event.type===`course`?(i(),e(g,{key:0},[r(y,{column:3,border:``,size:`small`,class:`detail-desc`},{default:f(()=>[r(h,{label:`课程体系`},{default:f(()=>[c(b(S.value.course_system_item?.label||`—`),1)]),_:1}),r(h,{label:`课程名称`,span:2},{default:f(()=>[c(b(S.value.title),1)]),_:1}),r(h,{label:`课程类型`},{default:f(()=>[c(b(S.value.course_type_item?.label||`—`),1)]),_:1}),r(h,{label:`开课人数`},{default:f(()=>[c(b(T(S.value.capacity)),1)]),_:1}),r(h,{label:`开课日期`},{default:f(()=>[c(b(t(z)(S.value.teach_start_date,S.value.teach_end_date)),1)]),_:1}),r(h,{label:`开课时间`},{default:f(()=>[c(b(E(S.value.teach_start_time,S.value.teach_end_time)),1)]),_:1}),r(h,{label:`报名起止`,span:2},{default:f(()=>[c(b(t(z)(S.value.signup_start_date,S.value.signup_end_date)),1)]),_:1}),r(h,{label:`地点`},{default:f(()=>[c(b(T(S.value.location)),1)]),_:1}),r(h,{label:`关联资讯`,span:2},{default:f(()=>[c(b(k(S.value)),1)]),_:1}),r(h,{label:`课程状态`},{default:f(()=>[p(`span`,{class:u([`status-badge`,t(B)(S.value.progress_status)])},b(t(R)(S.value.progress_status)),3)]),_:1}),r(h,{label:`发布状态`},{default:f(()=>[p(`span`,{class:u([`status-badge`,t(V)(S.value.published)])},b(S.value.published===1?`已发布`:`未发布`),3)]),_:1})]),_:1}),p(`div`,ne,[m[2]||=p(`div`,{class:`detail-section-label`},`课程封面(690×400)`,-1),S.value.cover?.url?(i(),e(`div`,re,[p(`img`,{src:S.value.cover.url,alt:`课程封面`},null,8,H)])):(i(),e(`div`,U,`—`))]),p(`div`,W,[m[3]||=p(`div`,{class:`detail-section-label`},`课程宣传页(宽 750)`,-1),S.value.promo?.url?(i(),e(`div`,G,[p(`img`,{src:S.value.promo.url,alt:`课程宣传页`},null,8,K)])):(i(),e(`div`,q,`—`))]),p(`div`,J,[m[4]||=p(`div`,{class:`detail-section-label`},`招生对象`,-1),p(`div`,Y,b(O(S.value.recruit_targets)),1)]),p(`div`,X,[m[5]||=p(`div`,{class:`detail-section-label`},`主讲师资`,-1),S.value.main_speakers?.length?(i(),x(M,{key:0,data:S.value.main_speakers,size:`small`,border:``,class:`detail-sub-table`},{default:f(()=>[r(D,{type:`index`,label:`序号`,width:`56`,index:e=>e+1},null,8,[`index`]),r(D,{prop:`name`,label:`姓名`,"min-width":`100`}),r(D,{prop:`title`,label:`职称`,"min-width":`100`},{default:f(({row:e})=>[c(b(T(e.title)),1)]),_:1}),r(D,{prop:`university`,label:`高校`,"min-width":`120`},{default:f(({row:e})=>[c(b(T(e.university)),1)]),_:1}),r(D,{prop:`remark`,label:`备注`,"min-width":`140`,"show-overflow-tooltip":``},{default:f(({row:e})=>[c(b(T(e.remark)),1)]),_:1})]),_:1},8,[`data`])):(i(),e(`div`,ie,`—`))]),p(`div`,ae,[m[6]||=p(`div`,{class:`detail-section-label`},`课程简介`,-1),S.value.intro_html?(i(),e(`div`,{key:0,class:`detail-intro-html`,innerHTML:S.value.intro_html},null,8,oe)):(i(),e(`div`,se,`—`))])],64)):n.event&&C.value&&n.event.type===`activity`?(i(),e(g,{key:1},[r(y,{column:3,border:``,size:`small`,class:`detail-desc`},{default:f(()=>[r(h,{label:`活动名称`,span:2},{default:f(()=>[c(b(C.value.title),1)]),_:1}),r(h,{label:`活动类型`},{default:f(()=>[c(b(C.value.activity_type_item?.label||`—`),1)]),_:1}),r(h,{label:`场次`},{default:f(()=>[c(b(C.value.sessions_count??w.value.length),1)]),_:1}),r(h,{label:`活动日期`,span:2},{default:f(()=>[c(b(t(z)(C.value.event_start_date,C.value.event_end_date)),1)]),_:1}),r(h,{label:`报名起止日期`,span:2},{default:f(()=>[c(b(t(z)(C.value.signup_start_date,C.value.signup_end_date)),1)]),_:1}),r(h,{label:`活动地点`,span:2},{default:f(()=>[c(b(T(C.value.location)),1)]),_:1}),r(h,{label:`活动状态`},{default:f(()=>[p(`span`,{class:u([`status-badge`,t(B)(C.value.progress_status)])},b(t(R)(C.value.progress_status)),3)]),_:1}),r(h,{label:`发布状态`},{default:f(()=>[p(`span`,{class:u([`status-badge`,t(V)(C.value.published)])},b(C.value.published===1?`已发布`:`未发布`),3)]),_:1})]),_:1}),p(`div`,ce,[m[7]||=p(`div`,{class:`detail-section-label`},`活动场次`,-1),w.value.length?(i(),x(M,{key:0,data:w.value,size:`small`,border:``,class:`detail-sub-table`},{default:f(()=>[r(D,{label:`场次标题`,"min-width":`120`},{default:f(({row:e})=>[c(b(T(e.title)),1)]),_:1}),r(D,{label:`开始时间`,"min-width":`160`},{default:f(({row:e})=>[c(b(A(e)),1)]),_:1}),r(D,{label:`结束时间`,"min-width":`160`},{default:f(({row:e})=>[c(b(j(e)),1)]),_:1}),r(D,{label:`地点`,"min-width":`120`,"show-overflow-tooltip":``},{default:f(({row:e})=>[c(b(T(e.venue)),1)]),_:1}),r(D,{label:`名额`,width:`80`,align:`center`},{default:f(({row:e})=>[c(b(T(e.capacity)),1)]),_:1})]),_:1},8,[`data`])):(i(),e(`div`,le,`—`))]),p(`div`,ue,[m[8]||=p(`div`,{class:`detail-section-label`},`活动简介`,-1),C.value.intro_html?(i(),e(`div`,{key:0,class:`detail-intro-html`,innerHTML:C.value.intro_html},null,8,de)):(i(),e(`div`,fe,`—`))])],64)):!v.value&&a.value?(i(),x(P,{key:2,description:`暂无详情`})):s(``,!0)])),[[L,v.value]])]),_:1},8,[`modelValue`,`title`])}}}),[[`__scopeId`,`data-v-73e6423f`]]);function Z(e,t){return e.localeCompare(t)}function me(e,t,n,r){let i=e+t-1,a=n+r-1;return!(ia)}function he(e){let t=[];return e.slice().sort((e,t)=>e.startCol-t.startCol||t.span-e.span).map(e=>{let n=0;for(;;){if(t[n]??=[],!t[n].some(t=>me(e.startCol,e.span,t.startCol,t.endCol-t.startCol+1)))return t[n].push({startCol:e.startCol,endCol:e.startCol+e.span-1}),{...e,row:n+1};n+=1}})}function ge(e,t,n){if(!e.length)return[];let r=e[0],i=e[e.length-1],a=[];for(let o of t){if(Z(o.end_date,r)<0||Z(o.start_date,i)>0)continue;let t=Z(o.start_date,r)>0?o.start_date:r,s=Z(o.end_date,i)<0?o.end_date:i,c=e.indexOf(t),l=e.indexOf(s);c<0||l<0||a.push({id:`${o.type}-${o.entity_id}-${o.title}-${t}-${s}`,startCol:c+1,span:l-c+1,showTitle:t===o.start_date,isPast:Z(s,n)<0,event:o})}return he(a)}function _e(e,t,n,r){let i=new Date(e,t-1,1),a=new Date(e,t,0),o=(i.getDay()+6)%7,s=[],c=new Set;for(let e of r)for(let t of ve(e.start_date,e.end_date))c.add(t);for(let r=o;r>0;--r){let i=new Date(e,t-1,1-r),a=Q(i);s.push({key:`p-${a}`,day:i.getDate(),dateStr:a,muted:!0,past:Z(a,n)<0,isToday:a===n,hasEvent:c.has(a)})}for(let r=1;r<=a.getDate();r+=1){let i=`${e}-${String(t).padStart(2,`0`)}-${String(r).padStart(2,`0`)}`;s.push({key:i,day:r,dateStr:i,muted:!1,past:Z(i,n)<0,isToday:i===n,hasEvent:c.has(i)})}for(;s.length%7!=0;){let r=s.length-(o+a.getDate()),i=new Date(e,t,r+1),l=Q(i);s.push({key:`n-${l}`,day:i.getDate(),dateStr:l,muted:!0,past:Z(l,n)<0,isToday:l===n,hasEvent:c.has(l)})}let l=[];for(let e=0;ee.dateStr),r,n);l.push({cells:t,bars:i,barRows:i.reduce((e,t)=>Math.max(e,t.row),0)})}return l}function Q(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function ve(e,t){let n=[],r=new Date(`${e}T00:00:00`),i=new Date(`${t}T00:00:00`);for(;r<=i&&(n.push(Q(r)),r.setDate(r.getDate()+1),!(n.length>31)););return n}var ye={class:`dashboard-page executive-dashboard dashboard-v2`},be={class:`dashboard-grid-row`},xe={class:`dashboard-card dashboard-overview-card`},Se={class:`executive-metric-grid dashboard-overview-grid-compact`},Ce={class:`executive-metric`},we={class:`metric-head`},Te={class:`metric-icon`},Ee={class:`executive-metric`},De={class:`metric-head`},Oe={class:`metric-icon`},ke={class:`executive-metric`},Ae={class:`metric-head`},je={class:`metric-icon`},Me={class:`executive-metric`},Ne={class:`metric-head`},Pe={class:`metric-icon`},Fe={class:`dashboard-card`},Ie={class:`card-head card-head-row`},Le={class:`dashboard-count-badge`},Re={class:`dashboard-todo-list`},ze={class:`dashboard-todo-icon`},Be={class:`dashboard-todo-icon`},Ve={class:`dashboard-todo-icon`},He={class:`dashboard-card`},Ue={class:`card-head card-head-row`},We={class:`dashboard-calendar-actions`},Ge={class:`dashboard-event-list`},Ke={class:`dashboard-event-row`},qe={class:`event-row-icon`},Je={class:`dashboard-event-row`},$={class:`event-row-icon`},Ye={class:`dashboard-event-row`},Xe={class:`event-row-icon`},Ze={class:`dashboard-event-row`},Qe={class:`event-row-icon`},$e={class:`dashboard-calendar`},et={class:`calendar-grid calendar-grid-heads`},tt={class:`calendar-weeks`},nt={class:`calendar-day-num`},rt=[`title`,`onClick`],it={key:0,class:`calendar-event-span-text`},at=M(n({__name:`index`,setup(n){let a=k(),c=h(!1),m=h(null),y=h(!1),x=h(null),D=[`一`,`二`,`三`,`四`,`五`,`六`,`日`],j=S(()=>{if(!m.value)return[];let{year:e,month:t,today:n,events:r}=m.value.calendar;return _e(e,t,n,r)});async function M(){c.value=!0;try{m.value=await ee()}finally{c.value=!1}}function F(e){a.push(e)}function I(e){x.value={start_date:e.start_date,end_date:e.end_date,type:e.type,title:e.title,entity_id:e.entity_id},y.value=!0}return P(M),(n,a)=>{let h=d(`el-icon`),S=l(`loading`);return _((i(),e(`div`,ye,[a[22]||=p(`div`,{class:`page-head`},[p(`h1`,{class:`dashboard-page-title`},`驾驶舱`)],-1),m.value?(i(),e(g,{key:0},[p(`div`,be,[p(`section`,xe,[a[10]||=p(`div`,{class:`card-head`},[p(`h2`,{class:`dashboard-section-title`},`经营总览`)],-1),p(`div`,Se,[p(`div`,Ce,[p(`div`,we,[a[6]||=p(`span`,null,`高校覆盖`,-1),p(`span`,Te,[r(h,null,{default:f(()=>[r(t(w))]),_:1})])]),p(`strong`,null,b(m.value.overview.universities.total),1)]),p(`div`,Ee,[p(`div`,De,[a[7]||=p(`span`,null,`老师资产`,-1),p(`span`,Oe,[r(h,null,{default:f(()=>[r(t(C))]),_:1})])]),p(`strong`,null,b(m.value.overview.teachers.total),1),p(`em`,null,`本月 +`+b(m.value.overview.teachers.month_new)+`,五星 `+b(m.value.overview.teachers.five_star),1)]),p(`div`,ke,[p(`div`,Ae,[a[8]||=p(`span`,null,`论文发现`,-1),p(`span`,je,[r(h,null,{default:f(()=>[r(t(E))]),_:1})])]),p(`strong`,null,b(m.value.overview.papers.total),1),p(`em`,null,`本月新增 `+b(m.value.overview.papers.month_new)+`,待关联老师 `+b(m.value.overview.papers.pending_link),1)]),p(`div`,Me,[p(`div`,Ne,[a[9]||=p(`span`,null,`需求履约率`,-1),p(`span`,Pe,[r(h,null,{default:f(()=>[r(t(O))]),_:1})])]),p(`strong`,null,b(m.value.overview.demands.fulfillment_rate)+`%`,1),p(`em`,null,b(m.value.overview.demands.total)+` 条需求,`+b(m.value.overview.demands.done)+` 条已完成`,1)])])]),p(`section`,Fe,[p(`div`,Ie,[a[11]||=p(`h2`,{class:`dashboard-section-title`},`待办`,-1),p(`span`,Le,b(m.value.todos.total)+` 项`,1)]),p(`div`,Re,[p(`button`,{type:`button`,class:`dashboard-todo-card is-urgent`,onClick:a[0]||=e=>F(`/teachers`)},[p(`span`,ze,[r(h,null,{default:f(()=>[r(t(C))]),_:1})]),a[12]||=p(`span`,null,[p(`b`,null,`老师跟进`),p(`em`,null,`高星老师逾期回访,需补跟进记录`)],-1),p(`strong`,null,b(m.value.todos.teacher_follow),1)]),p(`button`,{type:`button`,class:`dashboard-todo-card is-warning`,onClick:a[1]||=e=>F(`/demands`)},[p(`span`,Be,[r(h,null,{default:f(()=>[r(t(A))]),_:1})]),p(`span`,null,[a[13]||=p(`b`,null,`需求处理`,-1),p(`em`,null,b(m.value.todos.demand_overdue)+` 条需求逾期,`+b(m.value.todos.demand_waiting)+` 条等待资源匹配`,1)]),p(`strong`,null,b(m.value.todos.demand_process),1)]),p(`button`,{type:`button`,class:`dashboard-todo-card`,onClick:a[2]||=e=>F(`/papers`)},[p(`span`,Ve,[r(h,null,{default:f(()=>[r(t(E))]),_:1})]),a[14]||=p(`span`,null,[p(`b`,null,`论文数据`),p(`em`,null,`近30天入库且未关联老师`)],-1),p(`strong`,null,b(m.value.todos.paper_data),1)])])])]),p(`section`,He,[p(`div`,Ue,[a[17]||=p(`div`,null,[p(`h2`,{class:`dashboard-section-title`},`课程、活动日历`)],-1),p(`div`,We,[p(`button`,{type:`button`,onClick:a[3]||=e=>F(`/courses`)},[r(h,null,{default:f(()=>[r(t(N))]),_:1}),a[15]||=p(`span`,null,`课程`,-1)]),p(`button`,{type:`button`,onClick:a[4]||=e=>F(`/activities`)},[r(h,null,{default:f(()=>[r(t(T))]),_:1}),a[16]||=p(`span`,null,`活动`,-1)])])]),p(`div`,Ge,[p(`div`,Ke,[p(`span`,qe,[r(h,null,{default:f(()=>[r(t(N))]),_:1})]),a[18]||=p(`span`,null,`课程排期`,-1),p(`strong`,null,b(m.value.events.course_sessions),1),p(`em`,null,b(m.value.events.course_draft)+` 场待发布`,1)]),p(`div`,Je,[p(`span`,$,[r(h,null,{default:f(()=>[r(t(T))]),_:1})]),a[19]||=p(`span`,null,`活动排期`,-1),p(`strong`,null,b(m.value.events.activity_sessions),1),p(`em`,null,b(m.value.events.activity_open)+` 场报名中`,1)]),p(`div`,Ye,[p(`span`,Xe,[r(h,null,{default:f(()=>[r(t(C))]),_:1})]),a[20]||=p(`span`,null,`报名人数`,-1),p(`strong`,null,b(m.value.events.signup_total),1),p(`em`,null,`较上月 `+b(m.value.events.signup_delta>=0?`+`:``)+b(m.value.events.signup_delta),1)]),p(`div`,Ze,[p(`span`,Qe,[r(h,null,{default:f(()=>[r(t(A))]),_:1})]),a[21]||=p(`span`,null,`转化线索`,-1),p(`strong`,null,b(m.value.events.teacher_leads+m.value.events.demand_leads),1),p(`em`,null,`老师 `+b(m.value.events.teacher_leads)+`,需求 `+b(m.value.events.demand_leads),1)])]),p(`div`,$e,[p(`div`,et,[(i(),e(g,null,v(D,e=>p(`div`,{key:e,class:`calendar-head`},b(e),1)),64))]),p(`div`,tt,[(i(!0),e(g,null,v(j.value,(t,n)=>(i(),e(`div`,{key:n,class:`calendar-week-grid`,style:o({"--event-lanes":t.barRows})},[(i(!0),e(g,null,v(t.cells,(t,n)=>(i(),e(`div`,{key:t.key,class:u([`calendar-cell`,{muted:t.muted,past:t.past&&!t.muted,"is-today":t.isToday,"has-event":t.hasEvent}]),style:o({gridColumn:n+1})},[p(`span`,nt,b(t.day),1)],6))),128)),(i(!0),e(g,null,v(t.bars,t=>(i(),e(`button`,{key:t.id,type:`button`,class:u([`calendar-event-span`,{"is-past-event":t.isPast,"is-activity":t.event.type===`activity`,"is-continuation":!t.showTitle}]),style:o({gridColumn:`${t.startCol} / span ${t.span}`,marginTop:`calc(1.25rem + ${(t.row-1)*26}px)`}),title:t.event.title,onClick:e=>I(t.event)},[t.showTitle?(i(),e(`span`,it,b(t.event.title),1)):s(``,!0)],14,rt))),128))],4))),128))])])])],64)):s(``,!0),r(pe,{modelValue:y.value,"onUpdate:modelValue":a[5]||=e=>y.value=e,event:x.value},null,8,[`modelValue`,`event`])])),[[S,c.value]])}}}),[[`__scopeId`,`data-v-4d58e404`]]);export{at as default}; \ No newline at end of file +import{C as e,Ct as t,D as n,E as r,G as i,P as a,Qt as o,S as s,T as c,X as l,Xt as u,Y as d,at as f,b as p,et as m,ht as h,m as g,ot as _,q as v,rt as y,tn as b,x,y as S}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{C,b as w,f as T,g as E,l as D,m as O,o as k,p as A,r as j,s as M,y as N}from"./index-DTIMLswB.js";import{t as P}from"./usePageLoad-DFTLo_Lv.js";import{c as F,l as I}from"./activities-zOsA7OhR.js";import{o as L}from"./courses-BrM6G2gc.js";import{a as R,i as z,o as B,s as V}from"./admin-list-CBoToEFo.js";/* empty css */async function ee(){let{data:e}=await j.get(`/admin/v1/dashboard/overview`);return e.data}var te={class:`detail-body`},ne={class:`detail-section`},re={key:0,class:`detail-media-preview detail-media-cover`},H=[`src`],U={key:1,class:`detail-empty-media`},W={class:`detail-section`},G={key:0,class:`detail-media-preview detail-media-promo`},K=[`src`],q={key:1,class:`detail-empty-media`},J={class:`detail-section`},Y={class:`detail-text-block`},X={class:`detail-section`},ie={key:1,class:`detail-empty-media`},ae={class:`detail-section`},oe=[`innerHTML`],se={key:1,class:`detail-empty-media`},ce={class:`detail-section`},le={key:1,class:`detail-empty-media`},ue={class:`detail-section`},de=[`innerHTML`],fe={key:1,class:`detail-empty-media`},pe=M(n({__name:`CalendarEventDetailDialog`,props:a({event:{}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:[`update:modelValue`],setup(n){let a=m(n,`modelValue`),o=n,v=h(!1),S=h(null),C=h(null),w=h([]);function T(e){return e==null||e===``?`—`:String(e)}function E(e,t){return!e&&!t?`—`:e&&t?`${e} 至 ${t}`:e||t||`—`}function O(e){let t=(e??[]).map(e=>e?.trim()).filter(Boolean);return t.length?t.join(`、`):`—`}function k(e){return e.news?.title?e.news.title:e.news_link_url?e.news_link_url:`—`}function A(e){return e.starts_at?e.starts_at.replace(`T`,` `).slice(0,16):`—`}function j(e){return e.ends_at?e.ends_at.replace(`T`,` `).slice(0,16):`—`}async function M(){let e=o.event;if(e){v.value=!0,S.value=null,C.value=null,w.value=[];try{e.type===`course`?S.value=await L(e.entity_id):(C.value=await F(e.entity_id),w.value=await I(e.entity_id))}catch{D.error(`加载详情失败`),a.value=!1}finally{v.value=!1}}}y(()=>[a.value,o.event?.entity_id,o.event?.type,o.event?.start_date],([e])=>{e&&o.event&&M()});let N=()=>o.event?o.event.type===`course`?`课程详情`:`活动详情`:`详情`;return(o,m)=>{let h=d(`el-descriptions-item`),y=d(`el-descriptions`),D=d(`el-table-column`),M=d(`el-table`),P=d(`el-empty`),F=d(`el-button`),I=d(`el-dialog`),L=l(`loading`);return i(),x(I,{modelValue:a.value,"onUpdate:modelValue":m[1]||=e=>a.value=e,title:N(),width:`960px`,top:`5vh`,"destroy-on-close":``,"append-to-body":``,class:`calendar-event-detail-dialog`},{footer:f(()=>[r(F,{onClick:m[0]||=e=>a.value=!1},{default:f(()=>[...m[9]||=[c(`关闭`,-1)]]),_:1})]),default:f(()=>[_((i(),e(`div`,te,[n.event&&S.value&&n.event.type===`course`?(i(),e(g,{key:0},[r(y,{column:3,border:``,size:`small`,class:`detail-desc`},{default:f(()=>[r(h,{label:`课程体系`},{default:f(()=>[c(b(S.value.course_system_item?.label||`—`),1)]),_:1}),r(h,{label:`课程名称`,span:2},{default:f(()=>[c(b(S.value.title),1)]),_:1}),r(h,{label:`课程类型`},{default:f(()=>[c(b(S.value.course_type_item?.label||`—`),1)]),_:1}),r(h,{label:`开课人数`},{default:f(()=>[c(b(T(S.value.capacity)),1)]),_:1}),r(h,{label:`开课日期`},{default:f(()=>[c(b(t(z)(S.value.teach_start_date,S.value.teach_end_date)),1)]),_:1}),r(h,{label:`开课时间`},{default:f(()=>[c(b(E(S.value.teach_start_time,S.value.teach_end_time)),1)]),_:1}),r(h,{label:`报名起止`,span:2},{default:f(()=>[c(b(t(z)(S.value.signup_start_date,S.value.signup_end_date)),1)]),_:1}),r(h,{label:`地点`},{default:f(()=>[c(b(T(S.value.location)),1)]),_:1}),r(h,{label:`关联资讯`,span:2},{default:f(()=>[c(b(k(S.value)),1)]),_:1}),r(h,{label:`课程状态`},{default:f(()=>[p(`span`,{class:u([`status-badge`,t(B)(S.value.progress_status)])},b(t(R)(S.value.progress_status)),3)]),_:1}),r(h,{label:`发布状态`},{default:f(()=>[p(`span`,{class:u([`status-badge`,t(V)(S.value.published)])},b(S.value.published===1?`已发布`:`未发布`),3)]),_:1})]),_:1}),p(`div`,ne,[m[2]||=p(`div`,{class:`detail-section-label`},`课程封面(690×400)`,-1),S.value.cover?.url?(i(),e(`div`,re,[p(`img`,{src:S.value.cover.url,alt:`课程封面`},null,8,H)])):(i(),e(`div`,U,`—`))]),p(`div`,W,[m[3]||=p(`div`,{class:`detail-section-label`},`课程宣传页(宽 750)`,-1),S.value.promo?.url?(i(),e(`div`,G,[p(`img`,{src:S.value.promo.url,alt:`课程宣传页`},null,8,K)])):(i(),e(`div`,q,`—`))]),p(`div`,J,[m[4]||=p(`div`,{class:`detail-section-label`},`招生对象`,-1),p(`div`,Y,b(O(S.value.recruit_targets)),1)]),p(`div`,X,[m[5]||=p(`div`,{class:`detail-section-label`},`主讲师资`,-1),S.value.main_speakers?.length?(i(),x(M,{key:0,data:S.value.main_speakers,size:`small`,border:``,class:`detail-sub-table`},{default:f(()=>[r(D,{type:`index`,label:`序号`,width:`56`,index:e=>e+1},null,8,[`index`]),r(D,{prop:`name`,label:`姓名`,"min-width":`100`}),r(D,{prop:`title`,label:`职称`,"min-width":`100`},{default:f(({row:e})=>[c(b(T(e.title)),1)]),_:1}),r(D,{prop:`university`,label:`高校`,"min-width":`120`},{default:f(({row:e})=>[c(b(T(e.university)),1)]),_:1}),r(D,{prop:`remark`,label:`备注`,"min-width":`140`,"show-overflow-tooltip":``},{default:f(({row:e})=>[c(b(T(e.remark)),1)]),_:1})]),_:1},8,[`data`])):(i(),e(`div`,ie,`—`))]),p(`div`,ae,[m[6]||=p(`div`,{class:`detail-section-label`},`课程简介`,-1),S.value.intro_html?(i(),e(`div`,{key:0,class:`detail-intro-html`,innerHTML:S.value.intro_html},null,8,oe)):(i(),e(`div`,se,`—`))])],64)):n.event&&C.value&&n.event.type===`activity`?(i(),e(g,{key:1},[r(y,{column:3,border:``,size:`small`,class:`detail-desc`},{default:f(()=>[r(h,{label:`活动名称`,span:2},{default:f(()=>[c(b(C.value.title),1)]),_:1}),r(h,{label:`活动类型`},{default:f(()=>[c(b(C.value.activity_type_item?.label||`—`),1)]),_:1}),r(h,{label:`场次`},{default:f(()=>[c(b(C.value.sessions_count??w.value.length),1)]),_:1}),r(h,{label:`活动日期`,span:2},{default:f(()=>[c(b(t(z)(C.value.event_start_date,C.value.event_end_date)),1)]),_:1}),r(h,{label:`报名起止日期`,span:2},{default:f(()=>[c(b(t(z)(C.value.signup_start_date,C.value.signup_end_date)),1)]),_:1}),r(h,{label:`活动地点`,span:2},{default:f(()=>[c(b(T(C.value.location)),1)]),_:1}),r(h,{label:`活动状态`},{default:f(()=>[p(`span`,{class:u([`status-badge`,t(B)(C.value.progress_status)])},b(t(R)(C.value.progress_status)),3)]),_:1}),r(h,{label:`发布状态`},{default:f(()=>[p(`span`,{class:u([`status-badge`,t(V)(C.value.published)])},b(C.value.published===1?`已发布`:`未发布`),3)]),_:1})]),_:1}),p(`div`,ce,[m[7]||=p(`div`,{class:`detail-section-label`},`活动场次`,-1),w.value.length?(i(),x(M,{key:0,data:w.value,size:`small`,border:``,class:`detail-sub-table`},{default:f(()=>[r(D,{label:`场次标题`,"min-width":`120`},{default:f(({row:e})=>[c(b(T(e.title)),1)]),_:1}),r(D,{label:`开始时间`,"min-width":`160`},{default:f(({row:e})=>[c(b(A(e)),1)]),_:1}),r(D,{label:`结束时间`,"min-width":`160`},{default:f(({row:e})=>[c(b(j(e)),1)]),_:1}),r(D,{label:`地点`,"min-width":`120`,"show-overflow-tooltip":``},{default:f(({row:e})=>[c(b(T(e.venue)),1)]),_:1}),r(D,{label:`名额`,width:`80`,align:`center`},{default:f(({row:e})=>[c(b(T(e.capacity)),1)]),_:1})]),_:1},8,[`data`])):(i(),e(`div`,le,`—`))]),p(`div`,ue,[m[8]||=p(`div`,{class:`detail-section-label`},`活动简介`,-1),C.value.intro_html?(i(),e(`div`,{key:0,class:`detail-intro-html`,innerHTML:C.value.intro_html},null,8,de)):(i(),e(`div`,fe,`—`))])],64)):!v.value&&a.value?(i(),x(P,{key:2,description:`暂无详情`})):s(``,!0)])),[[L,v.value]])]),_:1},8,[`modelValue`,`title`])}}}),[[`__scopeId`,`data-v-73e6423f`]]);function Z(e,t){return e.localeCompare(t)}function me(e,t,n,r){let i=e+t-1,a=n+r-1;return!(ia)}function he(e){let t=[];return e.slice().sort((e,t)=>e.startCol-t.startCol||t.span-e.span).map(e=>{let n=0;for(;;){if(t[n]??=[],!t[n].some(t=>me(e.startCol,e.span,t.startCol,t.endCol-t.startCol+1)))return t[n].push({startCol:e.startCol,endCol:e.startCol+e.span-1}),{...e,row:n+1};n+=1}})}function ge(e,t,n){if(!e.length)return[];let r=e[0],i=e[e.length-1],a=[];for(let o of t){if(Z(o.end_date,r)<0||Z(o.start_date,i)>0)continue;let t=Z(o.start_date,r)>0?o.start_date:r,s=Z(o.end_date,i)<0?o.end_date:i,c=e.indexOf(t),l=e.indexOf(s);c<0||l<0||a.push({id:`${o.type}-${o.entity_id}-${o.title}-${t}-${s}`,startCol:c+1,span:l-c+1,showTitle:t===o.start_date,isPast:Z(s,n)<0,event:o})}return he(a)}function _e(e,t,n,r){let i=new Date(e,t-1,1),a=new Date(e,t,0),o=(i.getDay()+6)%7,s=[],c=new Set;for(let e of r)for(let t of ve(e.start_date,e.end_date))c.add(t);for(let r=o;r>0;--r){let i=new Date(e,t-1,1-r),a=Q(i);s.push({key:`p-${a}`,day:i.getDate(),dateStr:a,muted:!0,past:Z(a,n)<0,isToday:a===n,hasEvent:c.has(a)})}for(let r=1;r<=a.getDate();r+=1){let i=`${e}-${String(t).padStart(2,`0`)}-${String(r).padStart(2,`0`)}`;s.push({key:i,day:r,dateStr:i,muted:!1,past:Z(i,n)<0,isToday:i===n,hasEvent:c.has(i)})}for(;s.length%7!=0;){let r=s.length-(o+a.getDate()),i=new Date(e,t,r+1),l=Q(i);s.push({key:`n-${l}`,day:i.getDate(),dateStr:l,muted:!0,past:Z(l,n)<0,isToday:l===n,hasEvent:c.has(l)})}let l=[];for(let e=0;ee.dateStr),r,n);l.push({cells:t,bars:i,barRows:i.reduce((e,t)=>Math.max(e,t.row),0)})}return l}function Q(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function ve(e,t){let n=[],r=new Date(`${e}T00:00:00`),i=new Date(`${t}T00:00:00`);for(;r<=i&&(n.push(Q(r)),r.setDate(r.getDate()+1),!(n.length>31)););return n}var ye={class:`dashboard-page executive-dashboard dashboard-v2`},be={class:`dashboard-grid-row`},xe={class:`dashboard-card dashboard-overview-card`},Se={class:`executive-metric-grid dashboard-overview-grid-compact`},Ce={class:`executive-metric`},we={class:`metric-head`},Te={class:`metric-icon`},Ee={class:`executive-metric`},De={class:`metric-head`},Oe={class:`metric-icon`},ke={class:`executive-metric`},Ae={class:`metric-head`},je={class:`metric-icon`},Me={class:`executive-metric`},Ne={class:`metric-head`},Pe={class:`metric-icon`},Fe={class:`dashboard-card`},Ie={class:`card-head card-head-row`},Le={class:`dashboard-count-badge`},Re={class:`dashboard-todo-list`},ze={class:`dashboard-todo-icon`},Be={class:`dashboard-todo-icon`},Ve={class:`dashboard-todo-icon`},He={class:`dashboard-card`},Ue={class:`card-head card-head-row`},We={class:`dashboard-calendar-actions`},Ge={class:`dashboard-event-list`},Ke={class:`dashboard-event-row`},qe={class:`event-row-icon`},Je={class:`dashboard-event-row`},$={class:`event-row-icon`},Ye={class:`dashboard-event-row`},Xe={class:`event-row-icon`},Ze={class:`dashboard-event-row`},Qe={class:`event-row-icon`},$e={class:`dashboard-calendar`},et={class:`calendar-grid calendar-grid-heads`},tt={class:`calendar-weeks`},nt={class:`calendar-day-num`},rt=[`title`,`onClick`],it={key:0,class:`calendar-event-span-text`},at=M(n({__name:`index`,setup(n){let a=k(),c=h(!1),m=h(null),y=h(!1),x=h(null),D=[`一`,`二`,`三`,`四`,`五`,`六`,`日`],j=S(()=>{if(!m.value)return[];let{year:e,month:t,today:n,events:r}=m.value.calendar;return _e(e,t,n,r)});async function M(){c.value=!0;try{m.value=await ee()}finally{c.value=!1}}function F(e){a.push(e)}function I(e){x.value={start_date:e.start_date,end_date:e.end_date,type:e.type,title:e.title,entity_id:e.entity_id},y.value=!0}return P(M),(n,a)=>{let h=d(`el-icon`),S=l(`loading`);return _((i(),e(`div`,ye,[a[22]||=p(`div`,{class:`page-head`},[p(`h1`,{class:`dashboard-page-title`},`驾驶舱`)],-1),m.value?(i(),e(g,{key:0},[p(`div`,be,[p(`section`,xe,[a[10]||=p(`div`,{class:`card-head`},[p(`h2`,{class:`dashboard-section-title`},`经营总览`)],-1),p(`div`,Se,[p(`div`,Ce,[p(`div`,we,[a[6]||=p(`span`,null,`高校覆盖`,-1),p(`span`,Te,[r(h,null,{default:f(()=>[r(t(w))]),_:1})])]),p(`strong`,null,b(m.value.overview.universities.total),1)]),p(`div`,Ee,[p(`div`,De,[a[7]||=p(`span`,null,`老师资产`,-1),p(`span`,Oe,[r(h,null,{default:f(()=>[r(t(C))]),_:1})])]),p(`strong`,null,b(m.value.overview.teachers.total),1),p(`em`,null,`本月 +`+b(m.value.overview.teachers.month_new)+`,五星 `+b(m.value.overview.teachers.five_star),1)]),p(`div`,ke,[p(`div`,Ae,[a[8]||=p(`span`,null,`论文发现`,-1),p(`span`,je,[r(h,null,{default:f(()=>[r(t(E))]),_:1})])]),p(`strong`,null,b(m.value.overview.papers.total),1),p(`em`,null,`本月新增 `+b(m.value.overview.papers.month_new)+`,待关联老师 `+b(m.value.overview.papers.pending_link),1)]),p(`div`,Me,[p(`div`,Ne,[a[9]||=p(`span`,null,`需求履约率`,-1),p(`span`,Pe,[r(h,null,{default:f(()=>[r(t(O))]),_:1})])]),p(`strong`,null,b(m.value.overview.demands.fulfillment_rate)+`%`,1),p(`em`,null,b(m.value.overview.demands.total)+` 条需求,`+b(m.value.overview.demands.done)+` 条已完成`,1)])])]),p(`section`,Fe,[p(`div`,Ie,[a[11]||=p(`h2`,{class:`dashboard-section-title`},`待办`,-1),p(`span`,Le,b(m.value.todos.total)+` 项`,1)]),p(`div`,Re,[p(`button`,{type:`button`,class:`dashboard-todo-card is-urgent`,onClick:a[0]||=e=>F(`/teachers`)},[p(`span`,ze,[r(h,null,{default:f(()=>[r(t(C))]),_:1})]),a[12]||=p(`span`,null,[p(`b`,null,`老师跟进`),p(`em`,null,`高星老师逾期回访,需补跟进记录`)],-1),p(`strong`,null,b(m.value.todos.teacher_follow),1)]),p(`button`,{type:`button`,class:`dashboard-todo-card is-warning`,onClick:a[1]||=e=>F(`/demands`)},[p(`span`,Be,[r(h,null,{default:f(()=>[r(t(A))]),_:1})]),p(`span`,null,[a[13]||=p(`b`,null,`需求处理`,-1),p(`em`,null,b(m.value.todos.demand_overdue)+` 条需求逾期,`+b(m.value.todos.demand_waiting)+` 条等待资源匹配`,1)]),p(`strong`,null,b(m.value.todos.demand_process),1)]),p(`button`,{type:`button`,class:`dashboard-todo-card`,onClick:a[2]||=e=>F(`/papers`)},[p(`span`,Ve,[r(h,null,{default:f(()=>[r(t(E))]),_:1})]),a[14]||=p(`span`,null,[p(`b`,null,`论文数据`),p(`em`,null,`近30天入库且未关联老师`)],-1),p(`strong`,null,b(m.value.todos.paper_data),1)])])])]),p(`section`,He,[p(`div`,Ue,[a[17]||=p(`div`,null,[p(`h2`,{class:`dashboard-section-title`},`课程、活动日历`)],-1),p(`div`,We,[p(`button`,{type:`button`,onClick:a[3]||=e=>F(`/courses`)},[r(h,null,{default:f(()=>[r(t(N))]),_:1}),a[15]||=p(`span`,null,`课程`,-1)]),p(`button`,{type:`button`,onClick:a[4]||=e=>F(`/activities`)},[r(h,null,{default:f(()=>[r(t(T))]),_:1}),a[16]||=p(`span`,null,`活动`,-1)])])]),p(`div`,Ge,[p(`div`,Ke,[p(`span`,qe,[r(h,null,{default:f(()=>[r(t(N))]),_:1})]),a[18]||=p(`span`,null,`课程排期`,-1),p(`strong`,null,b(m.value.events.course_sessions),1),p(`em`,null,b(m.value.events.course_draft)+` 场待发布`,1)]),p(`div`,Je,[p(`span`,$,[r(h,null,{default:f(()=>[r(t(T))]),_:1})]),a[19]||=p(`span`,null,`活动排期`,-1),p(`strong`,null,b(m.value.events.activity_sessions),1),p(`em`,null,b(m.value.events.activity_open)+` 场报名中`,1)]),p(`div`,Ye,[p(`span`,Xe,[r(h,null,{default:f(()=>[r(t(C))]),_:1})]),a[20]||=p(`span`,null,`报名人数`,-1),p(`strong`,null,b(m.value.events.signup_total),1),p(`em`,null,`较上月 `+b(m.value.events.signup_delta>=0?`+`:``)+b(m.value.events.signup_delta),1)]),p(`div`,Ze,[p(`span`,Qe,[r(h,null,{default:f(()=>[r(t(A))]),_:1})]),a[21]||=p(`span`,null,`转化线索`,-1),p(`strong`,null,b(m.value.events.teacher_leads+m.value.events.demand_leads),1),p(`em`,null,`老师 `+b(m.value.events.teacher_leads)+`,需求 `+b(m.value.events.demand_leads),1)])]),p(`div`,$e,[p(`div`,et,[(i(),e(g,null,v(D,e=>p(`div`,{key:e,class:`calendar-head`},b(e),1)),64))]),p(`div`,tt,[(i(!0),e(g,null,v(j.value,(t,n)=>(i(),e(`div`,{key:n,class:`calendar-week-grid`,style:o({"--event-lanes":t.barRows})},[(i(!0),e(g,null,v(t.cells,(t,n)=>(i(),e(`div`,{key:t.key,class:u([`calendar-cell`,{muted:t.muted,past:t.past&&!t.muted,"is-today":t.isToday,"has-event":t.hasEvent}]),style:o({gridColumn:n+1})},[p(`span`,nt,b(t.day),1)],6))),128)),(i(!0),e(g,null,v(t.bars,t=>(i(),e(`button`,{key:t.id,type:`button`,class:u([`calendar-event-span`,{"is-past-event":t.isPast,"is-activity":t.event.type===`activity`,"is-continuation":!t.showTitle}]),style:o({gridColumn:`${t.startCol} / span ${t.span}`,marginTop:`calc(1.25rem + ${(t.row-1)*26}px)`}),title:t.event.title,onClick:e=>I(t.event)},[t.showTitle?(i(),e(`span`,it,b(t.event.title),1)):s(``,!0)],14,rt))),128))],4))),128))])])])],64)):s(``,!0),r(pe,{modelValue:y.value,"onUpdate:modelValue":a[5]||=e=>y.value=e,event:x.value},null,8,[`modelValue`,`event`])])),[[S,c.value]])}}}),[[`__scopeId`,`data-v-4d58e404`]]);export{at as default}; \ No newline at end of file diff --git a/public/admin/assets/demands-LAAn9Pkv.js b/public/admin/assets/demands-B9B65gIt.js similarity index 97% rename from public/admin/assets/demands-LAAn9Pkv.js rename to public/admin/assets/demands-B9B65gIt.js index 3b143ff..d0606ed 100644 --- a/public/admin/assets/demands-LAAn9Pkv.js +++ b/public/admin/assets/demands-B9B65gIt.js @@ -1 +1 @@ -import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as ee,Xt as s,Y as c,at as l,b as u,d as te,ht as d,m as f,ot as ne,q as p,tn as m,x as h}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as g,l as _,s as v,t as y}from"./index-jb05DpEw.js";import{t as b}from"./usePageLoad-DFTLo_Lv.js";import{n as re,t as x}from"./admin-list-CBoToEFo.js";import{a as S}from"./dict-CkTsGkap.js";import{a as C,n as w,o as T,r as E,s as D}from"./demands-DTPLk14K.js";import{r as O}from"./users-BE9HtqQW.js";var ie={class:`list-page demands-page`},k={class:`list-filter-bar`},ae={class:`table-row-actions`},oe={class:`list-pager`},se={class:`follow-teacher-summary`},ce={class:`follow-history-list`},le={class:`follow-history-head`},ue={class:`follow-history-title`},de={class:`follow-history-date`},fe={class:`follow-history-body`},pe={class:`follow-teacher-summary`},A=v(n({__name:`index`,setup(n){let v=y();function A(){let e=v.user?.id;return e!=null&&B.value.some(t=>t.id===e)?e:B.value[0]?.id}let j=d(!1),M=d([]),N=d({current_page:1,per_page:20,total:0}),P=d(1),F=d(``),I=d(``),L=d(``),R=d([]),z=d([]),B=d([]),V=d(!1),H=d(null),U=d([]),W=d(!1),G=d(``),K=d([]),q=d(!1),J=d(null),Y=d({handled_at:new Date().toISOString().slice(0,10),admin_user_id:void 0,status_dict_item_id:void 0,content:``,next_plan:``,next_follow_date:``});async function X(){let[e,t,n]=await Promise.all([S(`demand_type`),S(`demand_status`),O({page:1,page_size:200,status:1})]);R.value=e.items,z.value=t.items,B.value=n.items.map(e=>({id:e.id,label:e.real_name||e.username}))}async function Z(){j.value=!0;try{let e={page:P.value,page_size:N.value.per_page};F.value&&(e.keyword=F.value),I.value!==``&&(e.type_dict_item_id=I.value),L.value!==``&&(e.status_dict_item_id=L.value);let t=await D(e);M.value=t.items,N.value=t.meta}finally{j.value=!1}}function me(){F.value=``,I.value=``,L.value=``,P.value=1,Z()}function Q(){P.value=1,Z()}async function he(e){H.value=await C(e.id),U.value=await T(e.id),V.value=!0}async function ge(e){G.value=e.title,K.value=await T(e.id),W.value=!0}function $(e){J.value=e,Y.value={handled_at:new Date().toISOString().slice(0,10),admin_user_id:A(),status_dict_item_id:e.status_dict_item_id,content:``,next_plan:``,next_follow_date:``},q.value=!0}async function _e(){if(!J.value)return;let e=Y.value;if(!e.content.trim()||!e.status_dict_item_id||!e.admin_user_id){_.warning(`请填写跟进内容、处理状态与跟进人员`);return}await w(J.value.id,{...e}),_.success(`已保存跟进`),q.value=!1,await Z()}async function ve(e){await g.confirm(`确定删除需求「${e.title}」?`,`确认删除`,{type:`warning`}),await E(e.id),_.success(`已删除`),await Z()}function ye(){H.value&&(V.value=!1,$(H.value))}return b(async()=>{await X(),await Z()}),(n,d)=>{let g=c(`el-input`),_=c(`el-option`),v=c(`el-select`),y=c(`el-button`),b=c(`el-table-column`),S=c(`el-table`),C=c(`el-pagination`),w=c(`el-card`),T=c(`el-col`),E=c(`el-row`),D=c(`el-dialog`),O=c(`el-empty`),A=c(`el-date-picker`),X=c(`el-form-item`),be=c(`el-form`),xe=ee(`loading`);return i(),e(`div`,ie,[d[32]||=u(`div`,{class:`page-header`},[u(`h1`,{class:`page-title`},`需求管理`)],-1),r(w,{shadow:`never`,class:`admin-list-card`},{default:l(()=>[u(`div`,k,[r(g,{modelValue:F.value,"onUpdate:modelValue":d[0]||=e=>F.value=e,class:`filter-search`,placeholder:`搜索标题、姓名、公司、类型…`,clearable:``,onKeyup:te(Q,[`enter`])},null,8,[`modelValue`]),r(v,{modelValue:I.value,"onUpdate:modelValue":d[1]||=e=>I.value=e,placeholder:`类型`,clearable:``,class:`filter-select-wide`},{default:l(()=>[(i(!0),e(f,null,p(R.value,e=>(i(),h(_,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(v,{modelValue:L.value,"onUpdate:modelValue":d[2]||=e=>L.value=e,placeholder:`处理状态`,clearable:``,class:`filter-select`},{default:l(()=>[(i(!0),e(f,null,p(z.value,e=>(i(),h(_,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(y,{type:`primary`,class:`btn-create`,onClick:Q},{default:l(()=>[...d[16]||=[o(`搜索`,-1)]]),_:1}),r(y,{onClick:me},{default:l(()=>[...d[17]||=[o(`重置`,-1)]]),_:1})]),ne((i(),h(S,{data:M.value,"row-key":`id`},{default:l(()=>[r(b,{label:`类型`,width:`110`},{default:l(({row:e})=>[u(`span`,{class:s([`type-badge`,t(re)(e.type_item?.value)])},m(e.type_item?.label),3)]),_:1}),r(b,{prop:`title`,label:`标题`,"min-width":`220`,"show-overflow-tooltip":``}),r(b,{prop:`contact_name`,label:`姓名`,width:`100`}),r(b,{prop:`company`,label:`公司`,width:`140`,"show-overflow-tooltip":``}),r(b,{prop:`submitted_at`,label:`时间`,width:`110`}),r(b,{label:`处理状态`,width:`100`},{default:l(({row:e})=>[u(`span`,{class:s([`status-badge`,t(x)(e.status_item?.value)])},m(e.status_item?.label),3)]),_:1}),r(b,{label:`跟进记录`,width:`96`,align:`center`},{default:l(({row:e})=>[r(y,{size:`small`,class:`btn-action-secondary table-inline-btn`,onClick:t=>ge(e)},{default:l(()=>[o(m(e.handle_logs_count||0)+`条记录 `,1)]),_:2},1032,[`onClick`])]),_:1}),r(b,{label:`操作`,width:`220`,fixed:`right`},{default:l(({row:e})=>[u(`div`,ae,[r(y,{class:`btn-action-secondary`,onClick:t=>he(e)},{default:l(()=>[...d[18]||=[o(`详情`,-1)]]),_:1},8,[`onClick`]),r(y,{class:`btn-action-danger`,onClick:t=>ve(e)},{default:l(()=>[...d[19]||=[o(`删除`,-1)]]),_:1},8,[`onClick`]),r(y,{class:`btn-action-info`,onClick:t=>$(e)},{default:l(()=>[...d[20]||=[o(`跟进`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[xe,j.value]]),u(`div`,oe,[r(C,{"current-page":P.value,"onUpdate:currentPage":d[3]||=e=>P.value=e,"page-size":N.value.per_page,total:N.value.total,layout:`total, prev, pager, next`,onCurrentChange:Z},null,8,[`current-page`,`page-size`,`total`])])]),_:1}),r(D,{modelValue:V.value,"onUpdate:modelValue":d[5]||=e=>V.value=e,title:H.value?.title||`需求详情`,width:`800px`,"destroy-on-close":``},{footer:l(()=>[r(y,{onClick:d[4]||=e=>V.value=!1},{default:l(()=>[...d[27]||=[o(`关闭`,-1)]]),_:1}),r(y,{type:`primary`,class:`btn-create`,onClick:ye},{default:l(()=>[...d[28]||=[o(`添加跟进`,-1)]]),_:1})]),default:l(()=>[H.value?(i(),e(f,{key:0},[r(E,{gutter:12,class:`detail-meta`},{default:l(()=>[r(T,{span:6},{default:l(()=>[d[21]||=u(`label`,{class:`field-label`},`需求类型`,-1),r(g,{"model-value":H.value.type_item?.label||``,readonly:``},null,8,[`model-value`])]),_:1}),r(T,{span:6},{default:l(()=>[d[22]||=u(`label`,{class:`field-label`},`提交人`,-1),r(g,{"model-value":H.value.contact_name||``,readonly:``},null,8,[`model-value`])]),_:1}),r(T,{span:6},{default:l(()=>[d[23]||=u(`label`,{class:`field-label`},`提交时间`,-1),r(g,{"model-value":H.value.submitted_at||``,readonly:``},null,8,[`model-value`])]),_:1}),r(T,{span:6},{default:l(()=>[d[24]||=u(`label`,{class:`field-label`},`处理状态`,-1),r(g,{"model-value":H.value.status_item?.label||``,readonly:``},null,8,[`model-value`])]),_:1}),r(T,{span:24},{default:l(()=>[d[25]||=u(`label`,{class:`field-label`},`需求描述`,-1),r(g,{"model-value":H.value.content,type:`textarea`,rows:3,readonly:``},null,8,[`model-value`])]),_:1})]),_:1}),d[26]||=u(`h3`,{class:`sub-title`},`处理记录`,-1),r(S,{data:U.value,size:`small`},{default:l(()=>[r(b,{prop:`handled_at`,label:`跟进日期`,width:`110`}),r(b,{prop:`operator_name`,label:`跟进人员`,width:`100`}),r(b,{label:`处理状态`,width:`100`},{default:l(({row:e})=>[u(`span`,{class:s([`status-badge`,t(x)(e.status_item?.value)])},m(e.status_item?.label),3)]),_:1}),r(b,{prop:`content`,label:`跟进内容`,"min-width":`160`,"show-overflow-tooltip":``}),r(b,{prop:`next_plan`,label:`下次跟进计划`,width:`140`,"show-overflow-tooltip":``}),r(b,{prop:`next_follow_date`,label:`下次跟进日期`,width:`120`})]),_:1},8,[`data`])],64)):a(``,!0)]),_:1},8,[`modelValue`,`title`]),r(D,{modelValue:W.value,"onUpdate:modelValue":d[7]||=e=>W.value=e,title:`跟进记录`,width:`640px`},{footer:l(()=>[r(y,{onClick:d[6]||=e=>W.value=!1},{default:l(()=>[...d[29]||=[o(`关闭`,-1)]]),_:1})]),default:l(()=>[u(`div`,se,m(G.value),1),u(`div`,ce,[(i(!0),e(f,null,p(K.value,t=>(i(),e(`div`,{key:t.id,class:`follow-history-card`},[u(`div`,le,[u(`div`,null,[u(`span`,ue,m(t.operator_name),1),u(`span`,de,m(t.handled_at),1)])]),u(`div`,fe,m(t.content),1)]))),128)),K.value.length?a(``,!0):(i(),h(O,{key:0,description:`暂无记录`}))])]),_:1},8,[`modelValue`]),r(D,{modelValue:q.value,"onUpdate:modelValue":d[15]||=e=>q.value=e,title:`需求跟进`,width:`720px`,"destroy-on-close":``},{footer:l(()=>[r(y,{onClick:d[14]||=e=>q.value=!1},{default:l(()=>[...d[30]||=[o(`取消`,-1)]]),_:1}),r(y,{type:`primary`,class:`btn-create`,onClick:_e},{default:l(()=>[...d[31]||=[o(`保存`,-1)]]),_:1})]),default:l(()=>[u(`div`,pe,m(J.value?.title),1),r(be,{"label-position":`top`,class:`form-small`,style:{"margin-top":`12px`}},{default:l(()=>[r(E,{gutter:12},{default:l(()=>[r(T,{span:8},{default:l(()=>[r(X,{label:`跟进日期`,required:``},{default:l(()=>[r(A,{modelValue:Y.value.handled_at,"onUpdate:modelValue":d[8]||=e=>Y.value.handled_at=e,type:`date`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1}),r(T,{span:8},{default:l(()=>[r(X,{label:`跟进人员`,required:``},{default:l(()=>[r(v,{modelValue:Y.value.admin_user_id,"onUpdate:modelValue":d[9]||=e=>Y.value.admin_user_id=e,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(B.value,e=>(i(),h(_,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(T,{span:8},{default:l(()=>[r(X,{label:`处理状态`,required:``},{default:l(()=>[r(v,{modelValue:Y.value.status_dict_item_id,"onUpdate:modelValue":d[10]||=e=>Y.value.status_dict_item_id=e,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(z.value,e=>(i(),h(_,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(T,{span:24},{default:l(()=>[r(X,{label:`跟进内容`,required:``},{default:l(()=>[r(g,{modelValue:Y.value.content,"onUpdate:modelValue":d[11]||=e=>Y.value.content=e,type:`textarea`,rows:4,placeholder:`请输入本次跟进内容`},null,8,[`modelValue`])]),_:1})]),_:1}),r(T,{span:16},{default:l(()=>[r(X,{label:`下次跟进计划`},{default:l(()=>[r(g,{modelValue:Y.value.next_plan,"onUpdate:modelValue":d[12]||=e=>Y.value.next_plan=e,placeholder:`请输入下一步计划`},null,8,[`modelValue`])]),_:1})]),_:1}),r(T,{span:8},{default:l(()=>[r(X,{label:`下次跟进日期`},{default:l(()=>[r(A,{modelValue:Y.value.next_follow_date,"onUpdate:modelValue":d[13]||=e=>Y.value.next_follow_date=e,type:`date`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`])])}}}),[[`__scopeId`,`data-v-4e4bc186`]]);export{A as default}; \ No newline at end of file +import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as ee,Xt as s,Y as c,at as l,b as u,d as te,ht as d,m as f,ot as ne,q as p,tn as m,x as h}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as g,l as _,s as v,t as y}from"./index-DTIMLswB.js";import{t as b}from"./usePageLoad-DFTLo_Lv.js";import{n as re,t as x}from"./admin-list-CBoToEFo.js";import{a as S}from"./dict-X8lDWB9t.js";import{a as C,n as w,o as T,r as E,s as D}from"./demands-CssxNgdQ.js";import{r as O}from"./users-BBYvhj2V.js";var ie={class:`list-page demands-page`},k={class:`list-filter-bar`},ae={class:`table-row-actions`},oe={class:`list-pager`},se={class:`follow-teacher-summary`},ce={class:`follow-history-list`},le={class:`follow-history-head`},ue={class:`follow-history-title`},de={class:`follow-history-date`},fe={class:`follow-history-body`},pe={class:`follow-teacher-summary`},A=v(n({__name:`index`,setup(n){let v=y();function A(){let e=v.user?.id;return e!=null&&B.value.some(t=>t.id===e)?e:B.value[0]?.id}let j=d(!1),M=d([]),N=d({current_page:1,per_page:20,total:0}),P=d(1),F=d(``),I=d(``),L=d(``),R=d([]),z=d([]),B=d([]),V=d(!1),H=d(null),U=d([]),W=d(!1),G=d(``),K=d([]),q=d(!1),J=d(null),Y=d({handled_at:new Date().toISOString().slice(0,10),admin_user_id:void 0,status_dict_item_id:void 0,content:``,next_plan:``,next_follow_date:``});async function X(){let[e,t,n]=await Promise.all([S(`demand_type`),S(`demand_status`),O({page:1,page_size:200,status:1})]);R.value=e.items,z.value=t.items,B.value=n.items.map(e=>({id:e.id,label:e.real_name||e.username}))}async function Z(){j.value=!0;try{let e={page:P.value,page_size:N.value.per_page};F.value&&(e.keyword=F.value),I.value!==``&&(e.type_dict_item_id=I.value),L.value!==``&&(e.status_dict_item_id=L.value);let t=await D(e);M.value=t.items,N.value=t.meta}finally{j.value=!1}}function me(){F.value=``,I.value=``,L.value=``,P.value=1,Z()}function Q(){P.value=1,Z()}async function he(e){H.value=await C(e.id),U.value=await T(e.id),V.value=!0}async function ge(e){G.value=e.title,K.value=await T(e.id),W.value=!0}function $(e){J.value=e,Y.value={handled_at:new Date().toISOString().slice(0,10),admin_user_id:A(),status_dict_item_id:e.status_dict_item_id,content:``,next_plan:``,next_follow_date:``},q.value=!0}async function _e(){if(!J.value)return;let e=Y.value;if(!e.content.trim()||!e.status_dict_item_id||!e.admin_user_id){_.warning(`请填写跟进内容、处理状态与跟进人员`);return}await w(J.value.id,{...e}),_.success(`已保存跟进`),q.value=!1,await Z()}async function ve(e){await g.confirm(`确定删除需求「${e.title}」?`,`确认删除`,{type:`warning`}),await E(e.id),_.success(`已删除`),await Z()}function ye(){H.value&&(V.value=!1,$(H.value))}return b(async()=>{await X(),await Z()}),(n,d)=>{let g=c(`el-input`),_=c(`el-option`),v=c(`el-select`),y=c(`el-button`),b=c(`el-table-column`),S=c(`el-table`),C=c(`el-pagination`),w=c(`el-card`),T=c(`el-col`),E=c(`el-row`),D=c(`el-dialog`),O=c(`el-empty`),A=c(`el-date-picker`),X=c(`el-form-item`),be=c(`el-form`),xe=ee(`loading`);return i(),e(`div`,ie,[d[32]||=u(`div`,{class:`page-header`},[u(`h1`,{class:`page-title`},`需求管理`)],-1),r(w,{shadow:`never`,class:`admin-list-card`},{default:l(()=>[u(`div`,k,[r(g,{modelValue:F.value,"onUpdate:modelValue":d[0]||=e=>F.value=e,class:`filter-search`,placeholder:`搜索标题、姓名、公司、类型…`,clearable:``,onKeyup:te(Q,[`enter`])},null,8,[`modelValue`]),r(v,{modelValue:I.value,"onUpdate:modelValue":d[1]||=e=>I.value=e,placeholder:`类型`,clearable:``,class:`filter-select-wide`},{default:l(()=>[(i(!0),e(f,null,p(R.value,e=>(i(),h(_,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(v,{modelValue:L.value,"onUpdate:modelValue":d[2]||=e=>L.value=e,placeholder:`处理状态`,clearable:``,class:`filter-select`},{default:l(()=>[(i(!0),e(f,null,p(z.value,e=>(i(),h(_,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(y,{type:`primary`,class:`btn-create`,onClick:Q},{default:l(()=>[...d[16]||=[o(`搜索`,-1)]]),_:1}),r(y,{onClick:me},{default:l(()=>[...d[17]||=[o(`重置`,-1)]]),_:1})]),ne((i(),h(S,{data:M.value,"row-key":`id`},{default:l(()=>[r(b,{label:`类型`,width:`110`},{default:l(({row:e})=>[u(`span`,{class:s([`type-badge`,t(re)(e.type_item?.value)])},m(e.type_item?.label),3)]),_:1}),r(b,{prop:`title`,label:`标题`,"min-width":`220`,"show-overflow-tooltip":``}),r(b,{prop:`contact_name`,label:`姓名`,width:`100`}),r(b,{prop:`company`,label:`公司`,width:`140`,"show-overflow-tooltip":``}),r(b,{prop:`submitted_at`,label:`时间`,width:`110`}),r(b,{label:`处理状态`,width:`100`},{default:l(({row:e})=>[u(`span`,{class:s([`status-badge`,t(x)(e.status_item?.value)])},m(e.status_item?.label),3)]),_:1}),r(b,{label:`跟进记录`,width:`96`,align:`center`},{default:l(({row:e})=>[r(y,{size:`small`,class:`btn-action-secondary table-inline-btn`,onClick:t=>ge(e)},{default:l(()=>[o(m(e.handle_logs_count||0)+`条记录 `,1)]),_:2},1032,[`onClick`])]),_:1}),r(b,{label:`操作`,width:`220`,fixed:`right`},{default:l(({row:e})=>[u(`div`,ae,[r(y,{class:`btn-action-secondary`,onClick:t=>he(e)},{default:l(()=>[...d[18]||=[o(`详情`,-1)]]),_:1},8,[`onClick`]),r(y,{class:`btn-action-danger`,onClick:t=>ve(e)},{default:l(()=>[...d[19]||=[o(`删除`,-1)]]),_:1},8,[`onClick`]),r(y,{class:`btn-action-info`,onClick:t=>$(e)},{default:l(()=>[...d[20]||=[o(`跟进`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[xe,j.value]]),u(`div`,oe,[r(C,{"current-page":P.value,"onUpdate:currentPage":d[3]||=e=>P.value=e,"page-size":N.value.per_page,total:N.value.total,layout:`total, prev, pager, next`,onCurrentChange:Z},null,8,[`current-page`,`page-size`,`total`])])]),_:1}),r(D,{modelValue:V.value,"onUpdate:modelValue":d[5]||=e=>V.value=e,title:H.value?.title||`需求详情`,width:`800px`,"destroy-on-close":``},{footer:l(()=>[r(y,{onClick:d[4]||=e=>V.value=!1},{default:l(()=>[...d[27]||=[o(`关闭`,-1)]]),_:1}),r(y,{type:`primary`,class:`btn-create`,onClick:ye},{default:l(()=>[...d[28]||=[o(`添加跟进`,-1)]]),_:1})]),default:l(()=>[H.value?(i(),e(f,{key:0},[r(E,{gutter:12,class:`detail-meta`},{default:l(()=>[r(T,{span:6},{default:l(()=>[d[21]||=u(`label`,{class:`field-label`},`需求类型`,-1),r(g,{"model-value":H.value.type_item?.label||``,readonly:``},null,8,[`model-value`])]),_:1}),r(T,{span:6},{default:l(()=>[d[22]||=u(`label`,{class:`field-label`},`提交人`,-1),r(g,{"model-value":H.value.contact_name||``,readonly:``},null,8,[`model-value`])]),_:1}),r(T,{span:6},{default:l(()=>[d[23]||=u(`label`,{class:`field-label`},`提交时间`,-1),r(g,{"model-value":H.value.submitted_at||``,readonly:``},null,8,[`model-value`])]),_:1}),r(T,{span:6},{default:l(()=>[d[24]||=u(`label`,{class:`field-label`},`处理状态`,-1),r(g,{"model-value":H.value.status_item?.label||``,readonly:``},null,8,[`model-value`])]),_:1}),r(T,{span:24},{default:l(()=>[d[25]||=u(`label`,{class:`field-label`},`需求描述`,-1),r(g,{"model-value":H.value.content,type:`textarea`,rows:3,readonly:``},null,8,[`model-value`])]),_:1})]),_:1}),d[26]||=u(`h3`,{class:`sub-title`},`处理记录`,-1),r(S,{data:U.value,size:`small`},{default:l(()=>[r(b,{prop:`handled_at`,label:`跟进日期`,width:`110`}),r(b,{prop:`operator_name`,label:`跟进人员`,width:`100`}),r(b,{label:`处理状态`,width:`100`},{default:l(({row:e})=>[u(`span`,{class:s([`status-badge`,t(x)(e.status_item?.value)])},m(e.status_item?.label),3)]),_:1}),r(b,{prop:`content`,label:`跟进内容`,"min-width":`160`,"show-overflow-tooltip":``}),r(b,{prop:`next_plan`,label:`下次跟进计划`,width:`140`,"show-overflow-tooltip":``}),r(b,{prop:`next_follow_date`,label:`下次跟进日期`,width:`120`})]),_:1},8,[`data`])],64)):a(``,!0)]),_:1},8,[`modelValue`,`title`]),r(D,{modelValue:W.value,"onUpdate:modelValue":d[7]||=e=>W.value=e,title:`跟进记录`,width:`640px`},{footer:l(()=>[r(y,{onClick:d[6]||=e=>W.value=!1},{default:l(()=>[...d[29]||=[o(`关闭`,-1)]]),_:1})]),default:l(()=>[u(`div`,se,m(G.value),1),u(`div`,ce,[(i(!0),e(f,null,p(K.value,t=>(i(),e(`div`,{key:t.id,class:`follow-history-card`},[u(`div`,le,[u(`div`,null,[u(`span`,ue,m(t.operator_name),1),u(`span`,de,m(t.handled_at),1)])]),u(`div`,fe,m(t.content),1)]))),128)),K.value.length?a(``,!0):(i(),h(O,{key:0,description:`暂无记录`}))])]),_:1},8,[`modelValue`]),r(D,{modelValue:q.value,"onUpdate:modelValue":d[15]||=e=>q.value=e,title:`需求跟进`,width:`720px`,"destroy-on-close":``},{footer:l(()=>[r(y,{onClick:d[14]||=e=>q.value=!1},{default:l(()=>[...d[30]||=[o(`取消`,-1)]]),_:1}),r(y,{type:`primary`,class:`btn-create`,onClick:_e},{default:l(()=>[...d[31]||=[o(`保存`,-1)]]),_:1})]),default:l(()=>[u(`div`,pe,m(J.value?.title),1),r(be,{"label-position":`top`,class:`form-small`,style:{"margin-top":`12px`}},{default:l(()=>[r(E,{gutter:12},{default:l(()=>[r(T,{span:8},{default:l(()=>[r(X,{label:`跟进日期`,required:``},{default:l(()=>[r(A,{modelValue:Y.value.handled_at,"onUpdate:modelValue":d[8]||=e=>Y.value.handled_at=e,type:`date`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1}),r(T,{span:8},{default:l(()=>[r(X,{label:`跟进人员`,required:``},{default:l(()=>[r(v,{modelValue:Y.value.admin_user_id,"onUpdate:modelValue":d[9]||=e=>Y.value.admin_user_id=e,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(B.value,e=>(i(),h(_,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(T,{span:8},{default:l(()=>[r(X,{label:`处理状态`,required:``},{default:l(()=>[r(v,{modelValue:Y.value.status_dict_item_id,"onUpdate:modelValue":d[10]||=e=>Y.value.status_dict_item_id=e,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(z.value,e=>(i(),h(_,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(T,{span:24},{default:l(()=>[r(X,{label:`跟进内容`,required:``},{default:l(()=>[r(g,{modelValue:Y.value.content,"onUpdate:modelValue":d[11]||=e=>Y.value.content=e,type:`textarea`,rows:4,placeholder:`请输入本次跟进内容`},null,8,[`modelValue`])]),_:1})]),_:1}),r(T,{span:16},{default:l(()=>[r(X,{label:`下次跟进计划`},{default:l(()=>[r(g,{modelValue:Y.value.next_plan,"onUpdate:modelValue":d[12]||=e=>Y.value.next_plan=e,placeholder:`请输入下一步计划`},null,8,[`modelValue`])]),_:1})]),_:1}),r(T,{span:8},{default:l(()=>[r(X,{label:`下次跟进日期`},{default:l(()=>[r(A,{modelValue:Y.value.next_follow_date,"onUpdate:modelValue":d[13]||=e=>Y.value.next_follow_date=e,type:`date`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`])])}}}),[[`__scopeId`,`data-v-4e4bc186`]]);export{A as default}; \ No newline at end of file diff --git a/public/admin/assets/demands-DTPLk14K.js b/public/admin/assets/demands-CssxNgdQ.js similarity index 89% rename from public/admin/assets/demands-DTPLk14K.js rename to public/admin/assets/demands-CssxNgdQ.js index f703a15..0592328 100644 --- a/public/admin/assets/demands-DTPLk14K.js +++ b/public/admin/assets/demands-CssxNgdQ.js @@ -1 +1 @@ -import{r as e}from"./index-jb05DpEw.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}; \ No newline at end of file +import{r as e}from"./index-DTIMLswB.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}; \ No newline at end of file diff --git a/public/admin/assets/dict-CW3bULB4.js b/public/admin/assets/dict-BPnVfOXj.js similarity index 98% rename from public/admin/assets/dict-CW3bULB4.js rename to public/admin/assets/dict-BPnVfOXj.js index 9c1791e..3667ba0 100644 --- a/public/admin/assets/dict-CW3bULB4.js +++ b/public/admin/assets/dict-BPnVfOXj.js @@ -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,s as y}from"./index-jb05DpEw.js";import{t as b}from"./usePageLoad-DFTLo_Lv.js";import{r as x}from"./admin-list-CBoToEFo.js";import{c as S,i as C,l as w,n as T,o as E,r as D,s as O,t as k}from"./dict-CkTsGkap.js";var A={class:`list-page`},j={class:`page-header`},ee={class:`list-filter-bar`},te={class:`table-row-actions`},ne={class:`list-pager`},re={class:`items-toolbar`},M={class:`table-row-actions`},N=y(n({__name:`index`,setup(n){let y=f(!1),N=f([]),P=f({current_page:1,per_page:20,total:0}),F=f(1),I=f(``),L=f(!1),R=f(null),z=f([]),B=f(!1),V=f(!1),H=f(null),U=f({code:``,name:``,remark:``,status:1,sort:0});async function W(){y.value=!0;try{let e=await O({page:F.value,page_size:P.value.per_page,keyword:I.value||void 0});N.value=e.items,P.value=e.meta}finally{y.value=!1}}function G(){H.value=null,U.value={code:``,name:``,remark:``,status:1,sort:0},V.value=!0}function K(e){H.value=e,U.value={code:e.code,name:e.name,remark:e.remark||``,status:e.status,sort:e.sort},V.value=!0}async function q(){H.value?await w(H.value.id,U.value):await T(U.value),v.success(`已保存`),V.value=!1,await W()}async function J(e){await _.confirm(`确定删除字典类型「${e.name}」及其全部字典项?`,`提示`,{type:`warning`}),await C(e.id),v.success(`已删除`),await W()}async function ie(e){R.value=e,L.value=!0,B.value=!0;try{z.value=await E(e.id)}finally{B.value=!1}}let Y=f(!1),X=f(null),Z=f({label:``,value:``,sort:0,status:1});function ae(){X.value=null,Z.value={label:``,value:``,sort:0,status:1},Y.value=!0}function oe(e){X.value=e,Z.value={label:e.label,value:e.value,sort:e.sort,status:e.status},Y.value=!0}async function se(){R.value&&(X.value?await S(R.value.id,X.value.id,Z.value):await k(R.value.id,Z.value),v.success(`已保存`),Y.value=!1,z.value=await E(R.value.id))}async function ce(e){R.value&&(await _.confirm(`删除字典项「${e.label}」?`,`提示`,{type:`warning`}),await D(R.value.id,e.id),v.success(`已删除`),z.value=await E(R.value.id))}function Q(){F.value=1,W()}function le(){I.value=``,F.value=1,W()}return b(W),(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`),E=c(`el-input-number`),D=c(`el-switch`),O=c(`el-form`),k=c(`el-dialog`),$=o(`loading`);return i(),e(p,null,[u(`div`,A,[u(`div`,j,[f[18]||=u(`h1`,{class:`page-title`},`字典管理`,-1),r(_,{type:`primary`,size:`small`,class:`btn-create`,onClick:G},{default:l(()=>[...f[17]||=[a(`新增类型`,-1)]]),_:1})]),r(w,{shadow:`never`,class:`admin-list-card`},{default:l(()=>[u(`div`,ee,[r(v,{modelValue:I.value,"onUpdate:modelValue":f[0]||=e=>I.value=e,placeholder:`编码/名称`,clearable:``,class:`filter-search`,onKeyup:d(Q,[`enter`])},null,8,[`modelValue`]),r(_,{type:`primary`,onClick:Q},{default:l(()=>[...f[19]||=[a(`搜索`,-1)]]),_:1}),r(_,{onClick:le},{default:l(()=>[...f[20]||=[a(`重置`,-1)]]),_:1})]),m((i(),g(S,{data:N.value,"row-key":`id`},{default:l(()=>[r(b,{prop:`code`,label:`编码`,width:`160`}),r(b,{prop:`name`,label:`名称`,width:`180`}),r(b,{prop:`remark`,label:`备注`,"min-width":`200`,"show-overflow-tooltip":``}),r(b,{prop:`sort`,label:`排序`,width:`80`,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,{label:`操作`,width:`240`,fixed:`right`},{default:l(({row:e})=>[u(`div`,te,[r(_,{class:`btn-action-brand`,onClick:t=>ie(e)},{default:l(()=>[...f[21]||=[a(`字典项`,-1)]]),_:1},8,[`onClick`]),r(_,{class:`btn-action-secondary`,onClick:t=>K(e)},{default:l(()=>[...f[22]||=[a(`编辑`,-1)]]),_:1},8,[`onClick`]),r(_,{class:`btn-action-secondary`,onClick:t=>J(e)},{default:l(()=>[...f[23]||=[a(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[$,y.value]]),u(`div`,ne,[r(C,{"current-page":F.value,"onUpdate:currentPage":f[1]||=e=>F.value=e,layout:`total, prev, pager, next`,total:P.value.total,"page-size":P.value.per_page,onCurrentChange:W},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r(k,{modelValue:V.value,"onUpdate:modelValue":f[9]||=e=>V.value=e,title:H.value?`编辑类型`:`新增类型`,width:`480px`},{footer:l(()=>[r(_,{onClick:f[8]||=e=>V.value=!1},{default:l(()=>[...f[24]||=[a(`取消`,-1)]]),_:1}),r(_,{type:`primary`,onClick:q},{default:l(()=>[...f[25]||=[a(`保存`,-1)]]),_:1})]),default:l(()=>[r(O,{"label-width":`88px`},{default:l(()=>[H.value?(i(),g(T,{key:1,label:`编码`},{default:l(()=>[r(v,{modelValue:U.value.code,"onUpdate:modelValue":f[3]||=e=>U.value.code=e,disabled:``},null,8,[`modelValue`])]),_:1})):(i(),g(T,{key:0,label:`编码`},{default:l(()=>[r(v,{modelValue:U.value.code,"onUpdate:modelValue":f[2]||=e=>U.value.code=e},null,8,[`modelValue`])]),_:1})),r(T,{label:`名称`},{default:l(()=>[r(v,{modelValue:U.value.name,"onUpdate:modelValue":f[4]||=e=>U.value.name=e},null,8,[`modelValue`])]),_:1}),r(T,{label:`备注`},{default:l(()=>[r(v,{modelValue:U.value.remark,"onUpdate:modelValue":f[5]||=e=>U.value.remark=e,type:`textarea`,rows:2},null,8,[`modelValue`])]),_:1}),r(T,{label:`排序`},{default:l(()=>[r(E,{modelValue:U.value.sort,"onUpdate:modelValue":f[6]||=e=>U.value.sort=e},null,8,[`modelValue`])]),_:1}),r(T,{label:`状态`},{default:l(()=>[r(D,{modelValue:U.value.status,"onUpdate:modelValue":f[7]||=e=>U.value.status=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`]),r(k,{modelValue:L.value,"onUpdate:modelValue":f[10]||=e=>L.value=e,title:R.value?`字典项 · ${R.value.name}`:`字典项`,width:`720px`,"destroy-on-close":``},{default:l(()=>[u(`div`,re,[r(_,{type:`primary`,size:`small`,onClick:ae},{default:l(()=>[...f[26]||=[a(`新增字典项`,-1)]]),_:1})]),m((i(),g(S,{data:z.value,"row-key":`id`,style:{"margin-top":`8px`}},{default:l(()=>[r(b,{prop:`label`,label:`展示`,width:`160`}),r(b,{prop:`value`,label:`值`,width:`160`}),r(b,{prop:`sort`,label:`排序`,width:`80`}),r(b,{label:`状态`,width:`90`},{default:l(({row:e})=>[u(`span`,{class:s([`status-badge`,t(x)(e.status)])},h(e.status===1?`启用`:`停用`),3)]),_:1}),r(b,{label:`操作`,width:`160`},{default:l(({row:e})=>[u(`div`,M,[r(_,{class:`btn-action-secondary`,onClick:t=>oe(e)},{default:l(()=>[...f[27]||=[a(`编辑`,-1)]]),_:1},8,[`onClick`]),r(_,{class:`btn-action-secondary`,onClick:t=>ce(e)},{default:l(()=>[...f[28]||=[a(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[$,B.value]])]),_:1},8,[`modelValue`,`title`]),r(k,{modelValue:Y.value,"onUpdate:modelValue":f[16]||=e=>Y.value=e,title:X.value?`编辑字典项`:`新增字典项`,width:`420px`},{footer:l(()=>[r(_,{onClick:f[15]||=e=>Y.value=!1},{default:l(()=>[...f[29]||=[a(`取消`,-1)]]),_:1}),r(_,{type:`primary`,onClick:se},{default:l(()=>[...f[30]||=[a(`保存`,-1)]]),_:1})]),default:l(()=>[r(O,{"label-width":`72px`},{default:l(()=>[r(T,{label:`展示`},{default:l(()=>[r(v,{modelValue:Z.value.label,"onUpdate:modelValue":f[11]||=e=>Z.value.label=e},null,8,[`modelValue`])]),_:1}),r(T,{label:`值`},{default:l(()=>[r(v,{modelValue:Z.value.value,"onUpdate:modelValue":f[12]||=e=>Z.value.value=e},null,8,[`modelValue`])]),_:1}),r(T,{label:`排序`},{default:l(()=>[r(E,{modelValue:Z.value.sort,"onUpdate:modelValue":f[13]||=e=>Z.value.sort=e},null,8,[`modelValue`])]),_:1}),r(T,{label:`状态`},{default:l(()=>[r(D,{modelValue:Z.value.status,"onUpdate:modelValue":f[14]||=e=>Z.value.status=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`])],64)}}}),[[`__scopeId`,`data-v-06c150e0`]]);export{N as default}; \ No newline at end of file +import{C as e,Ct as t,D as n,E as r,G as i,T as a,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,s as y}from"./index-DTIMLswB.js";import{t as b}from"./usePageLoad-DFTLo_Lv.js";import{r as x}from"./admin-list-CBoToEFo.js";import{c as S,i as C,l as w,n as T,o as E,r as D,s as O,t as k}from"./dict-X8lDWB9t.js";var A={class:`list-page`},j={class:`page-header`},ee={class:`list-filter-bar`},te={class:`table-row-actions`},ne={class:`list-pager`},re={class:`items-toolbar`},M={class:`table-row-actions`},N=y(n({__name:`index`,setup(n){let y=f(!1),N=f([]),P=f({current_page:1,per_page:20,total:0}),F=f(1),I=f(``),L=f(!1),R=f(null),z=f([]),B=f(!1),V=f(!1),H=f(null),U=f({code:``,name:``,remark:``,status:1,sort:0});async function W(){y.value=!0;try{let e=await O({page:F.value,page_size:P.value.per_page,keyword:I.value||void 0});N.value=e.items,P.value=e.meta}finally{y.value=!1}}function G(){H.value=null,U.value={code:``,name:``,remark:``,status:1,sort:0},V.value=!0}function K(e){H.value=e,U.value={code:e.code,name:e.name,remark:e.remark||``,status:e.status,sort:e.sort},V.value=!0}async function q(){H.value?await w(H.value.id,U.value):await T(U.value),v.success(`已保存`),V.value=!1,await W()}async function J(e){await _.confirm(`确定删除字典类型「${e.name}」及其全部字典项?`,`提示`,{type:`warning`}),await C(e.id),v.success(`已删除`),await W()}async function ie(e){R.value=e,L.value=!0,B.value=!0;try{z.value=await E(e.id)}finally{B.value=!1}}let Y=f(!1),X=f(null),Z=f({label:``,value:``,sort:0,status:1});function ae(){X.value=null,Z.value={label:``,value:``,sort:0,status:1},Y.value=!0}function oe(e){X.value=e,Z.value={label:e.label,value:e.value,sort:e.sort,status:e.status},Y.value=!0}async function se(){R.value&&(X.value?await S(R.value.id,X.value.id,Z.value):await k(R.value.id,Z.value),v.success(`已保存`),Y.value=!1,z.value=await E(R.value.id))}async function ce(e){R.value&&(await _.confirm(`删除字典项「${e.label}」?`,`提示`,{type:`warning`}),await D(R.value.id,e.id),v.success(`已删除`),z.value=await E(R.value.id))}function Q(){F.value=1,W()}function le(){I.value=``,F.value=1,W()}return b(W),(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`),E=c(`el-input-number`),D=c(`el-switch`),O=c(`el-form`),k=c(`el-dialog`),$=o(`loading`);return i(),e(p,null,[u(`div`,A,[u(`div`,j,[f[18]||=u(`h1`,{class:`page-title`},`字典管理`,-1),r(_,{type:`primary`,size:`small`,class:`btn-create`,onClick:G},{default:l(()=>[...f[17]||=[a(`新增类型`,-1)]]),_:1})]),r(w,{shadow:`never`,class:`admin-list-card`},{default:l(()=>[u(`div`,ee,[r(v,{modelValue:I.value,"onUpdate:modelValue":f[0]||=e=>I.value=e,placeholder:`编码/名称`,clearable:``,class:`filter-search`,onKeyup:d(Q,[`enter`])},null,8,[`modelValue`]),r(_,{type:`primary`,onClick:Q},{default:l(()=>[...f[19]||=[a(`搜索`,-1)]]),_:1}),r(_,{onClick:le},{default:l(()=>[...f[20]||=[a(`重置`,-1)]]),_:1})]),m((i(),g(S,{data:N.value,"row-key":`id`},{default:l(()=>[r(b,{prop:`code`,label:`编码`,width:`160`}),r(b,{prop:`name`,label:`名称`,width:`180`}),r(b,{prop:`remark`,label:`备注`,"min-width":`200`,"show-overflow-tooltip":``}),r(b,{prop:`sort`,label:`排序`,width:`80`,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,{label:`操作`,width:`240`,fixed:`right`},{default:l(({row:e})=>[u(`div`,te,[r(_,{class:`btn-action-brand`,onClick:t=>ie(e)},{default:l(()=>[...f[21]||=[a(`字典项`,-1)]]),_:1},8,[`onClick`]),r(_,{class:`btn-action-secondary`,onClick:t=>K(e)},{default:l(()=>[...f[22]||=[a(`编辑`,-1)]]),_:1},8,[`onClick`]),r(_,{class:`btn-action-secondary`,onClick:t=>J(e)},{default:l(()=>[...f[23]||=[a(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[$,y.value]]),u(`div`,ne,[r(C,{"current-page":F.value,"onUpdate:currentPage":f[1]||=e=>F.value=e,layout:`total, prev, pager, next`,total:P.value.total,"page-size":P.value.per_page,onCurrentChange:W},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r(k,{modelValue:V.value,"onUpdate:modelValue":f[9]||=e=>V.value=e,title:H.value?`编辑类型`:`新增类型`,width:`480px`},{footer:l(()=>[r(_,{onClick:f[8]||=e=>V.value=!1},{default:l(()=>[...f[24]||=[a(`取消`,-1)]]),_:1}),r(_,{type:`primary`,onClick:q},{default:l(()=>[...f[25]||=[a(`保存`,-1)]]),_:1})]),default:l(()=>[r(O,{"label-width":`88px`},{default:l(()=>[H.value?(i(),g(T,{key:1,label:`编码`},{default:l(()=>[r(v,{modelValue:U.value.code,"onUpdate:modelValue":f[3]||=e=>U.value.code=e,disabled:``},null,8,[`modelValue`])]),_:1})):(i(),g(T,{key:0,label:`编码`},{default:l(()=>[r(v,{modelValue:U.value.code,"onUpdate:modelValue":f[2]||=e=>U.value.code=e},null,8,[`modelValue`])]),_:1})),r(T,{label:`名称`},{default:l(()=>[r(v,{modelValue:U.value.name,"onUpdate:modelValue":f[4]||=e=>U.value.name=e},null,8,[`modelValue`])]),_:1}),r(T,{label:`备注`},{default:l(()=>[r(v,{modelValue:U.value.remark,"onUpdate:modelValue":f[5]||=e=>U.value.remark=e,type:`textarea`,rows:2},null,8,[`modelValue`])]),_:1}),r(T,{label:`排序`},{default:l(()=>[r(E,{modelValue:U.value.sort,"onUpdate:modelValue":f[6]||=e=>U.value.sort=e},null,8,[`modelValue`])]),_:1}),r(T,{label:`状态`},{default:l(()=>[r(D,{modelValue:U.value.status,"onUpdate:modelValue":f[7]||=e=>U.value.status=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`]),r(k,{modelValue:L.value,"onUpdate:modelValue":f[10]||=e=>L.value=e,title:R.value?`字典项 · ${R.value.name}`:`字典项`,width:`720px`,"destroy-on-close":``},{default:l(()=>[u(`div`,re,[r(_,{type:`primary`,size:`small`,onClick:ae},{default:l(()=>[...f[26]||=[a(`新增字典项`,-1)]]),_:1})]),m((i(),g(S,{data:z.value,"row-key":`id`,style:{"margin-top":`8px`}},{default:l(()=>[r(b,{prop:`label`,label:`展示`,width:`160`}),r(b,{prop:`value`,label:`值`,width:`160`}),r(b,{prop:`sort`,label:`排序`,width:`80`}),r(b,{label:`状态`,width:`90`},{default:l(({row:e})=>[u(`span`,{class:s([`status-badge`,t(x)(e.status)])},h(e.status===1?`启用`:`停用`),3)]),_:1}),r(b,{label:`操作`,width:`160`},{default:l(({row:e})=>[u(`div`,M,[r(_,{class:`btn-action-secondary`,onClick:t=>oe(e)},{default:l(()=>[...f[27]||=[a(`编辑`,-1)]]),_:1},8,[`onClick`]),r(_,{class:`btn-action-secondary`,onClick:t=>ce(e)},{default:l(()=>[...f[28]||=[a(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[$,B.value]])]),_:1},8,[`modelValue`,`title`]),r(k,{modelValue:Y.value,"onUpdate:modelValue":f[16]||=e=>Y.value=e,title:X.value?`编辑字典项`:`新增字典项`,width:`420px`},{footer:l(()=>[r(_,{onClick:f[15]||=e=>Y.value=!1},{default:l(()=>[...f[29]||=[a(`取消`,-1)]]),_:1}),r(_,{type:`primary`,onClick:se},{default:l(()=>[...f[30]||=[a(`保存`,-1)]]),_:1})]),default:l(()=>[r(O,{"label-width":`72px`},{default:l(()=>[r(T,{label:`展示`},{default:l(()=>[r(v,{modelValue:Z.value.label,"onUpdate:modelValue":f[11]||=e=>Z.value.label=e},null,8,[`modelValue`])]),_:1}),r(T,{label:`值`},{default:l(()=>[r(v,{modelValue:Z.value.value,"onUpdate:modelValue":f[12]||=e=>Z.value.value=e},null,8,[`modelValue`])]),_:1}),r(T,{label:`排序`},{default:l(()=>[r(E,{modelValue:Z.value.sort,"onUpdate:modelValue":f[13]||=e=>Z.value.sort=e},null,8,[`modelValue`])]),_:1}),r(T,{label:`状态`},{default:l(()=>[r(D,{modelValue:Z.value.status,"onUpdate:modelValue":f[14]||=e=>Z.value.status=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`])],64)}}}),[[`__scopeId`,`data-v-06c150e0`]]);export{N as default}; \ No newline at end of file diff --git a/public/admin/assets/dict-CkTsGkap.js b/public/admin/assets/dict-X8lDWB9t.js similarity index 92% rename from public/admin/assets/dict-CkTsGkap.js rename to public/admin/assets/dict-X8lDWB9t.js index cf83687..f1b44a5 100644 --- a/public/admin/assets/dict-CkTsGkap.js +++ b/public/admin/assets/dict-X8lDWB9t.js @@ -1 +1 @@ -import{r as e}from"./index-jb05DpEw.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}; \ No newline at end of file +import{r as e}from"./index-DTIMLswB.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}; \ No newline at end of file diff --git a/public/admin/assets/grid-members-ByD9ePVc.js b/public/admin/assets/grid-members-C1uECQyX.js similarity index 96% rename from public/admin/assets/grid-members-ByD9ePVc.js rename to public/admin/assets/grid-members-C1uECQyX.js index 148dc36..d599b00 100644 --- a/public/admin/assets/grid-members-ByD9ePVc.js +++ b/public/admin/assets/grid-members-C1uECQyX.js @@ -1 +1 @@ -import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as s,Xt as c,Y as l,at as u,b as d,d as f,ht as p,m,ot as h,q as g,tn as _,x as v}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as y,l as b,r as x}from"./index-jb05DpEw.js";import{t as S}from"./usePageLoad-DFTLo_Lv.js";import{r as C}from"./admin-list-CBoToEFo.js";import{r as w}from"./research-directions-Y7zStqVF.js";import{p as T}from"./teachers-CirjzrhY.js";async function E(e){let{data:t}=await x.get(`/admin/v1/grid-members`,{params:e});return t.data}async function D(e){let{data:t}=await x.post(`/admin/v1/grid-members`,e);return t.data}async function O(e,t){let{data:n}=await x.put(`/admin/v1/grid-members/${e}`,t);return n}async function k(e,t){let{data:n}=await x.post(`/admin/v1/grid-members/${e}/password`,{password:t});return n}async function A(e){let{data:t}=await x.delete(`/admin/v1/grid-members/${e}`);return t}var j={class:`list-page`},M={class:`page-header`},N={class:`list-filter-bar`},P={class:`table-row-actions`},F={class:`list-pager`},I=n({__name:`index`,setup(n){let x=p(!1),I=p([]),L=p({current_page:1,per_page:20,total:0}),R=p(``),z=p(1),B=p([]),V=p([]),H=p(!1),U=p(null),W=p({username:``,password:``,real_name:``,mobile:``,email:``,status:1,university_ids:[],research_direction_ids:[]});async function G(){let[e,t]=await Promise.all([T({page:1,page_size:500,simple:1}),w()]);B.value=e.items.map(e=>({id:e.id,name:e.name})),V.value=t.map(e=>({id:e.id,name:e.name}))}async function K(){x.value=!0;try{let e=await E({page:z.value,page_size:L.value.per_page,keyword:R.value||void 0});I.value=e.items,L.value=e.meta}finally{x.value=!1}}function q(){U.value=null,W.value={username:``,password:``,real_name:``,mobile:``,email:``,status:1,university_ids:[],research_direction_ids:[]},H.value=!0}function J(e){U.value=e,W.value={username:e.username,password:``,real_name:e.real_name||``,mobile:e.mobile||``,email:e.email||``,status:e.status,university_ids:e.universities?.map(e=>e.id)||[],research_direction_ids:e.research_directions?.map(e=>e.id)||[]},H.value=!0}async function Y(){if(!U.value&&!W.value.password){b.warning(`请设置初始密码`);return}if(!W.value.university_ids.length){b.warning(`请至少选择一个负责高校`);return}if(!W.value.research_direction_ids.length){b.warning(`请至少选择一个研究方向`);return}let e={real_name:W.value.real_name||null,mobile:W.value.mobile||null,email:W.value.email||null,status:W.value.status,university_ids:W.value.university_ids,research_direction_ids:W.value.research_direction_ids};U.value?(await O(U.value.id,e),W.value.password&&await k(U.value.id,W.value.password)):await D({username:W.value.username,password:W.value.password,...e}),b.success(`已保存`),H.value=!1,await K()}async function X(e){await y.confirm(`确定删除网格员「${e.username}」?`,`提示`,{type:`warning`}),await A(e.id),b.success(`已删除`),await K()}function Z(){z.value=1,K()}function Q(){R.value=``,z.value=1,K()}return S(async()=>{await G(),await K()}),(n,p)=>{let y=l(`el-button`),b=l(`el-input`),S=l(`el-table-column`),w=l(`el-tag`),T=l(`el-table`),E=l(`el-pagination`),D=l(`el-card`),O=l(`el-form-item`),k=l(`el-switch`),A=l(`el-option`),G=l(`el-select`),$=l(`el-form`),ee=l(`el-dialog`),te=s(`loading`);return i(),e(m,null,[d(`div`,j,[d(`div`,M,[p[13]||=d(`h1`,{class:`page-title`},`网格员管理`,-1),r(y,{type:`primary`,size:`small`,class:`btn-create`,onClick:q},{default:u(()=>[...p[12]||=[o(`新增网格员`,-1)]]),_:1})]),r(D,{shadow:`never`,class:`admin-list-card`},{default:u(()=>[d(`div`,N,[r(b,{modelValue:R.value,"onUpdate:modelValue":p[0]||=e=>R.value=e,placeholder:`账号/姓名/手机`,clearable:``,class:`filter-search`,onKeyup:f(Z,[`enter`])},null,8,[`modelValue`]),r(y,{type:`primary`,onClick:Z},{default:u(()=>[...p[14]||=[o(`搜索`,-1)]]),_:1}),r(y,{onClick:Q},{default:u(()=>[...p[15]||=[o(`重置`,-1)]]),_:1})]),h((i(),v(T,{data:I.value,"row-key":`id`},{default:u(()=>[r(S,{prop:`username`,label:`账号`,width:`130`}),r(S,{prop:`real_name`,label:`姓名`,width:`110`}),r(S,{label:`负责高校`,"min-width":`180`},{default:u(({row:t})=>[(i(!0),e(m,null,g(t.universities,e=>(i(),v(w,{key:e.id,size:`small`,style:{margin:`2px 4px 2px 0`}},{default:u(()=>[o(_(e.name),1)]),_:2},1024))),128))]),_:1}),r(S,{label:`研究方向`,"min-width":`180`},{default:u(({row:t})=>[(i(!0),e(m,null,g(t.research_directions,e=>(i(),v(w,{key:e.id,size:`small`,type:`info`,style:{margin:`2px 4px 2px 0`}},{default:u(()=>[o(_(e.name),1)]),_:2},1024))),128))]),_:1}),r(S,{label:`状态`,width:`90`,align:`center`},{default:u(({row:e})=>[d(`span`,{class:c([`status-badge`,t(C)(e.status)])},_(e.status===1?`启用`:`停用`),3)]),_:1}),r(S,{label:`操作`,width:`160`,fixed:`right`},{default:u(({row:e})=>[d(`div`,P,[r(y,{class:`btn-action-secondary`,onClick:t=>J(e)},{default:u(()=>[...p[16]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),r(y,{class:`btn-action-secondary`,onClick:t=>X(e)},{default:u(()=>[...p[17]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[te,x.value]]),d(`div`,F,[r(E,{"current-page":z.value,"onUpdate:currentPage":p[1]||=e=>z.value=e,layout:`total, prev, pager, next`,total:L.value.total,"page-size":L.value.per_page,onCurrentChange:K},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r(ee,{modelValue:H.value,"onUpdate:modelValue":p[11]||=e=>H.value=e,title:U.value?`编辑网格员`:`新增网格员`,width:`560px`},{footer:u(()=>[r(y,{onClick:p[10]||=e=>H.value=!1},{default:u(()=>[...p[18]||=[o(`取消`,-1)]]),_:1}),r(y,{type:`primary`,onClick:Y},{default:u(()=>[...p[19]||=[o(`保存`,-1)]]),_:1})]),default:u(()=>[r($,{"label-width":`100px`},{default:u(()=>[U.value?a(``,!0):(i(),v(O,{key:0,label:`账号`},{default:u(()=>[r(b,{modelValue:W.value.username,"onUpdate:modelValue":p[2]||=e=>W.value.username=e},null,8,[`modelValue`])]),_:1})),r(O,{label:U.value?`重置密码`:`初始密码`},{default:u(()=>[r(b,{modelValue:W.value.password,"onUpdate:modelValue":p[3]||=e=>W.value.password=e,type:`password`,"show-password":``,placeholder:U.value?`可留空`:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),r(O,{label:`姓名`},{default:u(()=>[r(b,{modelValue:W.value.real_name,"onUpdate:modelValue":p[4]||=e=>W.value.real_name=e},null,8,[`modelValue`])]),_:1}),r(O,{label:`手机`},{default:u(()=>[r(b,{modelValue:W.value.mobile,"onUpdate:modelValue":p[5]||=e=>W.value.mobile=e},null,8,[`modelValue`])]),_:1}),r(O,{label:`邮箱`},{default:u(()=>[r(b,{modelValue:W.value.email,"onUpdate:modelValue":p[6]||=e=>W.value.email=e},null,8,[`modelValue`])]),_:1}),r(O,{label:`状态`},{default:u(()=>[r(k,{modelValue:W.value.status,"onUpdate:modelValue":p[7]||=e=>W.value.status=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1}),r(O,{label:`负责高校`},{default:u(()=>[r(G,{modelValue:W.value.university_ids,"onUpdate:modelValue":p[8]||=e=>W.value.university_ids=e,multiple:``,filterable:``,style:{width:`100%`},placeholder:`选择高校`},{default:u(()=>[(i(!0),e(m,null,g(B.value,e=>(i(),v(A,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1}),r(O,{label:`研究方向`},{default:u(()=>[r(G,{modelValue:W.value.research_direction_ids,"onUpdate:modelValue":p[9]||=e=>W.value.research_direction_ids=e,multiple:``,filterable:``,style:{width:`100%`},placeholder:`选择研究方向`},{default:u(()=>[(i(!0),e(m,null,g(V.value,e=>(i(),v(A,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`])],64)}}});export{I as default}; \ No newline at end of file +import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as s,Xt as c,Y as l,at as u,b as d,d as f,ht as p,m,ot as h,q as g,tn as _,x as v}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as y,l as b,r as x}from"./index-DTIMLswB.js";import{t as S}from"./usePageLoad-DFTLo_Lv.js";import{r as C}from"./admin-list-CBoToEFo.js";import{r as w}from"./research-directions-StGwN-O7.js";import{p as T}from"./teachers-Cve-7Sy4.js";async function E(e){let{data:t}=await x.get(`/admin/v1/grid-members`,{params:e});return t.data}async function D(e){let{data:t}=await x.post(`/admin/v1/grid-members`,e);return t.data}async function O(e,t){let{data:n}=await x.put(`/admin/v1/grid-members/${e}`,t);return n}async function k(e,t){let{data:n}=await x.post(`/admin/v1/grid-members/${e}/password`,{password:t});return n}async function A(e){let{data:t}=await x.delete(`/admin/v1/grid-members/${e}`);return t}var j={class:`list-page`},M={class:`page-header`},N={class:`list-filter-bar`},P={class:`table-row-actions`},F={class:`list-pager`},I=n({__name:`index`,setup(n){let x=p(!1),I=p([]),L=p({current_page:1,per_page:20,total:0}),R=p(``),z=p(1),B=p([]),V=p([]),H=p(!1),U=p(null),W=p({username:``,password:``,real_name:``,mobile:``,email:``,status:1,university_ids:[],research_direction_ids:[]});async function G(){let[e,t]=await Promise.all([T({page:1,page_size:500,simple:1}),w()]);B.value=e.items.map(e=>({id:e.id,name:e.name})),V.value=t.map(e=>({id:e.id,name:e.name}))}async function K(){x.value=!0;try{let e=await E({page:z.value,page_size:L.value.per_page,keyword:R.value||void 0});I.value=e.items,L.value=e.meta}finally{x.value=!1}}function q(){U.value=null,W.value={username:``,password:``,real_name:``,mobile:``,email:``,status:1,university_ids:[],research_direction_ids:[]},H.value=!0}function J(e){U.value=e,W.value={username:e.username,password:``,real_name:e.real_name||``,mobile:e.mobile||``,email:e.email||``,status:e.status,university_ids:e.universities?.map(e=>e.id)||[],research_direction_ids:e.research_directions?.map(e=>e.id)||[]},H.value=!0}async function Y(){if(!U.value&&!W.value.password){b.warning(`请设置初始密码`);return}if(!W.value.university_ids.length){b.warning(`请至少选择一个负责高校`);return}if(!W.value.research_direction_ids.length){b.warning(`请至少选择一个研究方向`);return}let e={real_name:W.value.real_name||null,mobile:W.value.mobile||null,email:W.value.email||null,status:W.value.status,university_ids:W.value.university_ids,research_direction_ids:W.value.research_direction_ids};U.value?(await O(U.value.id,e),W.value.password&&await k(U.value.id,W.value.password)):await D({username:W.value.username,password:W.value.password,...e}),b.success(`已保存`),H.value=!1,await K()}async function X(e){await y.confirm(`确定删除网格员「${e.username}」?`,`提示`,{type:`warning`}),await A(e.id),b.success(`已删除`),await K()}function Z(){z.value=1,K()}function Q(){R.value=``,z.value=1,K()}return S(async()=>{await G(),await K()}),(n,p)=>{let y=l(`el-button`),b=l(`el-input`),S=l(`el-table-column`),w=l(`el-tag`),T=l(`el-table`),E=l(`el-pagination`),D=l(`el-card`),O=l(`el-form-item`),k=l(`el-switch`),A=l(`el-option`),G=l(`el-select`),$=l(`el-form`),ee=l(`el-dialog`),te=s(`loading`);return i(),e(m,null,[d(`div`,j,[d(`div`,M,[p[13]||=d(`h1`,{class:`page-title`},`网格员管理`,-1),r(y,{type:`primary`,size:`small`,class:`btn-create`,onClick:q},{default:u(()=>[...p[12]||=[o(`新增网格员`,-1)]]),_:1})]),r(D,{shadow:`never`,class:`admin-list-card`},{default:u(()=>[d(`div`,N,[r(b,{modelValue:R.value,"onUpdate:modelValue":p[0]||=e=>R.value=e,placeholder:`账号/姓名/手机`,clearable:``,class:`filter-search`,onKeyup:f(Z,[`enter`])},null,8,[`modelValue`]),r(y,{type:`primary`,onClick:Z},{default:u(()=>[...p[14]||=[o(`搜索`,-1)]]),_:1}),r(y,{onClick:Q},{default:u(()=>[...p[15]||=[o(`重置`,-1)]]),_:1})]),h((i(),v(T,{data:I.value,"row-key":`id`},{default:u(()=>[r(S,{prop:`username`,label:`账号`,width:`130`}),r(S,{prop:`real_name`,label:`姓名`,width:`110`}),r(S,{label:`负责高校`,"min-width":`180`},{default:u(({row:t})=>[(i(!0),e(m,null,g(t.universities,e=>(i(),v(w,{key:e.id,size:`small`,style:{margin:`2px 4px 2px 0`}},{default:u(()=>[o(_(e.name),1)]),_:2},1024))),128))]),_:1}),r(S,{label:`研究方向`,"min-width":`180`},{default:u(({row:t})=>[(i(!0),e(m,null,g(t.research_directions,e=>(i(),v(w,{key:e.id,size:`small`,type:`info`,style:{margin:`2px 4px 2px 0`}},{default:u(()=>[o(_(e.name),1)]),_:2},1024))),128))]),_:1}),r(S,{label:`状态`,width:`90`,align:`center`},{default:u(({row:e})=>[d(`span`,{class:c([`status-badge`,t(C)(e.status)])},_(e.status===1?`启用`:`停用`),3)]),_:1}),r(S,{label:`操作`,width:`160`,fixed:`right`},{default:u(({row:e})=>[d(`div`,P,[r(y,{class:`btn-action-secondary`,onClick:t=>J(e)},{default:u(()=>[...p[16]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),r(y,{class:`btn-action-secondary`,onClick:t=>X(e)},{default:u(()=>[...p[17]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[te,x.value]]),d(`div`,F,[r(E,{"current-page":z.value,"onUpdate:currentPage":p[1]||=e=>z.value=e,layout:`total, prev, pager, next`,total:L.value.total,"page-size":L.value.per_page,onCurrentChange:K},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r(ee,{modelValue:H.value,"onUpdate:modelValue":p[11]||=e=>H.value=e,title:U.value?`编辑网格员`:`新增网格员`,width:`560px`},{footer:u(()=>[r(y,{onClick:p[10]||=e=>H.value=!1},{default:u(()=>[...p[18]||=[o(`取消`,-1)]]),_:1}),r(y,{type:`primary`,onClick:Y},{default:u(()=>[...p[19]||=[o(`保存`,-1)]]),_:1})]),default:u(()=>[r($,{"label-width":`100px`},{default:u(()=>[U.value?a(``,!0):(i(),v(O,{key:0,label:`账号`},{default:u(()=>[r(b,{modelValue:W.value.username,"onUpdate:modelValue":p[2]||=e=>W.value.username=e},null,8,[`modelValue`])]),_:1})),r(O,{label:U.value?`重置密码`:`初始密码`},{default:u(()=>[r(b,{modelValue:W.value.password,"onUpdate:modelValue":p[3]||=e=>W.value.password=e,type:`password`,"show-password":``,placeholder:U.value?`可留空`:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),r(O,{label:`姓名`},{default:u(()=>[r(b,{modelValue:W.value.real_name,"onUpdate:modelValue":p[4]||=e=>W.value.real_name=e},null,8,[`modelValue`])]),_:1}),r(O,{label:`手机`},{default:u(()=>[r(b,{modelValue:W.value.mobile,"onUpdate:modelValue":p[5]||=e=>W.value.mobile=e},null,8,[`modelValue`])]),_:1}),r(O,{label:`邮箱`},{default:u(()=>[r(b,{modelValue:W.value.email,"onUpdate:modelValue":p[6]||=e=>W.value.email=e},null,8,[`modelValue`])]),_:1}),r(O,{label:`状态`},{default:u(()=>[r(k,{modelValue:W.value.status,"onUpdate:modelValue":p[7]||=e=>W.value.status=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1}),r(O,{label:`负责高校`},{default:u(()=>[r(G,{modelValue:W.value.university_ids,"onUpdate:modelValue":p[8]||=e=>W.value.university_ids=e,multiple:``,filterable:``,style:{width:`100%`},placeholder:`选择高校`},{default:u(()=>[(i(!0),e(m,null,g(B.value,e=>(i(),v(A,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1}),r(O,{label:`研究方向`},{default:u(()=>[r(G,{modelValue:W.value.research_direction_ids,"onUpdate:modelValue":p[9]||=e=>W.value.research_direction_ids=e,multiple:``,filterable:``,style:{width:`100%`},placeholder:`选择研究方向`},{default:u(()=>[(i(!0),e(m,null,g(V.value,e=>(i(),v(A,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`])],64)}}});export{I as default}; \ No newline at end of file diff --git a/public/admin/assets/index-jb05DpEw.js b/public/admin/assets/index-DTIMLswB.js similarity index 99% rename from public/admin/assets/index-jb05DpEw.js rename to public/admin/assets/index-DTIMLswB.js index bac679e..95f50dd 100644 --- a/public/admin/assets/index-jb05DpEw.js +++ b/public/admin/assets/index-DTIMLswB.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HomeView-BARide6a.js","assets/vue.runtime.esm-bundler-DUiYyeqQ.js","assets/rolldown-runtime-BYbx6iT9.js","assets/HomeView-DQR8Ah5o.css","assets/banners-BY60jvD-.js","assets/RichTextEditor-CvwjagK6.js","assets/RichTextEditor-B7FsLORh.css","assets/activities-Da3PCUHo.js","assets/courses-U0J1-mMf.js","assets/usePageLoad-DFTLo_Lv.js","assets/admin-list-CBoToEFo.js","assets/banners-DqMb6tvy.css","assets/crawler-OUbh_VNx.js","assets/assets-Wj17Zlgs.js","assets/dict-CkTsGkap.js","assets/research-directions-Y7zStqVF.js","assets/teachers-CirjzrhY.js","assets/crawler-VOFlHV61.css","assets/map-Dh8epoQE.js","assets/TeacherDetailDialog-BY1NDYPP.js","assets/demands-DTPLk14K.js","assets/teacherStar-By0_CBs7.js","assets/TeacherDetailDialog-F-dS04yC.css","assets/tiandituMap-DOhOVIi3.js","assets/map-BrRzZV0l.css","assets/dashboard-page-CpfEtxVi.css","assets/papers-Dtxcpe4H.js","assets/papers-ClX7jOH9.css","assets/universities-CpU0jq98.js","assets/universities-BrS2X24F.css","assets/dashboard-DlyqRLa3.js","assets/dashboard-DztDhF2i.css","assets/demands-LAAn9Pkv.js","assets/users-BE9HtqQW.js","assets/demands-Byb97vq_.css","assets/login-BK1tGghB.js","assets/login-ULkTC2R_.css","assets/activities-D7RRLXuc.js","assets/csv-export-Dog5TZxt.js","assets/csv-export-BJBhoiZr.css","assets/activities-DrhGy18S.css","assets/courses-BaY1NbOC.js","assets/news-CB2Z7r6R.js","assets/courses-D2cYE17y.css","assets/news-CCfjpL6m.js","assets/news-BY4O5zYe.css","assets/students-Ct75XZLa.js","assets/students-CX4D8gv2.css","assets/audit-logs-BR7rcSR4.js","assets/dict-CW3bULB4.js","assets/dict-kRNWqCBz.css","assets/grid-members-ByD9ePVc.js","assets/menus-Cc8c82My.js","assets/menus-86C-Rtop.js","assets/research-directions-Bn9dd2FC.js","assets/roles-BwiqCxdW.js","assets/roles-DMG09nlu.js","assets/roles-B_Rgis2K.css","assets/users-Co7RlyBg.js","assets/teachers-D6avaTco.js","assets/teachers-CGzqWDzH.css","assets/AdminLayout-DZsZmeMS.js","assets/AdminLayout-36MHwY55.css"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HomeView-BnX6Xt_3.js","assets/vue.runtime.esm-bundler-DUiYyeqQ.js","assets/rolldown-runtime-BYbx6iT9.js","assets/HomeView-DQR8Ah5o.css","assets/banners-BMy9ge9T.js","assets/RichTextEditor-BSUub6Rd.js","assets/RichTextEditor-B7FsLORh.css","assets/activities-zOsA7OhR.js","assets/courses-BrM6G2gc.js","assets/usePageLoad-DFTLo_Lv.js","assets/admin-list-CBoToEFo.js","assets/banners-DqMb6tvy.css","assets/crawler-DXXsyrmH.js","assets/assets-B5_Et8Pj.js","assets/dict-X8lDWB9t.js","assets/research-directions-StGwN-O7.js","assets/teachers-Cve-7Sy4.js","assets/crawler-VOFlHV61.css","assets/map-DSyVvuR0.js","assets/TeacherDetailDialog-SGxVTFii.js","assets/demands-CssxNgdQ.js","assets/teacherStar-By0_CBs7.js","assets/TeacherDetailDialog-F-dS04yC.css","assets/tiandituMap-BbTEN0Ou.js","assets/map-BrRzZV0l.css","assets/dashboard-page-CpfEtxVi.css","assets/papers-3VSMemUr.js","assets/papers-ClX7jOH9.css","assets/universities-EPS_mI41.js","assets/universities-D1jZCuFP.css","assets/dashboard-DoD5e1Jo.js","assets/dashboard-DztDhF2i.css","assets/demands-B9B65gIt.js","assets/users-BBYvhj2V.js","assets/demands-Byb97vq_.css","assets/login-BhFGNBB2.js","assets/login-ULkTC2R_.css","assets/activities-DYl2M41A.js","assets/csv-export-DYWqXZBS.js","assets/csv-export-BJBhoiZr.css","assets/activities-DrhGy18S.css","assets/courses-BnsdmT2t.js","assets/news-CXVgUu18.js","assets/courses-D2cYE17y.css","assets/news-CNkmO_x6.js","assets/news-BY4O5zYe.css","assets/students-CW43hkwk.js","assets/students-CX4D8gv2.css","assets/audit-logs-BSSuoZTi.js","assets/dict-BPnVfOXj.js","assets/dict-kRNWqCBz.css","assets/grid-members-C1uECQyX.js","assets/menus-ClGPwfR6.js","assets/menus-DT_CKpVr.js","assets/research-directions-BIEEUGLu.js","assets/roles-DkBQwmfK.js","assets/roles-BLfXxSGi.js","assets/roles-B_Rgis2K.css","assets/users-BKqYi4zs.js","assets/teachers-B_-YWY83.js","assets/teachers-CGzqWDzH.css","assets/AdminLayout-B7QrbiEr.js","assets/AdminLayout-36MHwY55.css"])))=>i.map(i=>d[i]); import{a as e,r as t,t as n}from"./rolldown-runtime-BYbx6iT9.js";import{$ as r,A as i,B as a,Bt as o,C as s,Ct as c,D as l,Dt as u,E as d,Et as f,F as p,G as m,H as h,Ht as g,I as _,It as v,J as y,K as b,Kt as x,L as S,Lt as C,M as w,Mt as T,N as E,Nt as D,O,Ot as k,Pt as A,Q as j,Qt as M,R as N,S as P,St as F,T as I,U as ee,Ut as te,V as ne,W as re,X as ie,Xt as L,Y as R,Z as z,Zt as ae,_ as oe,_t as se,a as ce,at as B,b as V,bt as le,c as ue,ct as de,d as fe,dt as pe,f as me,ft as he,g as ge,gt as _e,ht as H,it as ve,j as ye,jt as be,k as xe,l as Se,lt as Ce,m as we,mt as Te,n as Ee,nn as De,nt as Oe,ot as ke,p as Ae,pt as je,q as Me,r as Ne,rt as U,s as Pe,st as Fe,t as Ie,tn as W,tt as Le,u as Re,ut as ze,v as Be,vt as Ve,w as He,x as G,xt as Ue,y as K,yt as We,z as Ge}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var Ke=typeof window<`u`,qe,Je=e=>qe=e,Ye=Symbol();function Xe(e){return e&&typeof e==`object`&&Object.prototype.toString.call(e)===`[object Object]`&&typeof e.toJSON!=`function`}var Ze;(function(e){e.direct=`direct`,e.patchObject=`patch object`,e.patchFunction=`patch function`})(Ze||={});var Qe=typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:typeof globalThis==`object`?globalThis:{HTMLElement:null};function $e(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function et(e,t,n){let r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){at(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function tt(e){let t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return t.status>=200&&t.status<=299}function nt(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{let t=new MouseEvent(`click`,{bubbles:!0,cancelable:!0,view:window,detail:0,screenX:80,screenY:20,clientX:80,clientY:20,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null});e.dispatchEvent(t)}}var rt=typeof navigator==`object`?navigator:{userAgent:``},it=/Macintosh/.test(rt.userAgent)&&/AppleWebKit/.test(rt.userAgent)&&!/Safari/.test(rt.userAgent),at=Ke?typeof HTMLAnchorElement<`u`&&`download`in HTMLAnchorElement.prototype&&!it?ot:`msSaveOrOpenBlob`in rt?st:ct:()=>{};function ot(e,t=`download`,n){let r=document.createElement(`a`);r.download=t,r.rel=`noopener`,typeof e==`string`?(r.href=e,r.origin===location.origin?nt(r):tt(r.href)?et(e,t,n):(r.target=`_blank`,nt(r))):(r.href=URL.createObjectURL(e),setTimeout(function(){URL.revokeObjectURL(r.href)},4e4),setTimeout(function(){nt(r)},0))}function st(e,t=`download`,n){if(typeof e==`string`)if(tt(e))et(e,t,n);else{let t=document.createElement(`a`);t.href=e,t.target=`_blank`,setTimeout(function(){nt(t)})}else navigator.msSaveOrOpenBlob($e(e,n),t)}function ct(e,t,n,r){if(r||=open(``,`_blank`),r&&(r.document.title=r.document.body.innerText=`downloading...`),typeof e==`string`)return et(e,t,n);let i=e.type===`application/octet-stream`,a=/constructor/i.test(String(Qe.HTMLElement))||`safari`in Qe,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||i&&a||it)&&typeof FileReader<`u`){let t=new FileReader;t.onloadend=function(){let e=t.result;if(typeof e!=`string`)throw r=null,Error(`Wrong reader.result type`);e=o?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{let t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout(function(){URL.revokeObjectURL(t)},4e4)}}var{assign:lt}=Object;function ut(){let e=Fe(!0),t=e.run(()=>H({})),n=[],r=[],i=pe({install(e){Je(i),i._a=e,e.provide(Ye,i),e.config.globalProperties.$pinia=i,r.forEach(e=>n.push(e)),r=[]},use(e){return this._a?n.push(e):r.push(e),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return i}var dt=()=>{};function ft(e,t,n,r=dt){e.add(t);let i=()=>{e.delete(t)&&r()};return!n&&de()&&he(i),i}function pt(e,...t){e.forEach(e=>{e(...t)})}var mt=e=>e(),ht=Symbol(),gt=Symbol();function _t(e,t){e instanceof Map&&t instanceof Map?t.forEach((t,n)=>e.set(n,t)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(let n in t){if(!t.hasOwnProperty(n))continue;let r=t[n],i=e[n];Xe(i)&&Xe(r)&&e.hasOwnProperty(n)&&!ze(r)&&!Ce(r)?e[n]=_t(i,r):e[n]=r}return e}var vt=Symbol();function yt(e){return!Xe(e)||!Object.prototype.hasOwnProperty.call(e,vt)}var{assign:bt}=Object;function xt(e){return!!(ze(e)&&e.effect)}function St(e,t,n,r){let{state:i,actions:a,getters:o}=t,s=n.state.value[e],c;function l(){return s||(n.state.value[e]=i?i():{}),bt(le(n.state.value[e]),a,Object.keys(o||{}).reduce((t,r)=>(t[r]=pe(K(()=>{Je(n);let t=n._s.get(e);return o[r].call(t,t)})),t),{}))}return c=Ct(e,l,t,n,r,!0),c}function Ct(e,t,n={},r,i,a){let o,s=bt({actions:{}},n),c={deep:!0},l,u,d=new Set,f=new Set,p=r.state.value[e];!a&&!p&&(r.state.value[e]={}),H({});let m;function h(t){let n;l=u=!1,typeof t==`function`?(t(r.state.value[e]),n={type:Ze.patchFunction,storeId:e,events:void 0}):(_t(r.state.value[e],t),n={type:Ze.patchObject,payload:t,storeId:e,events:void 0});let i=m=Symbol();_().then(()=>{m===i&&(l=!0)}),u=!0,pt(d,n,r.state.value[e])}let g=a?function(){let{state:e}=n,t=e?e():{};this.$patch(e=>{bt(e,t)})}:dt;function v(){o.stop(),d.clear(),f.clear(),r._s.delete(e)}let y=(t,n=``)=>{if(ht in t)return t[gt]=n,t;let i=function(){Je(r);let n=Array.from(arguments),a=new Set,o=new Set;function s(e){a.add(e)}function c(e){o.add(e)}pt(f,{args:n,name:i[gt],store:b,after:s,onError:c});let l;try{l=t.apply(this&&this.$id===e?this:b,n)}catch(e){throw pt(o,e),e}return l instanceof Promise?l.then(e=>(pt(a,e),e)).catch(e=>(pt(o,e),Promise.reject(e))):(pt(a,l),l)};return i[ht]=!0,i[gt]=n,i},b=je({_p:r,$id:e,$onAction:ft.bind(null,f),$patch:h,$reset:g,$subscribe(t,n={}){let i=ft(d,t,n.detached,()=>a()),a=o.run(()=>U(()=>r.state.value[e],r=>{(n.flush===`sync`?u:l)&&t({storeId:e,type:Ze.direct,events:void 0},r)},bt({},c,n)));return i},$dispose:v});r._s.set(e,b);let x=(r._a&&r._a.runWithContext||mt)(()=>r._e.run(()=>(o=Fe()).run(()=>t({action:y}))));for(let t in x){let n=x[t];ze(n)&&!xt(n)||Ce(n)?a||(p&&yt(n)&&(ze(n)?n.value=p[t]:_t(n,p[t])),r.state.value[e][t]=n):typeof n==`function`&&(x[t]=y(n,t),s.actions[t]=n)}return bt(b,x),bt(Ve(b),x),Object.defineProperty(b,`$state`,{get:()=>r.state.value[e],set:e=>{h(t=>{bt(t,e)})}}),r._p.forEach(e=>{bt(b,o.run(()=>e({store:b,app:r._a,pinia:r,options:s})))}),p&&a&&n.hydrate&&n.hydrate(b.$state,p),l=!0,u=!0,b}function wt(e,t,n){let r,i=typeof t==`function`;r=i?n:t;function a(n,a){let o=ye();return n||=o?w(Ye,null):null,n&&Je(n),n=qe,n._s.has(e)||(i?Ct(e,t,r,n):St(e,r,n)),n._s.get(e)}return a.$id=e,a}var q={tab:`Tab`,enter:`Enter`,space:`Space`,left:`ArrowLeft`,up:`ArrowUp`,right:`ArrowRight`,down:`ArrowDown`,esc:`Escape`,delete:`Delete`,backspace:`Backspace`,numpadEnter:`NumpadEnter`,pageUp:`PageUp`,pageDown:`PageDown`,home:`Home`,end:`End`},Tt=[`left`,`center`,`right`],Et=[`year`,`years`,`month`,`months`,`date`,`dates`,`week`,`datetime`,`datetimerange`,`daterange`,`monthrange`,`yearrange`],Dt=[`sun`,`mon`,`tue`,`wed`,`thu`,`fri`,`sat`],Ot=`update:modelValue`,kt=`change`,At=`input`,jt=Symbol(`INSTALLED_KEY`),Mt=[``,`default`,`small`,`large`];function Nt(e,t){let n=se();return ve(()=>{n.value=e()},{...t,flush:t?.flush??`sync`}),Te(n)}function Pt(e){return de()?(he(e),!0):!1}function Ft(e){return typeof e==`function`?e():c(e)}function It(e){return ze(e)?je(new Proxy({},{get(t,n,r){return c(Reflect.get(e.value,n,r))},set(t,n,r){return ze(e.value[n])&&!ze(r)?e.value[n].value=r:e.value[n]=r,!0},deleteProperty(t,n){return Reflect.deleteProperty(e.value,n)},has(t,n){return Reflect.has(e.value,n)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}})):je(e)}function Lt(e){return It(K(e))}var Rt=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var zt=e=>e!==void 0,Bt=e=>e!=null,Vt=Object.prototype.toString,Ht=e=>Vt.call(e)===`[object Object]`,Ut=(e,t,n)=>Math.min(n,Math.max(t,e)),Wt=()=>{},Gt=Kt();function Kt(){return Rt&&(window==null?void 0:window.navigator)?.userAgent&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||(window==null?void 0:window.navigator)?.maxTouchPoints>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function qt(e,t){function n(...n){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(r).catch(i)})}return n}function Jt(e,t={}){let n,r,i=Wt,a=e=>{clearTimeout(e),i(),i=Wt};return o=>{let s=Ft(e),c=Ft(t.maxWait);return n&&a(n),s<=0||c!==void 0&&c<=0?(r&&=(a(r),null),Promise.resolve(o())):new Promise((e,l)=>{i=t.rejectOnCancel?l:e,c&&!r&&(r=setTimeout(()=>{n&&a(n),r=null,e(o())},c)),n=setTimeout(()=>{r&&a(r),r=null,e(o())},s)})}}function Yt(...e){let t=0,n,r=!0,i=Wt,a,o,s,c,l;!ze(e[0])&&typeof e[0]==`object`?{delay:o,trailing:s=!0,leading:c=!0,rejectOnCancel:l=!1}=e[0]:[o,s=!0,c=!0,l=!1]=e;let u=()=>{n&&(clearTimeout(n),n=void 0,i(),i=Wt)};return e=>{let d=Ft(o),f=Date.now()-t,p=()=>a=e();return u(),d<=0?(t=Date.now(),p()):(f>d&&(c||!r)?(t=Date.now(),p()):s&&(a=new Promise((e,a)=>{i=l?a:e,n=setTimeout(()=>{t=Date.now(),r=!0,e(p()),u()},Math.max(0,d-f))})),!c&&!n&&(n=setTimeout(()=>r=!0,d)),r=!1,a)}}function Xt(e){return e||O()}function Zt(e,t=200,n={}){return qt(Jt(t,n),e)}function Qt(e,t=200,n={}){let r=H(e.value),i=Zt(()=>{r.value=e.value},t,n);return U(e,()=>i()),r}function $t(e,t=200,n=!1,r=!0,i=!1){return qt(Yt(t,n,r,i),e)}function en(e,t=!0,n){Xt()?h(e,n):t?e():_(e)}function tn(e,t,n={}){let{immediate:r=!0}=n,i=H(!1),a=null;function o(){a&&=(clearTimeout(a),null)}function s(){i.value=!1,o()}function c(...n){o(),i.value=!0,a=setTimeout(()=>{i.value=!1,a=null,e(...n)},Ft(t))}return r&&(i.value=!0,Rt&&c()),Pt(s),{isPending:Te(i),start:c,stop:s}}var nn=Rt?window:void 0,rn=Rt?window.document:void 0;Rt&&window.navigator,Rt&&window.location;function an(e){let t=Ft(e);return t?.$el??t}function on(...e){let t,n,r,i;if(typeof e[0]==`string`||Array.isArray(e[0])?([n,r,i]=e,t=nn):[t,n,r,i]=e,!t)return Wt;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);let a=[],o=()=>{a.forEach(e=>e()),a.length=0},s=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),c=U(()=>[an(t),Ft(i)],([e,t])=>{if(o(),!e)return;let i=Ht(t)?{...t}:t;a.push(...n.flatMap(t=>r.map(n=>s(e,t,n,i))))},{immediate:!0,flush:`post`}),l=()=>{c(),o()};return Pt(l),l}var sn=!1;function cn(e,t,n={}){let{window:r=nn,ignore:i=[],capture:a=!0,detectIframe:o=!1}=n;if(!r)return Wt;Gt&&!sn&&(sn=!0,Array.from(r.document.body.children).forEach(e=>e.addEventListener(`click`,Wt)),r.document.documentElement.addEventListener(`click`,Wt));let s=!0,c=e=>Ft(i).some(t=>{if(typeof t==`string`)return Array.from(r.document.querySelectorAll(t)).some(t=>t===e.target||e.composedPath().includes(t));{let n=an(t);return n&&(e.target===n||e.composedPath().includes(n))}});function l(e){let t=Ft(e);return t&&t.$.subTree.shapeFlag===16}function u(e,t){let n=Ft(e),r=n.$.subTree&&n.$.subTree.children;return r==null||!Array.isArray(r)?!1:r.some(e=>e.el===t.target||t.composedPath().includes(e.el))}let d=n=>{let r=an(e);if(n.target!=null&&!(!(r instanceof Element)&&l(e)&&u(e,n))&&!(!r||r===n.target||n.composedPath().includes(r))){if(n.detail===0&&(s=!c(n)),!s){s=!0;return}t(n)}},f=!1,p=[on(r,`click`,e=>{f||(f=!0,setTimeout(()=>{f=!1},0),d(e))},{passive:!0,capture:a}),on(r,`pointerdown`,t=>{let n=an(e);s=!c(t)&&!!(n&&!t.composedPath().includes(n))},{passive:!0}),o&&on(r,`blur`,n=>{setTimeout(()=>{let i=an(e);r.document.activeElement?.tagName===`IFRAME`&&!i?.contains(r.document.activeElement)&&t(n)},0)})].filter(Boolean);return()=>p.forEach(e=>e())}function ln(){let e=H(!1),t=O();return t&&h(()=>{e.value=!0},t),e}function un(e){let t=ln();return K(()=>(t.value,!!e()))}function dn(e,t,n={}){let{window:r=nn,...i}=n,a,o=un(()=>r&&`MutationObserver`in r),s=()=>{a&&=(a.disconnect(),void 0)},c=K(()=>{let t=Ft(e),n=(Array.isArray(t)?t:[t]).map(an).filter(Bt);return new Set(n)}),l=U(()=>c.value,e=>{s(),o.value&&e.size&&(a=new MutationObserver(t),e.forEach(e=>a.observe(e,i)))},{immediate:!0,flush:`post`}),u=()=>a?.takeRecords(),d=()=>{l(),s()};return Pt(d),{isSupported:o,stop:d,takeRecords:u}}function fn(e={}){let{window:t=nn,deep:n=!0,triggerOnRemoval:r=!1}=e,i=e.document??t?.document,a=()=>{let e=i?.activeElement;if(n)for(;e?.shadowRoot;)e=e?.shadowRoot?.activeElement;return e},o=H(),s=()=>{o.value=a()};return t&&(on(t,`blur`,e=>{e.relatedTarget===null&&s()},!0),on(t,`focus`,s,!0)),r&&dn(i,e=>{e.filter(e=>e.removedNodes.length).map(e=>Array.from(e.removedNodes)).flat().forEach(e=>{e===o.value&&s()})},{childList:!0,subtree:!0}),s(),o}function pn(e,t={}){let{window:n=nn}=t,r=un(()=>n&&`matchMedia`in n&&typeof n.matchMedia==`function`),i,a=H(!1),o=e=>{a.value=e.matches},s=()=>{i&&(`removeEventListener`in i?i.removeEventListener(`change`,o):i.removeListener(o))},c=ve(()=>{r.value&&(s(),i=n.matchMedia(Ft(e)),`addEventListener`in i?i.addEventListener(`change`,o):i.addListener(o),a.value=i.matches)});return Pt(()=>{c(),s(),i=void 0}),a}function mn(e){return JSON.parse(JSON.stringify(e))}function hn(e,t,n={}){let{window:r=nn,initialValue:i,observe:a=!1}=n,o=H(i),s=K(()=>an(t)||r?.document?.documentElement);function c(){let t=Ft(e),n=Ft(s);n&&r&&t&&(o.value=r.getComputedStyle(n).getPropertyValue(t)?.trim()||i)}return a&&dn(s,c,{attributeFilter:[`style`,`class`],window:r}),U([s,()=>Ft(e)],(e,t)=>{t[0]&&t[1]&&t[0].style.removeProperty(t[1]),c()},{immediate:!0}),U(o,t=>{let n=Ft(e);s.value?.style&&n&&(t==null?s.value.style.removeProperty(n):s.value.style.setProperty(n,t))}),o}function gn(e={}){let{document:t=rn}=e;if(!t)return H(`visible`);let n=H(t.visibilityState);return on(t,`visibilitychange`,()=>{n.value=t.visibilityState}),n}function _n(e,t,n={}){let{window:r=nn,...i}=n,a,o=un(()=>r&&`ResizeObserver`in r),s=()=>{a&&=(a.disconnect(),void 0)},c=U(K(()=>{let t=Ft(e);return Array.isArray(t)?t.map(e=>an(e)):[an(t)]}),e=>{if(s(),o.value&&r){a=new ResizeObserver(t);for(let t of e)t&&a.observe(t,i)}},{immediate:!0,flush:`post`}),l=()=>{s(),c()};return Pt(l),{isSupported:o,stop:l}}function vn(e,t={}){let{reset:n=!0,windowResize:r=!0,windowScroll:i=!0,immediate:a=!0,updateTiming:o=`sync`}=t,s=H(0),c=H(0),l=H(0),u=H(0),d=H(0),f=H(0),p=H(0),m=H(0);function h(){let t=an(e);if(!t){n&&(s.value=0,c.value=0,l.value=0,u.value=0,d.value=0,f.value=0,p.value=0,m.value=0);return}let r=t.getBoundingClientRect();s.value=r.height,c.value=r.bottom,l.value=r.left,u.value=r.right,d.value=r.top,f.value=r.width,p.value=r.x,m.value=r.y}function g(){o===`sync`?h():o===`next-frame`&&requestAnimationFrame(()=>h())}return _n(e,g),U(()=>an(e),e=>!e&&g()),dn(e,g,{attributeFilter:[`style`,`class`]}),i&&on(`scroll`,g,{capture:!0,passive:!0}),r&&on(`resize`,g,{passive:!0}),en(()=>{a&&g()}),{height:s,bottom:c,left:l,right:u,top:d,width:f,x:p,y:m,update:g}}function yn(e,t={width:0,height:0},n={}){let{window:r=nn,box:i=`content-box`}=n,a=K(()=>(an(e)?.namespaceURI)?.includes(`svg`)),o=H(t.width),s=H(t.height),{stop:c}=_n(e,([t])=>{let n=i===`border-box`?t.borderBoxSize:i===`content-box`?t.contentBoxSize:t.devicePixelContentBoxSize;if(r&&a.value){let t=an(e);if(t){let e=t.getBoundingClientRect();o.value=e.width,s.value=e.height}}else if(n){let e=Array.isArray(n)?n:[n];o.value=e.reduce((e,{inlineSize:t})=>e+t,0),s.value=e.reduce((e,{blockSize:t})=>e+t,0)}else o.value=t.contentRect.width,s.value=t.contentRect.height},n);en(()=>{let n=an(e);n&&(o.value=`offsetWidth`in n?n.offsetWidth:t.width,s.value=`offsetHeight`in n?n.offsetHeight:t.height)});let l=U(()=>an(e),e=>{o.value=e?t.width:0,s.value=e?t.height:0});function u(){c(),l()}return{width:o,height:s,stop:u}}function bn(e,t,n={}){let{root:r,rootMargin:i=`0px`,threshold:a=0,window:o=nn,immediate:s=!0}=n,c=un(()=>o&&`IntersectionObserver`in o),l=K(()=>{let t=Ft(e);return(Array.isArray(t)?t:[t]).map(an).filter(Bt)}),u=Wt,d=H(s),f=c.value?U(()=>[l.value,an(r),d.value],([e,n])=>{if(u(),!d.value||!e.length)return;let r=new IntersectionObserver(t,{root:an(n),rootMargin:i,threshold:a});e.forEach(e=>e&&r.observe(e)),u=()=>{r.disconnect(),u=Wt}},{immediate:s,flush:`post`}):Wt,p=()=>{u(),f(),d.value=!1};return Pt(p),{isSupported:c,isActive:d,pause(){u(),d.value=!1},resume(){d.value=!0},stop:p}}function xn(e,t,n,r={}){let{clone:i=!1,passive:a=!1,eventName:o,deep:s=!1,defaultValue:c,shouldEmit:l}=r,u=O(),d=n||u?.emit||(u?.$emit)?.bind(u)||(u?.proxy?.$emit)?.bind(u?.proxy),f=o;t||=`modelValue`,f||=`update:${t.toString()}`;let p=e=>i?typeof i==`function`?i(e):mn(e):e,m=()=>zt(e[t])?p(e[t]):c,h=e=>{l?l(e)&&d(f,e):d(f,e)};if(a){let n=H(m()),r=!1;return U(()=>e[t],e=>{r||(r=!0,n.value=p(e),_(()=>r=!1))}),U(n,n=>{!r&&(n!==e[t]||s)&&h(n)},{deep:s}),n}else return K({get(){return m()},set(e){h(e)}})}function Sn(e={}){let{window:t=nn}=e;if(!t)return H(!1);let n=H(t.document.hasFocus());return on(t,`blur`,()=>{n.value=!1}),on(t,`focus`,()=>{n.value=!0}),n}function Cn(e={}){let{window:t=nn,initialWidth:n=1/0,initialHeight:r=1/0,listenOrientation:i=!0,includeScrollbar:a=!0,type:o=`inner`}=e,s=H(n),c=H(r),l=()=>{t&&(o===`outer`?(s.value=t.outerWidth,c.value=t.outerHeight):a?(s.value=t.innerWidth,c.value=t.innerHeight):(s.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight))};return l(),en(l),on(`resize`,l,{passive:!0}),i&&U(pn(`(orientation: portrait)`),()=>l()),{width:s,height:c}}var wn=()=>Rt&&/firefox/i.test(window.navigator.userAgent),Tn=()=>Rt&&/android/i.test(window.navigator.userAgent),En=typeof global==`object`&&global&&global.Object===Object&&global,Dn=typeof self==`object`&&self&&self.Object===Object&&self,On=En||Dn||Function(`return this`)(),kn=On.Symbol,An=Object.prototype,jn=An.hasOwnProperty,Mn=An.toString,Nn=kn?kn.toStringTag:void 0;function Pn(e){var t=jn.call(e,Nn),n=e[Nn];try{e[Nn]=void 0;var r=!0}catch{}var i=Mn.call(e);return r&&(t?e[Nn]=n:delete e[Nn]),i}var Fn=Object.prototype.toString;function In(e){return Fn.call(e)}var Ln=`[object Null]`,Rn=`[object Undefined]`,zn=kn?kn.toStringTag:void 0;function Bn(e){return e==null?e===void 0?Rn:Ln:zn&&zn in Object(e)?Pn(e):In(e)}function Vn(e){return typeof e==`object`&&!!e}var Hn=`[object Symbol]`;function Un(e){return typeof e==`symbol`||Vn(e)&&Bn(e)==Hn}function Wn(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n0){if(++t>=Rr)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Hr(e){return function(){return e}}var Ur=function(){try{var e=jr(Object,`defineProperty`);return e({},``,{}),e}catch{}}(),Wr=Vr(Ur?function(e,t){return Ur(e,`toString`,{configurable:!0,enumerable:!1,value:Hr(t),writable:!0})}:dr);function Gr(e,t){for(var n=-1,r=e==null?0:e.length;++n-1}var Zr=9007199254740991,Qr=/^(?:0|[1-9]\d*)$/;function $r(e,t){var n=typeof e;return t??=Zr,!!t&&(n==`number`||n!=`symbol`&&Qr.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=ci}function ui(e){return e!=null&&li(e.length)&&!gr(e)}function di(e,t,n){if(!er(n))return!1;var r=typeof t;return(r==`number`?ui(n)&&$r(t,n.length):r==`string`&&t in n)?ti(n[t],e):!1}function fi(e){return si(function(t,n){var r=-1,i=n.length,a=i>1?n[i-1]:void 0,o=i>2?n[2]:void 0;for(a=e.length>3&&typeof a==`function`?(i--,a):void 0,o&&di(n[0],n[1],o)&&(a=i<3?void 0:a,i=1),t=Object(t);++r-1}function La(e,t){var n=this.__data__,r=Ma(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function Ra(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t0&&n(s)?t>1?uo(s,t-1,n,r,i):so(i,s):r||(i[i.length]=s)}return i}function fo(e){return e!=null&&e.length?uo(e,1):[]}function po(e){return Wr(oi(e,void 0,fo),e+``)}var mo=ca(Object.getPrototypeOf,Object),ho=`[object Object]`,go=Function.prototype,_o=Object.prototype,vo=go.toString,yo=_o.hasOwnProperty,bo=vo.call(Object);function xo(e){if(!Vn(e)||Bn(e)!=ho)return!1;var t=mo(e);if(t===null)return!0;var n=yo.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n instanceof n&&vo.call(n)==bo}function So(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),n=n>i?i:n,n<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var a=Array(i);++r=t?e:t)),e}function To(e,t,n){return n===void 0&&(n=t,t=void 0),n!==void 0&&(n=or(n),n=n===n?n:0),t!==void 0&&(t=or(t),t=t===t?t:0),wo(or(e),t,n)}function Eo(){this.__data__=new Ra,this.size=0}function Do(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function Oo(e){return this.__data__.get(e)}function ko(e){return this.__data__.has(e)}var Ao=200;function jo(e,t){var n=this.__data__;if(n instanceof Ra){var r=n.__data__;if(!za||r.lengths))return!1;var l=a.get(e),u=a.get(t);if(l&&u)return l==t&&u==e;var d=-1,f=!0,p=n&Bc?new Ic:void 0;for(a.set(e,t),a.set(t,e);++d=t||n<0||d&&r>=a}function _(){var e=Rl();if(g(e))return v(e);s=setTimeout(_,h(e))}function v(e){return s=void 0,f&&r?p(e):(r=i=void 0,o)}function y(){s!==void 0&&clearTimeout(s),l=0,r=c=i=s=void 0}function b(){return s===void 0?o:v(Rl())}function x(){var e=Rl(),n=g(e);if(r=arguments,i=this,c=e,n){if(s===void 0)return m(c);if(d)return clearTimeout(s),s=setTimeout(_,t),p(c)}return s===void 0&&(s=setTimeout(_,t)),o}return x.cancel=y,x.flush=b,x}function Ul(e,t,n){(n!==void 0&&!ti(e[t],n)||n===void 0&&!(t in e))&&ei(e,t,n)}function Wl(e){return Vn(e)&&ui(e)}function Gl(e,t){if(!(t===`constructor`&&typeof e[t]==`function`)&&t!=`__proto__`)return e[t]}function Kl(e){return ii(e,ga(e))}function ql(e,t,n,r,i,a,o){var s=Gl(e,n),c=Gl(t,n),l=o.get(c);if(l){Ul(e,n,l);return}var u=a?a(s,c,n+``,e,t,o):void 0,d=u===void 0;if(d){var f=Gn(c),p=!f&&Ei(c),m=!f&&!p&&aa(c);u=c,f||p||m?Gn(s)?u=s:Wl(s)?u=Lr(s):p?(d=!1,u=zo(c,!0)):m?(d=!1,u=Cs(c,!0)):u=[]:xo(c)||xi(c)?(u=s,xi(s)?u=Kl(s):(!er(s)||gr(s))&&(u=Ws(c))):d=!1}d&&(o.set(c,u),i(u,c,r,a,o),o.delete(c)),Ul(e,n,u)}function Jl(e,t,n,r,i){e!==t&&Pl(t,function(a,o){if(i||=new Mo,er(a))ql(e,t,o,n,Jl,r,i);else{var s=r?r(Gl(e,o),a,o+``,e,t,i):void 0;s===void 0&&(s=a),Ul(e,o,s)}},ga)}function Yl(e,t,n){for(var r=-1,i=e==null?0:e.length;++r1,t}),ii(e,Xo(e),n),r&&(n=kc(n,hu|gu|_u,mu));for(var i=t.length;i--;)pu(n,t[i]);return n});function yu(e,t,n,r){if(!er(e))return e;t=no(t,e);for(var i=-1,a=t.length,o=a-1,s=e;s!=null&&++i=Du){var l=t?null:Eu(e);if(l)return Uc(l);o=!1,i=Rc,c=new Ic}else c=t?[]:s;outer:for(;++re===void 0,ju=e=>typeof e==`boolean`,J=e=>typeof e==`number`,Mu=e=>!e&&e!==0||A(e)&&e.length===0||o(e)&&!Object.keys(e).length,Nu=e=>typeof Element>`u`?!1:e instanceof Element,Pu=e=>cu(e),Fu=e=>x(e)?!Number.isNaN(Number(e)):!1,Iu=e=>e===window,Lu=new Map;if(Rt){let e;document.addEventListener(`mousedown`,t=>e=t),document.addEventListener(`mouseup`,t=>{if(e){for(let n of Lu.values())for(let{documentHandler:r}of n)r(t,e);e=void 0}})}function Ru(e,t){let n=[];return A(t.arg)?n=t.arg:Nu(t.arg)&&n.push(t.arg),function(r,i){let a=t.instance.popperRef,o=r.target,s=i?.target,c=!t||!t.instance,l=!o||!s,u=e.contains(o)||e.contains(s),d=e===o,f=n.length&&n.some(e=>e?.contains(o))||n.length&&n.includes(s),p=a&&(a.contains(o)||a.contains(s));c||l||u||d||f||p||t.value(r,i)}}var zu={beforeMount(e,t){Lu.has(e)||Lu.set(e,[]),Lu.get(e).push({documentHandler:Ru(e,t),bindingFn:t.value})},updated(e,t){Lu.has(e)||Lu.set(e,[]);let n=Lu.get(e),r=n.findIndex(e=>e.bindingFn===t.oldValue),i={documentHandler:Ru(e,t),bindingFn:t.value};r>=0?n.splice(r,1,i):n.push(i)},unmounted(e){Lu.delete(e)}},Bu=`_RepeatClick`,Vu={beforeMount(e,t){let n=t.value,{interval:r=100,delay:i=600}=C(n)?{}:n,a,o,s=()=>C(n)?n():n.handler(),c=()=>{o&&=(clearTimeout(o),void 0),a&&=(clearInterval(a),void 0)},l=e=>{e.button===0&&(c(),s(),document.addEventListener(`mouseup`,c,{once:!0}),o=setTimeout(()=>{a=setInterval(()=>{s()},r)},i))};e[Bu]={start:l,clear:c},e.addEventListener(`mousedown`,l)},unmounted(e){if(!e[Bu])return;let{start:t,clear:n}=e[Bu];t&&e.removeEventListener(`mousedown`,t),n&&(n(),document.removeEventListener(`mouseup`,n)),e[Bu]=null}},Hu=`a[href],button:not([disabled]),button:not([hidden]),:not([tabindex="-1"]),input:not([disabled]),input:not([type="hidden"]),select:not([disabled]),textarea:not([disabled])`,Uu=e=>typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot,Wu=e=>typeof Element>`u`?!1:e instanceof Element,Gu=e=>getComputedStyle(e).position===`fixed`?!1:e.offsetParent!==null,Ku=e=>Array.from(e.querySelectorAll(Hu)).filter(e=>qu(e)&&Gu(e)),qu=e=>{if(e.tabIndex>0||e.tabIndex===0&&e.getAttribute(`tabIndex`)!==null)return!0;if(e.tabIndex<0||e.hasAttribute(`disabled`)||e.getAttribute(`aria-disabled`)===`true`)return!1;switch(e.nodeName){case`A`:return!!e.href&&e.rel!==`ignore`;case`INPUT`:return!(e.type===`hidden`||e.type===`file`);case`BUTTON`:case`SELECT`:case`TEXTAREA`:return!0;default:return!1}},Ju=function(e,t,...n){let r;r=t.includes(`mouse`)||t.includes(`click`)?`MouseEvents`:t.includes(`key`)?`KeyboardEvent`:`HTMLEvents`;let i=document.createEvent(r);return i.initEvent(t,...n),e.dispatchEvent(i),e},Yu=e=>!e.getAttribute(`aria-owns`),Xu=(e,t,n)=>{let{parentNode:r}=e;if(!r)return null;let i=r.querySelectorAll(n);return i[Array.prototype.indexOf.call(i,e)+t]||null},Zu=(e,t)=>{if(!e||!e.focus)return;let n=!1;Wu(e)&&!qu(e)&&!e.getAttribute(`tabindex`)&&(e.setAttribute(`tabindex`,`-1`),n=!0),e.focus(t),Wu(e)&&n&&e.removeAttribute(`tabindex`)},Qu=e=>{e&&(Zu(e),!Yu(e)&&e.click())},$u=(e,t,{checkForDefaultPrevented:n=!0}={})=>r=>{let i=e?.(r);if(n===!1||!i)return t?.(r)},ed=e=>t=>t.pointerType===`mouse`?e(t):void 0,td=e=>{if(e.code&&e.code!==`Unidentified`)return e.code;let t=nd(e);if(t){if(Object.values(q).includes(t))return t;switch(t){case` `:return q.space;default:return``}}return``},nd=e=>{let t=e.key&&e.key!==`Unidentified`?e.key:``;if(!t&&e.type===`keyup`&&Tn()){let n=e.target;t=n.value.charAt(n.selectionStart-1)}return t},rd=`_trap-focus-children`,id=[],ad=e=>{if(id.length===0)return;let t=td(e),n=id[id.length-1][rd];if(n.length>0&&t===q.tab){if(n.length===1){e.preventDefault(),document.activeElement!==n[0]&&n[0].focus();return}let t=e.shiftKey,r=e.target===n[0],i=e.target===n[n.length-1];r&&t&&(e.preventDefault(),n[n.length-1].focus()),i&&!t&&(e.preventDefault(),n[0].focus())}},od={beforeMount(e){e[rd]=Ku(e),id.push(e),id.length<=1&&document.addEventListener(`keydown`,ad)},updated(e){_(()=>{e[rd]=Ku(e)})},unmounted(){id.shift(),id.length===0&&document.removeEventListener(`keydown`,ad)}},sd=!1,cd,ld,ud,dd,fd,pd,md,hd,gd,_d,vd,yd,bd,xd,Sd;function Cd(){if(!sd){sd=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e),n=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(yd=/\b(iPhone|iP[ao]d)/.exec(e),bd=/\b(iP[ao]d)/.exec(e),_d=/Android/i.exec(e),xd=/FBAN\/\w+;/i.exec(e),Sd=/Mobile/i.exec(e),vd=!!/Win64/.exec(e),t){cd=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN,cd&&document&&document.documentMode&&(cd=document.documentMode);var r=/(?:Trident\/(\d+.\d+))/.exec(e);pd=r?parseFloat(r[1])+4:cd,ld=t[2]?parseFloat(t[2]):NaN,ud=t[3]?parseFloat(t[3]):NaN,dd=t[4]?parseFloat(t[4]):NaN,dd?(t=/(?:Chrome\/(\d+\.\d+))/.exec(e),fd=t&&t[1]?parseFloat(t[1]):NaN):fd=NaN}else cd=ld=ud=fd=dd=NaN;if(n){if(n[1]){var i=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);md=i?parseFloat(i[1].replace(`_`,`.`)):!0}else md=!1;hd=!!n[2],gd=!!n[3]}else md=hd=gd=!1}}var wd={ie:function(){return Cd()||cd},ieCompatibilityMode:function(){return Cd()||pd>cd},ie64:function(){return wd.ie()&&vd},firefox:function(){return Cd()||ld},opera:function(){return Cd()||ud},webkit:function(){return Cd()||dd},safari:function(){return wd.webkit()},chrome:function(){return Cd()||fd},windows:function(){return Cd()||hd},osx:function(){return Cd()||md},linux:function(){return Cd()||gd},iphone:function(){return Cd()||yd},mobile:function(){return Cd()||yd||bd||_d||Sd},nativeApp:function(){return Cd()||xd},android:function(){return Cd()||_d},ipad:function(){return Cd()||bd}},Td=wd,Ed=!!(typeof window<`u`&&window.document&&window.document.createElement),Dd={canUseDOM:Ed,canUseWorkers:typeof Worker<`u`,canUseEventListeners:Ed&&!!(window.addEventListener||window.attachEvent),canUseViewport:Ed&&!!window.screen,isInWorker:!Ed},Od;Dd.canUseDOM&&(Od=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature(``,``)!==!0);function kd(e,t){if(!Dd.canUseDOM||t&&!(`addEventListener`in document))return!1;var n=`on`+e,r=n in document;if(!r){var i=document.createElement(`div`);i.setAttribute(n,`return;`),r=typeof i[n]==`function`}return!r&&Od&&e===`wheel`&&(r=document.implementation.hasFeature(`Events.wheel`,`3.0`)),r}var Ad=kd,jd=10,Md=40,Nd=800;function Pd(e){var t=0,n=0,r=0,i=0;return`detail`in e&&(n=e.detail),`wheelDelta`in e&&(n=-e.wheelDelta/120),`wheelDeltaY`in e&&(n=-e.wheelDeltaY/120),`wheelDeltaX`in e&&(t=-e.wheelDeltaX/120),`axis`in e&&e.axis===e.HORIZONTAL_AXIS&&(t=n,n=0),r=t*jd,i=n*jd,`deltaY`in e&&(i=e.deltaY),`deltaX`in e&&(r=e.deltaX),(r||i)&&e.deltaMode&&(e.deltaMode==1?(r*=Md,i*=Md):(r*=Nd,i*=Nd)),r&&!t&&(t=r<1?-1:1),i&&!n&&(n=i<1?-1:1),{spinX:t,spinY:n,pixelX:r,pixelY:i}}Pd.getEventType=function(){return Td.firefox()?`DOMMouseScroll`:Ad(`wheel`)?`wheel`:`mousewheel`};var Fd=Pd,Id=`_Mousewheel`,Ld=function(e,t){if(e&&e.addEventListener){Rd(e);let n=function(e){let n=Fd(e);t&&Reflect.apply(t,this,[e,n])};e[Id]={wheelHandler:n},e.addEventListener(`wheel`,n,{passive:!0})}},Rd=e=>{e._Mousewheel?.wheelHandler&&(e.removeEventListener(`wheel`,e[Id].wheelHandler),e[Id]=null)},zd={beforeMount(e,t){Ld(e,t.value)},unmounted(e){Rd(e)},updated(e,t){t.value!==t.oldValue&&Ld(e,t.value)}};D();var Bd=e=>Object.keys(e),Vd=e=>Object.entries(e),Hd=(e,t,n)=>({get value(){return oo(e,t,n)},set value(n){Cu(e,t,n)}}),Ud=`__epPropKey`,Y=e=>e,Wd=e=>o(e)&&!!e.__epPropKey,Gd=(e,t)=>{if(!o(e)||Wd(e))return e;let{values:n,required:r,default:i,type:a,validator:s}=e,c={type:a,required:!!r,validator:n||s?r=>{let a=!1,o=[];if(n&&(o=Array.from(n),be(e,`default`)&&o.push(i),a||=o.includes(r)),s&&(a||=s(r)),!a&&o.length>0){let e=[...new Set(o)].map(e=>JSON.stringify(e)).join(`, `);Oe(`Invalid prop: validation failed${t?` for prop "${t}"`:``}. Expected one of [${e}], got value ${JSON.stringify(r)}.`)}return a}:void 0,[Ud]:!0};return be(e,`default`)&&(c.default=i),c},X=e=>au(Object.entries(e).map(([e,t])=>[e,Gd(t,e)])),Kd=X({to:{type:Y([String,Object]),required:!0},disabled:Boolean}),qd=X({zIndex:{type:Y([Number,String]),default:100},target:{type:String,default:``},offset:{type:Number,default:0},position:{type:String,values:[`top`,`bottom`],default:`top`},teleported:Boolean,appendTo:{type:Kd.to.type,default:`body`}}),Jd={scroll:({scrollTop:e,fixed:t})=>J(e)&&ju(t),[kt]:e=>ju(e)},Yd=class extends Error{constructor(e){super(e),this.name=`ElementPlusError`}};function Xd(e,t){throw new Yd(`[${e}] ${t}`)}function Zd(e,t){{let n=x(e)?new Yd(`[${e}] ${t}`):e;console.warn(n)}}var Qd=[`class`,`style`],$d=/^on[A-Z]/,ef=(e={})=>{let{excludeListeners:t=!1,excludeKeys:n}=e,r=K(()=>(n?.value||[]).concat(Qd)),i=O();return i?K(()=>au(Object.entries(i.proxy?.$attrs).filter(([e])=>!r.value.includes(e)&&!(t&&$d.test(e))))):(Zd(`use-attrs`,`getCurrentInstance() returned null. useAttrs() must be called at the top of a setup function`),K(()=>({})))};function tf(){let e=se(),t=H(0),n=K(()=>({minWidth:`${Math.max(t.value,11)}px`}));return _n(e,()=>{t.value=e.value?.getBoundingClientRect().width??0}),{calculatorRef:e,calculatorWidth:t,inputStyle:n}}var nf=({from:e,replacement:t,scope:n,version:r,ref:i,type:a=`API`},o)=>{U(()=>c(o),o=>{o&&Zd(n,`[${a}] ${e} is about to be deprecated in version ${r}, please use ${t} instead. For more detail, please visit: ${i} `)},{immediate:!0})};D();var rf=(e=``)=>e.replace(/[|\\{}()[\]^$+*?.]/g,`\\$&`).replace(/-/g,`\\x2d`),af=e=>k(e),of=`utils/dom/style`,sf=(e=``)=>e.split(` `).filter(e=>!!e.trim()),cf=(e,t)=>{if(!e||!t)return!1;if(t.includes(` `))throw Error(`className should not contain space.`);return e.classList.contains(t)},lf=(e,t)=>{!e||!t.trim()||e.classList.add(...sf(t))},uf=(e,t)=>{!e||!t.trim()||e.classList.remove(...sf(t))},df=(e,t)=>{if(!Rt||!e||!t||Uu(e))return``;let n=u(t);n===`float`&&(n=`cssFloat`);try{let t=e.style[n];if(t)return t;let r=document.defaultView?.getComputedStyle(e,``);return r?r[n]:``}catch{return e.style[n]}},ff=(e,t,n)=>{if(!(!e||!t))if(o(t))Vd(t).forEach(([t,n])=>ff(e,t,n));else{let r=u(t);e.style[r]=n}};function pf(e,t=`px`){if(!e&&e!==0)return``;if(J(e)||Fu(e))return`${e}${t}`;if(x(e))return e;Zd(of,`binding value must be a string or number`)}var mf=(e,t,n,r)=>{let i={offsetX:0,offsetY:0},a=H(!1),o=(t,n)=>{if(e.value){let{offsetX:a,offsetY:o}=i,s=e.value.getBoundingClientRect(),c=s.left,l=s.top,u=s.width,d=s.height,f=document.documentElement.clientWidth,p=document.documentElement.clientHeight,m=-c+a,h=-l+o,g=f-c-u+a,_=p-l-(d{let t=e.clientX,n=e.clientY,{offsetX:r,offsetY:s}=i,c=e=>{a.value||=!0,o(r+e.clientX-t,s+e.clientY-n)},l=()=>{a.value=!1,document.removeEventListener(`mousemove`,c),document.removeEventListener(`mouseup`,l)};document.addEventListener(`mousemove`,c),document.addEventListener(`mouseup`,l)},c=()=>{t.value&&e.value&&(t.value.addEventListener(`mousedown`,s),window.addEventListener(`resize`,d))},l=()=>{t.value&&e.value&&(t.value.removeEventListener(`mousedown`,s),window.removeEventListener(`resize`,d))},u=()=>{i.offsetX=0,i.offsetY=0,e.value&&(e.value.style.transform=``)},d=()=>{let{offsetX:e,offsetY:t}=i;o(e,t)};return h(()=>{ve(()=>{n.value?c():l()})}),Ge(()=>{l()}),{isDragging:a,resetPosition:u,updatePosition:d}},hf={name:`en`,el:{breadcrumb:{label:`Breadcrumb`},colorpicker:{confirm:`OK`,clear:`Clear`,defaultLabel:`color picker`,description:`current color is {color}. press enter to select a new color.`,alphaLabel:`pick alpha value`,alphaDescription:`alpha {alpha}, current color is {color}`,hueLabel:`pick hue value`,hueDescription:`hue {hue}, current color is {color}`,svLabel:`pick saturation and brightness value`,svDescription:`saturation {saturation}, brightness {brightness}, current color is {color}`,predefineDescription:`select {value} as the color`},datepicker:{now:`Now`,today:`Today`,cancel:`Cancel`,clear:`Clear`,confirm:`OK`,dateTablePrompt:`Use the arrow keys and enter to select the day of the month`,monthTablePrompt:`Use the arrow keys and enter to select the month`,yearTablePrompt:`Use the arrow keys and enter to select the year`,selectedDate:`Selected date`,selectDate:`Select date`,selectTime:`Select time`,startDate:`Start Date`,startTime:`Start Time`,endDate:`End Date`,endTime:`End Time`,prevYear:`Previous Year`,nextYear:`Next Year`,prevMonth:`Previous Month`,nextMonth:`Next Month`,year:``,month1:`January`,month2:`February`,month3:`March`,month4:`April`,month5:`May`,month6:`June`,month7:`July`,month8:`August`,month9:`September`,month10:`October`,month11:`November`,month12:`December`,weeks:{sun:`Sun`,mon:`Mon`,tue:`Tue`,wed:`Wed`,thu:`Thu`,fri:`Fri`,sat:`Sat`},weeksFull:{sun:`Sunday`,mon:`Monday`,tue:`Tuesday`,wed:`Wednesday`,thu:`Thursday`,fri:`Friday`,sat:`Saturday`},months:{jan:`Jan`,feb:`Feb`,mar:`Mar`,apr:`Apr`,may:`May`,jun:`Jun`,jul:`Jul`,aug:`Aug`,sep:`Sep`,oct:`Oct`,nov:`Nov`,dec:`Dec`}},inputNumber:{decrease:`decrease number`,increase:`increase number`},select:{loading:`Loading`,noMatch:`No matching data`,noData:`No data`,placeholder:`Select`},mention:{loading:`Loading`},dropdown:{toggleDropdown:`Toggle Dropdown`},cascader:{noMatch:`No matching data`,loading:`Loading`,placeholder:`Select`,noData:`No data`},pagination:{goto:`Go to`,pagesize:`/page`,total:`Total {total}`,pageClassifier:``,page:`Page`,prev:`Go to previous page`,next:`Go to next page`,currentPage:`page {pager}`,prevPages:`Previous {pager} pages`,nextPages:`Next {pager} pages`,deprecationWarning:`Deprecated usages detected, please refer to the el-pagination documentation for more details`},dialog:{close:`Close this dialog`},drawer:{close:`Close this dialog`},messagebox:{title:`Message`,confirm:`OK`,cancel:`Cancel`,error:`Illegal input`,close:`Close this dialog`},upload:{deleteTip:`press delete to remove`,delete:`Delete`,preview:`Preview`,continue:`Continue`},slider:{defaultLabel:`slider between {min} and {max}`,defaultRangeStartLabel:`pick start value`,defaultRangeEndLabel:`pick end value`},table:{emptyText:`No Data`,confirmFilter:`Confirm`,resetFilter:`Reset`,clearFilter:`All`,sumText:`Sum`,selectAllLabel:`Select all rows`,selectRowLabel:`Select this row`,expandRowLabel:`Expand this row`,collapseRowLabel:`Collapse this row`,sortLabel:`Sort by {column}`,filterLabel:`Filter by {column}`},tag:{close:`Close this tag`},tour:{next:`Next`,previous:`Previous`,finish:`Finish`,close:`Close this dialog`},tree:{emptyText:`No Data`},transfer:{noMatch:`No matching data`,noData:`No data`,titles:[`List 1`,`List 2`],filterPlaceholder:`Enter keyword`,noCheckedFormat:`{total} items`,hasCheckedFormat:`{checked}/{total} checked`},image:{error:`FAILED`},pageHeader:{title:`Back`},popconfirm:{confirmButtonText:`Yes`,cancelButtonText:`No`},carousel:{leftArrow:`Carousel arrow left`,rightArrow:`Carousel arrow right`,indicator:`Carousel switch to index {index}`}}},gf=e=>(t,n)=>_f(t,n,c(e)),_f=(e,t,n)=>oo(n,e,e).replace(/\{(\w+)\}/g,(e,n)=>`${t?.[n]??`{${n}}`}`),vf=e=>({lang:K(()=>c(e).name),locale:ze(e)?e:H(e),t:gf(e)}),yf=Symbol(`localeContextKey`),bf=e=>{let t=e||w(yf,H());return vf(K(()=>t.value||hf))},xf=`is-`,Sf=(e,t,n,r,i)=>{let a=`${e}-${t}`;return n&&(a+=`-${n}`),r&&(a+=`__${r}`),i&&(a+=`--${i}`),a},Cf=Symbol(`namespaceContextKey`),wf=e=>{let t=e||(O()?w(Cf,H(`el`)):H(`el`));return K(()=>c(t)||`el`)},Z=(e,t)=>{let n=wf(t);return{namespace:n,b:(t=``)=>Sf(n.value,e,t,``,``),e:t=>t?Sf(n.value,e,``,t,``):``,m:t=>t?Sf(n.value,e,``,``,t):``,be:(t,r)=>t&&r?Sf(n.value,e,t,r,``):``,em:(t,r)=>t&&r?Sf(n.value,e,``,t,r):``,bm:(t,r)=>t&&r?Sf(n.value,e,t,``,r):``,bem:(t,r,i)=>t&&r&&i?Sf(n.value,e,t,r,i):``,is:(e,...t)=>{let n=t.length>=1?t[0]:!0;return e&&n?`${xf}${e}`:``},cssVar:e=>{let t={};for(let r in e)e[r]&&(t[`--${n.value}-${r}`]=e[r]);return t},cssVarName:e=>`--${n.value}-${e}`,cssVarBlock:t=>{let r={};for(let i in t)t[i]&&(r[`--${n.value}-${e}-${i}`]=t[i]);return r},cssVarBlockName:t=>`--${n.value}-${e}-${t}`}};function Tf(e,t,n,r){let i=n-t;return e/=r/2,e<1?i/2*e*e*e+t:i/2*((e-=2)*e*e+2)+t}var Ef=e=>Rt?window.requestAnimationFrame(e):setTimeout(e,16),Df=e=>Rt?window.cancelAnimationFrame(e):clearTimeout(e),Of=(e,t)=>{if(!Rt)return!1;let n={undefined:`overflow`,true:`overflow-y`,false:`overflow-x`}[String(t)],r=df(e,n);return[`scroll`,`auto`,`overlay`].some(e=>r.includes(e))},kf=(e,t)=>{if(!Rt)return;let n=e;for(;n;){if([window,document,document.documentElement].includes(n))return window;if(Of(n,t))return n;n=Uu(n)?n.host:n.parentNode}return n},Af,jf=e=>{if(!Rt)return 0;if(Af!==void 0)return Af;let t=document.createElement(`div`);t.className=`${e}-scrollbar__wrap`,t.style.visibility=`hidden`,t.style.width=`100px`,t.style.position=`absolute`,t.style.top=`-9999px`,document.body.appendChild(t);let n=t.offsetWidth;t.style.overflow=`scroll`;let r=document.createElement(`div`);r.style.width=`100%`,t.appendChild(r);let i=r.offsetWidth;return t.parentNode?.removeChild(t),Af=n-i,Af};function Mf(e,t){if(!Rt)return;if(!t){e.scrollTop=0;return}let n=[],r=t.offsetParent;for(;r!==null&&e!==r&&e.contains(r);)n.push(r),r=r.offsetParent;let i=t.offsetTop+n.reduce((e,t)=>e+t.offsetTop,0),a=i+t.offsetHeight,o=e.scrollTop,s=o+e.clientHeight;is&&(e.scrollTop=a-e.clientHeight)}function Nf(e,t,n,r,i){let a=Date.now(),o,s=()=>{let c=Date.now()-a,l=Tf(c>r?r:c,t,n,r);Iu(e)?e.scrollTo(window.pageXOffset,l):e.scrollTop=l,c{o&&Df(o)}}var Pf=(e,t)=>Iu(t)?e.ownerDocument.documentElement:t,Ff=e=>Iu(e)?window.scrollY:e.scrollTop,If=(e,t={})=>{ze(e)||Xd(`[useLockscreen]`,`You need to pass a ref param to this function`);let n=t.ns||Z(`popup`),r=K(()=>n.bm(`parent`,`hidden`)),i=0,a=!1,o=`0`,s=!1,c=()=>{s||(s=!0,setTimeout(()=>{typeof document>`u`||a&&document&&(document.body.style.width=o,uf(document.body,r.value))},200))};U(e,e=>{if(!e){c();return}s=!1,a=!cf(document.body,r.value),a&&(o=document.body.style.width,lf(document.body,r.value)),i=jf(n.namespace.value);let t=document.documentElement.clientHeight0&&(t||l===`scroll`)&&a&&(document.body.style.width=`calc(100% - ${i}px)`)}),he(()=>c())},Lf=Gd({type:Y(Boolean),default:null}),Rf=Gd({type:Y(Function)}),zf=e=>{let t=`update:${e}`,n=`onUpdate:${e}`,r=[t];return{useModelToggle:({indicator:r,toggleReason:i,shouldHideWhenRouteChanges:a,shouldProceed:o,onShow:s,onHide:c})=>{let l=O(),{emit:u}=l,d=l.props,f=K(()=>C(d[n])),p=K(()=>d[e]===null),m=e=>{r.value!==!0&&(r.value=!0,i&&(i.value=e),C(s)&&s(e))},g=e=>{r.value!==!1&&(r.value=!1,i&&(i.value=e),C(c)&&c(e))},_=e=>{if(d.disabled===!0||C(o)&&!o())return;let n=f.value&&Rt;n&&u(t,!0),(p.value||!n)&&m(e)},v=e=>{if(d.disabled===!0||!Rt)return;let n=f.value&&Rt;n&&u(t,!1),(p.value||!n)&&g(e)},y=e=>{ju(e)&&(d.disabled&&e?f.value&&u(t,!1):r.value!==e&&(e?m():g()))};return U(()=>d[e],y),a&&l.appContext.config.globalProperties.$route!==void 0&&U(()=>({...l.proxy.$route}),()=>{a.value&&r.value&&v()}),h(()=>{y(d[e])}),{hide:v,show:_,toggle:()=>{r.value?v():_()},hasUpdateHandler:f}},useModelToggleProps:{[e]:Lf,[n]:Rf},useModelToggleEmits:r}},{useModelToggle:Bf,useModelToggleProps:Vf,useModelToggleEmits:Hf}=zf(`modelValue`),Uf=e=>{let t=O();return K(()=>t?.proxy?.$props?.[e])},Wf=`bottom`,Gf=`right`,Kf=`left`,qf=`auto`,Jf=[`top`,Wf,Gf,Kf],Yf=`start`,Xf=`clippingParents`,Zf=`viewport`,Qf=`popper`,$f=`reference`,ep=Jf.reduce(function(e,t){return e.concat([t+`-`+Yf,t+`-end`])},[]),tp=[].concat(Jf,[qf]).reduce(function(e,t){return e.concat([t,t+`-`+Yf,t+`-end`])},[]),np=[`beforeRead`,`read`,`afterRead`,`beforeMain`,`main`,`afterMain`,`beforeWrite`,`write`,`afterWrite`];function rp(e){return e?(e.nodeName||``).toLowerCase():null}function ip(e){if(e==null)return window;if(e.toString()!==`[object Window]`){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function ap(e){return e instanceof ip(e).Element||e instanceof Element}function op(e){return e instanceof ip(e).HTMLElement||e instanceof HTMLElement}function sp(e){return typeof ShadowRoot>`u`?!1:e instanceof ip(e).ShadowRoot||e instanceof ShadowRoot}function cp(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},i=t.elements[e];!op(i)||!rp(i)||(Object.assign(i.style,n),Object.keys(r).forEach(function(e){var t=r[e];t===!1?i.removeAttribute(e):i.setAttribute(e,t===!0?``:t)}))})}function lp(e){var t=e.state,n={popper:{position:t.options.strategy,left:`0`,top:`0`,margin:`0`},arrow:{position:`absolute`},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(e){var r=t.elements[e],i=t.attributes[e]||{},a=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce(function(e,t){return e[t]=``,e},{});!op(r)||!rp(r)||(Object.assign(r.style,a),Object.keys(i).forEach(function(e){r.removeAttribute(e)}))})}}var up={name:`applyStyles`,enabled:!0,phase:`write`,fn:cp,effect:lp,requires:[`computeStyles`]};function dp(e){return e.split(`-`)[0]}var fp=Math.max,pp=Math.min,mp=Math.round;function hp(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(e){return e.brand+`/`+e.version}).join(` `):navigator.userAgent}function gp(){return!/^((?!chrome|android).)*safari/i.test(hp())}function _p(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!1);var r=e.getBoundingClientRect(),i=1,a=1;t&&op(e)&&(i=e.offsetWidth>0&&mp(r.width)/e.offsetWidth||1,a=e.offsetHeight>0&&mp(r.height)/e.offsetHeight||1);var o=(ap(e)?ip(e):window).visualViewport,s=!gp()&&n,c=(r.left+(s&&o?o.offsetLeft:0))/i,l=(r.top+(s&&o?o.offsetTop:0))/a,u=r.width/i,d=r.height/a;return{width:u,height:d,top:l,right:c+u,bottom:l+d,left:c,x:c,y:l}}function vp(e){var t=_p(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function yp(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&sp(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function bp(e){return ip(e).getComputedStyle(e)}function xp(e){return[`table`,`td`,`th`].indexOf(rp(e))>=0}function Sp(e){return((ap(e)?e.ownerDocument:e.document)||window.document).documentElement}function Cp(e){return rp(e)===`html`?e:e.assignedSlot||e.parentNode||(sp(e)?e.host:null)||Sp(e)}function wp(e){return!op(e)||bp(e).position===`fixed`?null:e.offsetParent}function Tp(e){var t=/firefox/i.test(hp());if(/Trident/i.test(hp())&&op(e)&&bp(e).position===`fixed`)return null;var n=Cp(e);for(sp(n)&&(n=n.host);op(n)&&[`html`,`body`].indexOf(rp(n))<0;){var r=bp(n);if(r.transform!==`none`||r.perspective!==`none`||r.contain===`paint`||[`transform`,`perspective`].indexOf(r.willChange)!==-1||t&&r.willChange===`filter`||t&&r.filter&&r.filter!==`none`)return n;n=n.parentNode}return null}function Ep(e){for(var t=ip(e),n=wp(e);n&&xp(n)&&bp(n).position===`static`;)n=wp(n);return n&&(rp(n)===`html`||rp(n)===`body`&&bp(n).position===`static`)?t:n||Tp(e)||t}function Dp(e){return[`top`,`bottom`].indexOf(e)>=0?`x`:`y`}function Op(e,t,n){return fp(e,pp(t,n))}function kp(e,t,n){var r=Op(e,t,n);return r>n?n:r}function Ap(){return{top:0,right:0,bottom:0,left:0}}function jp(e){return Object.assign({},Ap(),e)}function Mp(e,t){return t.reduce(function(t,n){return t[n]=e,t},{})}var Np=function(e,t){return e=typeof e==`function`?e(Object.assign({},t.rects,{placement:t.placement})):e,jp(typeof e==`number`?Mp(e,Jf):e)};function Pp(e){var t,n=e.state,r=e.name,i=e.options,a=n.elements.arrow,o=n.modifiersData.popperOffsets,s=dp(n.placement),c=Dp(s),l=[`left`,`right`].indexOf(s)>=0?`height`:`width`;if(!(!a||!o)){var u=Np(i.padding,n),d=vp(a),f=c===`y`?`top`:Kf,p=c===`y`?Wf:Gf,m=n.rects.reference[l]+n.rects.reference[c]-o[c]-n.rects.popper[l],h=o[c]-n.rects.reference[c],g=Ep(a),_=g?c===`y`?g.clientHeight||0:g.clientWidth||0:0,v=m/2-h/2,y=u[f],b=_-d[l]-u[p],x=_/2-d[l]/2+v,S=Op(y,x,b),C=c;n.modifiersData[r]=(t={},t[C]=S,t.centerOffset=S-x,t)}}function Fp(e){var t=e.state,n=e.options.element,r=n===void 0?`[data-popper-arrow]`:n;r!=null&&(typeof r==`string`&&(r=t.elements.popper.querySelector(r),!r)||yp(t.elements.popper,r)&&(t.elements.arrow=r))}var Ip={name:`arrow`,enabled:!0,phase:`main`,fn:Pp,effect:Fp,requires:[`popperOffsets`],requiresIfExists:[`preventOverflow`]};function Lp(e){return e.split(`-`)[1]}var Rp={top:`auto`,right:`auto`,bottom:`auto`,left:`auto`};function zp(e,t){var n=e.x,r=e.y,i=t.devicePixelRatio||1;return{x:mp(n*i)/i||0,y:mp(r*i)/i||0}}function Bp(e){var t,n=e.popper,r=e.popperRect,i=e.placement,a=e.variation,o=e.offsets,s=e.position,c=e.gpuAcceleration,l=e.adaptive,u=e.roundOffsets,d=e.isFixed,f=o.x,p=f===void 0?0:f,m=o.y,h=m===void 0?0:m,g=typeof u==`function`?u({x:p,y:h}):{x:p,y:h};p=g.x,h=g.y;var _=o.hasOwnProperty(`x`),v=o.hasOwnProperty(`y`),y=Kf,b=`top`,x=window;if(l){var S=Ep(n),C=`clientHeight`,w=`clientWidth`;if(S===ip(n)&&(S=Sp(n),bp(S).position!==`static`&&s===`absolute`&&(C=`scrollHeight`,w=`scrollWidth`)),S=S,i===`top`||(i===`left`||i===`right`)&&a===`end`){b=Wf;var T=d&&S===x&&x.visualViewport?x.visualViewport.height:S[C];h-=T-r.height,h*=c?1:-1}if(i===`left`||(i===`top`||i===`bottom`)&&a===`end`){y=Gf;var E=d&&S===x&&x.visualViewport?x.visualViewport.width:S[w];p-=E-r.width,p*=c?1:-1}}var D=Object.assign({position:s},l&&Rp),O=u===!0?zp({x:p,y:h},ip(n)):{x:p,y:h};if(p=O.x,h=O.y,c){var k;return Object.assign({},D,(k={},k[b]=v?`0`:``,k[y]=_?`0`:``,k.transform=(x.devicePixelRatio||1)<=1?`translate(`+p+`px, `+h+`px)`:`translate3d(`+p+`px, `+h+`px, 0)`,k))}return Object.assign({},D,(t={},t[b]=v?h+`px`:``,t[y]=_?p+`px`:``,t.transform=``,t))}function Vp(e){var t=e.state,n=e.options,r=n.gpuAcceleration,i=r===void 0?!0:r,a=n.adaptive,o=a===void 0?!0:a,s=n.roundOffsets,c=s===void 0?!0:s,l={placement:dp(t.placement),variation:Lp(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:i,isFixed:t.options.strategy===`fixed`};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Bp(Object.assign({},l,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:o,roundOffsets:c})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Bp(Object.assign({},l,{offsets:t.modifiersData.arrow,position:`absolute`,adaptive:!1,roundOffsets:c})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var Hp={name:`computeStyles`,enabled:!0,phase:`beforeWrite`,fn:Vp,data:{}},Up={passive:!0};function Wp(e){var t=e.state,n=e.instance,r=e.options,i=r.scroll,a=i===void 0?!0:i,o=r.resize,s=o===void 0?!0:o,c=ip(t.elements.popper),l=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&l.forEach(function(e){e.addEventListener(`scroll`,n.update,Up)}),s&&c.addEventListener(`resize`,n.update,Up),function(){a&&l.forEach(function(e){e.removeEventListener(`scroll`,n.update,Up)}),s&&c.removeEventListener(`resize`,n.update,Up)}}var Gp={name:`eventListeners`,enabled:!0,phase:`write`,fn:function(){},effect:Wp,data:{}},Kp={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function qp(e){return e.replace(/left|right|bottom|top/g,function(e){return Kp[e]})}var Jp={start:`end`,end:`start`};function Yp(e){return e.replace(/start|end/g,function(e){return Jp[e]})}function Xp(e){var t=ip(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function Zp(e){return _p(Sp(e)).left+Xp(e).scrollLeft}function Qp(e,t){var n=ip(e),r=Sp(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;var l=gp();(l||!l&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}return{width:a,height:o,x:s+Zp(e),y:c}}function $p(e){var t=Sp(e),n=Xp(e),r=e.ownerDocument?.body,i=fp(t.scrollWidth,t.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),a=fp(t.scrollHeight,t.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),o=-n.scrollLeft+Zp(e),s=-n.scrollTop;return bp(r||t).direction===`rtl`&&(o+=fp(t.clientWidth,r?r.clientWidth:0)-i),{width:i,height:a,x:o,y:s}}function em(e){var t=bp(e),n=t.overflow,r=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)}function tm(e){return[`html`,`body`,`#document`].indexOf(rp(e))>=0?e.ownerDocument.body:op(e)&&em(e)?e:tm(Cp(e))}function nm(e,t){t===void 0&&(t=[]);var n=tm(e),r=n===e.ownerDocument?.body,i=ip(n),a=r?[i].concat(i.visualViewport||[],em(n)?n:[]):n,o=t.concat(a);return r?o:o.concat(nm(Cp(a)))}function rm(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function im(e,t){var n=_p(e,!1,t===`fixed`);return n.top+=e.clientTop,n.left+=e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}function am(e,t,n){return t===`viewport`?rm(Qp(e,n)):ap(t)?im(t,n):rm($p(Sp(e)))}function om(e){var t=nm(Cp(e)),n=[`absolute`,`fixed`].indexOf(bp(e).position)>=0&&op(e)?Ep(e):e;return ap(n)?t.filter(function(e){return ap(e)&&yp(e,n)&&rp(e)!==`body`}):[]}function sm(e,t,n,r){var i=t===`clippingParents`?om(e):[].concat(t),a=[].concat(i,[n]),o=a[0],s=a.reduce(function(t,n){var i=am(e,n,r);return t.top=fp(i.top,t.top),t.right=pp(i.right,t.right),t.bottom=pp(i.bottom,t.bottom),t.left=fp(i.left,t.left),t},am(e,o,r));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function cm(e){var t=e.reference,n=e.element,r=e.placement,i=r?dp(r):null,a=r?Lp(r):null,o=t.x+t.width/2-n.width/2,s=t.y+t.height/2-n.height/2,c;switch(i){case`top`:c={x:o,y:t.y-n.height};break;case Wf:c={x:o,y:t.y+t.height};break;case Gf:c={x:t.x+t.width,y:s};break;case Kf:c={x:t.x-n.width,y:s};break;default:c={x:t.x,y:t.y}}var l=i?Dp(i):null;if(l!=null){var u=l===`y`?`height`:`width`;switch(a){case Yf:c[l]=c[l]-(t[u]/2-n[u]/2);break;case`end`:c[l]=c[l]+(t[u]/2-n[u]/2);break}}return c}function lm(e,t){t===void 0&&(t={});var n=t,r=n.placement,i=r===void 0?e.placement:r,a=n.strategy,o=a===void 0?e.strategy:a,s=n.boundary,c=s===void 0?Xf:s,l=n.rootBoundary,u=l===void 0?Zf:l,d=n.elementContext,f=d===void 0?Qf:d,p=n.altBoundary,m=p===void 0?!1:p,h=n.padding,g=h===void 0?0:h,_=jp(typeof g==`number`?Mp(g,Jf):g),v=f===`popper`?$f:Qf,y=e.rects.popper,b=e.elements[m?v:f],x=sm(ap(b)?b:b.contextElement||Sp(e.elements.popper),c,u,o),S=_p(e.elements.reference),C=cm({reference:S,element:y,placement:i}),w=rm(Object.assign({},y,C)),T=f===`popper`?w:S,E={top:x.top-T.top+_.top,bottom:T.bottom-x.bottom+_.bottom,left:x.left-T.left+_.left,right:T.right-x.right+_.right},D=e.modifiersData.offset;if(f===`popper`&&D){var O=D[i];Object.keys(E).forEach(function(e){var t=[`right`,`bottom`].indexOf(e)>=0?1:-1,n=[`top`,`bottom`].indexOf(e)>=0?`y`:`x`;E[e]+=O[n]*t})}return E}function um(e,t){t===void 0&&(t={});var n=t,r=n.placement,i=n.boundary,a=n.rootBoundary,o=n.padding,s=n.flipVariations,c=n.allowedAutoPlacements,l=c===void 0?tp:c,u=Lp(r),d=u?s?ep:ep.filter(function(e){return Lp(e)===u}):Jf,f=d.filter(function(e){return l.indexOf(e)>=0});f.length===0&&(f=d);var p=f.reduce(function(t,n){return t[n]=lm(e,{placement:n,boundary:i,rootBoundary:a,padding:o})[dp(n)],t},{});return Object.keys(p).sort(function(e,t){return p[e]-p[t]})}function dm(e){if(dp(e)===`auto`)return[];var t=qp(e);return[Yp(e),t,Yp(t)]}function fm(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var i=n.mainAxis,a=i===void 0?!0:i,o=n.altAxis,s=o===void 0?!0:o,c=n.fallbackPlacements,l=n.padding,u=n.boundary,d=n.rootBoundary,f=n.altBoundary,p=n.flipVariations,m=p===void 0?!0:p,h=n.allowedAutoPlacements,g=t.options.placement,_=dp(g)===g,v=c||(_||!m?[qp(g)]:dm(g)),y=[g].concat(v).reduce(function(e,n){return e.concat(dp(n)===`auto`?um(t,{placement:n,boundary:u,rootBoundary:d,padding:l,flipVariations:m,allowedAutoPlacements:h}):n)},[]),b=t.rects.reference,x=t.rects.popper,S=new Map,C=!0,w=y[0],T=0;T=0,A=k?`width`:`height`,j=lm(t,{placement:E,boundary:u,rootBoundary:d,altBoundary:f,padding:l}),M=k?O?Gf:Kf:O?Wf:`top`;b[A]>x[A]&&(M=qp(M));var N=qp(M),P=[];if(a&&P.push(j[D]<=0),s&&P.push(j[M]<=0,j[N]<=0),P.every(function(e){return e})){w=E,C=!1;break}S.set(E,P)}if(C)for(var F=m?3:1,I=function(e){var t=y.find(function(t){var n=S.get(t);if(n)return n.slice(0,e).every(function(e){return e})});if(t)return w=t,`break`},ee=F;ee>0&&I(ee)!==`break`;ee--);t.placement!==w&&(t.modifiersData[r]._skip=!0,t.placement=w,t.reset=!0)}}var pm={name:`flip`,enabled:!0,phase:`main`,fn:fm,requiresIfExists:[`offset`],data:{_skip:!1}};function mm(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function hm(e){return[`top`,Gf,Wf,Kf].some(function(t){return e[t]>=0})}function gm(e){var t=e.state,n=e.name,r=t.rects.reference,i=t.rects.popper,a=t.modifiersData.preventOverflow,o=lm(t,{elementContext:`reference`}),s=lm(t,{altBoundary:!0}),c=mm(o,r),l=mm(s,i,a),u=hm(c),d=hm(l);t.modifiersData[n]={referenceClippingOffsets:c,popperEscapeOffsets:l,isReferenceHidden:u,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":d})}var _m={name:`hide`,enabled:!0,phase:`main`,requiresIfExists:[`preventOverflow`],fn:gm};function vm(e,t,n){var r=dp(e),i=[`left`,`top`].indexOf(r)>=0?-1:1,a=typeof n==`function`?n(Object.assign({},t,{placement:e})):n,o=a[0],s=a[1];return o||=0,s=(s||0)*i,[`left`,`right`].indexOf(r)>=0?{x:s,y:o}:{x:o,y:s}}function ym(e){var t=e.state,n=e.options,r=e.name,i=n.offset,a=i===void 0?[0,0]:i,o=tp.reduce(function(e,n){return e[n]=vm(n,t.rects,a),e},{}),s=o[t.placement],c=s.x,l=s.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=c,t.modifiersData.popperOffsets.y+=l),t.modifiersData[r]=o}var bm={name:`offset`,enabled:!0,phase:`main`,requires:[`popperOffsets`],fn:ym};function xm(e){var t=e.state,n=e.name;t.modifiersData[n]=cm({reference:t.rects.reference,element:t.rects.popper,placement:t.placement})}var Sm={name:`popperOffsets`,enabled:!0,phase:`read`,fn:xm,data:{}};function Cm(e){return e===`x`?`y`:`x`}function wm(e){var t=e.state,n=e.options,r=e.name,i=n.mainAxis,a=i===void 0?!0:i,o=n.altAxis,s=o===void 0?!1:o,c=n.boundary,l=n.rootBoundary,u=n.altBoundary,d=n.padding,f=n.tether,p=f===void 0?!0:f,m=n.tetherOffset,h=m===void 0?0:m,g=lm(t,{boundary:c,rootBoundary:l,padding:d,altBoundary:u}),_=dp(t.placement),v=Lp(t.placement),y=!v,b=Dp(_),x=Cm(b),S=t.modifiersData.popperOffsets,C=t.rects.reference,w=t.rects.popper,T=typeof h==`function`?h(Object.assign({},t.rects,{placement:t.placement})):h,E=typeof T==`number`?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),D=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,O={x:0,y:0};if(S){if(a){var k=b===`y`?`top`:Kf,A=b===`y`?Wf:Gf,j=b===`y`?`height`:`width`,M=S[b],N=M+g[k],P=M-g[A],F=p?-w[j]/2:0,I=v===`start`?C[j]:w[j],ee=v===`start`?-w[j]:-C[j],te=t.elements.arrow,ne=p&&te?vp(te):{width:0,height:0},re=t.modifiersData[`arrow#persistent`]?t.modifiersData[`arrow#persistent`].padding:Ap(),ie=re[k],L=re[A],R=Op(0,C[j],ne[j]),z=y?C[j]/2-F-R-ie-E.mainAxis:I-R-ie-E.mainAxis,ae=y?-C[j]/2+F+R+L+E.mainAxis:ee+R+L+E.mainAxis,oe=t.elements.arrow&&Ep(t.elements.arrow),se=oe?b===`y`?oe.clientTop||0:oe.clientLeft||0:0,ce=D?.[b]??0,B=M+z-ce-se,V=M+ae-ce,le=Op(p?pp(N,B):N,M,p?fp(P,V):P);S[b]=le,O[b]=le-M}if(s){var ue=b===`x`?`top`:Kf,de=b===`x`?Wf:Gf,fe=S[x],pe=x===`y`?`height`:`width`,me=fe+g[ue],he=fe-g[de],ge=[`top`,Kf].indexOf(_)!==-1,_e=D?.[x]??0,H=ge?me:fe-C[pe]-w[pe]-_e+E.altAxis,ve=ge?fe+C[pe]+w[pe]-_e-E.altAxis:he,ye=p&&ge?kp(H,fe,ve):Op(p?H:me,fe,p?ve:he);S[x]=ye,O[x]=ye-fe}t.modifiersData[r]=O}}var Tm={name:`preventOverflow`,enabled:!0,phase:`main`,fn:wm,requiresIfExists:[`offset`]};function Em(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function Dm(e){return e===ip(e)||!op(e)?Xp(e):Em(e)}function Om(e){var t=e.getBoundingClientRect(),n=mp(t.width)/e.offsetWidth||1,r=mp(t.height)/e.offsetHeight||1;return n!==1||r!==1}function km(e,t,n){n===void 0&&(n=!1);var r=op(t),i=op(t)&&Om(t),a=Sp(t),o=_p(e,i,n),s={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(r||!r&&!n)&&((rp(t)!==`body`||em(a))&&(s=Dm(t)),op(t)?(c=_p(t,!0),c.x+=t.clientLeft,c.y+=t.clientTop):a&&(c.x=Zp(a))),{x:o.left+s.scrollLeft-c.x,y:o.top+s.scrollTop-c.y,width:o.width,height:o.height}}function Am(e){var t=new Map,n=new Set,r=[];e.forEach(function(e){t.set(e.name,e)});function i(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach(function(e){if(!n.has(e)){var r=t.get(e);r&&i(r)}}),r.push(e)}return e.forEach(function(e){n.has(e.name)||i(e)}),r}function jm(e){var t=Am(e);return np.reduce(function(e,n){return e.concat(t.filter(function(e){return e.phase===n}))},[])}function Mm(e){var t;return function(){return t||=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})}),t}}function Nm(e){var t=e.reduce(function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e},{});return Object.keys(t).map(function(e){return t[e]})}var Pm={placement:`bottom`,modifiers:[],strategy:`absolute`};function Fm(){return![...arguments].some(function(e){return!(e&&typeof e.getBoundingClientRect==`function`)})}function Im(e){e===void 0&&(e={});var t=e,n=t.defaultModifiers,r=n===void 0?[]:n,i=t.defaultOptions,a=i===void 0?Pm:i;return function(e,t,n){n===void 0&&(n=a);var i={placement:`bottom`,orderedModifiers:[],options:Object.assign({},Pm,a),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},o=[],s=!1,c={state:i,setOptions:function(n){var o=typeof n==`function`?n(i.options):n;u(),i.options=Object.assign({},a,i.options,o),i.scrollParents={reference:ap(e)?nm(e):e.contextElement?nm(e.contextElement):[],popper:nm(t)};var s=jm(Nm([].concat(r,i.options.modifiers)));return i.orderedModifiers=s.filter(function(e){return e.enabled}),l(),c.update()},forceUpdate:function(){if(!s){var e=i.elements,t=e.reference,n=e.popper;if(Fm(t,n)){i.rects={reference:km(t,Ep(n),i.options.strategy===`fixed`),popper:vp(n)},i.reset=!1,i.placement=i.options.placement,i.orderedModifiers.forEach(function(e){return i.modifiersData[e.name]=Object.assign({},e.data)});for(var r=0;r{let r={name:`updateState`,enabled:!0,phase:`write`,fn:({state:e})=>{let t=zm(e);Object.assign(o.value,t)},requires:[`computeStyles`]},i=K(()=>{let{onFirstUpdate:e,placement:t,strategy:i,modifiers:a}=c(n);return{onFirstUpdate:e,placement:t||`bottom`,strategy:i||`absolute`,modifiers:[...a||[],r,{name:`applyStyles`,enabled:!1}]}}),a=se(),o=H({styles:{popper:{position:c(i).strategy,left:`0`,top:`0`},arrow:{position:`absolute`}},attributes:{}}),s=()=>{a.value&&=(a.value.destroy(),void 0)};return U(i,e=>{let t=c(a);t&&t.setOptions(e)},{deep:!0}),U([e,t],([e,t])=>{s(),!(!e||!t)&&(a.value=Lm(e,t,c(i)))}),Ge(()=>{s()}),{state:K(()=>({...c(a)?.state||{}})),styles:K(()=>c(o).styles),attributes:K(()=>c(o).attributes),update:()=>c(a)?.update(),forceUpdate:()=>c(a)?.forceUpdate(),instanceRef:K(()=>c(a))}};function zm(e){let t=Object.keys(e.elements);return{styles:au(t.map(t=>[t,e.styles[t]||{}])),attributes:au(t.map(t=>[t,e.attributes[t]]))}}var Bm=e=>{if(!e)return{onClick:f,onMousedown:f,onMouseup:f};let t=!1,n=!1;return{onClick:r=>{t&&n&&e(r),t=n=!1},onMousedown:e=>{t=e.target===e.currentTarget},onMouseup:e=>{n=e.target===e.currentTarget}}},Vm=(e,t=0)=>{if(t===0)return e;let n=H(o(t)&&!!t.initVal),r=null,i=t=>{if(Au(t)){n.value=e.value;return}r&&clearTimeout(r),r=setTimeout(()=>{n.value=e.value},t)},a=e=>{e===`leading`?J(t)?i(t):i(t.leading):o(t)?i(t.trailing):n.value=!1};return h(()=>a(`leading`)),U(()=>e.value,e=>{a(e?`leading`:`trailing`)}),n};function Hm(){let e,t=(t,r)=>{n(),e=globalThis.setTimeout(t,r)},n=()=>{e!==void 0&&(globalThis.clearTimeout(e),e=void 0)};return Pt(()=>n()),{registerTimeout:t,cancelTimeout:n}}var Um={prefix:Math.floor(Math.random()*1e4),current:0},Wm=Symbol(`elIdInjection`),Gm=()=>O()?w(Wm,Um):Um,Km=e=>{let t=Gm();!Rt&&t===Um&&Zd(`IdInjection`,`Looks like you are using server rendering, you must provide a id provider to ensure the hydration process to be succeed @@ -56,4 +56,4 @@ usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`),{initialZIndex:r,curr `);return e===-1?``:t.stack.slice(e+1)})();try{if(!e.stack)e.stack=n;else if(n){let t=n.indexOf(` `),r=t===-1?-1:n.indexOf(` `,t+1),i=r===-1?``:n.slice(r+1);String(e.stack).endsWith(i)||(e.stack+=` -`+n)}}catch{}}throw e}}_request(e,t){typeof e==`string`?(t||={},t.url=e):t=e||{},t=D1(this.defaults,t);let{transitional:n,paramsSerializer:r,headers:i}=t;n!==void 0&&t0.assertOptions(n,{silentJSONParsing:n0.transitional(n0.boolean),forcedJSONParsing:n0.transitional(n0.boolean),clarifyTimeoutError:n0.transitional(n0.boolean),legacyInterceptorReqResOrdering:n0.transitional(n0.boolean)},!1),r!=null&&($.isFunction(r)?t.paramsSerializer={serialize:r}:t0.assertOptions(r,{encode:n0.function,serialize:n0.function},!0)),t.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls===void 0?t.allowAbsoluteUrls=!0:t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls),t0.assertOptions(t,{baseUrl:n0.spelling(`baseURL`),withXsrfToken:n0.spelling(`withXSRFToken`)},!0),t.method=(t.method||this.defaults.method||`get`).toLowerCase();let a=i&&$.merge(i.common,i[t.method]);i&&$.forEach([`delete`,`get`,`head`,`post`,`put`,`patch`,`common`],e=>{delete i[e]}),t.headers=u1.concat(a,i);let o=[],s=!0;this.interceptors.request.forEach(function(e){if(typeof e.runWhen==`function`&&e.runWhen(t)===!1)return;s&&=e.synchronous;let n=t.transitional||F$;n&&n.legacyInterceptorReqResOrdering?o.unshift(e.fulfilled,e.rejected):o.push(e.fulfilled,e.rejected)});let c=[];this.interceptors.response.forEach(function(e){c.push(e.fulfilled,e.rejected)});let l,u=0,d;if(!s){let e=[X1.bind(this),void 0];for(e.unshift(...o),e.push(...c),d=e.length,l=Promise.resolve(t);u{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null}),this.promise.then=e=>{let t,r=new Promise(e=>{n.subscribe(e),t=e}).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e(function(e,r,i){n.reason||(n.reason=new p1(e,r,i),t(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;let t=this._listeners.indexOf(e);t!==-1&&this._listeners.splice(t,1)}toAbortSignal(){let e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let t;return{token:new e(function(e){t=e}),cancel:t}}};function a0(e){return function(t){return e.apply(null,t)}}function o0(e){return $.isObject(e)&&e.isAxiosError===!0}var s0={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(s0).forEach(([e,t])=>{s0[t]=e});function c0(e){let t=new r0(e),n=dQ(r0.prototype.request,t);return $.extend(n,r0.prototype,t,{allOwnKeys:!0}),$.extend(n,t,null,{allOwnKeys:!0}),n.create=function(t){return c0(D1(e,t))},n}var l0=c0(X$);l0.Axios=r0,l0.CanceledError=p1,l0.CancelToken=i0,l0.isCancel=f1,l0.VERSION=Z1,l0.toFormData=O$,l0.AxiosError=S$,l0.Cancel=l0.CanceledError,l0.all=function(e){return Promise.all(e)},l0.spread=a0,l0.isAxiosError=o0,l0.mergeConfig=D1,l0.AxiosHeaders=u1,l0.formToJSON=e=>q$($.isHTMLForm(e)?new FormData(e):e),l0.getAdapter=J1.getAdapter,l0.HttpStatusCode=s0,l0.default=l0;function u0(){return`${window.location.origin}/admin/`.replace(/\/?$/,`/`)}function d0(){return new URL(`login`,u0()).pathname}function f0(){return`${u0()}#/login`}function p0(){{let e=window.location.hash.replace(/^#/,``);return e===`/login`||e.startsWith(`/login?`)}return window.location.pathname.startsWith(d0())}var m0=l0.create({baseURL:`/api`,timeout:3e4,headers:{"Content-Type":`application/json`,Accept:`application/json`}});m0.interceptors.request.use(e=>{let t=localStorage.getItem(`admin_token`);return t&&(e.headers.Authorization=`Bearer ${t}`),typeof FormData<`u`&&e.data instanceof FormData&&(e.headers&&typeof e.headers.delete==`function`?e.headers.delete(`Content-Type`):e.headers&&delete e.headers[`Content-Type`],e.transformRequest=[e=>e]),e}),m0.interceptors.response.use(e=>e,e=>(e.response?.status===401&&(localStorage.removeItem(`admin_token`),p0()||window.location.assign(f0())),Promise.reject(e)));async function h0(e){let{data:t}=await m0.post(`/admin/v1/auth/login`,e);return t.data}async function g0(){let{data:e}=await m0.post(`/admin/v1/auth/logout`);return e}async function _0(){let{data:e}=await m0.get(`/admin/v1/auth/me`);return e.data}async function v0(e){let{data:t}=await m0.post(`/admin/v1/auth/password`,e);return t}var y0=`modulepreload`,b0=function(e){return`/admin/`+e},x0={},S0=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=b0(t,n),t in x0)return;x0[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:y0,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},C0=Object.assign({"/src/views/HomeView.vue":()=>S0(()=>import(`./HomeView-BARide6a.js`),__vite__mapDeps([0,1,2,3])),"/src/views/assets/banners/index.vue":()=>S0(()=>import(`./banners-BY60jvD-.js`),__vite__mapDeps([4,1,2,5,6,7,8,9,10,11])),"/src/views/assets/crawler/index.vue":()=>S0(()=>import(`./crawler-OUbh_VNx.js`),__vite__mapDeps([12,1,2,13,14,15,16,9,17])),"/src/views/assets/map/index.vue":()=>S0(()=>import(`./map-Dh8epoQE.js`),__vite__mapDeps([18,1,2,13,19,20,14,16,21,22,9,23,24,25])),"/src/views/assets/papers/index.vue":()=>S0(()=>import(`./papers-Dtxcpe4H.js`),__vite__mapDeps([26,1,2,13,16,9,27])),"/src/views/assets/universities/index.vue":()=>S0(()=>import(`./universities-CpU0jq98.js`),__vite__mapDeps([28,1,2,13,9,23,29])),"/src/views/dashboard/index.vue":()=>S0(()=>import(`./dashboard-DlyqRLa3.js`),__vite__mapDeps([30,1,2,7,8,9,10,31,25])),"/src/views/demands/index.vue":()=>S0(()=>import(`./demands-LAAn9Pkv.js`),__vite__mapDeps([32,1,2,20,14,33,9,10,34])),"/src/views/login/index.vue":()=>S0(()=>import(`./login-BK1tGghB.js`),__vite__mapDeps([35,1,2,36])),"/src/views/operations/activities/index.vue":()=>S0(()=>import(`./activities-D7RRLXuc.js`),__vite__mapDeps([37,1,2,5,6,38,39,7,14,9,10,40])),"/src/views/operations/courses/index.vue":()=>S0(()=>import(`./courses-BaY1NbOC.js`),__vite__mapDeps([41,2,1,5,6,38,39,8,14,42,16,9,10,43])),"/src/views/operations/news/index.vue":()=>S0(()=>import(`./news-CCfjpL6m.js`),__vite__mapDeps([44,1,2,5,6,14,42,9,10,45])),"/src/views/students/index.vue":()=>S0(()=>import(`./students-Ct75XZLa.js`),__vite__mapDeps([46,1,2,14,16,9,21,47])),"/src/views/system/audit-logs/index.vue":()=>S0(()=>import(`./audit-logs-BR7rcSR4.js`),__vite__mapDeps([48,1,2,9])),"/src/views/system/dict/index.vue":()=>S0(()=>import(`./dict-CW3bULB4.js`),__vite__mapDeps([49,1,2,14,9,10,50])),"/src/views/system/grid-members/index.vue":()=>S0(()=>import(`./grid-members-ByD9ePVc.js`),__vite__mapDeps([51,1,2,15,16,9,10])),"/src/views/system/menus/index.vue":()=>S0(()=>import(`./menus-Cc8c82My.js`),__vite__mapDeps([52,1,2,53,9])),"/src/views/system/research-directions/index.vue":()=>S0(()=>import(`./research-directions-Bn9dd2FC.js`),__vite__mapDeps([54,1,2,15,9,10])),"/src/views/system/roles/index.vue":()=>S0(()=>import(`./roles-BwiqCxdW.js`),__vite__mapDeps([55,1,2,53,56,9,10,57])),"/src/views/system/users/index.vue":()=>S0(()=>import(`./users-Co7RlyBg.js`),__vite__mapDeps([58,1,2,56,33,9,10])),"/src/views/teachers/components/TeacherDetailDialog.vue":()=>S0(()=>import(`./TeacherDetailDialog-BY1NDYPP.js`).then(e=>e.n),__vite__mapDeps([19,2,1,13,20,14,16,21,22])),"/src/views/teachers/index.vue":()=>S0(()=>import(`./teachers-D6avaTco.js`),__vite__mapDeps([59,1,2,20,14,16,33,19,13,21,22,9,60]))});function w0(e){let t=e.replace(/^\//,``).replace(/\.vue$/i,``),n=Object.keys(C0).find(e=>e.endsWith(`/${t}.vue`));return n?C0[n]:(console.warn(`[resolveView] 未找到组件:`,e),()=>S0(()=>import(`./dashboard-DlyqRLa3.js`),__vite__mapDeps([30,1,2,7,8,9,10,31,25])))}var T0=`admin_token`;function E0(e){let t=[],n=e=>{for(let r of e){r.children?.length&&n(r.children);let e=r.component?.trim();if(!e)continue;let i=r.path.replace(/^\//,``);t.push({path:i,name:r.name,component:w0(e),meta:{title:r.title,keepAlive:r.keep_alive===1}})}};return n(e),t}var D0=wt(`auth`,{state:()=>({token:localStorage.getItem(T0)||``,user:null,permissions:[],menus:[],routesAdded:!1}),getters:{isLoggedIn:e=>!!e.token,isGridMember:e=>e.user?.is_grid_member===!0,isSuperAdmin:e=>e.user?.is_super_admin===!0},actions:{setToken(e){this.token=e,localStorage.setItem(T0,e)},clearAuth(){this.token=``,this.user=null,this.permissions=[],this.menus=[],this.routesAdded=!1,localStorage.removeItem(T0)},async login(e,t){let n=await h0({username:e,password:t});this.setToken(n.token),this.user=n.user},async logout(){try{await g0()}finally{this.clearAuth()}},async bootstrap(e){let t=await _0();if(this.user=t.user,this.permissions=t.permissions,this.menus=t.menus,!this.routesAdded){let n=[{path:``,redirect:`/dashboard`},...E0(t.menus)];e.addRoute({path:`/`,name:`AdminShell`,component:()=>S0(()=>import(`./AdminLayout-DZsZmeMS.js`),__vite__mapDeps([61,1,2,62])),meta:{requiresAuth:!0},children:n}),this.routesAdded=!0}}}}),O0=uQ({history:kZ(`/admin/`),routes:[{path:`/login`,name:`login`,component:()=>S0(()=>import(`./login-BK1tGghB.js`),__vite__mapDeps([35,1,2,36])),meta:{public:!0,title:`登录`}}]});O0.beforeEach(async(e,t,n)=>{let r=D0();if(e.meta.public)return r.token&&e.name===`login`?n({path:`/dashboard`}):n();if(!r.token)return n({name:`login`,query:{redirect:e.fullPath}});if(!r.routesAdded)try{return await r.bootstrap(O0),n({...e,replace:!0})}catch{return r.clearAuth(),n({name:`login`})}return n()});var k0=Ne(rX);k0.use(ut()),k0.use(O0),k0.use(QY,{locale:$Y}),k0.mount(`#app`);export{RS as C,cS as S,Sb as _,SX as a,ex as b,MY as c,L_ as d,ov as f,py as g,j_ as h,l0 as i,hY as l,Ev as m,v0 as n,xX as o,mv as p,m0 as r,eX as s,D0 as t,N_ as u,Mb as v,_x as x,Zb as y}; \ No newline at end of file +`+n)}}catch{}}throw e}}_request(e,t){typeof e==`string`?(t||={},t.url=e):t=e||{},t=D1(this.defaults,t);let{transitional:n,paramsSerializer:r,headers:i}=t;n!==void 0&&t0.assertOptions(n,{silentJSONParsing:n0.transitional(n0.boolean),forcedJSONParsing:n0.transitional(n0.boolean),clarifyTimeoutError:n0.transitional(n0.boolean),legacyInterceptorReqResOrdering:n0.transitional(n0.boolean)},!1),r!=null&&($.isFunction(r)?t.paramsSerializer={serialize:r}:t0.assertOptions(r,{encode:n0.function,serialize:n0.function},!0)),t.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls===void 0?t.allowAbsoluteUrls=!0:t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls),t0.assertOptions(t,{baseUrl:n0.spelling(`baseURL`),withXsrfToken:n0.spelling(`withXSRFToken`)},!0),t.method=(t.method||this.defaults.method||`get`).toLowerCase();let a=i&&$.merge(i.common,i[t.method]);i&&$.forEach([`delete`,`get`,`head`,`post`,`put`,`patch`,`common`],e=>{delete i[e]}),t.headers=u1.concat(a,i);let o=[],s=!0;this.interceptors.request.forEach(function(e){if(typeof e.runWhen==`function`&&e.runWhen(t)===!1)return;s&&=e.synchronous;let n=t.transitional||F$;n&&n.legacyInterceptorReqResOrdering?o.unshift(e.fulfilled,e.rejected):o.push(e.fulfilled,e.rejected)});let c=[];this.interceptors.response.forEach(function(e){c.push(e.fulfilled,e.rejected)});let l,u=0,d;if(!s){let e=[X1.bind(this),void 0];for(e.unshift(...o),e.push(...c),d=e.length,l=Promise.resolve(t);u{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null}),this.promise.then=e=>{let t,r=new Promise(e=>{n.subscribe(e),t=e}).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e(function(e,r,i){n.reason||(n.reason=new p1(e,r,i),t(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;let t=this._listeners.indexOf(e);t!==-1&&this._listeners.splice(t,1)}toAbortSignal(){let e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let t;return{token:new e(function(e){t=e}),cancel:t}}};function a0(e){return function(t){return e.apply(null,t)}}function o0(e){return $.isObject(e)&&e.isAxiosError===!0}var s0={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(s0).forEach(([e,t])=>{s0[t]=e});function c0(e){let t=new r0(e),n=dQ(r0.prototype.request,t);return $.extend(n,r0.prototype,t,{allOwnKeys:!0}),$.extend(n,t,null,{allOwnKeys:!0}),n.create=function(t){return c0(D1(e,t))},n}var l0=c0(X$);l0.Axios=r0,l0.CanceledError=p1,l0.CancelToken=i0,l0.isCancel=f1,l0.VERSION=Z1,l0.toFormData=O$,l0.AxiosError=S$,l0.Cancel=l0.CanceledError,l0.all=function(e){return Promise.all(e)},l0.spread=a0,l0.isAxiosError=o0,l0.mergeConfig=D1,l0.AxiosHeaders=u1,l0.formToJSON=e=>q$($.isHTMLForm(e)?new FormData(e):e),l0.getAdapter=J1.getAdapter,l0.HttpStatusCode=s0,l0.default=l0;function u0(){return`${window.location.origin}/admin/`.replace(/\/?$/,`/`)}function d0(){return new URL(`login`,u0()).pathname}function f0(){return`${u0()}#/login`}function p0(){{let e=window.location.hash.replace(/^#/,``);return e===`/login`||e.startsWith(`/login?`)}return window.location.pathname.startsWith(d0())}var m0=l0.create({baseURL:`/api`,timeout:3e4,headers:{"Content-Type":`application/json`,Accept:`application/json`}});m0.interceptors.request.use(e=>{let t=localStorage.getItem(`admin_token`);return t&&(e.headers.Authorization=`Bearer ${t}`),typeof FormData<`u`&&e.data instanceof FormData&&(e.headers&&typeof e.headers.delete==`function`?e.headers.delete(`Content-Type`):e.headers&&delete e.headers[`Content-Type`],e.transformRequest=[e=>e]),e}),m0.interceptors.response.use(e=>e,e=>(e.response?.status===401&&(localStorage.removeItem(`admin_token`),p0()||window.location.assign(f0())),Promise.reject(e)));async function h0(e){let{data:t}=await m0.post(`/admin/v1/auth/login`,e);return t.data}async function g0(){let{data:e}=await m0.post(`/admin/v1/auth/logout`);return e}async function _0(){let{data:e}=await m0.get(`/admin/v1/auth/me`);return e.data}async function v0(e){let{data:t}=await m0.post(`/admin/v1/auth/password`,e);return t}var y0=`modulepreload`,b0=function(e){return`/admin/`+e},x0={},S0=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=b0(t,n),t in x0)return;x0[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:y0,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},C0=Object.assign({"/src/views/HomeView.vue":()=>S0(()=>import(`./HomeView-BnX6Xt_3.js`),__vite__mapDeps([0,1,2,3])),"/src/views/assets/banners/index.vue":()=>S0(()=>import(`./banners-BMy9ge9T.js`),__vite__mapDeps([4,1,2,5,6,7,8,9,10,11])),"/src/views/assets/crawler/index.vue":()=>S0(()=>import(`./crawler-DXXsyrmH.js`),__vite__mapDeps([12,1,2,13,14,15,16,9,17])),"/src/views/assets/map/index.vue":()=>S0(()=>import(`./map-DSyVvuR0.js`),__vite__mapDeps([18,1,2,13,19,20,14,16,21,22,9,23,24,25])),"/src/views/assets/papers/index.vue":()=>S0(()=>import(`./papers-3VSMemUr.js`),__vite__mapDeps([26,1,2,13,16,9,27])),"/src/views/assets/universities/index.vue":()=>S0(()=>import(`./universities-EPS_mI41.js`),__vite__mapDeps([28,1,2,13,9,23,29])),"/src/views/dashboard/index.vue":()=>S0(()=>import(`./dashboard-DoD5e1Jo.js`),__vite__mapDeps([30,1,2,7,8,9,10,31,25])),"/src/views/demands/index.vue":()=>S0(()=>import(`./demands-B9B65gIt.js`),__vite__mapDeps([32,1,2,20,14,33,9,10,34])),"/src/views/login/index.vue":()=>S0(()=>import(`./login-BhFGNBB2.js`),__vite__mapDeps([35,1,2,36])),"/src/views/operations/activities/index.vue":()=>S0(()=>import(`./activities-DYl2M41A.js`),__vite__mapDeps([37,1,2,5,6,38,39,7,14,9,10,40])),"/src/views/operations/courses/index.vue":()=>S0(()=>import(`./courses-BnsdmT2t.js`),__vite__mapDeps([41,2,1,5,6,38,39,8,14,42,16,9,10,43])),"/src/views/operations/news/index.vue":()=>S0(()=>import(`./news-CNkmO_x6.js`),__vite__mapDeps([44,1,2,5,6,14,42,9,10,45])),"/src/views/students/index.vue":()=>S0(()=>import(`./students-CW43hkwk.js`),__vite__mapDeps([46,1,2,14,16,9,21,47])),"/src/views/system/audit-logs/index.vue":()=>S0(()=>import(`./audit-logs-BSSuoZTi.js`),__vite__mapDeps([48,1,2,9])),"/src/views/system/dict/index.vue":()=>S0(()=>import(`./dict-BPnVfOXj.js`),__vite__mapDeps([49,1,2,14,9,10,50])),"/src/views/system/grid-members/index.vue":()=>S0(()=>import(`./grid-members-C1uECQyX.js`),__vite__mapDeps([51,1,2,15,16,9,10])),"/src/views/system/menus/index.vue":()=>S0(()=>import(`./menus-ClGPwfR6.js`),__vite__mapDeps([52,1,2,53,9])),"/src/views/system/research-directions/index.vue":()=>S0(()=>import(`./research-directions-BIEEUGLu.js`),__vite__mapDeps([54,1,2,15,9,10])),"/src/views/system/roles/index.vue":()=>S0(()=>import(`./roles-DkBQwmfK.js`),__vite__mapDeps([55,1,2,53,56,9,10,57])),"/src/views/system/users/index.vue":()=>S0(()=>import(`./users-BKqYi4zs.js`),__vite__mapDeps([58,1,2,56,33,9,10])),"/src/views/teachers/components/TeacherDetailDialog.vue":()=>S0(()=>import(`./TeacherDetailDialog-SGxVTFii.js`).then(e=>e.n),__vite__mapDeps([19,2,1,13,20,14,16,21,22])),"/src/views/teachers/index.vue":()=>S0(()=>import(`./teachers-B_-YWY83.js`),__vite__mapDeps([59,1,2,20,14,16,33,19,13,21,22,9,60]))});function w0(e){let t=e.replace(/^\//,``).replace(/\.vue$/i,``),n=Object.keys(C0).find(e=>e.endsWith(`/${t}.vue`));return n?C0[n]:(console.warn(`[resolveView] 未找到组件:`,e),()=>S0(()=>import(`./dashboard-DoD5e1Jo.js`),__vite__mapDeps([30,1,2,7,8,9,10,31,25])))}var T0=`admin_token`;function E0(e){let t=[],n=e=>{for(let r of e){r.children?.length&&n(r.children);let e=r.component?.trim();if(!e)continue;let i=r.path.replace(/^\//,``);t.push({path:i,name:r.name,component:w0(e),meta:{title:r.title,keepAlive:r.keep_alive===1}})}};return n(e),t}var D0=wt(`auth`,{state:()=>({token:localStorage.getItem(T0)||``,user:null,permissions:[],menus:[],routesAdded:!1}),getters:{isLoggedIn:e=>!!e.token,isGridMember:e=>e.user?.is_grid_member===!0,isSuperAdmin:e=>e.user?.is_super_admin===!0},actions:{setToken(e){this.token=e,localStorage.setItem(T0,e)},clearAuth(){this.token=``,this.user=null,this.permissions=[],this.menus=[],this.routesAdded=!1,localStorage.removeItem(T0)},async login(e,t){let n=await h0({username:e,password:t});this.setToken(n.token),this.user=n.user},async logout(){try{await g0()}finally{this.clearAuth()}},async bootstrap(e){let t=await _0();if(this.user=t.user,this.permissions=t.permissions,this.menus=t.menus,!this.routesAdded){let n=[{path:``,redirect:`/dashboard`},...E0(t.menus)];e.addRoute({path:`/`,name:`AdminShell`,component:()=>S0(()=>import(`./AdminLayout-B7QrbiEr.js`),__vite__mapDeps([61,1,2,62])),meta:{requiresAuth:!0},children:n}),this.routesAdded=!0}}}}),O0=uQ({history:kZ(`/admin/`),routes:[{path:`/login`,name:`login`,component:()=>S0(()=>import(`./login-BhFGNBB2.js`),__vite__mapDeps([35,1,2,36])),meta:{public:!0,title:`登录`}}]});O0.beforeEach(async(e,t,n)=>{let r=D0();if(e.meta.public)return r.token&&e.name===`login`?n({path:`/dashboard`}):n();if(!r.token)return n({name:`login`,query:{redirect:e.fullPath}});if(!r.routesAdded)try{return await r.bootstrap(O0),n({...e,replace:!0})}catch{return r.clearAuth(),n({name:`login`})}return n()});var k0=Ne(rX);k0.use(ut()),k0.use(O0),k0.use(QY,{locale:$Y}),k0.mount(`#app`);export{RS as C,cS as S,Sb as _,SX as a,ex as b,MY as c,L_ as d,ov as f,py as g,j_ as h,l0 as i,hY as l,Ev as m,v0 as n,xX as o,mv as p,m0 as r,eX as s,D0 as t,N_ as u,Mb as v,_x as x,Zb as y}; \ No newline at end of file diff --git a/public/admin/assets/login-BK1tGghB.js b/public/admin/assets/login-BhFGNBB2.js similarity index 96% rename from public/admin/assets/login-BK1tGghB.js rename to public/admin/assets/login-BhFGNBB2.js index 8f72e18..935bd09 100644 --- a/public/admin/assets/login-BK1tGghB.js +++ b/public/admin/assets/login-BhFGNBB2.js @@ -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-jb05DpEw.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}; \ No newline at end of file +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-DTIMLswB.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}; \ No newline at end of file diff --git a/public/admin/assets/map-Dh8epoQE.js b/public/admin/assets/map-DSyVvuR0.js similarity index 93% rename from public/admin/assets/map-Dh8epoQE.js rename to public/admin/assets/map-DSyVvuR0.js index bff84c0..e067edb 100644 --- a/public/admin/assets/map-Dh8epoQE.js +++ b/public/admin/assets/map-DSyVvuR0.js @@ -1 +1 @@ -import{C as e,Ct as t,D as n,E as r,G as i,I as a,Qt as ee,S as o,T as s,X as te,Y as c,at as l,b as u,ht as d,m as f,ot as p,q as m,rt as h,tn as g,y as _,z as ne}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{C as v,S as re,_ as y,b as ie,s as b,u as ae,x as oe}from"./index-jb05DpEw.js";import{t as se}from"./usePageLoad-DFTLo_Lv.js";import{u as ce}from"./assets-Wj17Zlgs.js";import{t as le}from"./TeacherDetailDialog-BY1NDYPP.js";import{n as ue}from"./teacherStar-By0_CBs7.js";import{a as de,c as fe,f as pe,i as me,o as he,s as ge}from"./tiandituMap-DOhOVIi3.js";/* empty css */var x={class:`dashboard-page executive-dashboard`},S={key:0,class:`radar-top-grid`},C={class:`radar-kpi`},w={class:`kpi-icon`},T={class:`radar-kpi`},E={class:`kpi-icon`},D={class:`radar-kpi`},O={class:`kpi-icon`},k={class:`radar-kpi`},A={class:`kpi-icon`},j={class:`radar-map-card`},M={class:`radar-main`},N={class:`radar-map-container-wrap`},P={key:0,class:`radar-map-placeholder`},F={key:1,class:`radar-map-placeholder`},I={key:2,class:`radar-map-stage`},L={class:`radar-side`},_e={class:`radar-side-head`},ve={key:0,class:`radar-side-count`},ye={class:`radar-side-body`},be={key:0,class:`radar-empty-panel`},xe={class:`radar-teacher-avatar`},Se=[`onClick`],Ce={class:`stars`},we={class:`radar-empty-panel`},Te={key:0,class:`radar-view-summary`},Ee={class:`radar-bottom-grid`},De={class:`radar-info-card`},Oe={class:`radar-school-list`},ke={class:`radar-info-card`},Ae={class:`radar-field-list`},je={class:`radar-field-bar`},Me={key:0,class:`empty-hint`},R=b(n({__name:`index`,setup(n){let b=d(!1),R=d(!1),z=d(``),B=d(null),V=d(null),H=d(!1),U=d(null),W=d(null),G=null,K=[],q=_(()=>B.value?.summary),Ne=_(()=>B.value?.quality||[]),J=_(()=>B.value?.research_fields||[]),Pe=_(()=>Math.max(...J.value.map(e=>e.percent),1));function Y(e,t){return e?e.length>t?`${e.slice(0,t)}…`:e:``}function Fe(e){return ue(e.star_level_item?.value,e.star_level_item?.label)}function X(e){U.value=e,H.value=!0}function Ie(e){V.value=e}async function Z(){b.value=!0;try{B.value=await ce(),V.value&&=B.value.schools.find(e=>e.id===V.value?.id)||null,await a(),await Q()}finally{b.value=!1}}async function Q(){if(!W.value)return;if(z.value=``,!ge()){z.value=`未配置天地图 Key(VITE_TIANDITU_TK)`;return}let e=B.value?.schools||[];if(!e.length){$();return}R.value=!0;try{let t=await fe();$();let n=W.value;n.innerHTML=``,G=he(t,n),de(G);let r=new t.Icon({iconUrl:`data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2218%22%20height%3D%2218%22%20viewBox%3D%220%200%2018%2018%22%3E%3Ccircle%20cx%3D%229%22%20cy%3D%229%22%20r%3D%227%22%20fill%3D%22%23b11e23%22%20stroke%3D%22%23fff%22%20stroke-width%3D%223%22%2F%3E%3C%2Fsvg%3E`,iconSize:new t.Point(18,18),iconAnchor:new t.Point(9,9)});K=e.map(e=>{let n=new t.LngLat(e.longitude,e.latitude),i=new t.Marker(new t.LngLat(e.longitude,e.latitude),{icon:r}),a=new t.Label({text:e.name||`—`,position:n,offset:new t.Point(12,-10)});return a.setStyle?.({padding:`2px 6px`,border:`1px solid rgba(226, 232, 240, 0.92)`,borderRadius:`999px`,background:`rgba(255, 255, 255, 0.94)`,color:`#475569`,fontSize:`10.5px`,fontWeight:`500`,whiteSpace:`nowrap`,boxShadow:`0 5px 12px rgba(15, 23, 42, 0.07)`,pointerEvents:`none`}),i.addEventListener(`click`,()=>Ie(e)),G.addOverLay(i),G.addOverLay(a),{marker:i,label:a,schoolId:e.id}}),me(G,t),pe(G)}catch(e){let t=e instanceof Error?e.message:`地图初始化失败`;z.value=t.includes(`脚本`)||t.includes(`SDK`)?`${t}。若 Key 已配置域名白名单,请使用 https://slake.ali251.langye.net 访问(本地开发可在 hosts 绑定该域名后访问 http://slake.ali251.langye.net:5173)`:t,$()}finally{R.value=!1}}function $(){if(G){for(let{marker:e,label:t}of K)try{G.removeOverLay(e),G.removeOverLay(t)}catch{}G.clearOverLays?.(),G.destroy?.()}K=[],G=null}return h(()=>B.value?.schools.length,()=>{B.value&&!b.value&&a(()=>Q())}),se(Z),ne($),(n,a)=>{let d=c(`el-icon`),h=c(`el-button`),_=te(`loading`);return p((i(),e(`div`,x,[a[18]||=u(`div`,{class:`page-head`},[u(`h1`,{class:`radar-page-title`},`高校雷达网地图`)],-1),q.value?(i(),e(`div`,S,[u(`div`,C,[u(`span`,w,[r(d,null,{default:l(()=>[r(t(ie))]),_:1})]),a[1]||=u(`span`,null,[s(`已覆盖高校`),u(`em`,null,`已配置经纬度的高校`)],-1),u(`strong`,null,g(q.value.covered_schools),1)]),u(`div`,T,[u(`span`,E,[r(d,null,{default:l(()=>[r(t(v))]),_:1})]),a[2]||=u(`span`,null,[s(`关联老师`),u(`em`,null,`地图点位老师总数`)],-1),u(`strong`,null,g(q.value.map_teachers),1)]),u(`div`,D,[u(`span`,O,[r(d,null,{default:l(()=>[r(t(re))]),_:1})]),a[3]||=u(`span`,null,[s(`五星老师`),u(`em`,null,`高价值合作对象`)],-1),u(`strong`,null,g(q.value.five_star_teachers),1)]),u(`div`,k,[u(`span`,A,[r(d,null,{default:l(()=>[r(t(y))]),_:1})]),a[4]||=u(`span`,null,[s(`待补坐标`),u(`em`,null,`高校坐标待完善`)],-1),u(`strong`,null,g(q.value.pending_coords),1)])])):o(``,!0),u(`section`,j,[a[15]||=u(`div`,{class:`radar-map-toolbar`},[u(`h2`,null,`高校分布`),u(`span`,{class:`toolbar-hint`},`以苏州为中心展示,点击圆点或学校名称查看高校详情`)],-1),u(`div`,M,[u(`div`,N,[z.value?(i(),e(`div`,P,[r(d,{size:24},{default:l(()=>[r(t(ae))]),_:1}),a[5]||=u(`strong`,null,`地图暂不可用`,-1),u(`span`,null,g(z.value),1)])):!B.value?.schools.length&&!R.value?(i(),e(`div`,F,[r(d,{size:24},{default:l(()=>[r(t(y))]),_:1}),a[6]||=u(`strong`,null,`暂无地图点位`,-1),a[7]||=u(`span`,null,`请先在「高校坐标库」维护经纬度。`,-1)])):p((i(),e(`div`,I,[u(`div`,{ref_key:`mapContainerRef`,ref:W,class:`radar-map-container`},null,512)])),[[_,R.value]])]),u(`aside`,L,[u(`div`,_e,[u(`h3`,null,g(V.value?.name||`高校详情`),1),V.value?(i(),e(`span`,ve,[r(d,null,{default:l(()=>[r(t(v))]),_:1}),s(` `+g(V.value.teachers_count)+` 位 `,1)])):o(``,!0)]),u(`div`,ye,[V.value?(i(),e(f,{key:0},[V.value.teachers.length?o(``,!0):(i(),e(`div`,be,[r(d,{size:20},{default:l(()=>[r(t(v))]),_:1}),a[8]||=u(`strong`,null,`暂无关联老师`,-1),a[9]||=u(`span`,null,`该校已在地图上展示,可在老师库中关联高校后在此查看老师列表。`,-1)])),(i(!0),e(f,null,m(V.value.teachers,n=>(i(),e(`div`,{key:n.id,class:`radar-teacher-card`},[u(`span`,xe,[r(d,null,{default:l(()=>[r(t(v))]),_:1})]),u(`span`,null,[u(`button`,{type:`button`,class:`radar-teacher-name`,onClick:e=>X(n.id)},g(n.name),9,Se),u(`em`,null,g(Y(n.research_direction,16)),1),u(`i`,Ce,g(Fe(n)),1)]),r(h,{size:`small`,plain:``,onClick:e=>X(n.id)},{default:l(()=>[...a[10]||=[s(`详情`,-1)]]),_:1},8,[`onClick`])]))),128))],64)):(i(),e(f,{key:1},[u(`div`,we,[r(d,{size:20},{default:l(()=>[r(t(oe))]),_:1}),a[11]||=u(`strong`,null,`选择高校点位`,-1),a[12]||=u(`span`,null,`点击地图上的高校圆点,右侧会显示该校信息及关联老师列表。`,-1)]),q.value?(i(),e(`div`,Te,[a[13]||=u(`span`,null,`当前视图点位`,-1),u(`strong`,null,g(q.value.visible_points),1),a[14]||=u(`span`,null,`最高星级老师`,-1),u(`strong`,null,g(q.value.max_star)+` 星`,1)])):o(``,!0)],64))])])])]),u(`div`,Ee,[u(`section`,De,[a[16]||=u(`h2`,null,`数据质量`,-1),u(`div`,Oe,[(i(!0),e(f,null,m(Ne.value,t=>(i(),e(`div`,{key:t.label,class:`radar-school-row`},[u(`span`,null,[s(g(t.label),1),u(`em`,null,g(t.detail),1)])]))),128))])]),u(`section`,ke,[a[17]||=u(`h2`,null,`研究方向分布`,-1),u(`div`,Ae,[(i(!0),e(f,null,m(J.value,t=>(i(),e(`div`,{key:t.label,class:`radar-field-row`},[u(`span`,null,[s(g(t.label)+` `,1),u(`em`,null,g(t.count)+` 位老师`,1),u(`div`,je,[u(`i`,{style:ee({width:`${Math.round(t.percent/Pe.value*100)}%`})},null,4)])]),u(`strong`,null,g(t.percent)+`%`,1)]))),128)),J.value.length?o(``,!0):(i(),e(`p`,Me,`暂无研究方向统计数据`))])])]),r(le,{modelValue:H.value,"onUpdate:modelValue":a[0]||=e=>H.value=e,"teacher-id":U.value,readonly:``,onSaved:Z},null,8,[`modelValue`,`teacher-id`])])),[[_,b.value]])}}}),[[`__scopeId`,`data-v-6e2dfaad`]]);export{R as default}; \ No newline at end of file +import{C as e,Ct as t,D as n,E as r,G as i,I as a,Qt as ee,S as o,T as s,X as te,Y as c,at as l,b as u,ht as d,m as f,ot as p,q as m,rt as h,tn as g,y as _,z as ne}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{C as v,S as re,_ as y,b as ie,s as b,u as ae,x as oe}from"./index-DTIMLswB.js";import{t as se}from"./usePageLoad-DFTLo_Lv.js";import{u as ce}from"./assets-B5_Et8Pj.js";import{t as le}from"./TeacherDetailDialog-SGxVTFii.js";import{n as ue}from"./teacherStar-By0_CBs7.js";import{a as de,d as fe,i as pe,o as me,r as he,s as ge}from"./tiandituMap-BbTEN0Ou.js";/* empty css */var x={class:`dashboard-page executive-dashboard`},S={key:0,class:`radar-top-grid`},C={class:`radar-kpi`},w={class:`kpi-icon`},T={class:`radar-kpi`},E={class:`kpi-icon`},D={class:`radar-kpi`},O={class:`kpi-icon`},k={class:`radar-kpi`},A={class:`kpi-icon`},j={class:`radar-map-card`},M={class:`radar-main`},N={class:`radar-map-container-wrap`},P={key:0,class:`radar-map-placeholder`},F={key:1,class:`radar-map-placeholder`},I={key:2,class:`radar-map-stage`},L={class:`radar-side`},_e={class:`radar-side-head`},ve={key:0,class:`radar-side-count`},ye={class:`radar-side-body`},be={key:0,class:`radar-empty-panel`},xe={class:`radar-teacher-avatar`},Se=[`onClick`],Ce={class:`stars`},we={class:`radar-empty-panel`},Te={key:0,class:`radar-view-summary`},Ee={class:`radar-bottom-grid`},De={class:`radar-info-card`},Oe={class:`radar-school-list`},ke={class:`radar-info-card`},Ae={class:`radar-field-list`},je={class:`radar-field-bar`},Me={key:0,class:`empty-hint`},R=b(n({__name:`index`,setup(n){let b=d(!1),R=d(!1),z=d(``),B=d(null),V=d(null),H=d(!1),U=d(null),W=d(null),G=null,K=[],q=_(()=>B.value?.summary),Ne=_(()=>B.value?.quality||[]),J=_(()=>B.value?.research_fields||[]),Pe=_(()=>Math.max(...J.value.map(e=>e.percent),1));function Y(e,t){return e?e.length>t?`${e.slice(0,t)}…`:e:``}function Fe(e){return ue(e.star_level_item?.value,e.star_level_item?.label)}function X(e){U.value=e,H.value=!0}function Ie(e){V.value=e}async function Z(){b.value=!0;try{B.value=await ce(),V.value&&=B.value.schools.find(e=>e.id===V.value?.id)||null,await a(),await Q()}finally{b.value=!1}}async function Q(){if(!W.value)return;if(z.value=``,!me()){z.value=`未配置天地图 Key(VITE_TIANDITU_TK)`;return}let e=B.value?.schools||[];if(!e.length){$();return}R.value=!0;try{let t=await ge();$();let n=W.value;n.innerHTML=``,G=de(t,n),pe(G);let r=new t.Icon({iconUrl:`data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2218%22%20height%3D%2218%22%20viewBox%3D%220%200%2018%2018%22%3E%3Ccircle%20cx%3D%229%22%20cy%3D%229%22%20r%3D%227%22%20fill%3D%22%23b11e23%22%20stroke%3D%22%23fff%22%20stroke-width%3D%223%22%2F%3E%3C%2Fsvg%3E`,iconSize:new t.Point(18,18),iconAnchor:new t.Point(9,9)});K=e.map(e=>{let n=new t.LngLat(e.longitude,e.latitude),i=new t.Marker(new t.LngLat(e.longitude,e.latitude),{icon:r}),a=new t.Label({text:e.name||`—`,position:n,offset:new t.Point(12,-10)});return a.setStyle?.({padding:`2px 6px`,border:`1px solid rgba(226, 232, 240, 0.92)`,borderRadius:`999px`,background:`rgba(255, 255, 255, 0.94)`,color:`#475569`,fontSize:`10.5px`,fontWeight:`500`,whiteSpace:`nowrap`,boxShadow:`0 5px 12px rgba(15, 23, 42, 0.07)`,pointerEvents:`none`}),i.addEventListener(`click`,()=>Ie(e)),G.addOverLay(i),G.addOverLay(a),{marker:i,label:a,schoolId:e.id}}),he(G,t),fe(G)}catch(e){let t=e instanceof Error?e.message:`地图初始化失败`;z.value=t.includes(`脚本`)||t.includes(`SDK`)?`${t}。若 Key 已配置域名白名单,请使用 https://slake.ali251.langye.net 访问(本地开发可在 hosts 绑定该域名后访问 http://slake.ali251.langye.net:5173)`:t,$()}finally{R.value=!1}}function $(){if(G){for(let{marker:e,label:t}of K)try{G.removeOverLay(e),G.removeOverLay(t)}catch{}G.clearOverLays?.(),G.destroy?.()}K=[],G=null}return h(()=>B.value?.schools.length,()=>{B.value&&!b.value&&a(()=>Q())}),se(Z),ne($),(n,a)=>{let d=c(`el-icon`),h=c(`el-button`),_=te(`loading`);return p((i(),e(`div`,x,[a[18]||=u(`div`,{class:`page-head`},[u(`h1`,{class:`radar-page-title`},`高校雷达网地图`)],-1),q.value?(i(),e(`div`,S,[u(`div`,C,[u(`span`,w,[r(d,null,{default:l(()=>[r(t(ie))]),_:1})]),a[1]||=u(`span`,null,[s(`已覆盖高校`),u(`em`,null,`已配置经纬度的高校`)],-1),u(`strong`,null,g(q.value.covered_schools),1)]),u(`div`,T,[u(`span`,E,[r(d,null,{default:l(()=>[r(t(v))]),_:1})]),a[2]||=u(`span`,null,[s(`关联老师`),u(`em`,null,`地图点位老师总数`)],-1),u(`strong`,null,g(q.value.map_teachers),1)]),u(`div`,D,[u(`span`,O,[r(d,null,{default:l(()=>[r(t(re))]),_:1})]),a[3]||=u(`span`,null,[s(`五星老师`),u(`em`,null,`高价值合作对象`)],-1),u(`strong`,null,g(q.value.five_star_teachers),1)]),u(`div`,k,[u(`span`,A,[r(d,null,{default:l(()=>[r(t(y))]),_:1})]),a[4]||=u(`span`,null,[s(`待补坐标`),u(`em`,null,`高校坐标待完善`)],-1),u(`strong`,null,g(q.value.pending_coords),1)])])):o(``,!0),u(`section`,j,[a[15]||=u(`div`,{class:`radar-map-toolbar`},[u(`h2`,null,`高校分布`),u(`span`,{class:`toolbar-hint`},`以苏州为中心展示,点击圆点或学校名称查看高校详情`)],-1),u(`div`,M,[u(`div`,N,[z.value?(i(),e(`div`,P,[r(d,{size:24},{default:l(()=>[r(t(ae))]),_:1}),a[5]||=u(`strong`,null,`地图暂不可用`,-1),u(`span`,null,g(z.value),1)])):!B.value?.schools.length&&!R.value?(i(),e(`div`,F,[r(d,{size:24},{default:l(()=>[r(t(y))]),_:1}),a[6]||=u(`strong`,null,`暂无地图点位`,-1),a[7]||=u(`span`,null,`请先在「高校坐标库」维护经纬度。`,-1)])):p((i(),e(`div`,I,[u(`div`,{ref_key:`mapContainerRef`,ref:W,class:`radar-map-container`},null,512)])),[[_,R.value]])]),u(`aside`,L,[u(`div`,_e,[u(`h3`,null,g(V.value?.name||`高校详情`),1),V.value?(i(),e(`span`,ve,[r(d,null,{default:l(()=>[r(t(v))]),_:1}),s(` `+g(V.value.teachers_count)+` 位 `,1)])):o(``,!0)]),u(`div`,ye,[V.value?(i(),e(f,{key:0},[V.value.teachers.length?o(``,!0):(i(),e(`div`,be,[r(d,{size:20},{default:l(()=>[r(t(v))]),_:1}),a[8]||=u(`strong`,null,`暂无关联老师`,-1),a[9]||=u(`span`,null,`该校已在地图上展示,可在老师库中关联高校后在此查看老师列表。`,-1)])),(i(!0),e(f,null,m(V.value.teachers,n=>(i(),e(`div`,{key:n.id,class:`radar-teacher-card`},[u(`span`,xe,[r(d,null,{default:l(()=>[r(t(v))]),_:1})]),u(`span`,null,[u(`button`,{type:`button`,class:`radar-teacher-name`,onClick:e=>X(n.id)},g(n.name),9,Se),u(`em`,null,g(Y(n.research_direction,16)),1),u(`i`,Ce,g(Fe(n)),1)]),r(h,{size:`small`,plain:``,onClick:e=>X(n.id)},{default:l(()=>[...a[10]||=[s(`详情`,-1)]]),_:1},8,[`onClick`])]))),128))],64)):(i(),e(f,{key:1},[u(`div`,we,[r(d,{size:20},{default:l(()=>[r(t(oe))]),_:1}),a[11]||=u(`strong`,null,`选择高校点位`,-1),a[12]||=u(`span`,null,`点击地图上的高校圆点,右侧会显示该校信息及关联老师列表。`,-1)]),q.value?(i(),e(`div`,Te,[a[13]||=u(`span`,null,`当前视图点位`,-1),u(`strong`,null,g(q.value.visible_points),1),a[14]||=u(`span`,null,`最高星级老师`,-1),u(`strong`,null,g(q.value.max_star)+` 星`,1)])):o(``,!0)],64))])])])]),u(`div`,Ee,[u(`section`,De,[a[16]||=u(`h2`,null,`数据质量`,-1),u(`div`,Oe,[(i(!0),e(f,null,m(Ne.value,t=>(i(),e(`div`,{key:t.label,class:`radar-school-row`},[u(`span`,null,[s(g(t.label),1),u(`em`,null,g(t.detail),1)])]))),128))])]),u(`section`,ke,[a[17]||=u(`h2`,null,`研究方向分布`,-1),u(`div`,Ae,[(i(!0),e(f,null,m(J.value,t=>(i(),e(`div`,{key:t.label,class:`radar-field-row`},[u(`span`,null,[s(g(t.label)+` `,1),u(`em`,null,g(t.count)+` 位老师`,1),u(`div`,je,[u(`i`,{style:ee({width:`${Math.round(t.percent/Pe.value*100)}%`})},null,4)])]),u(`strong`,null,g(t.percent)+`%`,1)]))),128)),J.value.length?o(``,!0):(i(),e(`p`,Me,`暂无研究方向统计数据`))])])]),r(le,{modelValue:H.value,"onUpdate:modelValue":a[0]||=e=>H.value=e,"teacher-id":U.value,readonly:``,onSaved:Z},null,8,[`modelValue`,`teacher-id`])])),[[_,b.value]])}}}),[[`__scopeId`,`data-v-6e2dfaad`]]);export{R as default}; \ No newline at end of file diff --git a/public/admin/assets/menus-Cc8c82My.js b/public/admin/assets/menus-ClGPwfR6.js similarity index 97% rename from public/admin/assets/menus-Cc8c82My.js rename to public/admin/assets/menus-ClGPwfR6.js index 5ad70f5..6b7271b 100644 --- a/public/admin/assets/menus-Cc8c82My.js +++ b/public/admin/assets/menus-ClGPwfR6.js @@ -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,ht as l,m as u,ot as d,q as f,tn as p,x as m}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as h,l as g}from"./index-jb05DpEw.js";import{t as _}from"./usePageLoad-DFTLo_Lv.js";import{i as v,n as y,r as b,t as x}from"./menus-86C-Rtop.js";var S={class:`list-page`},C={class:`page-header`},w={class:`page-header-actions`},T={class:`table-row-actions`},E=t({__name:`index`,setup(t){let E=l(!1),D=l([]),O=l(!1),k=l({id:null,parent_id:null,path:``,name:``,title:``,component:``,icon:``,sort:0,visible:1,keep_alive:0,permission_code:``,status:1}),A=l([]);function j(e){let t=[{label:`根节点`,value:null}],n=(e,r)=>{for(let i of e)t.push({label:`${r}${i.title} (#${i.id})`,value:i.id}),i.children?.length&&n(i.children,r+` `)};return n(e,``),t}async function M(){E.value=!0;try{D.value=await b(),A.value=j(D.value)}finally{E.value=!1}}function N(e=null){k.value={id:null,parent_id:e,path:``,name:``,title:``,component:``,icon:``,sort:0,visible:1,keep_alive:0,permission_code:``,status:1},O.value=!0}function P(e){k.value={id:e.id,parent_id:e.parent_id??null,path:e.path,name:e.name,title:e.title,component:e.component||``,icon:e.icon||``,sort:e.sort,visible:e.visible,keep_alive:e.keep_alive,permission_code:e.permission_code||``,status:e.status??1},O.value=!0}async function F(){let e={parent_id:k.value.parent_id,path:k.value.path,name:k.value.name,title:k.value.title,component:k.value.component||null,icon:k.value.icon||null,sort:k.value.sort,visible:k.value.visible,keep_alive:k.value.keep_alive,permission_code:k.value.permission_code||null,status:k.value.status};k.value.id?await v(k.value.id,e):await x(e),g.success(`已保存`),O.value=!1,await M()}async function I(e){await h.confirm(`确定删除菜单「${e.title}」?`,`提示`,{type:`warning`}),await y(e.id),g.success(`已删除`),await M()}return _(M),(t,l)=>{let h=o(`el-button`),g=o(`el-table-column`),_=o(`el-table`),v=o(`el-card`),y=o(`el-option`),b=o(`el-select`),x=o(`el-form-item`),j=o(`el-input`),L=o(`el-input-number`),R=o(`el-switch`),z=o(`el-form`),B=o(`el-dialog`),V=a(`loading`);return r(),e(u,null,[c(`div`,S,[c(`div`,C,[l[16]||=c(`h1`,{class:`page-title`},`菜单管理`,-1),c(`div`,w,[n(h,{onClick:M},{default:s(()=>[...l[14]||=[i(`刷新`,-1)]]),_:1}),n(h,{type:`primary`,size:`small`,class:`btn-create`,onClick:l[0]||=e=>N(null)},{default:s(()=>[...l[15]||=[i(`新增根菜单`,-1)]]),_:1})])]),d((r(),m(v,{shadow:`never`,class:`admin-list-card`},{default:s(()=>[n(_,{data:D.value,"row-key":`id`,"default-expand-all":``,"tree-props":{children:`children`}},{default:s(()=>[n(g,{prop:`title`,label:`标题`,"min-width":`160`}),n(g,{prop:`path`,label:`Path`,width:`180`}),n(g,{prop:`name`,label:`路由 name`,width:`140`}),n(g,{prop:`component`,label:`组件`,"min-width":`180`,"show-overflow-tooltip":``}),n(g,{prop:`sort`,label:`排序`,width:`80`,align:`center`}),n(g,{label:`显示`,width:`80`,align:`center`},{default:s(({row:e})=>[i(p(e.visible?`是`:`否`),1)]),_:1}),n(g,{label:`操作`,width:`240`,fixed:`right`},{default:s(({row:e})=>[c(`div`,T,[n(h,{class:`btn-action-primary`,onClick:t=>N(e.id)},{default:s(()=>[...l[17]||=[i(`子菜单`,-1)]]),_:1},8,[`onClick`]),n(h,{class:`btn-action-secondary`,onClick:t=>P(e)},{default:s(()=>[...l[18]||=[i(`编辑`,-1)]]),_:1},8,[`onClick`]),n(h,{class:`btn-action-secondary`,onClick:t=>I(e)},{default:s(()=>[...l[19]||=[i(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])]),_:1})),[[V,E.value]])]),n(B,{modelValue:O.value,"onUpdate:modelValue":l[13]||=e=>O.value=e,title:k.value.id?`编辑菜单`:`新增菜单`,width:`560px`},{footer:s(()=>[n(h,{onClick:l[12]||=e=>O.value=!1},{default:s(()=>[...l[20]||=[i(`取消`,-1)]]),_:1}),n(h,{type:`primary`,onClick:F},{default:s(()=>[...l[21]||=[i(`保存`,-1)]]),_:1})]),default:s(()=>[n(z,{"label-width":`110px`},{default:s(()=>[n(x,{label:`父级`},{default:s(()=>[n(b,{modelValue:k.value.parent_id,"onUpdate:modelValue":l[1]||=e=>k.value.parent_id=e,clearable:``,filterable:``,placeholder:`根`,style:{width:`100%`}},{default:s(()=>[(r(!0),e(u,null,f(A.value,e=>(r(),m(y,{key:String(e.value)+e.label,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1}),n(x,{label:`Path`},{default:s(()=>[n(j,{modelValue:k.value.path,"onUpdate:modelValue":l[2]||=e=>k.value.path=e,placeholder:`如 /system/users`},null,8,[`modelValue`])]),_:1}),n(x,{label:`路由 name`},{default:s(()=>[n(j,{modelValue:k.value.name,"onUpdate:modelValue":l[3]||=e=>k.value.name=e},null,8,[`modelValue`])]),_:1}),n(x,{label:`标题`},{default:s(()=>[n(j,{modelValue:k.value.title,"onUpdate:modelValue":l[4]||=e=>k.value.title=e},null,8,[`modelValue`])]),_:1}),n(x,{label:`组件`},{default:s(()=>[n(j,{modelValue:k.value.component,"onUpdate:modelValue":l[5]||=e=>k.value.component=e,placeholder:`如 system/users/index`},null,8,[`modelValue`])]),_:1}),n(x,{label:`图标`},{default:s(()=>[n(j,{modelValue:k.value.icon,"onUpdate:modelValue":l[6]||=e=>k.value.icon=e,placeholder:`Element Plus 图标名`},null,8,[`modelValue`])]),_:1}),n(x,{label:`权限码`},{default:s(()=>[n(j,{modelValue:k.value.permission_code,"onUpdate:modelValue":l[7]||=e=>k.value.permission_code=e,placeholder:`可选,预留与后期接口权限对齐;当前不校验`},null,8,[`modelValue`])]),_:1}),n(x,{label:`排序`},{default:s(()=>[n(L,{modelValue:k.value.sort,"onUpdate:modelValue":l[8]||=e=>k.value.sort=e},null,8,[`modelValue`])]),_:1}),n(x,{label:`侧栏显示`},{default:s(()=>[n(R,{modelValue:k.value.visible,"onUpdate:modelValue":l[9]||=e=>k.value.visible=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1}),n(x,{label:`KeepAlive`},{default:s(()=>[n(R,{modelValue:k.value.keep_alive,"onUpdate:modelValue":l[10]||=e=>k.value.keep_alive=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1}),n(x,{label:`状态`},{default:s(()=>[n(R,{modelValue:k.value.status,"onUpdate:modelValue":l[11]||=e=>k.value.status=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`])],64)}}});export{E as default}; \ No newline at end of file +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,ht as l,m as u,ot as d,q as f,tn as p,x as m}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as h,l as g}from"./index-DTIMLswB.js";import{t as _}from"./usePageLoad-DFTLo_Lv.js";import{i as v,n as y,r as b,t as x}from"./menus-DT_CKpVr.js";var S={class:`list-page`},C={class:`page-header`},w={class:`page-header-actions`},T={class:`table-row-actions`},E=t({__name:`index`,setup(t){let E=l(!1),D=l([]),O=l(!1),k=l({id:null,parent_id:null,path:``,name:``,title:``,component:``,icon:``,sort:0,visible:1,keep_alive:0,permission_code:``,status:1}),A=l([]);function j(e){let t=[{label:`根节点`,value:null}],n=(e,r)=>{for(let i of e)t.push({label:`${r}${i.title} (#${i.id})`,value:i.id}),i.children?.length&&n(i.children,r+` `)};return n(e,``),t}async function M(){E.value=!0;try{D.value=await b(),A.value=j(D.value)}finally{E.value=!1}}function N(e=null){k.value={id:null,parent_id:e,path:``,name:``,title:``,component:``,icon:``,sort:0,visible:1,keep_alive:0,permission_code:``,status:1},O.value=!0}function P(e){k.value={id:e.id,parent_id:e.parent_id??null,path:e.path,name:e.name,title:e.title,component:e.component||``,icon:e.icon||``,sort:e.sort,visible:e.visible,keep_alive:e.keep_alive,permission_code:e.permission_code||``,status:e.status??1},O.value=!0}async function F(){let e={parent_id:k.value.parent_id,path:k.value.path,name:k.value.name,title:k.value.title,component:k.value.component||null,icon:k.value.icon||null,sort:k.value.sort,visible:k.value.visible,keep_alive:k.value.keep_alive,permission_code:k.value.permission_code||null,status:k.value.status};k.value.id?await v(k.value.id,e):await x(e),g.success(`已保存`),O.value=!1,await M()}async function I(e){await h.confirm(`确定删除菜单「${e.title}」?`,`提示`,{type:`warning`}),await y(e.id),g.success(`已删除`),await M()}return _(M),(t,l)=>{let h=o(`el-button`),g=o(`el-table-column`),_=o(`el-table`),v=o(`el-card`),y=o(`el-option`),b=o(`el-select`),x=o(`el-form-item`),j=o(`el-input`),L=o(`el-input-number`),R=o(`el-switch`),z=o(`el-form`),B=o(`el-dialog`),V=a(`loading`);return r(),e(u,null,[c(`div`,S,[c(`div`,C,[l[16]||=c(`h1`,{class:`page-title`},`菜单管理`,-1),c(`div`,w,[n(h,{onClick:M},{default:s(()=>[...l[14]||=[i(`刷新`,-1)]]),_:1}),n(h,{type:`primary`,size:`small`,class:`btn-create`,onClick:l[0]||=e=>N(null)},{default:s(()=>[...l[15]||=[i(`新增根菜单`,-1)]]),_:1})])]),d((r(),m(v,{shadow:`never`,class:`admin-list-card`},{default:s(()=>[n(_,{data:D.value,"row-key":`id`,"default-expand-all":``,"tree-props":{children:`children`}},{default:s(()=>[n(g,{prop:`title`,label:`标题`,"min-width":`160`}),n(g,{prop:`path`,label:`Path`,width:`180`}),n(g,{prop:`name`,label:`路由 name`,width:`140`}),n(g,{prop:`component`,label:`组件`,"min-width":`180`,"show-overflow-tooltip":``}),n(g,{prop:`sort`,label:`排序`,width:`80`,align:`center`}),n(g,{label:`显示`,width:`80`,align:`center`},{default:s(({row:e})=>[i(p(e.visible?`是`:`否`),1)]),_:1}),n(g,{label:`操作`,width:`240`,fixed:`right`},{default:s(({row:e})=>[c(`div`,T,[n(h,{class:`btn-action-primary`,onClick:t=>N(e.id)},{default:s(()=>[...l[17]||=[i(`子菜单`,-1)]]),_:1},8,[`onClick`]),n(h,{class:`btn-action-secondary`,onClick:t=>P(e)},{default:s(()=>[...l[18]||=[i(`编辑`,-1)]]),_:1},8,[`onClick`]),n(h,{class:`btn-action-secondary`,onClick:t=>I(e)},{default:s(()=>[...l[19]||=[i(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])]),_:1})),[[V,E.value]])]),n(B,{modelValue:O.value,"onUpdate:modelValue":l[13]||=e=>O.value=e,title:k.value.id?`编辑菜单`:`新增菜单`,width:`560px`},{footer:s(()=>[n(h,{onClick:l[12]||=e=>O.value=!1},{default:s(()=>[...l[20]||=[i(`取消`,-1)]]),_:1}),n(h,{type:`primary`,onClick:F},{default:s(()=>[...l[21]||=[i(`保存`,-1)]]),_:1})]),default:s(()=>[n(z,{"label-width":`110px`},{default:s(()=>[n(x,{label:`父级`},{default:s(()=>[n(b,{modelValue:k.value.parent_id,"onUpdate:modelValue":l[1]||=e=>k.value.parent_id=e,clearable:``,filterable:``,placeholder:`根`,style:{width:`100%`}},{default:s(()=>[(r(!0),e(u,null,f(A.value,e=>(r(),m(y,{key:String(e.value)+e.label,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1}),n(x,{label:`Path`},{default:s(()=>[n(j,{modelValue:k.value.path,"onUpdate:modelValue":l[2]||=e=>k.value.path=e,placeholder:`如 /system/users`},null,8,[`modelValue`])]),_:1}),n(x,{label:`路由 name`},{default:s(()=>[n(j,{modelValue:k.value.name,"onUpdate:modelValue":l[3]||=e=>k.value.name=e},null,8,[`modelValue`])]),_:1}),n(x,{label:`标题`},{default:s(()=>[n(j,{modelValue:k.value.title,"onUpdate:modelValue":l[4]||=e=>k.value.title=e},null,8,[`modelValue`])]),_:1}),n(x,{label:`组件`},{default:s(()=>[n(j,{modelValue:k.value.component,"onUpdate:modelValue":l[5]||=e=>k.value.component=e,placeholder:`如 system/users/index`},null,8,[`modelValue`])]),_:1}),n(x,{label:`图标`},{default:s(()=>[n(j,{modelValue:k.value.icon,"onUpdate:modelValue":l[6]||=e=>k.value.icon=e,placeholder:`Element Plus 图标名`},null,8,[`modelValue`])]),_:1}),n(x,{label:`权限码`},{default:s(()=>[n(j,{modelValue:k.value.permission_code,"onUpdate:modelValue":l[7]||=e=>k.value.permission_code=e,placeholder:`可选,预留与后期接口权限对齐;当前不校验`},null,8,[`modelValue`])]),_:1}),n(x,{label:`排序`},{default:s(()=>[n(L,{modelValue:k.value.sort,"onUpdate:modelValue":l[8]||=e=>k.value.sort=e},null,8,[`modelValue`])]),_:1}),n(x,{label:`侧栏显示`},{default:s(()=>[n(R,{modelValue:k.value.visible,"onUpdate:modelValue":l[9]||=e=>k.value.visible=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1}),n(x,{label:`KeepAlive`},{default:s(()=>[n(R,{modelValue:k.value.keep_alive,"onUpdate:modelValue":l[10]||=e=>k.value.keep_alive=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1}),n(x,{label:`状态`},{default:s(()=>[n(R,{modelValue:k.value.status,"onUpdate:modelValue":l[11]||=e=>k.value.status=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`])],64)}}});export{E as default}; \ No newline at end of file diff --git a/public/admin/assets/menus-86C-Rtop.js b/public/admin/assets/menus-DT_CKpVr.js similarity index 81% rename from public/admin/assets/menus-86C-Rtop.js rename to public/admin/assets/menus-DT_CKpVr.js index 4d8c681..1e88d06 100644 --- a/public/admin/assets/menus-86C-Rtop.js +++ b/public/admin/assets/menus-DT_CKpVr.js @@ -1 +1 @@ -import{r as e}from"./index-jb05DpEw.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}; \ No newline at end of file +import{r as e}from"./index-DTIMLswB.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}; \ No newline at end of file diff --git a/public/admin/assets/news-CCfjpL6m.js b/public/admin/assets/news-CNkmO_x6.js similarity index 97% rename from public/admin/assets/news-CCfjpL6m.js rename to public/admin/assets/news-CNkmO_x6.js index ea02cd7..a3f1f0f 100644 --- a/public/admin/assets/news-CCfjpL6m.js +++ b/public/admin/assets/news-CNkmO_x6.js @@ -1 +1 @@ -import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as s,Xt as ee,Y as c,at as l,b as u,d as te,ht as d,m as f,ot as ne,q as p,rt as m,tn as h,x as g}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{a as _,c as v,l as y,s as b}from"./index-jb05DpEw.js";import{i as x,t as re}from"./RichTextEditor-CvwjagK6.js";import{t as S}from"./usePageLoad-DFTLo_Lv.js";import{s as ie}from"./admin-list-CBoToEFo.js";import{a as C}from"./dict-CkTsGkap.js";import{a as w,i as T,n as E,o as D,r as O,t as k}from"./news-CB2Z7r6R.js";var A={class:`list-page`},ae={class:`page-header`},oe={class:`list-filter-bar`},se=[`href`],ce={key:1,class:`text-mute`},le={key:1,class:`text-mute`},ue={class:`table-row-actions`},de={class:`list-pager`},fe={class:`upload-row`},pe={key:0,class:`thumb-preview`},me=[`src`],he={class:`dialog-footer-inner`},j=b(n({__name:`index`,setup(n){let b=_(),j=d(null),M=d(!1),N=d(!1),P=d(!1),F=d([]),I=d([]),L=d({current_page:1,per_page:20,total:0}),R=d(1),z=d(``),B=d(``),V=d(``),H=d(``),U=d([]),W=d(!1),G=d(null),K=d({title:``,category_dict_item_id:void 0,source:``,cover_url:``,published_at:``,content_html:``});function ge(e){if(!e)return`—`;let t=new Date(e);if(Number.isNaN(t.getTime()))return`—`;let n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}.${n(t.getMonth()+1)}.${n(t.getDate())}`}async function q(){try{U.value=(await C(`news_category`)).items??[]}catch{y.warning(`资讯分类字典加载失败,请执行 NewsDictionarySeeder 或在字典中维护 news_category`)}}async function J(){M.value=!0;try{let e={page:R.value,page_size:L.value.per_page};z.value&&(e.keyword=z.value),B.value!==``&&(e.category_dict_item_id=B.value),j.value&&(e.crawl_job_id=j.value),V.value!==``&&(e.status=V.value),H.value!==``&&(e.has_cover=H.value);let t=await w(e);I.value=t.items??[],L.value=t.meta??{current_page:1,per_page:20,total:0}}finally{M.value=!1}}function Y(){R.value=1,J()}function _e(){z.value=``,B.value=``,V.value=``,H.value=``,R.value=1,J()}function ve(){G.value=null,K.value={title:``,category_dict_item_id:U.value[0]?.id,source:``,cover_url:``,published_at:new Date().toISOString().slice(0,10),content_html:``},W.value=!0}async function ye(e){G.value=e;let t=await T(e.id);K.value={title:t.title,category_dict_item_id:t.category_dict_item_id??void 0,source:t.source||``,cover_url:t.cover_url||``,published_at:t.published_at?t.published_at.slice(0,10):``,content_html:t.content_html||``},W.value=!0}function X(){return K.value.title?.trim()?K.value.category_dict_item_id?K.value.published_at?K.value.content_html?.replace(/<[^>]+>/g,``).trim()?!0:(y.warning(`请填写资讯正文`),!1):(y.warning(`请填写发布时间`),!1):(y.warning(`请选择资讯分类`),!1):(y.warning(`请填写资讯标题`),!1)}async function Z(e){if(!X())return;let t={title:K.value.title.trim(),category_dict_item_id:K.value.category_dict_item_id,source:K.value.source||null,cover_url:K.value.cover_url||null,published_at:K.value.published_at,content_html:K.value.content_html||null,status:e};N.value=!0;try{G.value?await D(G.value.id,t):await E(t),y.success(e===1?`已保存资讯`:`已暂存草稿`),W.value=!1,await J()}finally{N.value=!1}}async function be(e){let t=e.file,n=t instanceof File?t:t.raw;if(!n){e.onError?.(Error(`no file`));return}try{let t=await x(n);K.value.cover_url=t.url,y.success(`封面上传成功`),e.onSuccess?.({})}catch{y.error(`封面上传失败`),e.onError?.(Error(`upload failed`))}}function xe(){K.value.cover_url=``}async function Se(e){await v.confirm(`确定删除资讯「${e.title}」?`,`提示`,{type:`warning`}),await O(e.id),y.success(`已删除`),await J()}function Ce(e){F.value=e}async function we(){let e=F.value.filter(e=>e.status===0);if(e.length===0){y.warning(`请勾选未发布的资讯`);return}await v.confirm(`确定发布已勾选的 ${e.length} 条资讯?`,`批量发布`,{type:`info`}),P.value=!0;try{let t=await k(e.map(e=>e.id)),n=t.skipped>0?`,跳过 ${t.skipped} 条`:``;y.success(`已发布 ${t.published} 条${n}`),F.value=[],await J()}finally{P.value=!1}}function Q(){j.value=null,R.value=1,J()}async function $(){let e=b.query.crawl_job_id;j.value=e&&Number(e)||null,await q(),await J()}return S($),m(()=>b.query.crawl_job_id,()=>{$()}),(n,d)=>{let m=c(`el-button`),_=c(`el-alert`),v=c(`el-input`),y=c(`el-option`),b=c(`el-select`),x=c(`el-table-column`),S=c(`el-image`),C=c(`el-table`),w=c(`el-pagination`),T=c(`el-card`),E=c(`el-form-item`),D=c(`el-col`),O=c(`el-date-picker`),k=c(`el-upload`),q=c(`el-row`),X=c(`el-form`),$=c(`el-dialog`),Te=s(`loading`);return i(),e(f,null,[u(`div`,A,[u(`div`,ae,[d[15]||=u(`h1`,{class:`page-title`},`资讯管理`,-1),r(m,{type:`primary`,size:`small`,class:`btn-create`,onClick:ve},{default:l(()=>[...d[14]||=[o(`新建资讯`,-1)]]),_:1})]),r(T,{shadow:`never`,class:`admin-list-card`},{default:l(()=>[j.value?(i(),g(_,{key:0,type:`info`,closable:!1,"show-icon":``,class:`crawl-filter-tip`},{default:l(()=>[o(` 当前仅显示爬虫任务 #`+h(j.value)+` 已入库资讯 `,1),r(m,{link:``,type:`primary`,onClick:Q},{default:l(()=>[...d[16]||=[o(`查看全部`,-1)]]),_:1})]),_:1})):a(``,!0),u(`div`,oe,[r(v,{modelValue:z.value,"onUpdate:modelValue":d[0]||=e=>z.value=e,placeholder:`搜索标题、来源…`,clearable:``,class:`filter-search`,onKeyup:te(Y,[`enter`])},null,8,[`modelValue`]),r(b,{modelValue:B.value,"onUpdate:modelValue":d[1]||=e=>B.value=e,clearable:``,placeholder:`资讯分类`,class:`filter-select`,filterable:``},{default:l(()=>[(i(!0),e(f,null,p(U.value,e=>(i(),g(y,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(b,{modelValue:H.value,"onUpdate:modelValue":d[2]||=e=>H.value=e,clearable:``,placeholder:`封面状态`,class:`filter-select-wide`},{default:l(()=>[r(y,{label:`已上传封面`,value:1}),r(y,{label:`未上传封面`,value:0})]),_:1},8,[`modelValue`]),r(b,{modelValue:V.value,"onUpdate:modelValue":d[3]||=e=>V.value=e,clearable:``,placeholder:`资讯状态`,class:`filter-select`},{default:l(()=>[r(y,{label:`已发布`,value:1}),r(y,{label:`未发布`,value:0})]),_:1},8,[`modelValue`]),r(m,{type:`primary`,onClick:Y},{default:l(()=>[...d[17]||=[o(`搜索`,-1)]]),_:1}),r(m,{onClick:_e},{default:l(()=>[...d[18]||=[o(`重置`,-1)]]),_:1}),r(m,{type:`success`,loading:P.value,disabled:F.value.length===0,onClick:we},{default:l(()=>[o(` 批量发布`+h(F.value.length>0?`(${F.value.length})`:``),1)]),_:1},8,[`loading`,`disabled`])]),ne((i(),g(C,{data:I.value,"row-key":`id`,onSelectionChange:Ce},{default:l(()=>[r(x,{type:`selection`,width:`48`,selectable:e=>e.status===0},null,8,[`selectable`]),r(x,{prop:`title`,label:`资讯标题`,"min-width":`220`,"show-overflow-tooltip":``}),r(x,{label:`资讯分类`,width:`110`},{default:l(({row:e})=>[o(h(e.category_item?.label??`—`),1)]),_:1}),r(x,{label:`发布时间`,width:`120`},{default:l(({row:e})=>[o(h(ge(e.published_at)),1)]),_:1}),r(x,{prop:`source`,label:`来源`,width:`120`,"show-overflow-tooltip":``}),r(x,{label:`链接`,width:`80`,align:`center`},{default:l(({row:t})=>[t.source_url?(i(),e(`a`,{key:0,href:t.source_url,target:`_blank`,rel:`noopener`},`查看`,8,se)):(i(),e(`span`,ce,`—`))]),_:1}),r(x,{label:`封面图`,width:`100`,align:`center`},{default:l(({row:t})=>[t.cover_url?(i(),g(S,{key:0,src:t.cover_url,"preview-src-list":[t.cover_url],fit:`cover`,class:`list-cover-thumb`,"preview-teleported":``},null,8,[`src`,`preview-src-list`])):(i(),e(`span`,le,`—`))]),_:1}),r(x,{label:`资讯状态`,width:`90`,align:`center`},{default:l(({row:e})=>[u(`span`,{class:ee([`status-badge`,t(ie)(e.status)])},h(e.status===1?`已发布`:`未发布`),3)]),_:1}),r(x,{label:`操作`,width:`160`,fixed:`right`},{default:l(({row:e})=>[u(`div`,ue,[r(m,{class:`btn-action-secondary`,onClick:t=>ye(e)},{default:l(()=>[...d[19]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),r(m,{class:`btn-action-secondary`,onClick:t=>Se(e)},{default:l(()=>[...d[20]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[Te,M.value]]),u(`div`,de,[r(w,{"current-page":R.value,"onUpdate:currentPage":d[4]||=e=>R.value=e,layout:`total, prev, pager, next`,total:L.value.total,"page-size":L.value.per_page,onCurrentChange:J},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r($,{modelValue:W.value,"onUpdate:modelValue":d[13]||=e=>W.value=e,title:G.value?`编辑资讯`:`新建资讯`,width:`960px`,top:`4vh`,"destroy-on-close":``,class:`news-dialog`},{footer:l(()=>[u(`div`,he,[r(m,{onClick:d[10]||=e=>W.value=!1},{default:l(()=>[...d[23]||=[o(`取消`,-1)]]),_:1}),r(m,{loading:N.value,onClick:d[11]||=e=>Z(0)},{default:l(()=>[...d[24]||=[o(`暂存草稿`,-1)]]),_:1},8,[`loading`]),r(m,{type:`primary`,loading:N.value,onClick:d[12]||=e=>Z(1)},{default:l(()=>[...d[25]||=[o(`保存资讯`,-1)]]),_:1},8,[`loading`])])]),default:l(()=>[r(X,{"label-position":`top`,class:`news-form`},{default:l(()=>[r(q,{gutter:16},{default:l(()=>[r(D,{span:12},{default:l(()=>[r(E,{label:`资讯标题`,required:``},{default:l(()=>[r(v,{modelValue:K.value.title,"onUpdate:modelValue":d[5]||=e=>K.value.title=e,placeholder:`请输入资讯标题`},null,8,[`modelValue`])]),_:1})]),_:1}),r(D,{span:6},{default:l(()=>[r(E,{label:`资讯分类`,required:``},{default:l(()=>[r(b,{modelValue:K.value.category_dict_item_id,"onUpdate:modelValue":d[6]||=e=>K.value.category_dict_item_id=e,placeholder:`请选择`,filterable:``,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(U.value,e=>(i(),g(y,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(D,{span:6},{default:l(()=>[r(E,{label:`发布时间`,required:``},{default:l(()=>[r(O,{modelValue:K.value.published_at,"onUpdate:modelValue":d[7]||=e=>K.value.published_at=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`选择日期`,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1}),r(D,{span:12},{default:l(()=>[r(E,{label:`来源`},{default:l(()=>[r(v,{modelValue:K.value.source,"onUpdate:modelValue":d[8]||=e=>K.value.source=e,placeholder:`如:高校雷达网`},null,8,[`modelValue`])]),_:1})]),_:1}),r(D,{span:12},{default:l(()=>[r(E,{label:`封面图`},{default:l(()=>[u(`div`,fe,[r(k,{"show-file-list":!1,accept:`image/*`,"http-request":be},{default:l(()=>[r(m,{type:`primary`,plain:``,size:`small`},{default:l(()=>[...d[21]||=[o(`上传图片`,-1)]]),_:1})]),_:1}),K.value.cover_url?(i(),g(m,{key:0,size:`small`,onClick:xe},{default:l(()=>[...d[22]||=[o(`移除`,-1)]]),_:1})):a(``,!0)]),K.value.cover_url?(i(),e(`div`,pe,[u(`img`,{src:K.value.cover_url,alt:`封面`},null,8,me)])):a(``,!0)]),_:1})]),_:1}),r(D,{span:24},{default:l(()=>[r(E,{label:`资讯正文`,required:``,class:`intro-form-item`},{default:l(()=>[r(re,{modelValue:K.value.content_html,"onUpdate:modelValue":d[9]||=e=>K.value.content_html=e,scope:`news`,height:320},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`])],64)}}}),[[`__scopeId`,`data-v-5474b498`]]);export{j as default}; \ No newline at end of file +import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as s,Xt as ee,Y as c,at as l,b as u,d as te,ht as d,m as f,ot as ne,q as p,rt as m,tn as h,x as g}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{a as _,c as v,l as y,s as b}from"./index-DTIMLswB.js";import{i as x,t as re}from"./RichTextEditor-BSUub6Rd.js";import{t as S}from"./usePageLoad-DFTLo_Lv.js";import{s as ie}from"./admin-list-CBoToEFo.js";import{a as C}from"./dict-X8lDWB9t.js";import{a as w,i as T,n as E,o as D,r as O,t as k}from"./news-CXVgUu18.js";var A={class:`list-page`},ae={class:`page-header`},oe={class:`list-filter-bar`},se=[`href`],ce={key:1,class:`text-mute`},le={key:1,class:`text-mute`},ue={class:`table-row-actions`},de={class:`list-pager`},fe={class:`upload-row`},pe={key:0,class:`thumb-preview`},me=[`src`],he={class:`dialog-footer-inner`},j=b(n({__name:`index`,setup(n){let b=_(),j=d(null),M=d(!1),N=d(!1),P=d(!1),F=d([]),I=d([]),L=d({current_page:1,per_page:20,total:0}),R=d(1),z=d(``),B=d(``),V=d(``),H=d(``),U=d([]),W=d(!1),G=d(null),K=d({title:``,category_dict_item_id:void 0,source:``,cover_url:``,published_at:``,content_html:``});function ge(e){if(!e)return`—`;let t=new Date(e);if(Number.isNaN(t.getTime()))return`—`;let n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}.${n(t.getMonth()+1)}.${n(t.getDate())}`}async function q(){try{U.value=(await C(`news_category`)).items??[]}catch{y.warning(`资讯分类字典加载失败,请执行 NewsDictionarySeeder 或在字典中维护 news_category`)}}async function J(){M.value=!0;try{let e={page:R.value,page_size:L.value.per_page};z.value&&(e.keyword=z.value),B.value!==``&&(e.category_dict_item_id=B.value),j.value&&(e.crawl_job_id=j.value),V.value!==``&&(e.status=V.value),H.value!==``&&(e.has_cover=H.value);let t=await w(e);I.value=t.items??[],L.value=t.meta??{current_page:1,per_page:20,total:0}}finally{M.value=!1}}function Y(){R.value=1,J()}function _e(){z.value=``,B.value=``,V.value=``,H.value=``,R.value=1,J()}function ve(){G.value=null,K.value={title:``,category_dict_item_id:U.value[0]?.id,source:``,cover_url:``,published_at:new Date().toISOString().slice(0,10),content_html:``},W.value=!0}async function ye(e){G.value=e;let t=await T(e.id);K.value={title:t.title,category_dict_item_id:t.category_dict_item_id??void 0,source:t.source||``,cover_url:t.cover_url||``,published_at:t.published_at?t.published_at.slice(0,10):``,content_html:t.content_html||``},W.value=!0}function X(){return K.value.title?.trim()?K.value.category_dict_item_id?K.value.published_at?K.value.content_html?.replace(/<[^>]+>/g,``).trim()?!0:(y.warning(`请填写资讯正文`),!1):(y.warning(`请填写发布时间`),!1):(y.warning(`请选择资讯分类`),!1):(y.warning(`请填写资讯标题`),!1)}async function Z(e){if(!X())return;let t={title:K.value.title.trim(),category_dict_item_id:K.value.category_dict_item_id,source:K.value.source||null,cover_url:K.value.cover_url||null,published_at:K.value.published_at,content_html:K.value.content_html||null,status:e};N.value=!0;try{G.value?await D(G.value.id,t):await E(t),y.success(e===1?`已保存资讯`:`已暂存草稿`),W.value=!1,await J()}finally{N.value=!1}}async function be(e){let t=e.file,n=t instanceof File?t:t.raw;if(!n){e.onError?.(Error(`no file`));return}try{let t=await x(n);K.value.cover_url=t.url,y.success(`封面上传成功`),e.onSuccess?.({})}catch{y.error(`封面上传失败`),e.onError?.(Error(`upload failed`))}}function xe(){K.value.cover_url=``}async function Se(e){await v.confirm(`确定删除资讯「${e.title}」?`,`提示`,{type:`warning`}),await O(e.id),y.success(`已删除`),await J()}function Ce(e){F.value=e}async function we(){let e=F.value.filter(e=>e.status===0);if(e.length===0){y.warning(`请勾选未发布的资讯`);return}await v.confirm(`确定发布已勾选的 ${e.length} 条资讯?`,`批量发布`,{type:`info`}),P.value=!0;try{let t=await k(e.map(e=>e.id)),n=t.skipped>0?`,跳过 ${t.skipped} 条`:``;y.success(`已发布 ${t.published} 条${n}`),F.value=[],await J()}finally{P.value=!1}}function Q(){j.value=null,R.value=1,J()}async function $(){let e=b.query.crawl_job_id;j.value=e&&Number(e)||null,await q(),await J()}return S($),m(()=>b.query.crawl_job_id,()=>{$()}),(n,d)=>{let m=c(`el-button`),_=c(`el-alert`),v=c(`el-input`),y=c(`el-option`),b=c(`el-select`),x=c(`el-table-column`),S=c(`el-image`),C=c(`el-table`),w=c(`el-pagination`),T=c(`el-card`),E=c(`el-form-item`),D=c(`el-col`),O=c(`el-date-picker`),k=c(`el-upload`),q=c(`el-row`),X=c(`el-form`),$=c(`el-dialog`),Te=s(`loading`);return i(),e(f,null,[u(`div`,A,[u(`div`,ae,[d[15]||=u(`h1`,{class:`page-title`},`资讯管理`,-1),r(m,{type:`primary`,size:`small`,class:`btn-create`,onClick:ve},{default:l(()=>[...d[14]||=[o(`新建资讯`,-1)]]),_:1})]),r(T,{shadow:`never`,class:`admin-list-card`},{default:l(()=>[j.value?(i(),g(_,{key:0,type:`info`,closable:!1,"show-icon":``,class:`crawl-filter-tip`},{default:l(()=>[o(` 当前仅显示爬虫任务 #`+h(j.value)+` 已入库资讯 `,1),r(m,{link:``,type:`primary`,onClick:Q},{default:l(()=>[...d[16]||=[o(`查看全部`,-1)]]),_:1})]),_:1})):a(``,!0),u(`div`,oe,[r(v,{modelValue:z.value,"onUpdate:modelValue":d[0]||=e=>z.value=e,placeholder:`搜索标题、来源…`,clearable:``,class:`filter-search`,onKeyup:te(Y,[`enter`])},null,8,[`modelValue`]),r(b,{modelValue:B.value,"onUpdate:modelValue":d[1]||=e=>B.value=e,clearable:``,placeholder:`资讯分类`,class:`filter-select`,filterable:``},{default:l(()=>[(i(!0),e(f,null,p(U.value,e=>(i(),g(y,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(b,{modelValue:H.value,"onUpdate:modelValue":d[2]||=e=>H.value=e,clearable:``,placeholder:`封面状态`,class:`filter-select-wide`},{default:l(()=>[r(y,{label:`已上传封面`,value:1}),r(y,{label:`未上传封面`,value:0})]),_:1},8,[`modelValue`]),r(b,{modelValue:V.value,"onUpdate:modelValue":d[3]||=e=>V.value=e,clearable:``,placeholder:`资讯状态`,class:`filter-select`},{default:l(()=>[r(y,{label:`已发布`,value:1}),r(y,{label:`未发布`,value:0})]),_:1},8,[`modelValue`]),r(m,{type:`primary`,onClick:Y},{default:l(()=>[...d[17]||=[o(`搜索`,-1)]]),_:1}),r(m,{onClick:_e},{default:l(()=>[...d[18]||=[o(`重置`,-1)]]),_:1}),r(m,{type:`success`,loading:P.value,disabled:F.value.length===0,onClick:we},{default:l(()=>[o(` 批量发布`+h(F.value.length>0?`(${F.value.length})`:``),1)]),_:1},8,[`loading`,`disabled`])]),ne((i(),g(C,{data:I.value,"row-key":`id`,onSelectionChange:Ce},{default:l(()=>[r(x,{type:`selection`,width:`48`,selectable:e=>e.status===0},null,8,[`selectable`]),r(x,{prop:`title`,label:`资讯标题`,"min-width":`220`,"show-overflow-tooltip":``}),r(x,{label:`资讯分类`,width:`110`},{default:l(({row:e})=>[o(h(e.category_item?.label??`—`),1)]),_:1}),r(x,{label:`发布时间`,width:`120`},{default:l(({row:e})=>[o(h(ge(e.published_at)),1)]),_:1}),r(x,{prop:`source`,label:`来源`,width:`120`,"show-overflow-tooltip":``}),r(x,{label:`链接`,width:`80`,align:`center`},{default:l(({row:t})=>[t.source_url?(i(),e(`a`,{key:0,href:t.source_url,target:`_blank`,rel:`noopener`},`查看`,8,se)):(i(),e(`span`,ce,`—`))]),_:1}),r(x,{label:`封面图`,width:`100`,align:`center`},{default:l(({row:t})=>[t.cover_url?(i(),g(S,{key:0,src:t.cover_url,"preview-src-list":[t.cover_url],fit:`cover`,class:`list-cover-thumb`,"preview-teleported":``},null,8,[`src`,`preview-src-list`])):(i(),e(`span`,le,`—`))]),_:1}),r(x,{label:`资讯状态`,width:`90`,align:`center`},{default:l(({row:e})=>[u(`span`,{class:ee([`status-badge`,t(ie)(e.status)])},h(e.status===1?`已发布`:`未发布`),3)]),_:1}),r(x,{label:`操作`,width:`160`,fixed:`right`},{default:l(({row:e})=>[u(`div`,ue,[r(m,{class:`btn-action-secondary`,onClick:t=>ye(e)},{default:l(()=>[...d[19]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),r(m,{class:`btn-action-secondary`,onClick:t=>Se(e)},{default:l(()=>[...d[20]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[Te,M.value]]),u(`div`,de,[r(w,{"current-page":R.value,"onUpdate:currentPage":d[4]||=e=>R.value=e,layout:`total, prev, pager, next`,total:L.value.total,"page-size":L.value.per_page,onCurrentChange:J},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r($,{modelValue:W.value,"onUpdate:modelValue":d[13]||=e=>W.value=e,title:G.value?`编辑资讯`:`新建资讯`,width:`960px`,top:`4vh`,"destroy-on-close":``,class:`news-dialog`},{footer:l(()=>[u(`div`,he,[r(m,{onClick:d[10]||=e=>W.value=!1},{default:l(()=>[...d[23]||=[o(`取消`,-1)]]),_:1}),r(m,{loading:N.value,onClick:d[11]||=e=>Z(0)},{default:l(()=>[...d[24]||=[o(`暂存草稿`,-1)]]),_:1},8,[`loading`]),r(m,{type:`primary`,loading:N.value,onClick:d[12]||=e=>Z(1)},{default:l(()=>[...d[25]||=[o(`保存资讯`,-1)]]),_:1},8,[`loading`])])]),default:l(()=>[r(X,{"label-position":`top`,class:`news-form`},{default:l(()=>[r(q,{gutter:16},{default:l(()=>[r(D,{span:12},{default:l(()=>[r(E,{label:`资讯标题`,required:``},{default:l(()=>[r(v,{modelValue:K.value.title,"onUpdate:modelValue":d[5]||=e=>K.value.title=e,placeholder:`请输入资讯标题`},null,8,[`modelValue`])]),_:1})]),_:1}),r(D,{span:6},{default:l(()=>[r(E,{label:`资讯分类`,required:``},{default:l(()=>[r(b,{modelValue:K.value.category_dict_item_id,"onUpdate:modelValue":d[6]||=e=>K.value.category_dict_item_id=e,placeholder:`请选择`,filterable:``,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(U.value,e=>(i(),g(y,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(D,{span:6},{default:l(()=>[r(E,{label:`发布时间`,required:``},{default:l(()=>[r(O,{modelValue:K.value.published_at,"onUpdate:modelValue":d[7]||=e=>K.value.published_at=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`选择日期`,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1}),r(D,{span:12},{default:l(()=>[r(E,{label:`来源`},{default:l(()=>[r(v,{modelValue:K.value.source,"onUpdate:modelValue":d[8]||=e=>K.value.source=e,placeholder:`如:高校雷达网`},null,8,[`modelValue`])]),_:1})]),_:1}),r(D,{span:12},{default:l(()=>[r(E,{label:`封面图`},{default:l(()=>[u(`div`,fe,[r(k,{"show-file-list":!1,accept:`image/*`,"http-request":be},{default:l(()=>[r(m,{type:`primary`,plain:``,size:`small`},{default:l(()=>[...d[21]||=[o(`上传图片`,-1)]]),_:1})]),_:1}),K.value.cover_url?(i(),g(m,{key:0,size:`small`,onClick:xe},{default:l(()=>[...d[22]||=[o(`移除`,-1)]]),_:1})):a(``,!0)]),K.value.cover_url?(i(),e(`div`,pe,[u(`img`,{src:K.value.cover_url,alt:`封面`},null,8,me)])):a(``,!0)]),_:1})]),_:1}),r(D,{span:24},{default:l(()=>[r(E,{label:`资讯正文`,required:``,class:`intro-form-item`},{default:l(()=>[r(re,{modelValue:K.value.content_html,"onUpdate:modelValue":d[9]||=e=>K.value.content_html=e,scope:`news`,height:320},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`])],64)}}}),[[`__scopeId`,`data-v-5474b498`]]);export{j as default}; \ No newline at end of file diff --git a/public/admin/assets/news-CB2Z7r6R.js b/public/admin/assets/news-CXVgUu18.js similarity index 83% rename from public/admin/assets/news-CB2Z7r6R.js rename to public/admin/assets/news-CXVgUu18.js index 153716d..d62e687 100644 --- a/public/admin/assets/news-CB2Z7r6R.js +++ b/public/admin/assets/news-CXVgUu18.js @@ -1 +1 @@ -import{r as e}from"./index-jb05DpEw.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}; \ No newline at end of file +import{r as e}from"./index-DTIMLswB.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}; \ No newline at end of file diff --git a/public/admin/assets/papers-Dtxcpe4H.js b/public/admin/assets/papers-3VSMemUr.js similarity index 97% rename from public/admin/assets/papers-Dtxcpe4H.js rename to public/admin/assets/papers-3VSMemUr.js index e8e1125..cff7671 100644 --- a/public/admin/assets/papers-Dtxcpe4H.js +++ b/public/admin/assets/papers-3VSMemUr.js @@ -1 +1 @@ -import{C as e,D as t,E as n,G as r,P as i,S as a,T as o,X as s,Y as c,at as l,b as u,d,et as f,ht as p,m,ot as h,q as g,rt as _,tn as v,x as y}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{a as b,c as x,l as S,s as C}from"./index-jb05DpEw.js";import{t as w}from"./usePageLoad-DFTLo_Lv.js";import{c as T,l as E,r as D,s as O,t as k}from"./assets-Wj17Zlgs.js";import{f as A}from"./teachers-CirjzrhY.js";var j={key:0,class:`linked-block`},M={class:`linked-tags`},N={class:`picker-toolbar`},P={key:1,class:`text-mute`},F={key:1,class:`picker-pager`},I=C(t({__name:`PaperLinkTeachersDialog`,props:i({paperId:{},paperTitle:{}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:i([`saved`],[`update:modelValue`]),setup(t,{emit:i}){let b=f(t,`modelValue`),x=t,C=i,w=p(!1),T=p(!1),E=p([]),D=p(``),I=p(!1),L=p([]),R=p(1),z=p({current_page:1,per_page:10,total:0}),B=p([]),V=p(null);function H(e){return E.value.some(t=>t.id===e)}function U(e){return!H(e.id)}async function W(){if(x.paperId){w.value=!0;try{E.value=(await O(x.paperId)).teachers||[],B.value=[],V.value?.clearSelection()}finally{w.value=!1}}}async function G(e=R.value){I.value=!0;try{let t=await A({page:e,page_size:z.value.per_page,keyword:D.value.trim()||void 0});L.value=t.items,z.value=t.meta,R.value=t.meta.current_page}finally{I.value=!1}}function K(){R.value=1,G(1)}function q(e){B.value=e.map(e=>e.id)}async function J(){if(x.paperId){if(!B.value.length){S.warning(`请选择要关联的老师`);return}T.value=!0;try{await k(x.paperId,B.value),S.success(`已关联老师`),b.value=!1,C(`saved`)}finally{T.value=!1}}}return _(()=>[b.value,x.paperId],([e])=>{e&&x.paperId&&(D.value=``,R.value=1,W(),G(1))}),(i,f)=>{let p=c(`el-tag`),_=c(`el-input`),x=c(`el-button`),S=c(`el-table-column`),C=c(`el-table`),O=c(`el-pagination`),k=c(`el-dialog`),A=s(`loading`);return r(),y(k,{modelValue:b.value,"onUpdate:modelValue":f[2]||=e=>b.value=e,title:`关联老师:${t.paperTitle||``}`,width:`760px`,"destroy-on-close":``,"append-to-body":``},{footer:l(()=>[n(x,{onClick:f[1]||=e=>b.value=!1},{default:l(()=>[...f[6]||=[o(`取消`,-1)]]),_:1}),n(x,{type:`primary`,loading:T.value,onClick:J},{default:l(()=>[...f[7]||=[o(`确认关联`,-1)]]),_:1},8,[`loading`])]),default:l(()=>[h((r(),e(`div`,null,[E.value.length?(r(),e(`div`,j,[f[3]||=u(`div`,{class:`linked-label`},`已关联老师`,-1),u(`div`,M,[(r(!0),e(m,null,g(E.value,e=>(r(),y(p,{key:e.id,size:`small`,type:`info`},{default:l(()=>[o(v(e.name)+v(e.university_name?`(${e.university_name})`:``),1)]),_:2},1024))),128))])])):a(``,!0),u(`div`,N,[n(_,{modelValue:D.value,"onUpdate:modelValue":f[0]||=e=>D.value=e,clearable:``,placeholder:`搜索姓名、高校、研究方向…`,style:{width:`260px`},onKeyup:d(K,[`enter`])},null,8,[`modelValue`]),n(x,{type:`primary`,onClick:K},{default:l(()=>[...f[4]||=[o(`搜索`,-1)]]),_:1})]),h((r(),y(C,{ref_key:`tableRef`,ref:V,data:L.value,"row-key":`id`,size:`small`,class:`picker-table`,onSelectionChange:q},{default:l(()=>[n(S,{type:`selection`,width:`44`,selectable:U}),n(S,{prop:`name`,label:`姓名`,width:`100`}),n(S,{prop:`university_name`,label:`高校`,"min-width":`140`,"show-overflow-tooltip":``}),n(S,{prop:`title`,label:`职称`,width:`100`,"show-overflow-tooltip":``}),n(S,{prop:`research_direction`,label:`研究方向`,"min-width":`120`,"show-overflow-tooltip":``}),n(S,{label:`状态`,width:`80`,align:`center`},{default:l(({row:t})=>[H(t.id)?(r(),y(p,{key:0,size:`small`,type:`info`},{default:l(()=>[...f[5]||=[o(`已关联`,-1)]]),_:1})):(r(),e(`span`,P,`—`))]),_:1})]),_:1},8,[`data`])),[[A,I.value]]),z.value.total>0?(r(),e(`div`,F,[n(O,{layout:`total, prev, pager, next`,total:z.value.total,"page-size":z.value.per_page,"current-page":R.value,onCurrentChange:G},null,8,[`total`,`page-size`,`current-page`])])):a(``,!0)])),[[A,w.value]])]),_:1},8,[`modelValue`,`title`])}}}),[[`__scopeId`,`data-v-a6c8acb0`]]),L={class:`list-page`},R={class:`list-filter-bar`},z={class:`paper-title-cell`},B={class:`paper-title-text`},V=[`href`],H={key:1},U={key:1,class:`text-mute`},W={class:`table-row-actions`},G={key:1,class:`list-pager`},K={class:`summary-body`},q=C(t({__name:`index`,setup(t){let i=b(),f=p(!1),C=p(null),O=p([]),k=p({current_page:1,per_page:20,total:0}),A=p(1),j=p(``),M=p(``),N=p(``),P=p(``),F=p([]),q=p([]),J=p(!1),Y=p(``),X=p(!1),Z=p(null);async function ee(){let e=await T();F.value=e.school_names||[],q.value=e.research_directions||[]}async function Q(){f.value=!0;try{let e={page:A.value,page_size:k.value.per_page};j.value&&(e.keyword=j.value),M.value&&(e.school_name=M.value),N.value&&(e.research_direction=N.value),P.value===`linked`&&(e.link_status=`linked`),P.value===`unlinked`&&(e.link_status=`unlinked`),C.value&&(e.crawl_job_id=C.value);let t=await E(e);O.value=t.items,k.value=t.meta}finally{f.value=!1}}function te(){C.value=null,A.value=1,Q()}function ne(){j.value=``,M.value=``,N.value=``,P.value=``,C.value=null,A.value=1,Q()}function re(){A.value=1,Q()}function ie(e){Y.value=e.summary||`暂无摘要`,J.value=!0}function ae(e){Z.value=e,X.value=!0}async function oe(e){await x.confirm(`确定要删除论文「${e.title}」?`,`确认删除`,{type:`warning`}),await D(e.id),S.success(`已删除`),await Q()}async function $(){let e=i.query.crawl_job_id;C.value=e&&Number(e)||null,await ee(),await Q()}return w($),_(()=>i.query.crawl_job_id,()=>{$()}),(t,i)=>{let p=c(`el-button`),_=c(`el-alert`),b=c(`el-input`),x=c(`el-option`),S=c(`el-select`),w=c(`el-table-column`),T=c(`el-tooltip`),E=c(`el-tag`),D=c(`el-table`),ee=c(`el-pagination`),$=c(`el-card`),se=c(`el-dialog`),ce=s(`loading`);return r(),e(m,null,[u(`div`,L,[i[14]||=u(`div`,{class:`page-header`},[u(`h1`,{class:`page-title`},`论文库`)],-1),n($,{shadow:`never`,class:`admin-list-card`},{default:l(()=>[C.value?(r(),y(_,{key:0,type:`info`,closable:!1,"show-icon":``,class:`crawl-filter-tip`},{default:l(()=>[o(` 当前仅显示本次爬虫任务(#`+v(C.value)+`)抓取的论文 `,1),n(p,{link:``,type:`primary`,onClick:te},{default:l(()=>[...i[7]||=[o(`查看全部`,-1)]]),_:1})]),_:1})):a(``,!0),u(`div`,R,[n(b,{modelValue:j.value,"onUpdate:modelValue":i[0]||=e=>j.value=e,placeholder:`搜索标题、作者、学校、摘要…`,clearable:``,class:`filter-search`,style:{width:`260px`},onKeyup:d(re,[`enter`])},null,8,[`modelValue`]),n(S,{modelValue:M.value,"onUpdate:modelValue":i[1]||=e=>M.value=e,placeholder:`学校`,clearable:``,class:`filter-select-wide`,style:{width:`160px`}},{default:l(()=>[(r(!0),e(m,null,g(F.value,e=>(r(),y(x,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),n(S,{modelValue:N.value,"onUpdate:modelValue":i[2]||=e=>N.value=e,placeholder:`方向`,clearable:``,class:`filter-select-wide`,style:{width:`160px`}},{default:l(()=>[(r(!0),e(m,null,g(q.value,e=>(r(),y(x,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),n(S,{modelValue:P.value,"onUpdate:modelValue":i[3]||=e=>P.value=e,placeholder:`关联状态`,clearable:``,class:`filter-select-wide`},{default:l(()=>[n(x,{label:`已关联`,value:`linked`}),n(x,{label:`未关联`,value:`unlinked`})]),_:1},8,[`modelValue`]),n(p,{type:`primary`,onClick:re},{default:l(()=>[...i[8]||=[o(`搜索`,-1)]]),_:1}),n(p,{onClick:ne},{default:l(()=>[...i[9]||=[o(`重置`,-1)]]),_:1})]),h((r(),y(D,{data:O.value,"row-key":`id`},{default:l(()=>[n(w,{type:`index`,label:`序号`,width:`60`,align:`center`}),n(w,{label:`标题`,"min-width":`280`},{default:l(({row:e})=>[u(`div`,z,[n(T,{class:`paper-title-tooltip`,content:e.title,placement:`top`,"show-after":300},{default:l(()=>[u(`span`,B,v(e.title),1)]),_:2},1032,[`content`]),e.is_new?(r(),y(E,{key:0,type:`danger`,size:`small`,class:`paper-title-tag`},{default:l(()=>[...i[10]||=[o(`新`,-1)]]),_:1})):a(``,!0)])]),_:1}),n(w,{prop:`authors`,label:`作者`,width:`140`,"show-overflow-tooltip":``}),n(w,{prop:`school_name`,label:`学校`,width:`140`,"show-overflow-tooltip":``}),n(w,{label:`发表日期`,width:`110`},{default:l(({row:e})=>[o(v(e.published_at?String(e.published_at).slice(0,10):`—`),1)]),_:1}),n(w,{prop:`imported_at`,label:`入库日期`,width:`110`,align:`center`},{default:l(({row:e})=>[o(v(e.imported_at||`—`),1)]),_:1}),n(w,{label:`链接`,width:`80`,align:`center`},{default:l(({row:t})=>[t.url?(r(),e(`a`,{key:0,href:t.url,target:`_blank`,rel:`noopener`},`查看`,8,V)):(r(),e(`span`,H,`—`))]),_:1}),n(w,{label:`关联老师`,width:`90`,align:`center`},{default:l(({row:t})=>[t.is_linked?(r(),y(E,{key:0,size:`small`,type:`success`},{default:l(()=>[o(v(t.teachers_count),1)]),_:2},1024)):(r(),e(`span`,U,`未关联`))]),_:1}),n(w,{label:`操作`,width:`240`,fixed:`right`},{default:l(({row:e})=>[u(`div`,W,[n(p,{class:`btn-action-primary`,onClick:t=>ie(e)},{default:l(()=>[...i[11]||=[o(`摘要`,-1)]]),_:1},8,[`onClick`]),n(p,{class:`btn-action-info`,onClick:t=>ae(e)},{default:l(()=>[...i[12]||=[o(`关联老师`,-1)]]),_:1},8,[`onClick`]),n(p,{class:`btn-action-secondary`,onClick:t=>oe(e)},{default:l(()=>[...i[13]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[ce,f.value]]),k.value.total>0?(r(),e(`div`,G,[n(ee,{layout:`total, prev, pager, next`,total:k.value.total,"page-size":k.value.per_page,"current-page":A.value,onCurrentChange:i[4]||=e=>{A.value=e,Q()}},null,8,[`total`,`page-size`,`current-page`])])):a(``,!0)]),_:1})]),n(se,{modelValue:J.value,"onUpdate:modelValue":i[5]||=e=>J.value=e,title:`论文摘要`,width:`640px`},{default:l(()=>[u(`p`,K,v(Y.value),1)]),_:1},8,[`modelValue`]),n(I,{modelValue:X.value,"onUpdate:modelValue":i[6]||=e=>X.value=e,"paper-id":Z.value?.id??null,"paper-title":Z.value?.title,onSaved:Q},null,8,[`modelValue`,`paper-id`,`paper-title`])],64)}}}),[[`__scopeId`,`data-v-c111c5f2`]]);export{q as default}; \ No newline at end of file +import{C as e,D as t,E as n,G as r,P as i,S as a,T as o,X as s,Y as c,at as l,b as u,d,et as f,ht as p,m,ot as h,q as g,rt as _,tn as v,x as y}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{a as b,c as x,l as S,s as C}from"./index-DTIMLswB.js";import{t as w}from"./usePageLoad-DFTLo_Lv.js";import{c as T,l as E,r as D,s as O,t as k}from"./assets-B5_Et8Pj.js";import{f as A}from"./teachers-Cve-7Sy4.js";var j={key:0,class:`linked-block`},M={class:`linked-tags`},N={class:`picker-toolbar`},P={key:1,class:`text-mute`},F={key:1,class:`picker-pager`},I=C(t({__name:`PaperLinkTeachersDialog`,props:i({paperId:{},paperTitle:{}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:i([`saved`],[`update:modelValue`]),setup(t,{emit:i}){let b=f(t,`modelValue`),x=t,C=i,w=p(!1),T=p(!1),E=p([]),D=p(``),I=p(!1),L=p([]),R=p(1),z=p({current_page:1,per_page:10,total:0}),B=p([]),V=p(null);function H(e){return E.value.some(t=>t.id===e)}function U(e){return!H(e.id)}async function W(){if(x.paperId){w.value=!0;try{E.value=(await O(x.paperId)).teachers||[],B.value=[],V.value?.clearSelection()}finally{w.value=!1}}}async function G(e=R.value){I.value=!0;try{let t=await A({page:e,page_size:z.value.per_page,keyword:D.value.trim()||void 0});L.value=t.items,z.value=t.meta,R.value=t.meta.current_page}finally{I.value=!1}}function K(){R.value=1,G(1)}function q(e){B.value=e.map(e=>e.id)}async function J(){if(x.paperId){if(!B.value.length){S.warning(`请选择要关联的老师`);return}T.value=!0;try{await k(x.paperId,B.value),S.success(`已关联老师`),b.value=!1,C(`saved`)}finally{T.value=!1}}}return _(()=>[b.value,x.paperId],([e])=>{e&&x.paperId&&(D.value=``,R.value=1,W(),G(1))}),(i,f)=>{let p=c(`el-tag`),_=c(`el-input`),x=c(`el-button`),S=c(`el-table-column`),C=c(`el-table`),O=c(`el-pagination`),k=c(`el-dialog`),A=s(`loading`);return r(),y(k,{modelValue:b.value,"onUpdate:modelValue":f[2]||=e=>b.value=e,title:`关联老师:${t.paperTitle||``}`,width:`760px`,"destroy-on-close":``,"append-to-body":``},{footer:l(()=>[n(x,{onClick:f[1]||=e=>b.value=!1},{default:l(()=>[...f[6]||=[o(`取消`,-1)]]),_:1}),n(x,{type:`primary`,loading:T.value,onClick:J},{default:l(()=>[...f[7]||=[o(`确认关联`,-1)]]),_:1},8,[`loading`])]),default:l(()=>[h((r(),e(`div`,null,[E.value.length?(r(),e(`div`,j,[f[3]||=u(`div`,{class:`linked-label`},`已关联老师`,-1),u(`div`,M,[(r(!0),e(m,null,g(E.value,e=>(r(),y(p,{key:e.id,size:`small`,type:`info`},{default:l(()=>[o(v(e.name)+v(e.university_name?`(${e.university_name})`:``),1)]),_:2},1024))),128))])])):a(``,!0),u(`div`,N,[n(_,{modelValue:D.value,"onUpdate:modelValue":f[0]||=e=>D.value=e,clearable:``,placeholder:`搜索姓名、高校、研究方向…`,style:{width:`260px`},onKeyup:d(K,[`enter`])},null,8,[`modelValue`]),n(x,{type:`primary`,onClick:K},{default:l(()=>[...f[4]||=[o(`搜索`,-1)]]),_:1})]),h((r(),y(C,{ref_key:`tableRef`,ref:V,data:L.value,"row-key":`id`,size:`small`,class:`picker-table`,onSelectionChange:q},{default:l(()=>[n(S,{type:`selection`,width:`44`,selectable:U}),n(S,{prop:`name`,label:`姓名`,width:`100`}),n(S,{prop:`university_name`,label:`高校`,"min-width":`140`,"show-overflow-tooltip":``}),n(S,{prop:`title`,label:`职称`,width:`100`,"show-overflow-tooltip":``}),n(S,{prop:`research_direction`,label:`研究方向`,"min-width":`120`,"show-overflow-tooltip":``}),n(S,{label:`状态`,width:`80`,align:`center`},{default:l(({row:t})=>[H(t.id)?(r(),y(p,{key:0,size:`small`,type:`info`},{default:l(()=>[...f[5]||=[o(`已关联`,-1)]]),_:1})):(r(),e(`span`,P,`—`))]),_:1})]),_:1},8,[`data`])),[[A,I.value]]),z.value.total>0?(r(),e(`div`,F,[n(O,{layout:`total, prev, pager, next`,total:z.value.total,"page-size":z.value.per_page,"current-page":R.value,onCurrentChange:G},null,8,[`total`,`page-size`,`current-page`])])):a(``,!0)])),[[A,w.value]])]),_:1},8,[`modelValue`,`title`])}}}),[[`__scopeId`,`data-v-a6c8acb0`]]),L={class:`list-page`},R={class:`list-filter-bar`},z={class:`paper-title-cell`},B={class:`paper-title-text`},V=[`href`],H={key:1},U={key:1,class:`text-mute`},W={class:`table-row-actions`},G={key:1,class:`list-pager`},K={class:`summary-body`},q=C(t({__name:`index`,setup(t){let i=b(),f=p(!1),C=p(null),O=p([]),k=p({current_page:1,per_page:20,total:0}),A=p(1),j=p(``),M=p(``),N=p(``),P=p(``),F=p([]),q=p([]),J=p(!1),Y=p(``),X=p(!1),Z=p(null);async function ee(){let e=await T();F.value=e.school_names||[],q.value=e.research_directions||[]}async function Q(){f.value=!0;try{let e={page:A.value,page_size:k.value.per_page};j.value&&(e.keyword=j.value),M.value&&(e.school_name=M.value),N.value&&(e.research_direction=N.value),P.value===`linked`&&(e.link_status=`linked`),P.value===`unlinked`&&(e.link_status=`unlinked`),C.value&&(e.crawl_job_id=C.value);let t=await E(e);O.value=t.items,k.value=t.meta}finally{f.value=!1}}function te(){C.value=null,A.value=1,Q()}function ne(){j.value=``,M.value=``,N.value=``,P.value=``,C.value=null,A.value=1,Q()}function re(){A.value=1,Q()}function ie(e){Y.value=e.summary||`暂无摘要`,J.value=!0}function ae(e){Z.value=e,X.value=!0}async function oe(e){await x.confirm(`确定要删除论文「${e.title}」?`,`确认删除`,{type:`warning`}),await D(e.id),S.success(`已删除`),await Q()}async function $(){let e=i.query.crawl_job_id;C.value=e&&Number(e)||null,await ee(),await Q()}return w($),_(()=>i.query.crawl_job_id,()=>{$()}),(t,i)=>{let p=c(`el-button`),_=c(`el-alert`),b=c(`el-input`),x=c(`el-option`),S=c(`el-select`),w=c(`el-table-column`),T=c(`el-tooltip`),E=c(`el-tag`),D=c(`el-table`),ee=c(`el-pagination`),$=c(`el-card`),se=c(`el-dialog`),ce=s(`loading`);return r(),e(m,null,[u(`div`,L,[i[14]||=u(`div`,{class:`page-header`},[u(`h1`,{class:`page-title`},`论文库`)],-1),n($,{shadow:`never`,class:`admin-list-card`},{default:l(()=>[C.value?(r(),y(_,{key:0,type:`info`,closable:!1,"show-icon":``,class:`crawl-filter-tip`},{default:l(()=>[o(` 当前仅显示本次爬虫任务(#`+v(C.value)+`)抓取的论文 `,1),n(p,{link:``,type:`primary`,onClick:te},{default:l(()=>[...i[7]||=[o(`查看全部`,-1)]]),_:1})]),_:1})):a(``,!0),u(`div`,R,[n(b,{modelValue:j.value,"onUpdate:modelValue":i[0]||=e=>j.value=e,placeholder:`搜索标题、作者、学校、摘要…`,clearable:``,class:`filter-search`,style:{width:`260px`},onKeyup:d(re,[`enter`])},null,8,[`modelValue`]),n(S,{modelValue:M.value,"onUpdate:modelValue":i[1]||=e=>M.value=e,placeholder:`学校`,clearable:``,class:`filter-select-wide`,style:{width:`160px`}},{default:l(()=>[(r(!0),e(m,null,g(F.value,e=>(r(),y(x,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),n(S,{modelValue:N.value,"onUpdate:modelValue":i[2]||=e=>N.value=e,placeholder:`方向`,clearable:``,class:`filter-select-wide`,style:{width:`160px`}},{default:l(()=>[(r(!0),e(m,null,g(q.value,e=>(r(),y(x,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),n(S,{modelValue:P.value,"onUpdate:modelValue":i[3]||=e=>P.value=e,placeholder:`关联状态`,clearable:``,class:`filter-select-wide`},{default:l(()=>[n(x,{label:`已关联`,value:`linked`}),n(x,{label:`未关联`,value:`unlinked`})]),_:1},8,[`modelValue`]),n(p,{type:`primary`,onClick:re},{default:l(()=>[...i[8]||=[o(`搜索`,-1)]]),_:1}),n(p,{onClick:ne},{default:l(()=>[...i[9]||=[o(`重置`,-1)]]),_:1})]),h((r(),y(D,{data:O.value,"row-key":`id`},{default:l(()=>[n(w,{type:`index`,label:`序号`,width:`60`,align:`center`}),n(w,{label:`标题`,"min-width":`280`},{default:l(({row:e})=>[u(`div`,z,[n(T,{class:`paper-title-tooltip`,content:e.title,placement:`top`,"show-after":300},{default:l(()=>[u(`span`,B,v(e.title),1)]),_:2},1032,[`content`]),e.is_new?(r(),y(E,{key:0,type:`danger`,size:`small`,class:`paper-title-tag`},{default:l(()=>[...i[10]||=[o(`新`,-1)]]),_:1})):a(``,!0)])]),_:1}),n(w,{prop:`authors`,label:`作者`,width:`140`,"show-overflow-tooltip":``}),n(w,{prop:`school_name`,label:`学校`,width:`140`,"show-overflow-tooltip":``}),n(w,{label:`发表日期`,width:`110`},{default:l(({row:e})=>[o(v(e.published_at?String(e.published_at).slice(0,10):`—`),1)]),_:1}),n(w,{prop:`imported_at`,label:`入库日期`,width:`110`,align:`center`},{default:l(({row:e})=>[o(v(e.imported_at||`—`),1)]),_:1}),n(w,{label:`链接`,width:`80`,align:`center`},{default:l(({row:t})=>[t.url?(r(),e(`a`,{key:0,href:t.url,target:`_blank`,rel:`noopener`},`查看`,8,V)):(r(),e(`span`,H,`—`))]),_:1}),n(w,{label:`关联老师`,width:`90`,align:`center`},{default:l(({row:t})=>[t.is_linked?(r(),y(E,{key:0,size:`small`,type:`success`},{default:l(()=>[o(v(t.teachers_count),1)]),_:2},1024)):(r(),e(`span`,U,`未关联`))]),_:1}),n(w,{label:`操作`,width:`240`,fixed:`right`},{default:l(({row:e})=>[u(`div`,W,[n(p,{class:`btn-action-primary`,onClick:t=>ie(e)},{default:l(()=>[...i[11]||=[o(`摘要`,-1)]]),_:1},8,[`onClick`]),n(p,{class:`btn-action-info`,onClick:t=>ae(e)},{default:l(()=>[...i[12]||=[o(`关联老师`,-1)]]),_:1},8,[`onClick`]),n(p,{class:`btn-action-secondary`,onClick:t=>oe(e)},{default:l(()=>[...i[13]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[ce,f.value]]),k.value.total>0?(r(),e(`div`,G,[n(ee,{layout:`total, prev, pager, next`,total:k.value.total,"page-size":k.value.per_page,"current-page":A.value,onCurrentChange:i[4]||=e=>{A.value=e,Q()}},null,8,[`total`,`page-size`,`current-page`])])):a(``,!0)]),_:1})]),n(se,{modelValue:J.value,"onUpdate:modelValue":i[5]||=e=>J.value=e,title:`论文摘要`,width:`640px`},{default:l(()=>[u(`p`,K,v(Y.value),1)]),_:1},8,[`modelValue`]),n(I,{modelValue:X.value,"onUpdate:modelValue":i[6]||=e=>X.value=e,"paper-id":Z.value?.id??null,"paper-title":Z.value?.title,onSaved:Q},null,8,[`modelValue`,`paper-id`,`paper-title`])],64)}}}),[[`__scopeId`,`data-v-c111c5f2`]]);export{q as default}; \ No newline at end of file diff --git a/public/admin/assets/research-directions-Bn9dd2FC.js b/public/admin/assets/research-directions-BIEEUGLu.js similarity index 95% rename from public/admin/assets/research-directions-Bn9dd2FC.js rename to public/admin/assets/research-directions-BIEEUGLu.js index d26de4d..859b3df 100644 --- a/public/admin/assets/research-directions-Bn9dd2FC.js +++ b/public/admin/assets/research-directions-BIEEUGLu.js @@ -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-jb05DpEw.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-Y7zStqVF.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}; \ No newline at end of file +import{C as e,Ct as t,D as n,E as r,G as i,T as a,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-DTIMLswB.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-StGwN-O7.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}; \ No newline at end of file diff --git a/public/admin/assets/research-directions-Y7zStqVF.js b/public/admin/assets/research-directions-StGwN-O7.js similarity index 88% rename from public/admin/assets/research-directions-Y7zStqVF.js rename to public/admin/assets/research-directions-StGwN-O7.js index f08257f..0fed77c 100644 --- a/public/admin/assets/research-directions-Y7zStqVF.js +++ b/public/admin/assets/research-directions-StGwN-O7.js @@ -1 +1 @@ -import{r as e}from"./index-jb05DpEw.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}; \ No newline at end of file +import{r as e}from"./index-DTIMLswB.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}; \ No newline at end of file diff --git a/public/admin/assets/roles-DMG09nlu.js b/public/admin/assets/roles-BLfXxSGi.js similarity index 77% rename from public/admin/assets/roles-DMG09nlu.js rename to public/admin/assets/roles-BLfXxSGi.js index 8716be5..882b7b0 100644 --- a/public/admin/assets/roles-DMG09nlu.js +++ b/public/admin/assets/roles-BLfXxSGi.js @@ -1 +1 @@ -import{r as e}from"./index-jb05DpEw.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}; \ No newline at end of file +import{r as e}from"./index-DTIMLswB.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}; \ No newline at end of file diff --git a/public/admin/assets/roles-BwiqCxdW.js b/public/admin/assets/roles-DkBQwmfK.js similarity index 96% rename from public/admin/assets/roles-BwiqCxdW.js rename to public/admin/assets/roles-DkBQwmfK.js index f6fb8a8..f79b5b4 100644 --- a/public/admin/assets/roles-BwiqCxdW.js +++ b/public/admin/assets/roles-DkBQwmfK.js @@ -1 +1 @@ -import{C as e,Ct as t,D as n,E as r,G as i,I as a,T as o,X as s,Xt as c,Y as l,at as u,b as d,d as f,ht as p,m,ot as h,tn as g,x as _}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as v,l as y,s as b}from"./index-jb05DpEw.js";import{t as x}from"./usePageLoad-DFTLo_Lv.js";import{r as S}from"./admin-list-CBoToEFo.js";import{r as C}from"./menus-86C-Rtop.js";import{a as w,i as T,n as E,r as D,t as O}from"./roles-DMG09nlu.js";var k={class:`list-page`},A={class:`page-header`},j={class:`list-filter-bar`},M={class:`table-row-actions`},N={class:`list-pager`},P=b(n({__name:`index`,setup(n){let b=p(!1),P=p([]),F=p({current_page:1,per_page:20,total:0}),I=p(``),L=p(1),R=p([]),z=p(!1),B=p(null),V=p({code:``,name:``,remark:``,sort:0,status:1}),H=p();function U(e){return e.map(e=>({id:e.id,label:e.title,children:e.children?.length?U(e.children):void 0}))}async function W(){b.value=!0;try{let e=await T({page:L.value,page_size:F.value.per_page,keyword:I.value||void 0});P.value=e.items,F.value=e.meta}finally{b.value=!1}}async function G(){R.value=U(await C())}async function K(){B.value=null,V.value={code:``,name:``,remark:``,sort:0,status:1},await G(),z.value=!0,await a(),H.value?.setCheckedKeys([],!1)}async function q(e){e.code===`super_admin`&&y.warning(`超级管理员角色请谨慎修改菜单分配`),B.value=e.id,await G();let t=await D(e.id);V.value={code:t.code,name:t.name,remark:t.remark||``,sort:t.sort,status:t.status},z.value=!0,await a(),H.value?.setCheckedKeys(t.menu_ids,!1)}async function J(){let e=H.value?.getCheckedKeys(!1)||[];B.value?await w(B.value,{name:V.value.name,remark:V.value.remark||null,sort:V.value.sort,status:V.value.status,menu_ids:e}):await O({code:V.value.code,name:V.value.name,remark:V.value.remark||null,sort:V.value.sort,status:V.value.status,menu_ids:e}),y.success(`已保存`),z.value=!1,await W()}async function Y(e){if(e.code===`super_admin`){y.warning(`不能删除预置超级管理员`);return}await v.confirm(`确定删除角色「${e.name}」?`,`提示`,{type:`warning`}),await E(e.id),y.success(`已删除`),await W()}function X(){L.value=1,W()}function Z(){I.value=``,L.value=1,W()}return x(W),(n,a)=>{let p=l(`el-button`),v=l(`el-input`),y=l(`el-table-column`),x=l(`el-table`),C=l(`el-pagination`),w=l(`el-card`),T=l(`el-form-item`),E=l(`el-input-number`),D=l(`el-switch`),O=l(`el-form`),U=l(`el-tree`),G=l(`el-dialog`),Q=s(`loading`);return i(),e(m,null,[d(`div`,k,[d(`div`,A,[a[11]||=d(`h1`,{class:`page-title`},`角色管理`,-1),r(p,{type:`primary`,size:`small`,class:`btn-create`,onClick:K},{default:u(()=>[...a[10]||=[o(`新增角色`,-1)]]),_:1})]),r(w,{shadow:`never`,class:`admin-list-card`},{default:u(()=>[d(`div`,j,[r(v,{modelValue:I.value,"onUpdate:modelValue":a[0]||=e=>I.value=e,placeholder:`名称/编码`,clearable:``,class:`filter-search`,onKeyup:f(X,[`enter`])},null,8,[`modelValue`]),r(p,{type:`primary`,onClick:X},{default:u(()=>[...a[12]||=[o(`搜索`,-1)]]),_:1}),r(p,{onClick:Z},{default:u(()=>[...a[13]||=[o(`重置`,-1)]]),_:1})]),h((i(),_(x,{data:P.value,"row-key":`id`},{default:u(()=>[r(y,{prop:`code`,label:`编码`,width:`160`}),r(y,{prop:`name`,label:`名称`,width:`160`}),r(y,{prop:`remark`,label:`备注`,"min-width":`200`,"show-overflow-tooltip":``}),r(y,{prop:`sort`,label:`排序`,width:`80`,align:`center`}),r(y,{label:`状态`,width:`90`,align:`center`},{default:u(({row:e})=>[d(`span`,{class:c([`status-badge`,t(S)(e.status)])},g(e.status===1?`启用`:`停用`),3)]),_:1}),r(y,{label:`操作`,width:`160`,fixed:`right`},{default:u(({row:e})=>[d(`div`,M,[r(p,{class:`btn-action-secondary`,onClick:t=>q(e)},{default:u(()=>[...a[14]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),r(p,{class:`btn-action-secondary`,disabled:e.code===`super_admin`,onClick:t=>Y(e)},{default:u(()=>[...a[15]||=[o(` 删除 `,-1)]]),_:1},8,[`disabled`,`onClick`])])]),_:1})]),_:1},8,[`data`])),[[Q,b.value]]),d(`div`,N,[r(C,{"current-page":L.value,"onUpdate:currentPage":a[1]||=e=>L.value=e,layout:`total, prev, pager, next`,total:F.value.total,"page-size":F.value.per_page,onCurrentChange:W},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r(G,{modelValue:z.value,"onUpdate:modelValue":a[9]||=e=>z.value=e,title:B.value?`编辑角色`:`新增角色`,width:`520px`},{footer:u(()=>[r(p,{onClick:a[8]||=e=>z.value=!1},{default:u(()=>[...a[16]||=[o(`取消`,-1)]]),_:1}),r(p,{type:`primary`,onClick:J},{default:u(()=>[...a[17]||=[o(`保存`,-1)]]),_:1})]),default:u(()=>[a[18]||=d(`p`,{class:`hint`},[o(`当前阶段仅按`),d(`strong`,null,`菜单`),o(`控制侧栏与页面入口;接口暂不做权限码校验。`)],-1),r(O,{"label-width":`88px`},{default:u(()=>[B.value?(i(),_(T,{key:1,label:`编码`},{default:u(()=>[r(v,{modelValue:V.value.code,"onUpdate:modelValue":a[3]||=e=>V.value.code=e,disabled:``},null,8,[`modelValue`])]),_:1})):(i(),_(T,{key:0,label:`编码`},{default:u(()=>[r(v,{modelValue:V.value.code,"onUpdate:modelValue":a[2]||=e=>V.value.code=e,placeholder:`唯一编码`},null,8,[`modelValue`])]),_:1})),r(T,{label:`名称`},{default:u(()=>[r(v,{modelValue:V.value.name,"onUpdate:modelValue":a[4]||=e=>V.value.name=e},null,8,[`modelValue`])]),_:1}),r(T,{label:`备注`},{default:u(()=>[r(v,{modelValue:V.value.remark,"onUpdate:modelValue":a[5]||=e=>V.value.remark=e,type:`textarea`,rows:2},null,8,[`modelValue`])]),_:1}),r(T,{label:`排序`},{default:u(()=>[r(E,{modelValue:V.value.sort,"onUpdate:modelValue":a[6]||=e=>V.value.sort=e},null,8,[`modelValue`])]),_:1}),r(T,{label:`状态`},{default:u(()=>[r(D,{modelValue:V.value.status,"onUpdate:modelValue":a[7]||=e=>V.value.status=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1})]),_:1}),a[19]||=d(`h4`,{class:`tree-title`},`菜单分配`,-1),r(U,{ref_key:`menuRef`,ref:H,data:R.value,"show-checkbox":``,"node-key":`id`,props:{label:`label`,children:`children`},"default-expand-all":``,"check-strictly":``,class:`menu-tree`},null,8,[`data`])]),_:1},8,[`modelValue`,`title`])],64)}}}),[[`__scopeId`,`data-v-97831e12`]]);export{P as default}; \ No newline at end of file +import{C as e,Ct as t,D as n,E as r,G as i,I as a,T as o,X as s,Xt as c,Y as l,at as u,b as d,d as f,ht as p,m,ot as h,tn as g,x as _}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as v,l as y,s as b}from"./index-DTIMLswB.js";import{t as x}from"./usePageLoad-DFTLo_Lv.js";import{r as S}from"./admin-list-CBoToEFo.js";import{r as C}from"./menus-DT_CKpVr.js";import{a as w,i as T,n as E,r as D,t as O}from"./roles-BLfXxSGi.js";var k={class:`list-page`},A={class:`page-header`},j={class:`list-filter-bar`},M={class:`table-row-actions`},N={class:`list-pager`},P=b(n({__name:`index`,setup(n){let b=p(!1),P=p([]),F=p({current_page:1,per_page:20,total:0}),I=p(``),L=p(1),R=p([]),z=p(!1),B=p(null),V=p({code:``,name:``,remark:``,sort:0,status:1}),H=p();function U(e){return e.map(e=>({id:e.id,label:e.title,children:e.children?.length?U(e.children):void 0}))}async function W(){b.value=!0;try{let e=await T({page:L.value,page_size:F.value.per_page,keyword:I.value||void 0});P.value=e.items,F.value=e.meta}finally{b.value=!1}}async function G(){R.value=U(await C())}async function K(){B.value=null,V.value={code:``,name:``,remark:``,sort:0,status:1},await G(),z.value=!0,await a(),H.value?.setCheckedKeys([],!1)}async function q(e){e.code===`super_admin`&&y.warning(`超级管理员角色请谨慎修改菜单分配`),B.value=e.id,await G();let t=await D(e.id);V.value={code:t.code,name:t.name,remark:t.remark||``,sort:t.sort,status:t.status},z.value=!0,await a(),H.value?.setCheckedKeys(t.menu_ids,!1)}async function J(){let e=H.value?.getCheckedKeys(!1)||[];B.value?await w(B.value,{name:V.value.name,remark:V.value.remark||null,sort:V.value.sort,status:V.value.status,menu_ids:e}):await O({code:V.value.code,name:V.value.name,remark:V.value.remark||null,sort:V.value.sort,status:V.value.status,menu_ids:e}),y.success(`已保存`),z.value=!1,await W()}async function Y(e){if(e.code===`super_admin`){y.warning(`不能删除预置超级管理员`);return}await v.confirm(`确定删除角色「${e.name}」?`,`提示`,{type:`warning`}),await E(e.id),y.success(`已删除`),await W()}function X(){L.value=1,W()}function Z(){I.value=``,L.value=1,W()}return x(W),(n,a)=>{let p=l(`el-button`),v=l(`el-input`),y=l(`el-table-column`),x=l(`el-table`),C=l(`el-pagination`),w=l(`el-card`),T=l(`el-form-item`),E=l(`el-input-number`),D=l(`el-switch`),O=l(`el-form`),U=l(`el-tree`),G=l(`el-dialog`),Q=s(`loading`);return i(),e(m,null,[d(`div`,k,[d(`div`,A,[a[11]||=d(`h1`,{class:`page-title`},`角色管理`,-1),r(p,{type:`primary`,size:`small`,class:`btn-create`,onClick:K},{default:u(()=>[...a[10]||=[o(`新增角色`,-1)]]),_:1})]),r(w,{shadow:`never`,class:`admin-list-card`},{default:u(()=>[d(`div`,j,[r(v,{modelValue:I.value,"onUpdate:modelValue":a[0]||=e=>I.value=e,placeholder:`名称/编码`,clearable:``,class:`filter-search`,onKeyup:f(X,[`enter`])},null,8,[`modelValue`]),r(p,{type:`primary`,onClick:X},{default:u(()=>[...a[12]||=[o(`搜索`,-1)]]),_:1}),r(p,{onClick:Z},{default:u(()=>[...a[13]||=[o(`重置`,-1)]]),_:1})]),h((i(),_(x,{data:P.value,"row-key":`id`},{default:u(()=>[r(y,{prop:`code`,label:`编码`,width:`160`}),r(y,{prop:`name`,label:`名称`,width:`160`}),r(y,{prop:`remark`,label:`备注`,"min-width":`200`,"show-overflow-tooltip":``}),r(y,{prop:`sort`,label:`排序`,width:`80`,align:`center`}),r(y,{label:`状态`,width:`90`,align:`center`},{default:u(({row:e})=>[d(`span`,{class:c([`status-badge`,t(S)(e.status)])},g(e.status===1?`启用`:`停用`),3)]),_:1}),r(y,{label:`操作`,width:`160`,fixed:`right`},{default:u(({row:e})=>[d(`div`,M,[r(p,{class:`btn-action-secondary`,onClick:t=>q(e)},{default:u(()=>[...a[14]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),r(p,{class:`btn-action-secondary`,disabled:e.code===`super_admin`,onClick:t=>Y(e)},{default:u(()=>[...a[15]||=[o(` 删除 `,-1)]]),_:1},8,[`disabled`,`onClick`])])]),_:1})]),_:1},8,[`data`])),[[Q,b.value]]),d(`div`,N,[r(C,{"current-page":L.value,"onUpdate:currentPage":a[1]||=e=>L.value=e,layout:`total, prev, pager, next`,total:F.value.total,"page-size":F.value.per_page,onCurrentChange:W},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r(G,{modelValue:z.value,"onUpdate:modelValue":a[9]||=e=>z.value=e,title:B.value?`编辑角色`:`新增角色`,width:`520px`},{footer:u(()=>[r(p,{onClick:a[8]||=e=>z.value=!1},{default:u(()=>[...a[16]||=[o(`取消`,-1)]]),_:1}),r(p,{type:`primary`,onClick:J},{default:u(()=>[...a[17]||=[o(`保存`,-1)]]),_:1})]),default:u(()=>[a[18]||=d(`p`,{class:`hint`},[o(`当前阶段仅按`),d(`strong`,null,`菜单`),o(`控制侧栏与页面入口;接口暂不做权限码校验。`)],-1),r(O,{"label-width":`88px`},{default:u(()=>[B.value?(i(),_(T,{key:1,label:`编码`},{default:u(()=>[r(v,{modelValue:V.value.code,"onUpdate:modelValue":a[3]||=e=>V.value.code=e,disabled:``},null,8,[`modelValue`])]),_:1})):(i(),_(T,{key:0,label:`编码`},{default:u(()=>[r(v,{modelValue:V.value.code,"onUpdate:modelValue":a[2]||=e=>V.value.code=e,placeholder:`唯一编码`},null,8,[`modelValue`])]),_:1})),r(T,{label:`名称`},{default:u(()=>[r(v,{modelValue:V.value.name,"onUpdate:modelValue":a[4]||=e=>V.value.name=e},null,8,[`modelValue`])]),_:1}),r(T,{label:`备注`},{default:u(()=>[r(v,{modelValue:V.value.remark,"onUpdate:modelValue":a[5]||=e=>V.value.remark=e,type:`textarea`,rows:2},null,8,[`modelValue`])]),_:1}),r(T,{label:`排序`},{default:u(()=>[r(E,{modelValue:V.value.sort,"onUpdate:modelValue":a[6]||=e=>V.value.sort=e},null,8,[`modelValue`])]),_:1}),r(T,{label:`状态`},{default:u(()=>[r(D,{modelValue:V.value.status,"onUpdate:modelValue":a[7]||=e=>V.value.status=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1})]),_:1}),a[19]||=d(`h4`,{class:`tree-title`},`菜单分配`,-1),r(U,{ref_key:`menuRef`,ref:H,data:R.value,"show-checkbox":``,"node-key":`id`,props:{label:`label`,children:`children`},"default-expand-all":``,"check-strictly":``,class:`menu-tree`},null,8,[`data`])]),_:1},8,[`modelValue`,`title`])],64)}}}),[[`__scopeId`,`data-v-97831e12`]]);export{P as default}; \ No newline at end of file diff --git a/public/admin/assets/students-Ct75XZLa.js b/public/admin/assets/students-CW43hkwk.js similarity index 98% rename from public/admin/assets/students-Ct75XZLa.js rename to public/admin/assets/students-CW43hkwk.js index bbc411c..3b9f6c1 100644 --- a/public/admin/assets/students-Ct75XZLa.js +++ b/public/admin/assets/students-CW43hkwk.js @@ -1 +1 @@ -import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as ee,Y as s,at as c,b as l,d as te,ht as u,m as d,ot as f,q as p,rt as m,tn as h,x as g,y as _}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{l as v,r as y,s as b}from"./index-jb05DpEw.js";import{t as x}from"./usePageLoad-DFTLo_Lv.js";import{c as S,p as C}from"./teachers-CirjzrhY.js";import{a as w}from"./dict-CkTsGkap.js";import{n as T,o as E}from"./teacherStar-By0_CBs7.js";async function D(e){let{data:t}=await y.get(`/admin/v1/miniapp-users`,{params:e});return t.data}async function O(e){let{data:t}=await y.get(`/admin/v1/miniapp-users/${e}`);return t.data}async function k(e,t){let{data:n}=await y.post(`/admin/v1/miniapp-users/${e}/convert-to-teacher`,t);return n.data}var ne={class:`list-page students-page`},A={class:`list-filter-bar`},j={key:0,class:`status-badge status-published`},re={key:1,class:`status-badge status-unpublished`},ie={class:`table-row-actions`},M={class:`list-pager`},ae={key:0,class:`follow-teacher-summary`},oe={key:0},se={key:1},ce={key:2},le={class:`star-preview`},N=b(n({__name:`index`,setup(n){let y=u(!1),b=u([]),N=u({current_page:1,per_page:20,total:0}),P=u(1),F=u(``),I=u(``),L=u([]),R=u([]),z=u([]),B=u([]),V=u(!1),H=u(null),U=u(!1),W=u(null),G=u(!1),K=u({name:``,university_id:void 0,city:``,title:``,research_direction_ids:[],phone:``,email:``,star_level_dict_item_id:void 0,status_dict_item_id:void 0,next_follow_date:``}),q=_(()=>L.value.find(e=>e.value===`pending`)?.id);function J(e){return e?.length?e.join(`、`):`—`}async function Y(){let[e,t,n,r]=await Promise.all([w(`teacher_level`),w(`teacher_status`),S(),C({page:1,page_size:500})]);L.value=e.items,R.value=t.items,z.value=n.research_directions,B.value=r.items}async function X(){y.value=!0;try{let e={page:P.value,page_size:N.value.per_page};F.value&&(e.keyword=F.value),I.value!==``&&(e.converted=I.value);let t=await D(e);b.value=t.items,N.value=t.meta}finally{y.value=!1}}function ue(){F.value=``,I.value=``,P.value=1,X()}function Z(){P.value=1,X()}async function de(e){H.value=await O(e.id),V.value=!0}function Q(e){if(e.teacher_id){v.warning(`该学员已转入老师库`);return}W.value=e,K.value={name:e.name||``,university_id:void 0,city:``,title:e.job_title||``,research_direction_ids:[...e.research_direction_ids||[]],phone:e.mobile||``,email:``,star_level_dict_item_id:q.value,status_dict_item_id:R.value.find(e=>e.value===`active`)?.id,next_follow_date:``},U.value=!0}function fe(){let e=L.value.find(e=>e.id===K.value.star_level_dict_item_id);K.value.next_follow_date=E(e?.value)||``}function $(e){if(!e)return;let t=B.value.find(t=>t.id===e);t?.city&&!K.value.city&&(K.value.city=t.city)}m(()=>K.value.university_id,e=>$(e));async function pe(){if(!W.value)return;let e=K.value;if(!e.name.trim()){v.warning(`请填写姓名`);return}if(!e.university_id){v.warning(`请选择高校`);return}if(!e.city.trim()||!e.title.trim()){v.warning(`请填写城市与职称`);return}if(!e.research_direction_ids.length){v.warning(`请选择研究方向`);return}if(!e.status_dict_item_id){v.warning(`请选择状态`);return}G.value=!0;try{let t=await k(W.value.id,{name:e.name.trim(),university_id:e.university_id,city:e.city.trim(),title:e.title.trim(),research_direction_ids:e.research_direction_ids,phone:e.phone||null,email:e.email||null,star_level_dict_item_id:e.star_level_dict_item_id??null,status_dict_item_id:e.status_dict_item_id,next_follow_date:e.next_follow_date||null,recalc_next_follow_date:!0});v.success(`已转入老师库(老师 ID:${t.teacher_id})`),U.value=!1,await X()}finally{G.value=!1}}return x(async()=>{await Y(),await X()}),(n,u)=>{let m=s(`el-input`),_=s(`el-option`),v=s(`el-select`),x=s(`el-button`),S=s(`el-table-column`),C=s(`el-table`),w=s(`el-pagination`),E=s(`el-card`),D=s(`el-descriptions-item`),O=s(`el-descriptions`),k=s(`el-dialog`),q=s(`el-form-item`),Y=s(`el-col`),$=s(`el-date-picker`),me=s(`el-row`),he=s(`el-form`),ge=ee(`loading`);return i(),e(`div`,ne,[u[30]||=l(`div`,{class:`page-header`},[l(`h1`,{class:`page-title`},`学员库`)],-1),r(E,{shadow:`never`,class:`admin-list-card`},{default:c(()=>[l(`div`,A,[r(m,{modelValue:F.value,"onUpdate:modelValue":u[0]||=e=>F.value=e,class:`filter-search`,placeholder:`搜索姓名、手机号、公司…`,clearable:``,onKeyup:te(Z,[`enter`])},null,8,[`modelValue`]),r(v,{modelValue:I.value,"onUpdate:modelValue":u[1]||=e=>I.value=e,placeholder:`转入状态`,clearable:``,class:`filter-select-wide`},{default:c(()=>[r(_,{label:`未转入老师库`,value:`0`}),r(_,{label:`已转入老师库`,value:`1`})]),_:1},8,[`modelValue`]),r(x,{type:`primary`,class:`btn-create`,onClick:Z},{default:c(()=>[...u[19]||=[o(`搜索`,-1)]]),_:1}),r(x,{onClick:ue},{default:c(()=>[...u[20]||=[o(`重置`,-1)]]),_:1})]),f((i(),g(C,{data:b.value,"row-key":`id`},{default:c(()=>[r(S,{prop:`name`,label:`姓名`,width:`100`}),r(S,{prop:`mobile`,label:`手机号`,width:`120`}),r(S,{prop:`company`,label:`公司`,"min-width":`140`,"show-overflow-tooltip":``}),r(S,{label:`研究方向`,"min-width":`160`,"show-overflow-tooltip":``},{default:c(({row:e})=>[o(h(e.research_direction||`—`),1)]),_:1}),r(S,{label:`报名课程`,"min-width":`160`,"show-overflow-tooltip":``},{default:c(({row:e})=>[o(h(J(e.course_titles)),1)]),_:1}),r(S,{label:`报名活动`,"min-width":`160`,"show-overflow-tooltip":``},{default:c(({row:e})=>[o(h(J(e.activity_titles)),1)]),_:1}),r(S,{label:`转入状态`,width:`110`,align:`center`},{default:c(({row:t})=>[t.teacher_id?(i(),e(`span`,j,`已转入`)):(i(),e(`span`,re,`未转入`))]),_:1}),r(S,{label:`操作`,width:`200`,fixed:`right`},{default:c(({row:e})=>[l(`div`,ie,[r(x,{size:`small`,class:`btn-action-secondary table-inline-btn`,onClick:t=>de(e)},{default:c(()=>[...u[21]||=[o(` 详情 `,-1)]]),_:1},8,[`onClick`]),e.teacher_id?(i(),g(x,{key:1,size:`small`,class:`btn-action-secondary table-inline-btn`,disabled:``},{default:c(()=>[...u[23]||=[o(` 已转入 `,-1)]]),_:1})):(i(),g(x,{key:0,size:`small`,class:`btn-action-brand table-inline-btn`,onClick:t=>Q(e)},{default:c(()=>[...u[22]||=[o(` 转入老师库 `,-1)]]),_:1},8,[`onClick`]))])]),_:1})]),_:1},8,[`data`])),[[ge,y.value]]),l(`div`,M,[r(w,{"current-page":P.value,"onUpdate:currentPage":u[2]||=e=>P.value=e,"page-size":N.value.per_page,total:N.value.total,layout:`total, prev, pager, next`,onCurrentChange:X},null,8,[`current-page`,`page-size`,`total`])])]),_:1}),r(k,{modelValue:V.value,"onUpdate:modelValue":u[5]||=e=>V.value=e,title:`学员详情`,width:`720px`,"destroy-on-close":``},{footer:c(()=>[r(x,{onClick:u[3]||=e=>V.value=!1},{default:c(()=>[...u[26]||=[o(`关闭`,-1)]]),_:1}),H.value&&!H.value.teacher_id?(i(),g(x,{key:0,type:`primary`,class:`btn-create`,onClick:u[4]||=e=>{V.value=!1,Q(H.value)}},{default:c(()=>[...u[27]||=[o(` 转入老师库 `,-1)]]),_:1})):a(``,!0)]),default:c(()=>[H.value?(i(),e(d,{key:0},[r(O,{column:2,border:``,size:`small`},{default:c(()=>[r(D,{label:`姓名`},{default:c(()=>[o(h(H.value.name),1)]),_:1}),r(D,{label:`手机号`},{default:c(()=>[o(h(H.value.mobile||`—`),1)]),_:1}),r(D,{label:`公司`,span:2},{default:c(()=>[o(h(H.value.company||`—`),1)]),_:1}),r(D,{label:`职务`},{default:c(()=>[o(h(H.value.job_title||`—`),1)]),_:1}),r(D,{label:`研究方向`},{default:c(()=>[o(h(H.value.research_direction||`—`),1)]),_:1}),r(D,{label:`微信昵称`},{default:c(()=>[o(h(H.value.nickname||`—`),1)]),_:1}),r(D,{label:`转入老师`},{default:c(()=>[o(h(H.value.teacher_name?`${H.value.teacher_name}(ID ${H.value.teacher_id})`:`未转入`),1)]),_:1})]),_:1}),u[24]||=l(`h3`,{class:`sub-title`},`报名课程`,-1),r(C,{data:H.value.courses,size:`small`,"empty-text":`暂无报名`},{default:c(()=>[r(S,{prop:`title`,label:`课程`,"min-width":`180`}),r(S,{prop:`signed_up_at`,label:`报名时间`,width:`110`}),r(S,{prop:`company`,label:`报名时公司`,width:`140`,"show-overflow-tooltip":``})]),_:1},8,[`data`]),u[25]||=l(`h3`,{class:`sub-title`},`报名活动`,-1),r(C,{data:H.value.activities,size:`small`,"empty-text":`暂无报名`},{default:c(()=>[r(S,{prop:`title`,label:`活动`,"min-width":`180`}),r(S,{prop:`signed_up_at`,label:`报名时间`,width:`110`}),r(S,{prop:`company`,label:`报名时公司`,width:`140`,"show-overflow-tooltip":``})]),_:1},8,[`data`])],64)):a(``,!0)]),_:1},8,[`modelValue`]),r(k,{modelValue:U.value,"onUpdate:modelValue":u[17]||=e=>U.value=e,title:`转入老师库`,width:`960px`,"destroy-on-close":``,onClosed:u[18]||=e=>W.value=null},{footer:c(()=>[r(x,{onClick:u[16]||=e=>U.value=!1},{default:c(()=>[...u[28]||=[o(`取消`,-1)]]),_:1}),r(x,{type:`primary`,class:`btn-create`,loading:G.value,onClick:pe},{default:c(()=>[...u[29]||=[o(` 确认转入老师库 `,-1)]]),_:1},8,[`loading`])]),default:c(()=>[W.value?(i(),e(`div`,ae,[o(` 学员:`+h(W.value.name)+` `,1),W.value.mobile?(i(),e(`span`,oe,` · `+h(W.value.mobile),1)):a(``,!0),W.value.company?(i(),e(`span`,se,` · `+h(W.value.company),1)):a(``,!0),W.value.research_direction?(i(),e(`span`,ce,` · 研究方向:`+h(W.value.research_direction),1)):a(``,!0)])):a(``,!0),r(he,{"label-position":`top`,class:`form-small`,style:{"margin-top":`12px`}},{default:c(()=>[r(me,{gutter:12},{default:c(()=>[r(Y,{xs:24,md:4},{default:c(()=>[r(q,{label:`姓名`,required:``},{default:c(()=>[r(m,{modelValue:K.value.name,"onUpdate:modelValue":u[6]||=e=>K.value.name=e},null,8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:8},{default:c(()=>[r(q,{label:`高校`,required:``},{default:c(()=>[r(v,{modelValue:K.value.university_id,"onUpdate:modelValue":u[7]||=e=>K.value.university_id=e,filterable:``,placeholder:`选择高校`,style:{width:`100%`}},{default:c(()=>[(i(!0),e(d,null,p(B.value,e=>(i(),g(_,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:4},{default:c(()=>[r(q,{label:`城市`,required:``},{default:c(()=>[r(m,{modelValue:K.value.city,"onUpdate:modelValue":u[8]||=e=>K.value.city=e},null,8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:8},{default:c(()=>[r(q,{label:`职称`,required:``},{default:c(()=>[r(m,{modelValue:K.value.title,"onUpdate:modelValue":u[9]||=e=>K.value.title=e},null,8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:8},{default:c(()=>[r(q,{label:`研究方向`,required:``},{default:c(()=>[r(v,{modelValue:K.value.research_direction_ids,"onUpdate:modelValue":u[10]||=e=>K.value.research_direction_ids=e,multiple:``,filterable:``,"collapse-tags":``,"collapse-tags-tooltip":``,placeholder:`选择研究方向(可多选)`,style:{width:`100%`}},{default:c(()=>[(i(!0),e(d,null,p(z.value,e=>(i(),g(_,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:6},{default:c(()=>[r(q,{label:`电话`},{default:c(()=>[r(m,{modelValue:K.value.phone,"onUpdate:modelValue":u[11]||=e=>K.value.phone=e},null,8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:6},{default:c(()=>[r(q,{label:`邮箱`},{default:c(()=>[r(m,{modelValue:K.value.email,"onUpdate:modelValue":u[12]||=e=>K.value.email=e,type:`email`},null,8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:4},{default:c(()=>[r(q,{label:`星级`},{default:c(()=>[r(v,{modelValue:K.value.star_level_dict_item_id,"onUpdate:modelValue":u[13]||=e=>K.value.star_level_dict_item_id=e,style:{width:`100%`},onChange:fe},{default:c(()=>[(i(!0),e(d,null,p(L.value,e=>(i(),g(_,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),l(`span`,le,h(t(T)(L.value.find(e=>e.id===K.value.star_level_dict_item_id)?.value,L.value.find(e=>e.id===K.value.star_level_dict_item_id)?.label)),1)]),_:1})]),_:1}),r(Y,{xs:24,md:6},{default:c(()=>[r(q,{label:`状态`,required:``},{default:c(()=>[r(v,{modelValue:K.value.status_dict_item_id,"onUpdate:modelValue":u[14]||=e=>K.value.status_dict_item_id=e,placeholder:`请选择状态`,style:{width:`100%`}},{default:c(()=>[(i(!0),e(d,null,p(R.value,e=>(i(),g(_,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:6},{default:c(()=>[r(q,{label:`下次跟进日期`},{default:c(()=>[r($,{modelValue:K.value.next_follow_date,"onUpdate:modelValue":u[15]||=e=>K.value.next_follow_date=e,type:`date`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`])])}}}),[[`__scopeId`,`data-v-829c7ad1`]]);export{N as default}; \ No newline at end of file +import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as ee,Y as s,at as c,b as l,d as te,ht as u,m as d,ot as f,q as p,rt as m,tn as h,x as g,y as _}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{l as v,r as y,s as b}from"./index-DTIMLswB.js";import{t as x}from"./usePageLoad-DFTLo_Lv.js";import{c as S,p as C}from"./teachers-Cve-7Sy4.js";import{a as w}from"./dict-X8lDWB9t.js";import{n as T,o as E}from"./teacherStar-By0_CBs7.js";async function D(e){let{data:t}=await y.get(`/admin/v1/miniapp-users`,{params:e});return t.data}async function O(e){let{data:t}=await y.get(`/admin/v1/miniapp-users/${e}`);return t.data}async function k(e,t){let{data:n}=await y.post(`/admin/v1/miniapp-users/${e}/convert-to-teacher`,t);return n.data}var ne={class:`list-page students-page`},A={class:`list-filter-bar`},j={key:0,class:`status-badge status-published`},re={key:1,class:`status-badge status-unpublished`},ie={class:`table-row-actions`},M={class:`list-pager`},ae={key:0,class:`follow-teacher-summary`},oe={key:0},se={key:1},ce={key:2},le={class:`star-preview`},N=b(n({__name:`index`,setup(n){let y=u(!1),b=u([]),N=u({current_page:1,per_page:20,total:0}),P=u(1),F=u(``),I=u(``),L=u([]),R=u([]),z=u([]),B=u([]),V=u(!1),H=u(null),U=u(!1),W=u(null),G=u(!1),K=u({name:``,university_id:void 0,city:``,title:``,research_direction_ids:[],phone:``,email:``,star_level_dict_item_id:void 0,status_dict_item_id:void 0,next_follow_date:``}),q=_(()=>L.value.find(e=>e.value===`pending`)?.id);function J(e){return e?.length?e.join(`、`):`—`}async function Y(){let[e,t,n,r]=await Promise.all([w(`teacher_level`),w(`teacher_status`),S(),C({page:1,page_size:500})]);L.value=e.items,R.value=t.items,z.value=n.research_directions,B.value=r.items}async function X(){y.value=!0;try{let e={page:P.value,page_size:N.value.per_page};F.value&&(e.keyword=F.value),I.value!==``&&(e.converted=I.value);let t=await D(e);b.value=t.items,N.value=t.meta}finally{y.value=!1}}function ue(){F.value=``,I.value=``,P.value=1,X()}function Z(){P.value=1,X()}async function de(e){H.value=await O(e.id),V.value=!0}function Q(e){if(e.teacher_id){v.warning(`该学员已转入老师库`);return}W.value=e,K.value={name:e.name||``,university_id:void 0,city:``,title:e.job_title||``,research_direction_ids:[...e.research_direction_ids||[]],phone:e.mobile||``,email:``,star_level_dict_item_id:q.value,status_dict_item_id:R.value.find(e=>e.value===`active`)?.id,next_follow_date:``},U.value=!0}function fe(){let e=L.value.find(e=>e.id===K.value.star_level_dict_item_id);K.value.next_follow_date=E(e?.value)||``}function $(e){if(!e)return;let t=B.value.find(t=>t.id===e);t?.city&&!K.value.city&&(K.value.city=t.city)}m(()=>K.value.university_id,e=>$(e));async function pe(){if(!W.value)return;let e=K.value;if(!e.name.trim()){v.warning(`请填写姓名`);return}if(!e.university_id){v.warning(`请选择高校`);return}if(!e.city.trim()||!e.title.trim()){v.warning(`请填写城市与职称`);return}if(!e.research_direction_ids.length){v.warning(`请选择研究方向`);return}if(!e.status_dict_item_id){v.warning(`请选择状态`);return}G.value=!0;try{let t=await k(W.value.id,{name:e.name.trim(),university_id:e.university_id,city:e.city.trim(),title:e.title.trim(),research_direction_ids:e.research_direction_ids,phone:e.phone||null,email:e.email||null,star_level_dict_item_id:e.star_level_dict_item_id??null,status_dict_item_id:e.status_dict_item_id,next_follow_date:e.next_follow_date||null,recalc_next_follow_date:!0});v.success(`已转入老师库(老师 ID:${t.teacher_id})`),U.value=!1,await X()}finally{G.value=!1}}return x(async()=>{await Y(),await X()}),(n,u)=>{let m=s(`el-input`),_=s(`el-option`),v=s(`el-select`),x=s(`el-button`),S=s(`el-table-column`),C=s(`el-table`),w=s(`el-pagination`),E=s(`el-card`),D=s(`el-descriptions-item`),O=s(`el-descriptions`),k=s(`el-dialog`),q=s(`el-form-item`),Y=s(`el-col`),$=s(`el-date-picker`),me=s(`el-row`),he=s(`el-form`),ge=ee(`loading`);return i(),e(`div`,ne,[u[30]||=l(`div`,{class:`page-header`},[l(`h1`,{class:`page-title`},`学员库`)],-1),r(E,{shadow:`never`,class:`admin-list-card`},{default:c(()=>[l(`div`,A,[r(m,{modelValue:F.value,"onUpdate:modelValue":u[0]||=e=>F.value=e,class:`filter-search`,placeholder:`搜索姓名、手机号、公司…`,clearable:``,onKeyup:te(Z,[`enter`])},null,8,[`modelValue`]),r(v,{modelValue:I.value,"onUpdate:modelValue":u[1]||=e=>I.value=e,placeholder:`转入状态`,clearable:``,class:`filter-select-wide`},{default:c(()=>[r(_,{label:`未转入老师库`,value:`0`}),r(_,{label:`已转入老师库`,value:`1`})]),_:1},8,[`modelValue`]),r(x,{type:`primary`,class:`btn-create`,onClick:Z},{default:c(()=>[...u[19]||=[o(`搜索`,-1)]]),_:1}),r(x,{onClick:ue},{default:c(()=>[...u[20]||=[o(`重置`,-1)]]),_:1})]),f((i(),g(C,{data:b.value,"row-key":`id`},{default:c(()=>[r(S,{prop:`name`,label:`姓名`,width:`100`}),r(S,{prop:`mobile`,label:`手机号`,width:`120`}),r(S,{prop:`company`,label:`公司`,"min-width":`140`,"show-overflow-tooltip":``}),r(S,{label:`研究方向`,"min-width":`160`,"show-overflow-tooltip":``},{default:c(({row:e})=>[o(h(e.research_direction||`—`),1)]),_:1}),r(S,{label:`报名课程`,"min-width":`160`,"show-overflow-tooltip":``},{default:c(({row:e})=>[o(h(J(e.course_titles)),1)]),_:1}),r(S,{label:`报名活动`,"min-width":`160`,"show-overflow-tooltip":``},{default:c(({row:e})=>[o(h(J(e.activity_titles)),1)]),_:1}),r(S,{label:`转入状态`,width:`110`,align:`center`},{default:c(({row:t})=>[t.teacher_id?(i(),e(`span`,j,`已转入`)):(i(),e(`span`,re,`未转入`))]),_:1}),r(S,{label:`操作`,width:`200`,fixed:`right`},{default:c(({row:e})=>[l(`div`,ie,[r(x,{size:`small`,class:`btn-action-secondary table-inline-btn`,onClick:t=>de(e)},{default:c(()=>[...u[21]||=[o(` 详情 `,-1)]]),_:1},8,[`onClick`]),e.teacher_id?(i(),g(x,{key:1,size:`small`,class:`btn-action-secondary table-inline-btn`,disabled:``},{default:c(()=>[...u[23]||=[o(` 已转入 `,-1)]]),_:1})):(i(),g(x,{key:0,size:`small`,class:`btn-action-brand table-inline-btn`,onClick:t=>Q(e)},{default:c(()=>[...u[22]||=[o(` 转入老师库 `,-1)]]),_:1},8,[`onClick`]))])]),_:1})]),_:1},8,[`data`])),[[ge,y.value]]),l(`div`,M,[r(w,{"current-page":P.value,"onUpdate:currentPage":u[2]||=e=>P.value=e,"page-size":N.value.per_page,total:N.value.total,layout:`total, prev, pager, next`,onCurrentChange:X},null,8,[`current-page`,`page-size`,`total`])])]),_:1}),r(k,{modelValue:V.value,"onUpdate:modelValue":u[5]||=e=>V.value=e,title:`学员详情`,width:`720px`,"destroy-on-close":``},{footer:c(()=>[r(x,{onClick:u[3]||=e=>V.value=!1},{default:c(()=>[...u[26]||=[o(`关闭`,-1)]]),_:1}),H.value&&!H.value.teacher_id?(i(),g(x,{key:0,type:`primary`,class:`btn-create`,onClick:u[4]||=e=>{V.value=!1,Q(H.value)}},{default:c(()=>[...u[27]||=[o(` 转入老师库 `,-1)]]),_:1})):a(``,!0)]),default:c(()=>[H.value?(i(),e(d,{key:0},[r(O,{column:2,border:``,size:`small`},{default:c(()=>[r(D,{label:`姓名`},{default:c(()=>[o(h(H.value.name),1)]),_:1}),r(D,{label:`手机号`},{default:c(()=>[o(h(H.value.mobile||`—`),1)]),_:1}),r(D,{label:`公司`,span:2},{default:c(()=>[o(h(H.value.company||`—`),1)]),_:1}),r(D,{label:`职务`},{default:c(()=>[o(h(H.value.job_title||`—`),1)]),_:1}),r(D,{label:`研究方向`},{default:c(()=>[o(h(H.value.research_direction||`—`),1)]),_:1}),r(D,{label:`微信昵称`},{default:c(()=>[o(h(H.value.nickname||`—`),1)]),_:1}),r(D,{label:`转入老师`},{default:c(()=>[o(h(H.value.teacher_name?`${H.value.teacher_name}(ID ${H.value.teacher_id})`:`未转入`),1)]),_:1})]),_:1}),u[24]||=l(`h3`,{class:`sub-title`},`报名课程`,-1),r(C,{data:H.value.courses,size:`small`,"empty-text":`暂无报名`},{default:c(()=>[r(S,{prop:`title`,label:`课程`,"min-width":`180`}),r(S,{prop:`signed_up_at`,label:`报名时间`,width:`110`}),r(S,{prop:`company`,label:`报名时公司`,width:`140`,"show-overflow-tooltip":``})]),_:1},8,[`data`]),u[25]||=l(`h3`,{class:`sub-title`},`报名活动`,-1),r(C,{data:H.value.activities,size:`small`,"empty-text":`暂无报名`},{default:c(()=>[r(S,{prop:`title`,label:`活动`,"min-width":`180`}),r(S,{prop:`signed_up_at`,label:`报名时间`,width:`110`}),r(S,{prop:`company`,label:`报名时公司`,width:`140`,"show-overflow-tooltip":``})]),_:1},8,[`data`])],64)):a(``,!0)]),_:1},8,[`modelValue`]),r(k,{modelValue:U.value,"onUpdate:modelValue":u[17]||=e=>U.value=e,title:`转入老师库`,width:`960px`,"destroy-on-close":``,onClosed:u[18]||=e=>W.value=null},{footer:c(()=>[r(x,{onClick:u[16]||=e=>U.value=!1},{default:c(()=>[...u[28]||=[o(`取消`,-1)]]),_:1}),r(x,{type:`primary`,class:`btn-create`,loading:G.value,onClick:pe},{default:c(()=>[...u[29]||=[o(` 确认转入老师库 `,-1)]]),_:1},8,[`loading`])]),default:c(()=>[W.value?(i(),e(`div`,ae,[o(` 学员:`+h(W.value.name)+` `,1),W.value.mobile?(i(),e(`span`,oe,` · `+h(W.value.mobile),1)):a(``,!0),W.value.company?(i(),e(`span`,se,` · `+h(W.value.company),1)):a(``,!0),W.value.research_direction?(i(),e(`span`,ce,` · 研究方向:`+h(W.value.research_direction),1)):a(``,!0)])):a(``,!0),r(he,{"label-position":`top`,class:`form-small`,style:{"margin-top":`12px`}},{default:c(()=>[r(me,{gutter:12},{default:c(()=>[r(Y,{xs:24,md:4},{default:c(()=>[r(q,{label:`姓名`,required:``},{default:c(()=>[r(m,{modelValue:K.value.name,"onUpdate:modelValue":u[6]||=e=>K.value.name=e},null,8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:8},{default:c(()=>[r(q,{label:`高校`,required:``},{default:c(()=>[r(v,{modelValue:K.value.university_id,"onUpdate:modelValue":u[7]||=e=>K.value.university_id=e,filterable:``,placeholder:`选择高校`,style:{width:`100%`}},{default:c(()=>[(i(!0),e(d,null,p(B.value,e=>(i(),g(_,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:4},{default:c(()=>[r(q,{label:`城市`,required:``},{default:c(()=>[r(m,{modelValue:K.value.city,"onUpdate:modelValue":u[8]||=e=>K.value.city=e},null,8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:8},{default:c(()=>[r(q,{label:`职称`,required:``},{default:c(()=>[r(m,{modelValue:K.value.title,"onUpdate:modelValue":u[9]||=e=>K.value.title=e},null,8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:8},{default:c(()=>[r(q,{label:`研究方向`,required:``},{default:c(()=>[r(v,{modelValue:K.value.research_direction_ids,"onUpdate:modelValue":u[10]||=e=>K.value.research_direction_ids=e,multiple:``,filterable:``,"collapse-tags":``,"collapse-tags-tooltip":``,placeholder:`选择研究方向(可多选)`,style:{width:`100%`}},{default:c(()=>[(i(!0),e(d,null,p(z.value,e=>(i(),g(_,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:6},{default:c(()=>[r(q,{label:`电话`},{default:c(()=>[r(m,{modelValue:K.value.phone,"onUpdate:modelValue":u[11]||=e=>K.value.phone=e},null,8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:6},{default:c(()=>[r(q,{label:`邮箱`},{default:c(()=>[r(m,{modelValue:K.value.email,"onUpdate:modelValue":u[12]||=e=>K.value.email=e,type:`email`},null,8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:4},{default:c(()=>[r(q,{label:`星级`},{default:c(()=>[r(v,{modelValue:K.value.star_level_dict_item_id,"onUpdate:modelValue":u[13]||=e=>K.value.star_level_dict_item_id=e,style:{width:`100%`},onChange:fe},{default:c(()=>[(i(!0),e(d,null,p(L.value,e=>(i(),g(_,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),l(`span`,le,h(t(T)(L.value.find(e=>e.id===K.value.star_level_dict_item_id)?.value,L.value.find(e=>e.id===K.value.star_level_dict_item_id)?.label)),1)]),_:1})]),_:1}),r(Y,{xs:24,md:6},{default:c(()=>[r(q,{label:`状态`,required:``},{default:c(()=>[r(v,{modelValue:K.value.status_dict_item_id,"onUpdate:modelValue":u[14]||=e=>K.value.status_dict_item_id=e,placeholder:`请选择状态`,style:{width:`100%`}},{default:c(()=>[(i(!0),e(d,null,p(R.value,e=>(i(),g(_,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:6},{default:c(()=>[r(q,{label:`下次跟进日期`},{default:c(()=>[r($,{modelValue:K.value.next_follow_date,"onUpdate:modelValue":u[15]||=e=>K.value.next_follow_date=e,type:`date`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`])])}}}),[[`__scopeId`,`data-v-829c7ad1`]]);export{N as default}; \ No newline at end of file diff --git a/public/admin/assets/teachers-D6avaTco.js b/public/admin/assets/teachers-B_-YWY83.js similarity index 98% rename from public/admin/assets/teachers-D6avaTco.js rename to public/admin/assets/teachers-B_-YWY83.js index be033c5..f8a4c1b 100644 --- a/public/admin/assets/teachers-D6avaTco.js +++ b/public/admin/assets/teachers-B_-YWY83.js @@ -1 +1 @@ -import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as ee,Xt as s,Y as c,at as l,b as u,d as te,f as ne,ht as d,m as f,ot as re,q as p,rt as m,tn as h,x as g,y as _}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{l as v,s as y,t as b}from"./index-jb05DpEw.js";import{t as x}from"./usePageLoad-DFTLo_Lv.js";import{a as ie,c as ae,d as oe,f as S,l as C,n as w,p as T,r as E,t as se}from"./teachers-CirjzrhY.js";import{a as D}from"./dict-CkTsGkap.js";import{r as ce,t as le}from"./TeacherDetailDialog-BY1NDYPP.js";import{t as ue}from"./demands-DTPLk14K.js";import{a as de,i as fe,n as pe,o as me,r as he,t as ge}from"./teacherStar-By0_CBs7.js";import{r as _e}from"./users-BE9HtqQW.js";var ve={class:`list-page teachers-page`},ye={class:`page-header`},be={class:`page-header-actions`},xe={class:`talent-stat-grid`},Se={class:`talent-stat-value`},Ce={class:`talent-stat-value is-dark`},we={class:`talent-stat-value is-danger`},Te={class:`talent-stat-value is-success`},Ee={class:`list-filter-bar`},De=[`onClick`],Oe={key:1,class:`text-muted`},ke=[`title`],Ae={class:`table-row-actions teachers-table-actions`},je={class:`list-pager`},Me={class:`uni-row`},Ne={class:`follow-teacher-summary`},Pe={class:`text-brand`},Fe={key:0,class:`names-muted`},Ie={class:`batch-rule`},Le={key:0,class:`follow-teacher-summary`},Re={key:0,class:`follow-date-rule`},ze={key:0,class:`follow-teacher-summary`},Be={class:`star-text`},Ve={class:`follow-history-list`},He={class:`follow-history-head`},Ue={class:`follow-history-title`},We={class:`follow-history-date`},Ge={class:`follow-history-body`},Ke={class:`follow-history-row`},qe={class:`follow-history-row`},Je={class:`follow-history-row`},Ye={class:`follow-history-row`},Xe={class:`follow-history-footer`},Ze=y(n({__name:`index`,setup(n){let y=b(),Ze=_(()=>y.isGridMember);function Qe(){let e=y.user?.id;return e!=null&&ct.value.some(t=>t.id===e)?e:ct.value[0]?.id}let $e=d(!1),et=d(!1),tt=d(null),nt=d([]),rt=d({current_page:1,per_page:20,total:0}),O=d(1),k=d({month_pending:0,month_followed:0,overdue:0,partners:0}),A=d(``),j=d(``),M=d(``),N=d(``),P=d(``),F=d(``),I=d(``),it=d([]),L=d([]),at=d([]),ot=d([]),st=d([]),R=d([]),z=d([]),ct=d([]),lt=d([]),B=d([]),ut=_(()=>B.value.map(e=>e.id)),dt=_(()=>B.value.map(e=>e.name).join(`、`)),V=d(!1),H=d({name:``,university_id:void 0,city:``,title:``,research_direction_ids:[],phone:``,email:``,source_dict_item_id:void 0,star_level_dict_item_id:void 0,status_dict_item_id:void 0}),U=d(!1),ft=d(!1),W=d({name:``,city:``,province:``,longitude:``,latitude:``}),G=d(!1),K=d(),pt=_(()=>de(L.value.find(e=>e.id===K.value)?.value)),q=d(!1),J=d(null),mt=_(()=>de(J.value?.star_level_item?.value)),Y=d({subject:``,content:``,followed_at:new Date().toISOString().slice(0,10),follow_method_dict_item_id:void 0,urgency_dict_item_id:void 0,admin_user_id:void 0,next_follow_subject:``,next_follow_date:``}),ht=d(!1),X=d(null),gt=d([]),_t=d(!1),vt=d(null),Z=d(!1),yt=d(null),Q=d({type_dict_item_id:void 0,title:``,content:``}),bt=_(()=>it.value.find(e=>e.value===`manual`)?.id),xt=_(()=>L.value.find(e=>e.value===`pending`)?.id);function St(e){if(!e)return;let t=R.value.find(t=>t.id===e);t?.city&&!H.value.city&&(H.value.city=t.city)}m(()=>H.value.university_id,e=>St(e));async function Ct(){let[e,t,n,r,i,a,o,ee,s]=await Promise.all([D(`teacher_source`),D(`teacher_level`),D(`teacher_status`),D(`follow_method`),D(`follow_urgency`),D(`demand_type`),T({page:1,page_size:200}),_e({page:1,page_size:200,status:1}),ae()]);it.value=e.items,L.value=t.items,at.value=n.items,ot.value=r.items,st.value=i.items,lt.value=a.items;let c=y.user?.grid_scope?.university_ids;R.value=c?.length?o.items.filter(e=>c.includes(e.id)):o.items;let l=y.user?.grid_scope?.research_direction_ids;z.value=l?.length?s.research_directions.filter(e=>l.includes(e.id)):s.research_directions,ct.value=ee.items.map(e=>({id:e.id,label:e.real_name||e.username}))}async function wt(){k.value=await oe()}async function $(){$e.value=!0;try{let e={page:O.value,page_size:rt.value.per_page};A.value&&(e.keyword=A.value),j.value!==``&&(e.source_dict_item_id=j.value),M.value!==``&&(e.star_level_dict_item_id=M.value),N.value!==``&&(e.status_dict_item_id=N.value),P.value!==``&&(e.university_id=P.value),F.value!==``&&(e.research_direction_id=F.value),I.value&&(e.stat_bucket=I.value);let t=await S(e);nt.value=t.items,rt.value=t.meta,B.value=[],z.value=(await ae()).research_directions}finally{$e.value=!1}}function Tt(){A.value=``,j.value=``,M.value=``,N.value=``,P.value=``,F.value=``,I.value=``,O.value=1,$()}function Et(){O.value=1,$()}function Dt(e){I.value=I.value===e?``:e,O.value=1,$()}function Ot(e){tt.value=e.id,et.value=!0}async function kt(){z.value=(await ae()).research_directions}function At(){W.value={name:``,city:H.value.city||``,province:``,longitude:``,latitude:``},U.value=!0}async function jt(){let e=W.value;if(!e.name.trim()){v.warning(`请填写高校名称`);return}if(!e.longitude.trim()||!e.latitude.trim()){v.warning(`请填写经度与纬度`);return}let t=Number(e.longitude),n=Number(e.latitude);if(Number.isNaN(t)||Number.isNaN(n)){v.warning(`经纬度须为有效数字`);return}ft.value=!0;try{let r=await ie({name:e.name.trim(),city:e.city.trim()||null,province:e.province.trim()||null,longitude:t,latitude:n});R.value.some(e=>e.id===r.id)||R.value.push(r),H.value.university_id=r.id,r.city&&(H.value.city=r.city),U.value=!1,v.success(`高校已创建`)}finally{ft.value=!1}}async function Mt(){H.value={name:``,university_id:void 0,city:``,title:``,research_direction_ids:[],phone:``,email:``,source_dict_item_id:bt.value,star_level_dict_item_id:xt.value,status_dict_item_id:at.value.find(e=>e.value===`active`)?.id},await kt(),V.value=!0}async function Nt(){let e=H.value;if(!e.name.trim()){v.warning(`请填写姓名`);return}if(!e.research_direction_ids.length){v.warning(`请至少选择一个研究方向`);return}if(!e.city.trim()){v.warning(`请填写城市`);return}if(!e.title.trim()){v.warning(`请填写职称`);return}if(!e.status_dict_item_id){v.warning(`请选择状态`);return}if(!e.university_id){v.warning(`请选择高校,或点击「新建高校」`);return}await w({name:e.name.trim(),university_id:e.university_id,city:e.city.trim(),title:e.title.trim(),research_direction_ids:e.research_direction_ids,phone:e.phone||null,email:e.email||null,source_dict_item_id:e.source_dict_item_id??bt.value,star_level_dict_item_id:e.star_level_dict_item_id??xt.value,status_dict_item_id:e.status_dict_item_id,recalc_next_follow_date:!0}),v.success(`已录入`),V.value=!1,await Promise.all([$(),wt()])}function Pt(){if(!B.value.length){v.warning(`请先在列表中勾选需要改星的老师`);return}K.value=void 0,G.value=!0}async function Ft(){if(!K.value){v.warning(`请选择目标星级`);return}await se({ids:ut.value,star_level_dict_item_id:K.value,recalc_next_follow_date:!0}),v.success(`已批量更新`),G.value=!1,await Promise.all([$(),wt()])}function It(e){J.value=e,Y.value={subject:``,content:``,followed_at:new Date().toISOString().slice(0,10),follow_method_dict_item_id:ot.value[0]?.id,urgency_dict_item_id:st.value.find(e=>e.value===`normal`)?.id,admin_user_id:Qe(),next_follow_subject:``,next_follow_date:me(e.star_level_item?.value)||``},q.value=!0}async function Lt(){let e=Y.value;if(J.value){if(!e.subject.trim()||!e.next_follow_subject.trim()||!e.next_follow_date){v.warning(`请填写必填项`);return}if(!e.follow_method_dict_item_id||!e.urgency_dict_item_id||!e.admin_user_id){v.warning(`请填写跟进方式、紧急程度与跟进人员`);return}await E(J.value.id,{...e}),v.success(`已保存跟进`),q.value=!1,await Promise.all([$(),wt()])}}async function Rt(e){X.value=e,gt.value=await C(e.id),ht.value=!0}function zt(e){vt.value=e,_t.value=!0}function Bt(e){yt.value=e,Q.value={type_dict_item_id:void 0,title:``,content:``},Z.value=!0}async function Vt(){if(yt.value){if(!Q.value.type_dict_item_id||!Q.value.title.trim()||!Q.value.content.trim()){v.warning(`请填写需求类型、标题与详细描述`);return}await ue({teacher_id:yt.value.id,type_dict_item_id:Q.value.type_dict_item_id,title:Q.value.title.trim(),content:Q.value.content.trim()}),v.success(`已发布需求`),Z.value=!1}}return x(async()=>{await Ct(),await Promise.all([wt(),$()])}),(n,d)=>{let m=c(`el-button`),_=c(`el-input`),v=c(`el-option`),y=c(`el-select`),b=c(`el-table-column`),x=c(`el-tag`),ie=c(`el-table`),ae=c(`el-pagination`),oe=c(`el-card`),S=c(`el-form-item`),C=c(`el-col`),w=c(`el-row`),T=c(`el-form`),E=c(`el-dialog`),se=c(`el-alert`),D=c(`el-date-picker`),ue=c(`el-empty`),de=ee(`loading`);return i(),e(`div`,ve,[u(`div`,ye,[d[54]||=u(`h1`,{class:`page-title`},`老师库`,-1),u(`div`,be,[r(m,{class:`btn-action-secondary`,size:`small`,onClick:Pt},{default:l(()=>[...d[52]||=[o(`批量改星`,-1)]]),_:1}),Ze.value?a(``,!0):(i(),g(m,{key:0,type:`primary`,size:`small`,class:`teachers-primary-btn`,onClick:Mt},{default:l(()=>[...d[53]||=[o(` 手动录入 `,-1)]]),_:1}))])]),u(`div`,xe,[u(`button`,{type:`button`,class:s([`talent-stat-card`,{"is-active":I.value===`month_pending`}]),onClick:d[0]||=e=>Dt(`month_pending`)},[d[55]||=u(`div`,{class:`talent-stat-label`},`本月待跟进数量`,-1),u(`div`,Se,h(k.value.month_pending),1)],2),u(`button`,{type:`button`,class:s([`talent-stat-card`,{"is-active":I.value===`month_followed`}]),onClick:d[1]||=e=>Dt(`month_followed`)},[d[56]||=u(`div`,{class:`talent-stat-label`},`本月已跟进`,-1),u(`div`,Ce,h(k.value.month_followed),1)],2),u(`button`,{type:`button`,class:s([`talent-stat-card`,{"is-active":I.value===`overdue`}]),onClick:d[2]||=e=>Dt(`overdue`)},[d[57]||=u(`div`,{class:`talent-stat-label`},`已逾期`,-1),u(`div`,we,h(k.value.overdue),1)],2),u(`button`,{type:`button`,class:s([`talent-stat-card`,{"is-active":I.value===`partner`}]),onClick:d[3]||=e=>Dt(`partner`)},[d[58]||=u(`div`,{class:`talent-stat-label`},`转化伙伴数量`,-1),u(`div`,Te,h(k.value.partners),1)],2)]),r(oe,{shadow:`never`,class:`admin-list-card teachers-list-card`},{default:l(()=>[u(`div`,Ee,[r(_,{modelValue:A.value,"onUpdate:modelValue":d[4]||=e=>A.value=e,class:`filter-search teachers-filter-search`,placeholder:`搜索姓名、高校、研究方向…`,clearable:``,onKeyup:te(Et,[`enter`])},null,8,[`modelValue`]),r(y,{modelValue:j.value,"onUpdate:modelValue":d[5]||=e=>j.value=e,class:`filter-source`,placeholder:`来源`,clearable:``},{default:l(()=>[(i(!0),e(f,null,p(it.value,e=>(i(),g(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(y,{modelValue:M.value,"onUpdate:modelValue":d[6]||=e=>M.value=e,class:`filter-stars`,placeholder:`星级`,clearable:``},{default:l(()=>[(i(!0),e(f,null,p(L.value,e=>(i(),g(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(y,{modelValue:N.value,"onUpdate:modelValue":d[7]||=e=>N.value=e,class:`filter-status`,placeholder:`状态`,clearable:``},{default:l(()=>[(i(!0),e(f,null,p(at.value,e=>(i(),g(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(y,{modelValue:P.value,"onUpdate:modelValue":d[8]||=e=>P.value=e,class:`filter-school`,placeholder:`学校`,clearable:``,filterable:``},{default:l(()=>[(i(!0),e(f,null,p(R.value,e=>(i(),g(v,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(y,{modelValue:F.value,"onUpdate:modelValue":d[9]||=e=>F.value=e,class:`filter-direction`,placeholder:`研究方向`,clearable:``,filterable:``},{default:l(()=>[(i(!0),e(f,null,p(z.value,e=>(i(),g(v,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(m,{type:`primary`,onClick:Et},{default:l(()=>[...d[59]||=[o(`搜索`,-1)]]),_:1}),r(m,{onClick:Tt},{default:l(()=>[...d[60]||=[o(`重置`,-1)]]),_:1})]),re((i(),g(ie,{data:nt.value,"row-key":`id`,onSelectionChange:d[10]||=e=>B.value=e},{default:l(()=>[r(b,{type:`selection`,width:`44`}),r(b,{prop:`name`,label:`姓名`,width:`108`},{default:l(({row:e})=>[u(`a`,{class:`name-link`,href:`#`,onClick:ne(t=>Ot(e),[`prevent`])},h(e.name),9,De),e.is_overdue?(i(),g(x,{key:0,type:`danger`,size:`small`,class:`tag-overdue`},{default:l(()=>[...d[61]||=[o(`逾期`,-1)]]),_:1})):a(``,!0)]),_:1}),r(b,{prop:`university_name`,label:`高校`,"min-width":`130`}),r(b,{prop:`title`,label:`职称`,width:`96`}),r(b,{label:`研究方向`,"min-width":`160`},{default:l(({row:t})=>[t.research_directions?.length?(i(!0),e(f,{key:0},p(t.research_directions,e=>(i(),g(x,{key:e.id,size:`small`,type:`info`,style:{margin:`2px 4px 2px 0`}},{default:l(()=>[o(h(e.name),1)]),_:2},1024))),128)):(i(),e(`span`,Oe,`—`))]),_:1}),r(b,{label:`来源`,width:`108`,align:`center`},{default:l(({row:e})=>[r(x,{type:t(ge)(e.source_item?.value),size:`small`,effect:`dark`,class:s([`source-tag`,{"source-tag-manual":e.source_item?.value===`manual`}])},{default:l(()=>[o(h(e.source_item?.label||`—`),1)]),_:2},1032,[`type`,`class`])]),_:1}),r(b,{label:`星级`,width:`108`},{default:l(({row:e})=>[u(`span`,{class:`star-text`,title:e.star_level_item?.label||``},h(t(pe)(e.star_level_item?.value,e.star_level_item?.label)),9,ke)]),_:1}),r(b,{label:`状态`,width:`100`},{default:l(({row:e})=>[r(x,{type:t(he)(e.status_item?.value),size:`small`,effect:`dark`},{default:l(()=>[o(h(e.status_item?.label||`—`),1)]),_:2},1032,[`type`])]),_:1}),r(b,{label:`跟进记录`,width:`96`,align:`center`},{default:l(({row:e})=>[r(m,{size:`small`,class:`btn-action-secondary teachers-table-btn`,onClick:t=>Rt(e)},{default:l(()=>[o(h(e.follow_records_count||0)+`条记录 `,1)]),_:2},1032,[`onClick`])]),_:1}),r(b,{label:`操作`,width:`176`,fixed:`right`},{default:l(({row:e})=>[u(`div`,Ae,[r(m,{size:`small`,class:`btn-action-info teachers-table-btn`,onClick:t=>It(e)},{default:l(()=>[...d[62]||=[o(` 跟进 `,-1)]]),_:1},8,[`onClick`]),r(m,{size:`small`,class:`btn-action-primary teachers-table-btn`,onClick:t=>zt(e)},{default:l(()=>[...d[63]||=[o(` 论文 `,-1)]]),_:1},8,[`onClick`]),e.is_partner||e.status_item?.value===`partner`?(i(),g(m,{key:0,type:`primary`,size:`small`,class:`teachers-primary-btn teachers-table-btn`,onClick:t=>Bt(e)},{default:l(()=>[...d[64]||=[o(` 需求 `,-1)]]),_:1},8,[`onClick`])):a(``,!0),r(m,{size:`small`,class:`btn-action-success teachers-table-btn`,onClick:t=>Ot(e)},{default:l(()=>[...d[65]||=[o(` 编辑 `,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[de,$e.value]]),u(`div`,je,[r(ae,{"current-page":O.value,"onUpdate:currentPage":d[11]||=e=>O.value=e,"page-size":rt.value.per_page,total:rt.value.total,layout:`total, prev, pager, next`,onCurrentChange:$},null,8,[`current-page`,`page-size`,`total`])])]),_:1}),r(E,{modelValue:V.value,"onUpdate:modelValue":d[22]||=e=>V.value=e,title:`手动录入老师`,width:`960px`,"destroy-on-close":``},{footer:l(()=>[r(m,{onClick:d[21]||=e=>V.value=!1},{default:l(()=>[...d[67]||=[o(`取消`,-1)]]),_:1}),r(m,{type:`primary`,onClick:Nt},{default:l(()=>[...d[68]||=[o(`保存`,-1)]]),_:1})]),default:l(()=>[r(T,{"label-position":`top`,class:`form-small`},{default:l(()=>[r(w,{gutter:12},{default:l(()=>[r(C,{xs:24,md:4},{default:l(()=>[r(S,{label:`姓名`,required:``},{default:l(()=>[r(_,{modelValue:H.value.name,"onUpdate:modelValue":d[12]||=e=>H.value.name=e},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{xs:24,md:8},{default:l(()=>[r(S,{label:`高校`,required:``},{default:l(()=>[u(`div`,Me,[r(y,{modelValue:H.value.university_id,"onUpdate:modelValue":d[13]||=e=>H.value.university_id=e,filterable:``,placeholder:`选择高校`,style:{flex:`1`}},{default:l(()=>[(i(!0),e(f,null,p(R.value,e=>(i(),g(v,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),Ze.value?a(``,!0):(i(),g(m,{key:0,type:`primary`,size:`small`,class:`btn-create teachers-primary-btn`,onClick:At},{default:l(()=>[...d[66]||=[o(` 新建高校 `,-1)]]),_:1}))])]),_:1})]),_:1}),r(C,{xs:24,md:4},{default:l(()=>[r(S,{label:`城市`,required:``},{default:l(()=>[r(_,{modelValue:H.value.city,"onUpdate:modelValue":d[14]||=e=>H.value.city=e},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{xs:24,md:8},{default:l(()=>[r(S,{label:`职称`,required:``},{default:l(()=>[r(_,{modelValue:H.value.title,"onUpdate:modelValue":d[15]||=e=>H.value.title=e},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{xs:24,md:8},{default:l(()=>[r(S,{label:`研究方向`,required:``},{default:l(()=>[r(y,{modelValue:H.value.research_direction_ids,"onUpdate:modelValue":d[16]||=e=>H.value.research_direction_ids=e,multiple:``,filterable:``,"collapse-tags":``,"collapse-tags-tooltip":``,placeholder:`选择研究方向(可多选)`,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(z.value,e=>(i(),g(v,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(C,{xs:24,md:6},{default:l(()=>[r(S,{label:`电话`},{default:l(()=>[r(_,{modelValue:H.value.phone,"onUpdate:modelValue":d[17]||=e=>H.value.phone=e},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{xs:24,md:6},{default:l(()=>[r(S,{label:`邮箱`},{default:l(()=>[r(_,{modelValue:H.value.email,"onUpdate:modelValue":d[18]||=e=>H.value.email=e,type:`email`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{xs:24,md:4},{default:l(()=>[r(S,{label:`星级`},{default:l(()=>[r(y,{modelValue:H.value.star_level_dict_item_id,"onUpdate:modelValue":d[19]||=e=>H.value.star_level_dict_item_id=e,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(L.value,e=>(i(),g(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(C,{xs:24,md:6},{default:l(()=>[r(S,{label:`状态`,required:``},{default:l(()=>[r(y,{modelValue:H.value.status_dict_item_id,"onUpdate:modelValue":d[20]||=e=>H.value.status_dict_item_id=e,placeholder:`请选择状态`,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(at.value,e=>(i(),g(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),r(E,{modelValue:U.value,"onUpdate:modelValue":d[29]||=e=>U.value=e,title:`新建高校`,width:`480px`,"append-to-body":``,"destroy-on-close":``},{footer:l(()=>[r(m,{onClick:d[28]||=e=>U.value=!1},{default:l(()=>[...d[69]||=[o(`取消`,-1)]]),_:1}),r(m,{type:`primary`,loading:ft.value,onClick:jt},{default:l(()=>[...d[70]||=[o(`保存`,-1)]]),_:1},8,[`loading`])]),default:l(()=>[r(T,{"label-position":`top`,class:`form-small`},{default:l(()=>[r(S,{label:`高校名称`,required:``},{default:l(()=>[r(_,{modelValue:W.value.name,"onUpdate:modelValue":d[23]||=e=>W.value.name=e,placeholder:`如:复旦大学`},null,8,[`modelValue`])]),_:1}),r(w,{gutter:12},{default:l(()=>[r(C,{span:12},{default:l(()=>[r(S,{label:`经度`,required:``},{default:l(()=>[r(_,{modelValue:W.value.longitude,"onUpdate:modelValue":d[24]||=e=>W.value.longitude=e,placeholder:`如:121.5031`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:12},{default:l(()=>[r(S,{label:`纬度`,required:``},{default:l(()=>[r(_,{modelValue:W.value.latitude,"onUpdate:modelValue":d[25]||=e=>W.value.latitude=e,placeholder:`如:31.2970`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1}),r(w,{gutter:12},{default:l(()=>[r(C,{span:12},{default:l(()=>[r(S,{label:`省份`},{default:l(()=>[r(_,{modelValue:W.value.province,"onUpdate:modelValue":d[26]||=e=>W.value.province=e,placeholder:`如:上海市`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:12},{default:l(()=>[r(S,{label:`城市`},{default:l(()=>[r(_,{modelValue:W.value.city,"onUpdate:modelValue":d[27]||=e=>W.value.city=e,placeholder:`如:上海`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),r(E,{modelValue:G.value,"onUpdate:modelValue":d[32]||=e=>G.value=e,title:`批量修改星级`,width:`480px`},{footer:l(()=>[r(m,{onClick:d[31]||=e=>G.value=!1},{default:l(()=>[...d[73]||=[o(`取消`,-1)]]),_:1}),r(m,{type:`primary`,disabled:!B.value.length,onClick:Ft},{default:l(()=>[...d[74]||=[o(` 保存并重算跟进日 `,-1)]]),_:1},8,[`disabled`])]),default:l(()=>[B.value.length?(i(),e(f,{key:1},[u(`div`,Ne,[d[71]||=o(` 已选择 `,-1),u(`span`,Pe,h(B.value.length),1),d[72]||=o(` 位老师 `,-1),dt.value?(i(),e(`span`,Fe,h(dt.value),1)):a(``,!0)]),r(T,{"label-position":`top`,style:{"margin-top":`12px`}},{default:l(()=>[r(S,{label:`目标星级`,required:``},{default:l(()=>[r(y,{modelValue:K.value,"onUpdate:modelValue":d[30]||=e=>K.value=e,placeholder:`请选择目标星级`,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(L.value,e=>(i(),g(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1}),u(`p`,Ie,h(pt.value),1)]),_:1})],64)):(i(),g(se,{key:0,type:`warning`,closable:!1,title:`请先在列表中勾选需要改星的老师。`,"show-icon":``}))]),_:1},8,[`modelValue`]),r(E,{modelValue:q.value,"onUpdate:modelValue":d[42]||=e=>q.value=e,title:`新增跟进`,width:`720px`,"destroy-on-close":``},{footer:l(()=>[r(m,{onClick:d[41]||=e=>q.value=!1},{default:l(()=>[...d[75]||=[o(`取消`,-1)]]),_:1}),r(m,{type:`primary`,onClick:Lt},{default:l(()=>[...d[76]||=[o(`保存`,-1)]]),_:1})]),default:l(()=>[J.value?(i(),e(`div`,Le,h(J.value.name)+` · `+h(J.value.university_name)+` · `+h(J.value.title),1)):a(``,!0),r(T,{"label-position":`top`,class:`form-small`,style:{"margin-top":`12px`}},{default:l(()=>[r(w,{gutter:12},{default:l(()=>[r(C,{span:10},{default:l(()=>[r(S,{label:`跟进主题`,required:``},{default:l(()=>[r(_,{modelValue:Y.value.subject,"onUpdate:modelValue":d[33]||=e=>Y.value.subject=e,placeholder:`请输入跟进主题`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:6},{default:l(()=>[r(S,{label:`跟进日期`,required:``},{default:l(()=>[r(D,{modelValue:Y.value.followed_at,"onUpdate:modelValue":d[34]||=e=>Y.value.followed_at=e,type:`date`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:4},{default:l(()=>[r(S,{label:`跟进方式`,required:``},{default:l(()=>[r(y,{modelValue:Y.value.follow_method_dict_item_id,"onUpdate:modelValue":d[35]||=e=>Y.value.follow_method_dict_item_id=e,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(ot.value,e=>(i(),g(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:4},{default:l(()=>[r(S,{label:`跟进人员`,required:``},{default:l(()=>[r(y,{modelValue:Y.value.admin_user_id,"onUpdate:modelValue":d[36]||=e=>Y.value.admin_user_id=e,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(ct.value,e=>(i(),g(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:24},{default:l(()=>[r(S,{label:`跟进记录`},{default:l(()=>[r(_,{modelValue:Y.value.content,"onUpdate:modelValue":d[37]||=e=>Y.value.content=e,type:`textarea`,rows:4,placeholder:`请输入跟进内容`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:12},{default:l(()=>[r(S,{label:`下次跟进主题`,required:``},{default:l(()=>[r(_,{modelValue:Y.value.next_follow_subject,"onUpdate:modelValue":d[38]||=e=>Y.value.next_follow_subject=e,placeholder:`请输入下次跟进主题`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:6},{default:l(()=>[r(S,{label:`下次跟进日期`,required:``},{default:l(()=>[r(D,{modelValue:Y.value.next_follow_date,"onUpdate:modelValue":d[39]||=e=>Y.value.next_follow_date=e,type:`date`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`]),mt.value?(i(),e(`p`,Re,h(mt.value),1)):a(``,!0)]),_:1})]),_:1}),r(C,{span:6},{default:l(()=>[r(S,{label:`紧急程度`,required:``},{default:l(()=>[r(y,{modelValue:Y.value.urgency_dict_item_id,"onUpdate:modelValue":d[40]||=e=>Y.value.urgency_dict_item_id=e,placeholder:`请选择紧急程度`,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(st.value,e=>(i(),g(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),r(E,{modelValue:ht.value,"onUpdate:modelValue":d[44]||=e=>ht.value=e,title:`跟进记录`,width:`960px`},{footer:l(()=>[r(m,{onClick:d[43]||=e=>ht.value=!1},{default:l(()=>[...d[85]||=[o(`关闭`,-1)]]),_:1})]),default:l(()=>[X.value?(i(),e(`div`,ze,[u(`span`,null,h(X.value.name),1),d[77]||=u(`span`,{class:`dot`},`·`,-1),u(`span`,null,h(X.value.university_name),1),d[78]||=u(`span`,{class:`dot`},`·`,-1),u(`span`,null,h(X.value.title),1),d[79]||=u(`span`,{class:`dot`},`·`,-1),u(`span`,Be,h(t(pe)(X.value.star_level_item?.value,X.value.star_level_item?.label)),1)])):a(``,!0),u(`div`,Ve,[(i(!0),e(f,null,p(gt.value,n=>(i(),e(`div`,{key:n.id,class:`follow-history-card`},[u(`div`,He,[u(`div`,null,[u(`span`,Ue,h(n.subject),1),u(`span`,We,h(n.followed_at),1)]),n.urgency_item?(i(),g(x,{key:0,type:t(fe)(n.urgency_item.value),size:`small`},{default:l(()=>[o(h(n.urgency_item.label),1)]),_:2},1032,[`type`])):a(``,!0)]),u(`div`,Ge,[u(`div`,Ke,[d[80]||=u(`span`,null,`跟进主题:`,-1),u(`div`,null,h(n.subject),1)]),u(`div`,qe,[d[81]||=u(`span`,null,`跟进方式:`,-1),u(`div`,null,h(n.follow_method_item?.label||`—`),1)]),u(`div`,Je,[d[82]||=u(`span`,null,`跟进记录:`,-1),u(`div`,null,h(n.content||`—`),1)]),u(`div`,Ye,[d[84]||=u(`span`,null,`下次跟进:`,-1),u(`div`,null,[o(`主题:`+h(n.next_follow_subject),1),d[83]||=u(`br`,null,null,-1),o(`日期:`+h(n.next_follow_date),1)])])]),u(`div`,Xe,`跟进人:`+h(n.operator_name||`—`),1)]))),128)),gt.value.length?a(``,!0):(i(),g(ue,{key:0,description:`暂无跟进记录`}))])]),_:1},8,[`modelValue`]),r(ce,{modelValue:_t.value,"onUpdate:modelValue":d[45]||=e=>_t.value=e,"teacher-id":vt.value?.id??null,"default-authors":vt.value?.name,"default-school-name":vt.value?.university_name||``,onSaved:$},null,8,[`modelValue`,`teacher-id`,`default-authors`,`default-school-name`]),r(E,{modelValue:Z.value,"onUpdate:modelValue":d[50]||=e=>Z.value=e,title:`发布需求`,width:`640px`,"destroy-on-close":``},{footer:l(()=>[r(m,{onClick:d[49]||=e=>Z.value=!1},{default:l(()=>[...d[86]||=[o(`取消`,-1)]]),_:1}),r(m,{type:`primary`,onClick:Vt},{default:l(()=>[...d[87]||=[o(`发布`,-1)]]),_:1})]),default:l(()=>[r(T,{"label-position":`top`,class:`form-small`},{default:l(()=>[r(w,{gutter:12},{default:l(()=>[r(C,{span:12},{default:l(()=>[r(S,{label:`关联老师`},{default:l(()=>[r(_,{"model-value":yt.value?.name||``,readonly:``},null,8,[`model-value`])]),_:1})]),_:1}),r(C,{span:12},{default:l(()=>[r(S,{label:`需求类型`,required:``},{default:l(()=>[r(y,{modelValue:Q.value.type_dict_item_id,"onUpdate:modelValue":d[46]||=e=>Q.value.type_dict_item_id=e,placeholder:`请选择需求类型`,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(lt.value,e=>(i(),g(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:24},{default:l(()=>[r(S,{label:`标题`,required:``},{default:l(()=>[r(_,{modelValue:Q.value.title,"onUpdate:modelValue":d[47]||=e=>Q.value.title=e,placeholder:`请输入需求标题`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:24},{default:l(()=>[r(S,{label:`详细描述`,required:``},{default:l(()=>[r(_,{modelValue:Q.value.content,"onUpdate:modelValue":d[48]||=e=>Q.value.content=e,type:`textarea`,rows:5,placeholder:`请描述需求背景、目标、期望资源或合作方式`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),r(le,{modelValue:et.value,"onUpdate:modelValue":d[51]||=e=>et.value=e,"teacher-id":tt.value,onSaved:$},null,8,[`modelValue`,`teacher-id`])])}}}),[[`__scopeId`,`data-v-23e21a6d`]]);export{Ze as default}; \ No newline at end of file +import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as ee,Xt as s,Y as c,at as l,b as u,d as te,f as ne,ht as d,m as f,ot as re,q as p,rt as m,tn as h,x as g,y as _}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{l as v,s as y,t as b}from"./index-DTIMLswB.js";import{t as x}from"./usePageLoad-DFTLo_Lv.js";import{a as ie,c as ae,d as oe,f as S,l as C,n as w,p as T,r as E,t as se}from"./teachers-Cve-7Sy4.js";import{a as D}from"./dict-X8lDWB9t.js";import{r as ce,t as le}from"./TeacherDetailDialog-SGxVTFii.js";import{t as ue}from"./demands-CssxNgdQ.js";import{a as de,i as fe,n as pe,o as me,r as he,t as ge}from"./teacherStar-By0_CBs7.js";import{r as _e}from"./users-BBYvhj2V.js";var ve={class:`list-page teachers-page`},ye={class:`page-header`},be={class:`page-header-actions`},xe={class:`talent-stat-grid`},Se={class:`talent-stat-value`},Ce={class:`talent-stat-value is-dark`},we={class:`talent-stat-value is-danger`},Te={class:`talent-stat-value is-success`},Ee={class:`list-filter-bar`},De=[`onClick`],Oe={key:1,class:`text-muted`},ke=[`title`],Ae={class:`table-row-actions teachers-table-actions`},je={class:`list-pager`},Me={class:`uni-row`},Ne={class:`follow-teacher-summary`},Pe={class:`text-brand`},Fe={key:0,class:`names-muted`},Ie={class:`batch-rule`},Le={key:0,class:`follow-teacher-summary`},Re={key:0,class:`follow-date-rule`},ze={key:0,class:`follow-teacher-summary`},Be={class:`star-text`},Ve={class:`follow-history-list`},He={class:`follow-history-head`},Ue={class:`follow-history-title`},We={class:`follow-history-date`},Ge={class:`follow-history-body`},Ke={class:`follow-history-row`},qe={class:`follow-history-row`},Je={class:`follow-history-row`},Ye={class:`follow-history-row`},Xe={class:`follow-history-footer`},Ze=y(n({__name:`index`,setup(n){let y=b(),Ze=_(()=>y.isGridMember);function Qe(){let e=y.user?.id;return e!=null&&ct.value.some(t=>t.id===e)?e:ct.value[0]?.id}let $e=d(!1),et=d(!1),tt=d(null),nt=d([]),rt=d({current_page:1,per_page:20,total:0}),O=d(1),k=d({month_pending:0,month_followed:0,overdue:0,partners:0}),A=d(``),j=d(``),M=d(``),N=d(``),P=d(``),F=d(``),I=d(``),it=d([]),L=d([]),at=d([]),ot=d([]),st=d([]),R=d([]),z=d([]),ct=d([]),lt=d([]),B=d([]),ut=_(()=>B.value.map(e=>e.id)),dt=_(()=>B.value.map(e=>e.name).join(`、`)),V=d(!1),H=d({name:``,university_id:void 0,city:``,title:``,research_direction_ids:[],phone:``,email:``,source_dict_item_id:void 0,star_level_dict_item_id:void 0,status_dict_item_id:void 0}),U=d(!1),ft=d(!1),W=d({name:``,city:``,province:``,longitude:``,latitude:``}),G=d(!1),K=d(),pt=_(()=>de(L.value.find(e=>e.id===K.value)?.value)),q=d(!1),J=d(null),mt=_(()=>de(J.value?.star_level_item?.value)),Y=d({subject:``,content:``,followed_at:new Date().toISOString().slice(0,10),follow_method_dict_item_id:void 0,urgency_dict_item_id:void 0,admin_user_id:void 0,next_follow_subject:``,next_follow_date:``}),ht=d(!1),X=d(null),gt=d([]),_t=d(!1),vt=d(null),Z=d(!1),yt=d(null),Q=d({type_dict_item_id:void 0,title:``,content:``}),bt=_(()=>it.value.find(e=>e.value===`manual`)?.id),xt=_(()=>L.value.find(e=>e.value===`pending`)?.id);function St(e){if(!e)return;let t=R.value.find(t=>t.id===e);t?.city&&!H.value.city&&(H.value.city=t.city)}m(()=>H.value.university_id,e=>St(e));async function Ct(){let[e,t,n,r,i,a,o,ee,s]=await Promise.all([D(`teacher_source`),D(`teacher_level`),D(`teacher_status`),D(`follow_method`),D(`follow_urgency`),D(`demand_type`),T({page:1,page_size:200}),_e({page:1,page_size:200,status:1}),ae()]);it.value=e.items,L.value=t.items,at.value=n.items,ot.value=r.items,st.value=i.items,lt.value=a.items;let c=y.user?.grid_scope?.university_ids;R.value=c?.length?o.items.filter(e=>c.includes(e.id)):o.items;let l=y.user?.grid_scope?.research_direction_ids;z.value=l?.length?s.research_directions.filter(e=>l.includes(e.id)):s.research_directions,ct.value=ee.items.map(e=>({id:e.id,label:e.real_name||e.username}))}async function wt(){k.value=await oe()}async function $(){$e.value=!0;try{let e={page:O.value,page_size:rt.value.per_page};A.value&&(e.keyword=A.value),j.value!==``&&(e.source_dict_item_id=j.value),M.value!==``&&(e.star_level_dict_item_id=M.value),N.value!==``&&(e.status_dict_item_id=N.value),P.value!==``&&(e.university_id=P.value),F.value!==``&&(e.research_direction_id=F.value),I.value&&(e.stat_bucket=I.value);let t=await S(e);nt.value=t.items,rt.value=t.meta,B.value=[],z.value=(await ae()).research_directions}finally{$e.value=!1}}function Tt(){A.value=``,j.value=``,M.value=``,N.value=``,P.value=``,F.value=``,I.value=``,O.value=1,$()}function Et(){O.value=1,$()}function Dt(e){I.value=I.value===e?``:e,O.value=1,$()}function Ot(e){tt.value=e.id,et.value=!0}async function kt(){z.value=(await ae()).research_directions}function At(){W.value={name:``,city:H.value.city||``,province:``,longitude:``,latitude:``},U.value=!0}async function jt(){let e=W.value;if(!e.name.trim()){v.warning(`请填写高校名称`);return}if(!e.longitude.trim()||!e.latitude.trim()){v.warning(`请填写经度与纬度`);return}let t=Number(e.longitude),n=Number(e.latitude);if(Number.isNaN(t)||Number.isNaN(n)){v.warning(`经纬度须为有效数字`);return}ft.value=!0;try{let r=await ie({name:e.name.trim(),city:e.city.trim()||null,province:e.province.trim()||null,longitude:t,latitude:n});R.value.some(e=>e.id===r.id)||R.value.push(r),H.value.university_id=r.id,r.city&&(H.value.city=r.city),U.value=!1,v.success(`高校已创建`)}finally{ft.value=!1}}async function Mt(){H.value={name:``,university_id:void 0,city:``,title:``,research_direction_ids:[],phone:``,email:``,source_dict_item_id:bt.value,star_level_dict_item_id:xt.value,status_dict_item_id:at.value.find(e=>e.value===`active`)?.id},await kt(),V.value=!0}async function Nt(){let e=H.value;if(!e.name.trim()){v.warning(`请填写姓名`);return}if(!e.research_direction_ids.length){v.warning(`请至少选择一个研究方向`);return}if(!e.city.trim()){v.warning(`请填写城市`);return}if(!e.title.trim()){v.warning(`请填写职称`);return}if(!e.status_dict_item_id){v.warning(`请选择状态`);return}if(!e.university_id){v.warning(`请选择高校,或点击「新建高校」`);return}await w({name:e.name.trim(),university_id:e.university_id,city:e.city.trim(),title:e.title.trim(),research_direction_ids:e.research_direction_ids,phone:e.phone||null,email:e.email||null,source_dict_item_id:e.source_dict_item_id??bt.value,star_level_dict_item_id:e.star_level_dict_item_id??xt.value,status_dict_item_id:e.status_dict_item_id,recalc_next_follow_date:!0}),v.success(`已录入`),V.value=!1,await Promise.all([$(),wt()])}function Pt(){if(!B.value.length){v.warning(`请先在列表中勾选需要改星的老师`);return}K.value=void 0,G.value=!0}async function Ft(){if(!K.value){v.warning(`请选择目标星级`);return}await se({ids:ut.value,star_level_dict_item_id:K.value,recalc_next_follow_date:!0}),v.success(`已批量更新`),G.value=!1,await Promise.all([$(),wt()])}function It(e){J.value=e,Y.value={subject:``,content:``,followed_at:new Date().toISOString().slice(0,10),follow_method_dict_item_id:ot.value[0]?.id,urgency_dict_item_id:st.value.find(e=>e.value===`normal`)?.id,admin_user_id:Qe(),next_follow_subject:``,next_follow_date:me(e.star_level_item?.value)||``},q.value=!0}async function Lt(){let e=Y.value;if(J.value){if(!e.subject.trim()||!e.next_follow_subject.trim()||!e.next_follow_date){v.warning(`请填写必填项`);return}if(!e.follow_method_dict_item_id||!e.urgency_dict_item_id||!e.admin_user_id){v.warning(`请填写跟进方式、紧急程度与跟进人员`);return}await E(J.value.id,{...e}),v.success(`已保存跟进`),q.value=!1,await Promise.all([$(),wt()])}}async function Rt(e){X.value=e,gt.value=await C(e.id),ht.value=!0}function zt(e){vt.value=e,_t.value=!0}function Bt(e){yt.value=e,Q.value={type_dict_item_id:void 0,title:``,content:``},Z.value=!0}async function Vt(){if(yt.value){if(!Q.value.type_dict_item_id||!Q.value.title.trim()||!Q.value.content.trim()){v.warning(`请填写需求类型、标题与详细描述`);return}await ue({teacher_id:yt.value.id,type_dict_item_id:Q.value.type_dict_item_id,title:Q.value.title.trim(),content:Q.value.content.trim()}),v.success(`已发布需求`),Z.value=!1}}return x(async()=>{await Ct(),await Promise.all([wt(),$()])}),(n,d)=>{let m=c(`el-button`),_=c(`el-input`),v=c(`el-option`),y=c(`el-select`),b=c(`el-table-column`),x=c(`el-tag`),ie=c(`el-table`),ae=c(`el-pagination`),oe=c(`el-card`),S=c(`el-form-item`),C=c(`el-col`),w=c(`el-row`),T=c(`el-form`),E=c(`el-dialog`),se=c(`el-alert`),D=c(`el-date-picker`),ue=c(`el-empty`),de=ee(`loading`);return i(),e(`div`,ve,[u(`div`,ye,[d[54]||=u(`h1`,{class:`page-title`},`老师库`,-1),u(`div`,be,[r(m,{class:`btn-action-secondary`,size:`small`,onClick:Pt},{default:l(()=>[...d[52]||=[o(`批量改星`,-1)]]),_:1}),Ze.value?a(``,!0):(i(),g(m,{key:0,type:`primary`,size:`small`,class:`teachers-primary-btn`,onClick:Mt},{default:l(()=>[...d[53]||=[o(` 手动录入 `,-1)]]),_:1}))])]),u(`div`,xe,[u(`button`,{type:`button`,class:s([`talent-stat-card`,{"is-active":I.value===`month_pending`}]),onClick:d[0]||=e=>Dt(`month_pending`)},[d[55]||=u(`div`,{class:`talent-stat-label`},`本月待跟进数量`,-1),u(`div`,Se,h(k.value.month_pending),1)],2),u(`button`,{type:`button`,class:s([`talent-stat-card`,{"is-active":I.value===`month_followed`}]),onClick:d[1]||=e=>Dt(`month_followed`)},[d[56]||=u(`div`,{class:`talent-stat-label`},`本月已跟进`,-1),u(`div`,Ce,h(k.value.month_followed),1)],2),u(`button`,{type:`button`,class:s([`talent-stat-card`,{"is-active":I.value===`overdue`}]),onClick:d[2]||=e=>Dt(`overdue`)},[d[57]||=u(`div`,{class:`talent-stat-label`},`已逾期`,-1),u(`div`,we,h(k.value.overdue),1)],2),u(`button`,{type:`button`,class:s([`talent-stat-card`,{"is-active":I.value===`partner`}]),onClick:d[3]||=e=>Dt(`partner`)},[d[58]||=u(`div`,{class:`talent-stat-label`},`转化伙伴数量`,-1),u(`div`,Te,h(k.value.partners),1)],2)]),r(oe,{shadow:`never`,class:`admin-list-card teachers-list-card`},{default:l(()=>[u(`div`,Ee,[r(_,{modelValue:A.value,"onUpdate:modelValue":d[4]||=e=>A.value=e,class:`filter-search teachers-filter-search`,placeholder:`搜索姓名、高校、研究方向…`,clearable:``,onKeyup:te(Et,[`enter`])},null,8,[`modelValue`]),r(y,{modelValue:j.value,"onUpdate:modelValue":d[5]||=e=>j.value=e,class:`filter-source`,placeholder:`来源`,clearable:``},{default:l(()=>[(i(!0),e(f,null,p(it.value,e=>(i(),g(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(y,{modelValue:M.value,"onUpdate:modelValue":d[6]||=e=>M.value=e,class:`filter-stars`,placeholder:`星级`,clearable:``},{default:l(()=>[(i(!0),e(f,null,p(L.value,e=>(i(),g(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(y,{modelValue:N.value,"onUpdate:modelValue":d[7]||=e=>N.value=e,class:`filter-status`,placeholder:`状态`,clearable:``},{default:l(()=>[(i(!0),e(f,null,p(at.value,e=>(i(),g(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(y,{modelValue:P.value,"onUpdate:modelValue":d[8]||=e=>P.value=e,class:`filter-school`,placeholder:`学校`,clearable:``,filterable:``},{default:l(()=>[(i(!0),e(f,null,p(R.value,e=>(i(),g(v,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(y,{modelValue:F.value,"onUpdate:modelValue":d[9]||=e=>F.value=e,class:`filter-direction`,placeholder:`研究方向`,clearable:``,filterable:``},{default:l(()=>[(i(!0),e(f,null,p(z.value,e=>(i(),g(v,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(m,{type:`primary`,onClick:Et},{default:l(()=>[...d[59]||=[o(`搜索`,-1)]]),_:1}),r(m,{onClick:Tt},{default:l(()=>[...d[60]||=[o(`重置`,-1)]]),_:1})]),re((i(),g(ie,{data:nt.value,"row-key":`id`,onSelectionChange:d[10]||=e=>B.value=e},{default:l(()=>[r(b,{type:`selection`,width:`44`}),r(b,{prop:`name`,label:`姓名`,width:`108`},{default:l(({row:e})=>[u(`a`,{class:`name-link`,href:`#`,onClick:ne(t=>Ot(e),[`prevent`])},h(e.name),9,De),e.is_overdue?(i(),g(x,{key:0,type:`danger`,size:`small`,class:`tag-overdue`},{default:l(()=>[...d[61]||=[o(`逾期`,-1)]]),_:1})):a(``,!0)]),_:1}),r(b,{prop:`university_name`,label:`高校`,"min-width":`130`}),r(b,{prop:`title`,label:`职称`,width:`96`}),r(b,{label:`研究方向`,"min-width":`160`},{default:l(({row:t})=>[t.research_directions?.length?(i(!0),e(f,{key:0},p(t.research_directions,e=>(i(),g(x,{key:e.id,size:`small`,type:`info`,style:{margin:`2px 4px 2px 0`}},{default:l(()=>[o(h(e.name),1)]),_:2},1024))),128)):(i(),e(`span`,Oe,`—`))]),_:1}),r(b,{label:`来源`,width:`108`,align:`center`},{default:l(({row:e})=>[r(x,{type:t(ge)(e.source_item?.value),size:`small`,effect:`dark`,class:s([`source-tag`,{"source-tag-manual":e.source_item?.value===`manual`}])},{default:l(()=>[o(h(e.source_item?.label||`—`),1)]),_:2},1032,[`type`,`class`])]),_:1}),r(b,{label:`星级`,width:`108`},{default:l(({row:e})=>[u(`span`,{class:`star-text`,title:e.star_level_item?.label||``},h(t(pe)(e.star_level_item?.value,e.star_level_item?.label)),9,ke)]),_:1}),r(b,{label:`状态`,width:`100`},{default:l(({row:e})=>[r(x,{type:t(he)(e.status_item?.value),size:`small`,effect:`dark`},{default:l(()=>[o(h(e.status_item?.label||`—`),1)]),_:2},1032,[`type`])]),_:1}),r(b,{label:`跟进记录`,width:`96`,align:`center`},{default:l(({row:e})=>[r(m,{size:`small`,class:`btn-action-secondary teachers-table-btn`,onClick:t=>Rt(e)},{default:l(()=>[o(h(e.follow_records_count||0)+`条记录 `,1)]),_:2},1032,[`onClick`])]),_:1}),r(b,{label:`操作`,width:`176`,fixed:`right`},{default:l(({row:e})=>[u(`div`,Ae,[r(m,{size:`small`,class:`btn-action-info teachers-table-btn`,onClick:t=>It(e)},{default:l(()=>[...d[62]||=[o(` 跟进 `,-1)]]),_:1},8,[`onClick`]),r(m,{size:`small`,class:`btn-action-primary teachers-table-btn`,onClick:t=>zt(e)},{default:l(()=>[...d[63]||=[o(` 论文 `,-1)]]),_:1},8,[`onClick`]),e.is_partner||e.status_item?.value===`partner`?(i(),g(m,{key:0,type:`primary`,size:`small`,class:`teachers-primary-btn teachers-table-btn`,onClick:t=>Bt(e)},{default:l(()=>[...d[64]||=[o(` 需求 `,-1)]]),_:1},8,[`onClick`])):a(``,!0),r(m,{size:`small`,class:`btn-action-success teachers-table-btn`,onClick:t=>Ot(e)},{default:l(()=>[...d[65]||=[o(` 编辑 `,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[de,$e.value]]),u(`div`,je,[r(ae,{"current-page":O.value,"onUpdate:currentPage":d[11]||=e=>O.value=e,"page-size":rt.value.per_page,total:rt.value.total,layout:`total, prev, pager, next`,onCurrentChange:$},null,8,[`current-page`,`page-size`,`total`])])]),_:1}),r(E,{modelValue:V.value,"onUpdate:modelValue":d[22]||=e=>V.value=e,title:`手动录入老师`,width:`960px`,"destroy-on-close":``},{footer:l(()=>[r(m,{onClick:d[21]||=e=>V.value=!1},{default:l(()=>[...d[67]||=[o(`取消`,-1)]]),_:1}),r(m,{type:`primary`,onClick:Nt},{default:l(()=>[...d[68]||=[o(`保存`,-1)]]),_:1})]),default:l(()=>[r(T,{"label-position":`top`,class:`form-small`},{default:l(()=>[r(w,{gutter:12},{default:l(()=>[r(C,{xs:24,md:4},{default:l(()=>[r(S,{label:`姓名`,required:``},{default:l(()=>[r(_,{modelValue:H.value.name,"onUpdate:modelValue":d[12]||=e=>H.value.name=e},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{xs:24,md:8},{default:l(()=>[r(S,{label:`高校`,required:``},{default:l(()=>[u(`div`,Me,[r(y,{modelValue:H.value.university_id,"onUpdate:modelValue":d[13]||=e=>H.value.university_id=e,filterable:``,placeholder:`选择高校`,style:{flex:`1`}},{default:l(()=>[(i(!0),e(f,null,p(R.value,e=>(i(),g(v,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),Ze.value?a(``,!0):(i(),g(m,{key:0,type:`primary`,size:`small`,class:`btn-create teachers-primary-btn`,onClick:At},{default:l(()=>[...d[66]||=[o(` 新建高校 `,-1)]]),_:1}))])]),_:1})]),_:1}),r(C,{xs:24,md:4},{default:l(()=>[r(S,{label:`城市`,required:``},{default:l(()=>[r(_,{modelValue:H.value.city,"onUpdate:modelValue":d[14]||=e=>H.value.city=e},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{xs:24,md:8},{default:l(()=>[r(S,{label:`职称`,required:``},{default:l(()=>[r(_,{modelValue:H.value.title,"onUpdate:modelValue":d[15]||=e=>H.value.title=e},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{xs:24,md:8},{default:l(()=>[r(S,{label:`研究方向`,required:``},{default:l(()=>[r(y,{modelValue:H.value.research_direction_ids,"onUpdate:modelValue":d[16]||=e=>H.value.research_direction_ids=e,multiple:``,filterable:``,"collapse-tags":``,"collapse-tags-tooltip":``,placeholder:`选择研究方向(可多选)`,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(z.value,e=>(i(),g(v,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(C,{xs:24,md:6},{default:l(()=>[r(S,{label:`电话`},{default:l(()=>[r(_,{modelValue:H.value.phone,"onUpdate:modelValue":d[17]||=e=>H.value.phone=e},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{xs:24,md:6},{default:l(()=>[r(S,{label:`邮箱`},{default:l(()=>[r(_,{modelValue:H.value.email,"onUpdate:modelValue":d[18]||=e=>H.value.email=e,type:`email`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{xs:24,md:4},{default:l(()=>[r(S,{label:`星级`},{default:l(()=>[r(y,{modelValue:H.value.star_level_dict_item_id,"onUpdate:modelValue":d[19]||=e=>H.value.star_level_dict_item_id=e,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(L.value,e=>(i(),g(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(C,{xs:24,md:6},{default:l(()=>[r(S,{label:`状态`,required:``},{default:l(()=>[r(y,{modelValue:H.value.status_dict_item_id,"onUpdate:modelValue":d[20]||=e=>H.value.status_dict_item_id=e,placeholder:`请选择状态`,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(at.value,e=>(i(),g(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),r(E,{modelValue:U.value,"onUpdate:modelValue":d[29]||=e=>U.value=e,title:`新建高校`,width:`480px`,"append-to-body":``,"destroy-on-close":``},{footer:l(()=>[r(m,{onClick:d[28]||=e=>U.value=!1},{default:l(()=>[...d[69]||=[o(`取消`,-1)]]),_:1}),r(m,{type:`primary`,loading:ft.value,onClick:jt},{default:l(()=>[...d[70]||=[o(`保存`,-1)]]),_:1},8,[`loading`])]),default:l(()=>[r(T,{"label-position":`top`,class:`form-small`},{default:l(()=>[r(S,{label:`高校名称`,required:``},{default:l(()=>[r(_,{modelValue:W.value.name,"onUpdate:modelValue":d[23]||=e=>W.value.name=e,placeholder:`如:复旦大学`},null,8,[`modelValue`])]),_:1}),r(w,{gutter:12},{default:l(()=>[r(C,{span:12},{default:l(()=>[r(S,{label:`经度`,required:``},{default:l(()=>[r(_,{modelValue:W.value.longitude,"onUpdate:modelValue":d[24]||=e=>W.value.longitude=e,placeholder:`如:121.5031`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:12},{default:l(()=>[r(S,{label:`纬度`,required:``},{default:l(()=>[r(_,{modelValue:W.value.latitude,"onUpdate:modelValue":d[25]||=e=>W.value.latitude=e,placeholder:`如:31.2970`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1}),r(w,{gutter:12},{default:l(()=>[r(C,{span:12},{default:l(()=>[r(S,{label:`省份`},{default:l(()=>[r(_,{modelValue:W.value.province,"onUpdate:modelValue":d[26]||=e=>W.value.province=e,placeholder:`如:上海市`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:12},{default:l(()=>[r(S,{label:`城市`},{default:l(()=>[r(_,{modelValue:W.value.city,"onUpdate:modelValue":d[27]||=e=>W.value.city=e,placeholder:`如:上海`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),r(E,{modelValue:G.value,"onUpdate:modelValue":d[32]||=e=>G.value=e,title:`批量修改星级`,width:`480px`},{footer:l(()=>[r(m,{onClick:d[31]||=e=>G.value=!1},{default:l(()=>[...d[73]||=[o(`取消`,-1)]]),_:1}),r(m,{type:`primary`,disabled:!B.value.length,onClick:Ft},{default:l(()=>[...d[74]||=[o(` 保存并重算跟进日 `,-1)]]),_:1},8,[`disabled`])]),default:l(()=>[B.value.length?(i(),e(f,{key:1},[u(`div`,Ne,[d[71]||=o(` 已选择 `,-1),u(`span`,Pe,h(B.value.length),1),d[72]||=o(` 位老师 `,-1),dt.value?(i(),e(`span`,Fe,h(dt.value),1)):a(``,!0)]),r(T,{"label-position":`top`,style:{"margin-top":`12px`}},{default:l(()=>[r(S,{label:`目标星级`,required:``},{default:l(()=>[r(y,{modelValue:K.value,"onUpdate:modelValue":d[30]||=e=>K.value=e,placeholder:`请选择目标星级`,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(L.value,e=>(i(),g(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1}),u(`p`,Ie,h(pt.value),1)]),_:1})],64)):(i(),g(se,{key:0,type:`warning`,closable:!1,title:`请先在列表中勾选需要改星的老师。`,"show-icon":``}))]),_:1},8,[`modelValue`]),r(E,{modelValue:q.value,"onUpdate:modelValue":d[42]||=e=>q.value=e,title:`新增跟进`,width:`720px`,"destroy-on-close":``},{footer:l(()=>[r(m,{onClick:d[41]||=e=>q.value=!1},{default:l(()=>[...d[75]||=[o(`取消`,-1)]]),_:1}),r(m,{type:`primary`,onClick:Lt},{default:l(()=>[...d[76]||=[o(`保存`,-1)]]),_:1})]),default:l(()=>[J.value?(i(),e(`div`,Le,h(J.value.name)+` · `+h(J.value.university_name)+` · `+h(J.value.title),1)):a(``,!0),r(T,{"label-position":`top`,class:`form-small`,style:{"margin-top":`12px`}},{default:l(()=>[r(w,{gutter:12},{default:l(()=>[r(C,{span:10},{default:l(()=>[r(S,{label:`跟进主题`,required:``},{default:l(()=>[r(_,{modelValue:Y.value.subject,"onUpdate:modelValue":d[33]||=e=>Y.value.subject=e,placeholder:`请输入跟进主题`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:6},{default:l(()=>[r(S,{label:`跟进日期`,required:``},{default:l(()=>[r(D,{modelValue:Y.value.followed_at,"onUpdate:modelValue":d[34]||=e=>Y.value.followed_at=e,type:`date`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:4},{default:l(()=>[r(S,{label:`跟进方式`,required:``},{default:l(()=>[r(y,{modelValue:Y.value.follow_method_dict_item_id,"onUpdate:modelValue":d[35]||=e=>Y.value.follow_method_dict_item_id=e,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(ot.value,e=>(i(),g(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:4},{default:l(()=>[r(S,{label:`跟进人员`,required:``},{default:l(()=>[r(y,{modelValue:Y.value.admin_user_id,"onUpdate:modelValue":d[36]||=e=>Y.value.admin_user_id=e,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(ct.value,e=>(i(),g(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:24},{default:l(()=>[r(S,{label:`跟进记录`},{default:l(()=>[r(_,{modelValue:Y.value.content,"onUpdate:modelValue":d[37]||=e=>Y.value.content=e,type:`textarea`,rows:4,placeholder:`请输入跟进内容`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:12},{default:l(()=>[r(S,{label:`下次跟进主题`,required:``},{default:l(()=>[r(_,{modelValue:Y.value.next_follow_subject,"onUpdate:modelValue":d[38]||=e=>Y.value.next_follow_subject=e,placeholder:`请输入下次跟进主题`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:6},{default:l(()=>[r(S,{label:`下次跟进日期`,required:``},{default:l(()=>[r(D,{modelValue:Y.value.next_follow_date,"onUpdate:modelValue":d[39]||=e=>Y.value.next_follow_date=e,type:`date`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`]),mt.value?(i(),e(`p`,Re,h(mt.value),1)):a(``,!0)]),_:1})]),_:1}),r(C,{span:6},{default:l(()=>[r(S,{label:`紧急程度`,required:``},{default:l(()=>[r(y,{modelValue:Y.value.urgency_dict_item_id,"onUpdate:modelValue":d[40]||=e=>Y.value.urgency_dict_item_id=e,placeholder:`请选择紧急程度`,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(st.value,e=>(i(),g(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),r(E,{modelValue:ht.value,"onUpdate:modelValue":d[44]||=e=>ht.value=e,title:`跟进记录`,width:`960px`},{footer:l(()=>[r(m,{onClick:d[43]||=e=>ht.value=!1},{default:l(()=>[...d[85]||=[o(`关闭`,-1)]]),_:1})]),default:l(()=>[X.value?(i(),e(`div`,ze,[u(`span`,null,h(X.value.name),1),d[77]||=u(`span`,{class:`dot`},`·`,-1),u(`span`,null,h(X.value.university_name),1),d[78]||=u(`span`,{class:`dot`},`·`,-1),u(`span`,null,h(X.value.title),1),d[79]||=u(`span`,{class:`dot`},`·`,-1),u(`span`,Be,h(t(pe)(X.value.star_level_item?.value,X.value.star_level_item?.label)),1)])):a(``,!0),u(`div`,Ve,[(i(!0),e(f,null,p(gt.value,n=>(i(),e(`div`,{key:n.id,class:`follow-history-card`},[u(`div`,He,[u(`div`,null,[u(`span`,Ue,h(n.subject),1),u(`span`,We,h(n.followed_at),1)]),n.urgency_item?(i(),g(x,{key:0,type:t(fe)(n.urgency_item.value),size:`small`},{default:l(()=>[o(h(n.urgency_item.label),1)]),_:2},1032,[`type`])):a(``,!0)]),u(`div`,Ge,[u(`div`,Ke,[d[80]||=u(`span`,null,`跟进主题:`,-1),u(`div`,null,h(n.subject),1)]),u(`div`,qe,[d[81]||=u(`span`,null,`跟进方式:`,-1),u(`div`,null,h(n.follow_method_item?.label||`—`),1)]),u(`div`,Je,[d[82]||=u(`span`,null,`跟进记录:`,-1),u(`div`,null,h(n.content||`—`),1)]),u(`div`,Ye,[d[84]||=u(`span`,null,`下次跟进:`,-1),u(`div`,null,[o(`主题:`+h(n.next_follow_subject),1),d[83]||=u(`br`,null,null,-1),o(`日期:`+h(n.next_follow_date),1)])])]),u(`div`,Xe,`跟进人:`+h(n.operator_name||`—`),1)]))),128)),gt.value.length?a(``,!0):(i(),g(ue,{key:0,description:`暂无跟进记录`}))])]),_:1},8,[`modelValue`]),r(ce,{modelValue:_t.value,"onUpdate:modelValue":d[45]||=e=>_t.value=e,"teacher-id":vt.value?.id??null,"default-authors":vt.value?.name,"default-school-name":vt.value?.university_name||``,onSaved:$},null,8,[`modelValue`,`teacher-id`,`default-authors`,`default-school-name`]),r(E,{modelValue:Z.value,"onUpdate:modelValue":d[50]||=e=>Z.value=e,title:`发布需求`,width:`640px`,"destroy-on-close":``},{footer:l(()=>[r(m,{onClick:d[49]||=e=>Z.value=!1},{default:l(()=>[...d[86]||=[o(`取消`,-1)]]),_:1}),r(m,{type:`primary`,onClick:Vt},{default:l(()=>[...d[87]||=[o(`发布`,-1)]]),_:1})]),default:l(()=>[r(T,{"label-position":`top`,class:`form-small`},{default:l(()=>[r(w,{gutter:12},{default:l(()=>[r(C,{span:12},{default:l(()=>[r(S,{label:`关联老师`},{default:l(()=>[r(_,{"model-value":yt.value?.name||``,readonly:``},null,8,[`model-value`])]),_:1})]),_:1}),r(C,{span:12},{default:l(()=>[r(S,{label:`需求类型`,required:``},{default:l(()=>[r(y,{modelValue:Q.value.type_dict_item_id,"onUpdate:modelValue":d[46]||=e=>Q.value.type_dict_item_id=e,placeholder:`请选择需求类型`,style:{width:`100%`}},{default:l(()=>[(i(!0),e(f,null,p(lt.value,e=>(i(),g(v,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:24},{default:l(()=>[r(S,{label:`标题`,required:``},{default:l(()=>[r(_,{modelValue:Q.value.title,"onUpdate:modelValue":d[47]||=e=>Q.value.title=e,placeholder:`请输入需求标题`},null,8,[`modelValue`])]),_:1})]),_:1}),r(C,{span:24},{default:l(()=>[r(S,{label:`详细描述`,required:``},{default:l(()=>[r(_,{modelValue:Q.value.content,"onUpdate:modelValue":d[48]||=e=>Q.value.content=e,type:`textarea`,rows:5,placeholder:`请描述需求背景、目标、期望资源或合作方式`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),r(le,{modelValue:et.value,"onUpdate:modelValue":d[51]||=e=>et.value=e,"teacher-id":tt.value,onSaved:$},null,8,[`modelValue`,`teacher-id`])])}}}),[[`__scopeId`,`data-v-23e21a6d`]]);export{Ze as default}; \ No newline at end of file diff --git a/public/admin/assets/teachers-CirjzrhY.js b/public/admin/assets/teachers-Cve-7Sy4.js similarity index 94% rename from public/admin/assets/teachers-CirjzrhY.js rename to public/admin/assets/teachers-Cve-7Sy4.js index 579df5c..1c5d38c 100644 --- a/public/admin/assets/teachers-CirjzrhY.js +++ b/public/admin/assets/teachers-Cve-7Sy4.js @@ -1 +1 @@ -import{r as e}from"./index-jb05DpEw.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}; \ No newline at end of file +import{r as e}from"./index-DTIMLswB.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}; \ No newline at end of file diff --git a/public/admin/assets/tiandituMap-BbTEN0Ou.js b/public/admin/assets/tiandituMap-BbTEN0Ou.js new file mode 100644 index 0000000..b083e0f --- /dev/null +++ b/public/admin/assets/tiandituMap-BbTEN0Ou.js @@ -0,0 +1 @@ +function e(e,t){let n=e[t];typeof n==`function`&&n.call(e)}function t(e,t){return new e.Map(t)}function n(e){e.checkResize?.()}async function r(e,t=5e3){let n=Date.now()+t;for(;Date.now()0&&t.height>0)return!0;await new Promise(e=>requestAnimationFrame(()=>e()))}return!1}function i(e,t,r,i){n(e),e.centerAndZoom(new t.LngLat(r.lng,r.lat),i),o(e,[50,200,500])}function a(e,t){if(typeof ResizeObserver>`u`)return()=>{};let r=new ResizeObserver(()=>{let e=t();e&&n(e)});return r.observe(e),()=>r.disconnect()}function o(e,t=[0,80,240,480,800]){for(let r of t)window.setTimeout(()=>n(e),r)}function s(t){e(t,`enableScrollWheelZoom`),e(t,`enableDrag`),e(t,`enableInertia`),e(t,`enableAutoResize`);let n=t.setOptions;n?.({drag:!0})}var c=null,l=`cc3f61fa6cafe2f0ad440018d0f07b13`;function u(){return`cc3f61fa6cafe2f0ad440018d0f07b13`?.trim()||l}function d(){return window.T?Promise.resolve(window.T):(c||=new Promise((e,t)=>{let n=u();if(!n){t(Error(`未配置 VITE_TIANDITU_TK`));return}let r=document.createElement(`script`);r.src=`https://api.tianditu.gov.cn/api?v=4.0&tk=${encodeURIComponent(n)}`,r.async=!0,r.onload=()=>{window.T?e(window.T):t(Error(`天地图 SDK 加载失败`))},r.onerror=()=>t(Error(`天地图脚本加载失败`)),document.head.appendChild(r)}),c)}var f={lng:120.585316,lat:31.298886};function p(e,t){let n=Number(e),r=Number(t);return!Number.isFinite(n)||!Number.isFinite(r)?null:(n<=60&&r>=70&&([n,r]=[r,n]),{lng:n,lat:r})}function m(e){if(typeof e==`string`){let t=e.trim();if(!t)return null;let n=t.split(/[\s,;,]+/).filter(Boolean);return n.length<2?null:p(n[0],n[1])}let t=e,n=e.lonlat??t.LonLat??t.lonLat;if(typeof n==`string`&&n.trim()){let e=m(n);if(e)return e}let r=e.lng??e.lon??t.Lon,i=e.lat??t.Lat;return r!=null&&i!=null?p(r,i):null}function h(e){return e?Array.isArray(e)?e:typeof e==`object`?Object.values(e):[]:[]}function g(e,t,n=11){e.centerAndZoom(new t.LngLat(f.lng,f.lat),n)}export{t as a,h as c,o as d,r as f,s as i,m as l,a as n,u as o,g as r,d as s,f as t,i as u}; \ No newline at end of file diff --git a/public/admin/assets/tiandituMap-DOhOVIi3.js b/public/admin/assets/tiandituMap-DOhOVIi3.js deleted file mode 100644 index 2333b6b..0000000 --- a/public/admin/assets/tiandituMap-DOhOVIi3.js +++ /dev/null @@ -1 +0,0 @@ -var e=new Set([`mapPane`,`tilePane`,`floatPane`]),t=/tdt-overlay-pane|tdt-marker-pane|tdt-tooltip-pane|tdt-popup-pane|tdt-shadow-pane/i;function n(e,t){let n=e[t];typeof n==`function`&&n.call(e)}function r(e){return`https://t0.tianditu.gov.cn/${e}_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=${e}&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${encodeURIComponent(h())}`}function i(e){return e.TileLayer?[new e.TileLayer(r(`vec`),{minZoom:1,maxZoom:18}),new e.TileLayer(r(`cva`),{minZoom:1,maxZoom:18})]:[]}function a(e,t){let n=i(e),r=new e.Map(t,n.length?{layers:n}:void 0);if(!n.length)return r;for(let e of n)try{r.addLayer?.(e)}catch{}return r}function o(e){e.checkResize?.()}async function s(e,t=5e3){let n=Date.now()+t;for(;Date.now()0&&t.height>0)return!0;await new Promise(e=>requestAnimationFrame(()=>e()))}return!1}function c(e,t,n,r){o(e),e.centerAndZoom(new t.LngLat(n.lng,n.lat),r),u(e,[50,200,500])}function l(e,t){if(typeof ResizeObserver>`u`)return()=>{};let n=new ResizeObserver(()=>{let e=t();e&&o(e)});return n.observe(e),()=>n.disconnect()}function u(e,t=[0,80,240,480,800]){for(let n of t)window.setTimeout(()=>o(e),n)}function d(n){let r=n.getPanes?.();if(r)for(let[t,n]of Object.entries(r))!n||e.has(t)||(n.style.pointerEvents=`none`);let i=n.getContainer?.();i&&(i.querySelectorAll(`[class*="tdt-"][class*="pane"]`).forEach(e=>{t.test(e.className)&&(e.style.pointerEvents=`none`)}),i.querySelectorAll(`.slake-map-school-marker`).forEach(e=>{e.style.pointerEvents=`auto`}))}function f(e){n(e,`enableScrollWheelZoom`),n(e,`enableDrag`),n(e,`enableInertia`),n(e,`enableAutoResize`);let t=e.setOptions;t?.({drag:!0}),d(e)}var p=null,m=`cc3f61fa6cafe2f0ad440018d0f07b13`;function h(){return`cc3f61fa6cafe2f0ad440018d0f07b13`?.trim()||m}function g(){return window.T?Promise.resolve(window.T):(p||=new Promise((e,t)=>{let n=h();if(!n){t(Error(`未配置 VITE_TIANDITU_TK`));return}let r=document.createElement(`script`);r.src=`https://api.tianditu.gov.cn/api?v=4.0&tk=${encodeURIComponent(n)}`,r.async=!0,r.onload=()=>{window.T?e(window.T):t(Error(`天地图 SDK 加载失败`))},r.onerror=()=>t(Error(`天地图脚本加载失败`)),document.head.appendChild(r)}),p)}var _={lng:120.585316,lat:31.298886};function v(e,t){let n=Number(e),r=Number(t);return!Number.isFinite(n)||!Number.isFinite(r)?null:(n<=60&&r>=70&&([n,r]=[r,n]),{lng:n,lat:r})}function y(e){if(typeof e==`string`){let t=e.trim();if(!t)return null;let n=t.split(/[\s,;,]+/).filter(Boolean);return n.length<2?null:v(n[0],n[1])}let t=e,n=e.lonlat??t.LonLat??t.lonLat;if(typeof n==`string`&&n.trim()){let e=y(n);if(e)return e}let r=e.lng??e.lon??t.Lon,i=e.lat??t.Lat;return r!=null&&i!=null?v(r,i):null}function b(e){return e?Array.isArray(e)?e:typeof e==`object`?Object.values(e):[]:[]}function x(e,t,n=11){e.centerAndZoom(new t.LngLat(_.lng,_.lat),n)}export{f as a,g as c,c as d,u as f,x as i,b as l,d as n,a as o,s as p,l as r,h as s,_ as t,y as u}; \ No newline at end of file diff --git a/public/admin/assets/universities-BrS2X24F.css b/public/admin/assets/universities-BrS2X24F.css deleted file mode 100644 index cb79062..0000000 --- a/public/admin/assets/universities-BrS2X24F.css +++ /dev/null @@ -1 +0,0 @@ -.pick-map-wrap[data-v-7f2b8112]{margin-top:4px;position:relative;overflow:hidden}.pick-search-bar[data-v-7f2b8112]{gap:8px;margin-bottom:8px;display:flex}.pick-search-bar .el-input[data-v-7f2b8112]{flex:1}.pick-search-results[data-v-7f2b8112]{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-7f2b8112]{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-7f2b8112]:last-child{border-bottom:none}.pick-search-item[data-v-7f2b8112]:hover{background:var(--el-fill-color-light)}.pick-search-item strong[data-v-7f2b8112]{color:var(--el-text-color-primary);font-size:14px}.pick-search-item span[data-v-7f2b8112]{color:var(--el-text-color-secondary);font-size:12px}.pick-map-shell[data-v-7f2b8112]{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-7f2b8112]{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-7f2b8112]{z-index:0;cursor:crosshair;width:100%;position:relative;overflow:hidden}.pick-map[data-v-7f2b8112] .tdt-container,.pick-map[data-v-7f2b8112] .tdt-map{width:100%!important;height:100%!important}.pick-map[data-v-7f2b8112] .tdt-overlay-pane,.pick-map[data-v-7f2b8112] .tdt-marker-pane{pointer-events:none}.pick-map[data-v-7f2b8112] .tdt-marker-pane img{pointer-events:auto}.pick-map-error[data-v-7f2b8112]{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-7f2b8112]{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} diff --git a/public/admin/assets/universities-CpU0jq98.js b/public/admin/assets/universities-CpU0jq98.js deleted file mode 100644 index e68ffb3..0000000 --- a/public/admin/assets/universities-CpU0jq98.js +++ /dev/null @@ -1 +0,0 @@ -import{C as e,Ct as t,D as n,E as r,G as i,H as a,I as o,P as s,Qt as c,S as l,T as u,X as d,Y as f,at as p,b as m,d as ee,et as h,ht as g,m as _,ot as v,q as te,rt as y,tn as b,x,z as S}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{_ as C,c as w,l as T,s as E}from"./index-jb05DpEw.js";import{t as D}from"./usePageLoad-DFTLo_Lv.js";import{d as O,h as k,i as A,n as j}from"./assets-Wj17Zlgs.js";import{a as M,c as N,d as P,l as F,n as I,o as ne,p as L,r as re,s as R,t as z,u as B}from"./tiandituMap-DOhOVIi3.js";var ie={class:`pick-map-wrap`},ae={key:0,class:`pick-search-bar`},oe={key:1,class:`pick-search-results`},se=[`onClick`],ce={key:2,class:`pick-map-error`},le={key:3,class:`pick-map-shell`},V={key:0,class:`pick-map-loading`},ue={key:4,class:`pick-hint`},H=E(n({__name:`TiandituPickMap`,props:s({height:{default:360},defaultKeyword:{default:``}},{longitude:{default:``},longitudeModifiers:{},latitude:{default:``},latitudeModifiers:{}}),emits:[`update:longitude`,`update:latitude`],setup(t){let n=t,s=h(t,`longitude`),d=h(t,`latitude`),v=`tianditu-pick-map-${Math.random().toString(36).slice(2)}`,x=g(null),C=g(``),w=g(!1),E=g(``),D=g(!1),O=g([]),k=null,A=null,j=null,H=null,U=null,W=!1;function G(e){let t=Number(e);return Number.isFinite(t)?t:null}function K(){let e=G(s.value),t=G(d.value);return e!=null&&t!=null?{lng:e,lat:t,zoom:14}:{lng:z.lng,lat:z.lat,zoom:11}}function q(){if(U?.(),U=null,W=!1,k&&A)try{k.removeOverLay(A)}catch{}A=null,k?.destroy?.(),k=null,j=null,x.value&&(x.value.innerHTML=``)}function J(e,t,n=16){s.value=e.toFixed(6),d.value=t.toFixed(6),k&&H&&(P(k,H,{lng:e,lat:t},n),Y(H,e,t))}function Y(e,t,n){k&&(A&&=(k.removeOverLay(A),null),A=new e.Marker(new e.LngLat(t,n)),k.addOverLay(A),I(k))}function X(e){!k||!e.LocalSearch||(j=new e.LocalSearch(k,{pageCapacity:10,onSearchComplete:e=>{if(D.value=!1,Number(e.getResultType())!==1){O.value=[],T.warning(`未找到相关地点,请换个关键词试试`);return}let t=F(e.getPois()).filter(e=>!!B(e));O.value=t,t.length||T.warning(`未找到有效坐标的地点,请换个关键词试试`)}}))}function Z(){let e=E.value.trim();if(!e){T.warning(`请输入搜索关键词`);return}if(!j){T.warning(`地图尚未就绪,请稍后再试`);return}D.value=!0,O.value=[],j.search(e)}function de(e){let t=B(e);if(!t){T.warning(`该地点坐标无效,请换一条结果`);return}J(t.lng,t.lat),O.value=[]}function Q(){W&&(W=!1,n.defaultKeyword.trim()&&(E.value=n.defaultKeyword.trim(),Z()))}function $(){if(!k||!H)return;let e=K();P(k,H,{lng:e.lng,lat:e.lat},e.zoom)}async function fe(){await o();let e=x.value;if(e){if(C.value=``,!R()){C.value=`未配置天地图 Key(VITE_TIANDITU_TK)`;return}w.value=!0;try{if(q(),!await L(e)){C.value=`地图容器未就绪,请关闭后重试`;return}let t=await N();H=t,e.innerHTML=``,e.id=v,e.style.width=`100%`,e.style.height=`${n.height}px`,k=ne(t,v),M(k);let r=K();k.centerAndZoom(new t.LngLat(r.lng,r.lat),r.zoom);let i=G(s.value),a=G(d.value);i!=null&&a!=null?Y(t,i,a):Y(t,r.lng,r.lat),X(t),k.addEventListener?.(`click`,e=>{let t=e?.lnglat?.lng,n=e?.lnglat?.lat;t==null||n==null||(J(t,n),O.value=[])}),k.addEventListener?.(`load`,()=>{if(!k||!H)return;let e=K();P(k,H,{lng:e.lng,lat:e.lat},e.zoom),Q()}),U=re(e,()=>k),P(k,t,{lng:r.lng,lat:r.lat},r.zoom),window.setTimeout($,300),window.setTimeout($,800),window.setTimeout($,1500),n.defaultKeyword.trim()&&(W=!0)}catch(e){C.value=e instanceof Error?e.message:`地图加载失败`}finally{if(w.value=!1,k&&H){let e=K();P(k,H,{lng:e.lng,lat:e.lat},e.zoom)}}}}return y([s,d],async()=>{let e=G(s.value),t=G(d.value);!k||e==null||t==null||Y(await N(),e,t)}),a(()=>{fe()}),S(()=>{q(),H=null}),(t,a)=>{let o=f(`el-input`),s=f(`el-button`);return i(),e(`div`,ie,[C.value?l(``,!0):(i(),e(`div`,ae,[r(o,{modelValue:E.value,"onUpdate:modelValue":a[0]||=e=>E.value=e,placeholder:`搜索地点,如:复旦大学`,clearable:``,onKeyup:ee(Z,[`enter`])},null,8,[`modelValue`]),r(s,{type:`primary`,loading:D.value,onClick:Z},{default:p(()=>[...a[1]||=[u(`搜索`,-1)]]),_:1},8,[`loading`])])),O.value.length?(i(),e(`ul`,oe,[(i(!0),e(_,null,te(O.value,(t,n)=>(i(),e(`li`,{key:`${t.name}-${n}`},[m(`button`,{type:`button`,class:`pick-search-item`,onClick:e=>de(t)},[m(`strong`,null,b(t.name),1),m(`span`,null,b(t.address||`—`),1)],8,se)]))),128))])):l(``,!0),C.value?(i(),e(`div`,ce,b(C.value),1)):(i(),e(`div`,le,[w.value?(i(),e(`div`,V,`地图加载中…`)):l(``,!0),m(`div`,{ref_key:`containerRef`,ref:x,class:`pick-map`,style:c({height:`${n.height}px`})},null,4)])),C.value?l(``,!0):(i(),e(`p`,ue,`可搜索地点或点击地图选点,确定后将填入经纬度`))])}}}),[[`__scopeId`,`data-v-7f2b8112`]]),U={class:`list-page`},W={class:`page-header`},G={class:`list-filter-bar`},K={class:`table-row-actions`},q={key:0,class:`list-pager`},J={class:`coord-inline`},Y={key:0,class:`pick-coord-preview`},X=E(n({__name:`index`,setup(n){let a=g(!1),s=g([]),c=g({current_page:1,per_page:20,total:0}),h=g(1),y=g(``),S=g(``),E=g(!1),M=g(!1),N=g(!1),P=g(null),F=g({longitude:``,latitude:``}),I=g({name:``,longitude:``,latitude:``,city:``,province:``}),ne=[{label:`上海高校`,value:`上海`},{label:`苏州高校`,value:`苏州`},{label:`浙江高校`,value:`浙江`}];async function L(){a.value=!0;try{let e={page:h.value,page_size:c.value.per_page};y.value&&(e.keyword=y.value),S.value&&(e.region=S.value);let t=await O(e);s.value=t.items,c.value=t.meta}finally{a.value=!1}}function re(){y.value=``,S.value=``,h.value=1,L()}function R(){h.value=1,L()}function z(){P.value=null,I.value={name:``,longitude:``,latitude:``,city:``,province:``},E.value=!0}function B(e){P.value=e,I.value={name:e.name,longitude:e.longitude==null?``:String(e.longitude),latitude:e.latitude==null?``:String(e.latitude),city:e.city||``,province:e.province||``},E.value=!0}function ie(){F.value={longitude:I.value.longitude,latitude:I.value.latitude},N.value=!1,M.value=!0}function ae(){N.value=!1,o(()=>{window.setTimeout(()=>{N.value=!0},800)})}function oe(){N.value=!1}function se(){if(!F.value.longitude||!F.value.latitude){T.warning(`请先在地图上选点`);return}I.value.longitude=F.value.longitude,I.value.latitude=F.value.latitude,M.value=!1}async function ce(){if(!I.value.name||!I.value.longitude||!I.value.latitude){T.warning(`请填写高校名称与经纬度`);return}let e={name:I.value.name.trim(),longitude:Number(I.value.longitude),latitude:Number(I.value.latitude),city:I.value.city||null,province:I.value.province||null};P.value?await k(P.value.id,e):await j(e),T.success(`已保存`),E.value=!1,await L()}async function le(e){await w.confirm(`确定要删除高校「${e.name}」?`,`确认删除`,{type:`warning`}),await A(e.id),T.success(`已删除`),await L()}return D(L),(n,o)=>{let g=f(`el-button`),w=f(`el-input`),T=f(`el-option`),D=f(`el-select`),O=f(`el-table-column`),k=f(`el-table`),A=f(`el-pagination`),j=f(`el-card`),V=f(`el-form-item`),ue=f(`el-icon`),X=f(`el-col`),Z=f(`el-row`),de=f(`el-form`),Q=f(`el-dialog`),$=d(`loading`);return i(),e(_,null,[m(`div`,U,[m(`div`,W,[o[15]||=m(`h1`,{class:`page-title`},`高校坐标库`,-1),r(g,{type:`primary`,size:`small`,class:`btn-create`,onClick:z},{default:p(()=>[...o[14]||=[u(`新增高校`,-1)]]),_:1})]),r(j,{shadow:`never`,class:`admin-list-card`},{default:p(()=>[o[20]||=m(`p`,{class:`list-page-hint`},`长三角主要高校经纬度预置录入,供雷达地图映射使用。`,-1),m(`div`,G,[r(w,{modelValue:y.value,"onUpdate:modelValue":o[0]||=e=>y.value=e,placeholder:`搜索高校名称、经纬度…`,clearable:``,class:`filter-search`,onKeyup:ee(R,[`enter`])},null,8,[`modelValue`]),r(D,{modelValue:S.value,"onUpdate:modelValue":o[1]||=e=>S.value=e,placeholder:`地区`,clearable:``,class:`filter-select-wide`},{default:p(()=>[(i(),e(_,null,te(ne,e=>r(T,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`]),r(g,{type:`primary`,onClick:R},{default:p(()=>[...o[16]||=[u(`搜索`,-1)]]),_:1}),r(g,{onClick:re},{default:p(()=>[...o[17]||=[u(`重置`,-1)]]),_:1})]),v((i(),x(k,{data:s.value,"row-key":`id`},{default:p(()=>[r(O,{prop:`name`,label:`高校名称`,"min-width":`180`}),r(O,{label:`经度`,width:`120`},{default:p(({row:e})=>[u(b(e.longitude??`—`),1)]),_:1}),r(O,{label:`纬度`,width:`120`},{default:p(({row:e})=>[u(b(e.latitude??`—`),1)]),_:1}),r(O,{prop:`city`,label:`城市`,width:`100`}),r(O,{label:`操作`,width:`160`,fixed:`right`},{default:p(({row:e})=>[m(`div`,K,[r(g,{class:`btn-action-secondary`,onClick:t=>B(e)},{default:p(()=>[...o[18]||=[u(`编辑`,-1)]]),_:1},8,[`onClick`]),r(g,{class:`btn-action-secondary`,onClick:t=>le(e)},{default:p(()=>[...o[19]||=[u(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[$,a.value]]),c.value.total>0?(i(),e(`div`,q,[r(A,{layout:`total, prev, pager, next`,total:c.value.total,"page-size":c.value.per_page,"current-page":h.value,onCurrentChange:o[2]||=e=>{h.value=e,L()}},null,8,[`total`,`page-size`,`current-page`])])):l(``,!0)]),_:1})]),r(Q,{modelValue:E.value,"onUpdate:modelValue":o[9]||=e=>E.value=e,title:P.value?`编辑高校`:`新增高校`,width:`480px`,"destroy-on-close":``},{footer:p(()=>[r(g,{onClick:o[8]||=e=>E.value=!1},{default:p(()=>[...o[22]||=[u(`取消`,-1)]]),_:1}),r(g,{type:`primary`,onClick:ce},{default:p(()=>[...o[23]||=[u(`保存`,-1)]]),_:1})]),default:p(()=>[r(de,{"label-position":`top`},{default:p(()=>[r(V,{label:`高校名称`,required:``},{default:p(()=>[r(w,{modelValue:I.value.name,"onUpdate:modelValue":o[3]||=e=>I.value.name=e,placeholder:`如:复旦大学`},null,8,[`modelValue`])]),_:1}),r(V,{label:`经纬度`,required:``},{default:p(()=>[m(`div`,J,[r(w,{modelValue:I.value.longitude,"onUpdate:modelValue":o[4]||=e=>I.value.longitude=e,placeholder:`经度`,class:`coord-input`},null,8,[`modelValue`]),r(w,{modelValue:I.value.latitude,"onUpdate:modelValue":o[5]||=e=>I.value.latitude=e,placeholder:`纬度`,class:`coord-input`},null,8,[`modelValue`]),r(g,{class:`pick-map-btn`,onClick:ie},{default:p(()=>[r(ue,null,{default:p(()=>[r(t(C))]),_:1}),o[21]||=u(` 地图选点 `,-1)]),_:1})])]),_:1}),r(Z,{gutter:12},{default:p(()=>[r(X,{span:12},{default:p(()=>[r(V,{label:`省份`},{default:p(()=>[r(w,{modelValue:I.value.province,"onUpdate:modelValue":o[6]||=e=>I.value.province=e,placeholder:`如:上海`},null,8,[`modelValue`])]),_:1})]),_:1}),r(X,{span:12},{default:p(()=>[r(V,{label:`城市`},{default:p(()=>[r(w,{modelValue:I.value.city,"onUpdate:modelValue":o[7]||=e=>I.value.city=e,placeholder:`如:上海`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`]),r(Q,{modelValue:M.value,"onUpdate:modelValue":o[13]||=e=>M.value=e,class:`map-pick-dialog`,title:`地图选点`,width:`720px`,"destroy-on-close":``,"append-to-body":``,"align-center":``,onOpened:ae,onClosed:oe},{footer:p(()=>[r(g,{onClick:o[12]||=e=>M.value=!1},{default:p(()=>[...o[24]||=[u(`取消`,-1)]]),_:1}),r(g,{type:`primary`,onClick:se},{default:p(()=>[...o[25]||=[u(`确定`,-1)]]),_:1})]),default:p(()=>[F.value.longitude&&F.value.latitude?(i(),e(`p`,Y,` 当前选点:`+b(F.value.longitude)+`,`+b(F.value.latitude),1)):l(``,!0),M.value&&N.value?(i(),x(H,{key:1,longitude:F.value.longitude,"onUpdate:longitude":o[10]||=e=>F.value.longitude=e,latitude:F.value.latitude,"onUpdate:latitude":o[11]||=e=>F.value.latitude=e,"default-keyword":I.value.name,height:400},null,8,[`longitude`,`latitude`,`default-keyword`])):l(``,!0)]),_:1},8,[`modelValue`])],64)}}}),[[`__scopeId`,`data-v-053ddb42`]]);export{X as default}; \ No newline at end of file diff --git a/public/admin/assets/universities-D1jZCuFP.css b/public/admin/assets/universities-D1jZCuFP.css new file mode 100644 index 0000000..6bb9537 --- /dev/null +++ b/public/admin/assets/universities-D1jZCuFP.css @@ -0,0 +1 @@ +.pick-map-wrap[data-v-3245c136]{margin-top:4px;position:relative;overflow:hidden}.pick-search-bar[data-v-3245c136]{gap:8px;margin-bottom:8px;display:flex}.pick-search-bar .el-input[data-v-3245c136]{flex:1}.pick-search-results[data-v-3245c136]{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-3245c136]{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-3245c136]:last-child{border-bottom:none}.pick-search-item[data-v-3245c136]:hover{background:var(--el-fill-color-light)}.pick-search-item strong[data-v-3245c136]{color:var(--el-text-color-primary);font-size:14px}.pick-search-item span[data-v-3245c136]{color:var(--el-text-color-secondary);font-size:12px}.pick-map-shell[data-v-3245c136]{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-3245c136]{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-3245c136]{z-index:0;cursor:crosshair;width:100%;position:relative;overflow:hidden}.pick-map[data-v-3245c136] .tdt-container,.pick-map[data-v-3245c136] .tdt-map{width:100%!important;height:100%!important}.pick-map[data-v-3245c136] .tdt-overlay-pane,.pick-map[data-v-3245c136] .tdt-marker-pane{pointer-events:none}.pick-map[data-v-3245c136] .tdt-marker-pane img{pointer-events:auto}.pick-map-error[data-v-3245c136]{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-3245c136]{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} diff --git a/public/admin/assets/universities-EPS_mI41.js b/public/admin/assets/universities-EPS_mI41.js new file mode 100644 index 0000000..aa97c15 --- /dev/null +++ b/public/admin/assets/universities-EPS_mI41.js @@ -0,0 +1 @@ +import{C as e,Ct as t,D as n,E as r,G as i,H as a,I as o,P as s,Qt as c,S as l,T as u,X as d,Y as f,at as p,b as m,d as ee,et as h,ht as g,m as _,ot as v,q as te,rt as y,tn as b,x,z as S}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{_ as C,c as w,l as T,s as E}from"./index-DTIMLswB.js";import{t as D}from"./usePageLoad-DFTLo_Lv.js";import{d as O,h as k,i as A,n as j}from"./assets-B5_Et8Pj.js";import{a as M,c as N,f as P,i as F,l as I,n as ne,o as L,s as R,t as z,u as B}from"./tiandituMap-BbTEN0Ou.js";var re={class:`pick-map-wrap`},ie={key:0,class:`pick-search-bar`},V={key:1,class:`pick-search-results`},ae=[`onClick`],oe={key:2,class:`pick-map-error`},se={key:3,class:`pick-map-shell`},ce={key:0,class:`pick-map-loading`},H={key:4,class:`pick-hint`},U=E(n({__name:`TiandituPickMap`,props:s({height:{default:360},defaultKeyword:{default:``}},{longitude:{default:``},longitudeModifiers:{},latitude:{default:``},latitudeModifiers:{}}),emits:[`update:longitude`,`update:latitude`],setup(t){let n=t,s=h(t,`longitude`),d=h(t,`latitude`),v=`tianditu-pick-map-${Math.random().toString(36).slice(2)}`,x=g(null),C=g(``),w=g(!1),E=g(``),D=g(!1),O=g([]),k=null,A=null,j=null,U=null,W=null,G=!1;function K(e){let t=Number(e);return Number.isFinite(t)?t:null}function q(){let e=K(s.value),t=K(d.value);return e!=null&&t!=null?{lng:e,lat:t,zoom:14}:{lng:z.lng,lat:z.lat,zoom:11}}function J(){if(W?.(),W=null,G=!1,k&&A)try{k.removeOverLay(A)}catch{}A=null,k?.destroy?.(),k=null,j=null,x.value&&(x.value.innerHTML=``)}function Y(e,t,n=16){s.value=e.toFixed(6),d.value=t.toFixed(6),k&&U&&(B(k,U,{lng:e,lat:t},n),X(U,e,t))}function X(e,t,n){k&&(A&&=(k.removeOverLay(A),null),A=new e.Marker(new e.LngLat(t,n)),k.addOverLay(A))}function Z(e){!k||!e.LocalSearch||(j=new e.LocalSearch(k,{pageCapacity:10,onSearchComplete:e=>{if(D.value=!1,Number(e.getResultType())!==1){O.value=[],T.warning(`未找到相关地点,请换个关键词试试`);return}let t=N(e.getPois()).filter(e=>!!I(e));O.value=t,t.length||T.warning(`未找到有效坐标的地点,请换个关键词试试`)}}))}function Q(){let e=E.value.trim();if(!e){T.warning(`请输入搜索关键词`);return}if(!j){T.warning(`地图尚未就绪,请稍后再试`);return}D.value=!0,O.value=[],j.search(e)}function le(e){let t=I(e);if(!t){T.warning(`该地点坐标无效,请换一条结果`);return}Y(t.lng,t.lat),O.value=[]}function ue(){G&&(G=!1,n.defaultKeyword.trim()&&(E.value=n.defaultKeyword.trim(),Q()))}function $(){if(!k||!U)return;let e=q();B(k,U,{lng:e.lng,lat:e.lat},e.zoom)}async function de(){await o();let e=x.value;if(e){if(C.value=``,!L()){C.value=`未配置天地图 Key(VITE_TIANDITU_TK)`;return}w.value=!0;try{if(J(),!await P(e)){C.value=`地图容器未就绪,请关闭后重试`;return}let t=await R();U=t,e.innerHTML=``,e.id=v,e.style.width=`100%`,e.style.height=`${n.height}px`,k=M(t,v),F(k);let r=q();k.centerAndZoom(new t.LngLat(r.lng,r.lat),r.zoom);let i=K(s.value),a=K(d.value);i!=null&&a!=null&&X(t,i,a),Z(t),k.addEventListener?.(`click`,e=>{let t=e?.lnglat?.lng,n=e?.lnglat?.lat;t==null||n==null||(Y(t,n),O.value=[])}),k.addEventListener?.(`load`,()=>{if(!k||!U)return;let e=q();B(k,U,{lng:e.lng,lat:e.lat},e.zoom),ue()}),W=ne(e,()=>k),B(k,t,{lng:r.lng,lat:r.lat},r.zoom),window.setTimeout($,300),window.setTimeout($,800),window.setTimeout($,1500),n.defaultKeyword.trim()&&(G=!0)}catch(e){C.value=e instanceof Error?e.message:`地图加载失败`}finally{if(w.value=!1,k&&U){let e=q();B(k,U,{lng:e.lng,lat:e.lat},e.zoom)}}}}return y([s,d],async()=>{let e=K(s.value),t=K(d.value);!k||e==null||t==null||X(await R(),e,t)}),a(()=>{de()}),S(()=>{J(),U=null}),(t,a)=>{let o=f(`el-input`),s=f(`el-button`);return i(),e(`div`,re,[C.value?l(``,!0):(i(),e(`div`,ie,[r(o,{modelValue:E.value,"onUpdate:modelValue":a[0]||=e=>E.value=e,placeholder:`搜索地点,如:复旦大学`,clearable:``,onKeyup:ee(Q,[`enter`])},null,8,[`modelValue`]),r(s,{type:`primary`,loading:D.value,onClick:Q},{default:p(()=>[...a[1]||=[u(`搜索`,-1)]]),_:1},8,[`loading`])])),O.value.length?(i(),e(`ul`,V,[(i(!0),e(_,null,te(O.value,(t,n)=>(i(),e(`li`,{key:`${t.name}-${n}`},[m(`button`,{type:`button`,class:`pick-search-item`,onClick:e=>le(t)},[m(`strong`,null,b(t.name),1),m(`span`,null,b(t.address||`—`),1)],8,ae)]))),128))])):l(``,!0),C.value?(i(),e(`div`,oe,b(C.value),1)):(i(),e(`div`,se,[w.value?(i(),e(`div`,ce,`地图加载中…`)):l(``,!0),m(`div`,{ref_key:`containerRef`,ref:x,class:`pick-map`,style:c({height:`${n.height}px`})},null,4)])),C.value?l(``,!0):(i(),e(`p`,H,`可搜索地点或点击地图选点,确定后将填入经纬度`))])}}}),[[`__scopeId`,`data-v-3245c136`]]),W={class:`list-page`},G={class:`page-header`},K={class:`list-filter-bar`},q={class:`table-row-actions`},J={key:0,class:`list-pager`},Y={class:`coord-inline`},X={key:0,class:`pick-coord-preview`},Z=E(n({__name:`index`,setup(n){let a=g(!1),s=g([]),c=g({current_page:1,per_page:20,total:0}),h=g(1),y=g(``),S=g(``),E=g(!1),M=g(!1),N=g(!1),P=g(null),F=g({longitude:``,latitude:``}),I=g({name:``,longitude:``,latitude:``,city:``,province:``}),ne=[{label:`上海高校`,value:`上海`},{label:`苏州高校`,value:`苏州`},{label:`浙江高校`,value:`浙江`}];async function L(){a.value=!0;try{let e={page:h.value,page_size:c.value.per_page};y.value&&(e.keyword=y.value),S.value&&(e.region=S.value);let t=await O(e);s.value=t.items,c.value=t.meta}finally{a.value=!1}}function R(){y.value=``,S.value=``,h.value=1,L()}function z(){h.value=1,L()}function B(){P.value=null,I.value={name:``,longitude:``,latitude:``,city:``,province:``},E.value=!0}function re(e){P.value=e,I.value={name:e.name,longitude:e.longitude==null?``:String(e.longitude),latitude:e.latitude==null?``:String(e.latitude),city:e.city||``,province:e.province||``},E.value=!0}function ie(){F.value={longitude:I.value.longitude,latitude:I.value.latitude},N.value=!1,M.value=!0}function V(){N.value=!1,o(()=>{window.setTimeout(()=>{N.value=!0},800)})}function ae(){N.value=!1}function oe(){if(!F.value.longitude||!F.value.latitude){T.warning(`请先在地图上选点`);return}I.value.longitude=F.value.longitude,I.value.latitude=F.value.latitude,M.value=!1}async function se(){if(!I.value.name||!I.value.longitude||!I.value.latitude){T.warning(`请填写高校名称与经纬度`);return}let e={name:I.value.name.trim(),longitude:Number(I.value.longitude),latitude:Number(I.value.latitude),city:I.value.city||null,province:I.value.province||null};P.value?await k(P.value.id,e):await j(e),T.success(`已保存`),E.value=!1,await L()}async function ce(e){await w.confirm(`确定要删除高校「${e.name}」?`,`确认删除`,{type:`warning`}),await A(e.id),T.success(`已删除`),await L()}return D(L),(n,o)=>{let g=f(`el-button`),w=f(`el-input`),T=f(`el-option`),D=f(`el-select`),O=f(`el-table-column`),k=f(`el-table`),A=f(`el-pagination`),j=f(`el-card`),H=f(`el-form-item`),Z=f(`el-icon`),Q=f(`el-col`),le=f(`el-row`),ue=f(`el-form`),$=f(`el-dialog`),de=d(`loading`);return i(),e(_,null,[m(`div`,W,[m(`div`,G,[o[15]||=m(`h1`,{class:`page-title`},`高校坐标库`,-1),r(g,{type:`primary`,size:`small`,class:`btn-create`,onClick:B},{default:p(()=>[...o[14]||=[u(`新增高校`,-1)]]),_:1})]),r(j,{shadow:`never`,class:`admin-list-card`},{default:p(()=>[o[20]||=m(`p`,{class:`list-page-hint`},`长三角主要高校经纬度预置录入,供雷达地图映射使用。`,-1),m(`div`,K,[r(w,{modelValue:y.value,"onUpdate:modelValue":o[0]||=e=>y.value=e,placeholder:`搜索高校名称、经纬度…`,clearable:``,class:`filter-search`,onKeyup:ee(z,[`enter`])},null,8,[`modelValue`]),r(D,{modelValue:S.value,"onUpdate:modelValue":o[1]||=e=>S.value=e,placeholder:`地区`,clearable:``,class:`filter-select-wide`},{default:p(()=>[(i(),e(_,null,te(ne,e=>r(T,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`]),r(g,{type:`primary`,onClick:z},{default:p(()=>[...o[16]||=[u(`搜索`,-1)]]),_:1}),r(g,{onClick:R},{default:p(()=>[...o[17]||=[u(`重置`,-1)]]),_:1})]),v((i(),x(k,{data:s.value,"row-key":`id`},{default:p(()=>[r(O,{prop:`name`,label:`高校名称`,"min-width":`180`}),r(O,{label:`经度`,width:`120`},{default:p(({row:e})=>[u(b(e.longitude??`—`),1)]),_:1}),r(O,{label:`纬度`,width:`120`},{default:p(({row:e})=>[u(b(e.latitude??`—`),1)]),_:1}),r(O,{prop:`city`,label:`城市`,width:`100`}),r(O,{label:`操作`,width:`160`,fixed:`right`},{default:p(({row:e})=>[m(`div`,q,[r(g,{class:`btn-action-secondary`,onClick:t=>re(e)},{default:p(()=>[...o[18]||=[u(`编辑`,-1)]]),_:1},8,[`onClick`]),r(g,{class:`btn-action-secondary`,onClick:t=>ce(e)},{default:p(()=>[...o[19]||=[u(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[de,a.value]]),c.value.total>0?(i(),e(`div`,J,[r(A,{layout:`total, prev, pager, next`,total:c.value.total,"page-size":c.value.per_page,"current-page":h.value,onCurrentChange:o[2]||=e=>{h.value=e,L()}},null,8,[`total`,`page-size`,`current-page`])])):l(``,!0)]),_:1})]),r($,{modelValue:E.value,"onUpdate:modelValue":o[9]||=e=>E.value=e,title:P.value?`编辑高校`:`新增高校`,width:`480px`,"destroy-on-close":``},{footer:p(()=>[r(g,{onClick:o[8]||=e=>E.value=!1},{default:p(()=>[...o[22]||=[u(`取消`,-1)]]),_:1}),r(g,{type:`primary`,onClick:se},{default:p(()=>[...o[23]||=[u(`保存`,-1)]]),_:1})]),default:p(()=>[r(ue,{"label-position":`top`},{default:p(()=>[r(H,{label:`高校名称`,required:``},{default:p(()=>[r(w,{modelValue:I.value.name,"onUpdate:modelValue":o[3]||=e=>I.value.name=e,placeholder:`如:复旦大学`},null,8,[`modelValue`])]),_:1}),r(H,{label:`经纬度`,required:``},{default:p(()=>[m(`div`,Y,[r(w,{modelValue:I.value.longitude,"onUpdate:modelValue":o[4]||=e=>I.value.longitude=e,placeholder:`经度`,class:`coord-input`},null,8,[`modelValue`]),r(w,{modelValue:I.value.latitude,"onUpdate:modelValue":o[5]||=e=>I.value.latitude=e,placeholder:`纬度`,class:`coord-input`},null,8,[`modelValue`]),r(g,{class:`pick-map-btn`,onClick:ie},{default:p(()=>[r(Z,null,{default:p(()=>[r(t(C))]),_:1}),o[21]||=u(` 地图选点 `,-1)]),_:1})])]),_:1}),r(le,{gutter:12},{default:p(()=>[r(Q,{span:12},{default:p(()=>[r(H,{label:`省份`},{default:p(()=>[r(w,{modelValue:I.value.province,"onUpdate:modelValue":o[6]||=e=>I.value.province=e,placeholder:`如:上海`},null,8,[`modelValue`])]),_:1})]),_:1}),r(Q,{span:12},{default:p(()=>[r(H,{label:`城市`},{default:p(()=>[r(w,{modelValue:I.value.city,"onUpdate:modelValue":o[7]||=e=>I.value.city=e,placeholder:`如:上海`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`]),r($,{modelValue:M.value,"onUpdate:modelValue":o[13]||=e=>M.value=e,class:`map-pick-dialog`,title:`地图选点`,width:`720px`,"destroy-on-close":``,"append-to-body":``,"align-center":``,onOpened:V,onClosed:ae},{footer:p(()=>[r(g,{onClick:o[12]||=e=>M.value=!1},{default:p(()=>[...o[24]||=[u(`取消`,-1)]]),_:1}),r(g,{type:`primary`,onClick:oe},{default:p(()=>[...o[25]||=[u(`确定`,-1)]]),_:1})]),default:p(()=>[F.value.longitude&&F.value.latitude?(i(),e(`p`,X,` 当前选点:`+b(F.value.longitude)+`,`+b(F.value.latitude),1)):l(``,!0),M.value&&N.value?(i(),x(U,{key:1,longitude:F.value.longitude,"onUpdate:longitude":o[10]||=e=>F.value.longitude=e,latitude:F.value.latitude,"onUpdate:latitude":o[11]||=e=>F.value.latitude=e,"default-keyword":I.value.name,height:400},null,8,[`longitude`,`latitude`,`default-keyword`])):l(``,!0)]),_:1},8,[`modelValue`])],64)}}}),[[`__scopeId`,`data-v-053ddb42`]]);export{Z as default}; \ No newline at end of file diff --git a/public/admin/assets/users-BE9HtqQW.js b/public/admin/assets/users-BBYvhj2V.js similarity index 83% rename from public/admin/assets/users-BE9HtqQW.js rename to public/admin/assets/users-BBYvhj2V.js index 71d5e9a..5512adb 100644 --- a/public/admin/assets/users-BE9HtqQW.js +++ b/public/admin/assets/users-BBYvhj2V.js @@ -1 +1 @@ -import{r as e}from"./index-jb05DpEw.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}; \ No newline at end of file +import{r as e}from"./index-DTIMLswB.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}; \ No newline at end of file diff --git a/public/admin/assets/users-Co7RlyBg.js b/public/admin/assets/users-BKqYi4zs.js similarity index 96% rename from public/admin/assets/users-Co7RlyBg.js rename to public/admin/assets/users-BKqYi4zs.js index baf492e..3776928 100644 --- a/public/admin/assets/users-Co7RlyBg.js +++ b/public/admin/assets/users-BKqYi4zs.js @@ -1 +1 @@ -import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as s,Xt as c,Y as l,at as u,b as d,d as f,ht as p,m,ot as h,q as g,tn as _,x as v}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as y,l as b}from"./index-jb05DpEw.js";import{t as x}from"./usePageLoad-DFTLo_Lv.js";import{r as S}from"./admin-list-CBoToEFo.js";import{a as C,i as w,n as T,r as E,t as D}from"./users-BE9HtqQW.js";import{i as O}from"./roles-DMG09nlu.js";var k={class:`list-page`},A={class:`page-header`},j={class:`list-filter-bar`},M={class:`table-row-actions`},N={class:`list-pager`},P=n({__name:`index`,setup(n){let P=p(!1),F=p([]),I=p({current_page:1,per_page:20,total:0}),L=p(``),R=p(1),z=p([]),B=p(!1),V=p(null),H=p({username:``,password:``,real_name:``,mobile:``,email:``,status:1,role_ids:[]});async function U(){P.value=!0;try{let e=await E({page:R.value,page_size:I.value.per_page,keyword:L.value||void 0});F.value=e.items,I.value=e.meta}finally{P.value=!1}}async function W(){z.value=(await O({page:1,page_size:200,status:1})).items.map(e=>({id:e.id,name:e.name}))}function G(){V.value=null,H.value={username:``,password:``,real_name:``,mobile:``,email:``,status:1,role_ids:[]},B.value=!0}function K(e){V.value=e,H.value={username:e.username,password:``,real_name:e.real_name||``,mobile:e.mobile||``,email:e.email||``,status:e.status,role_ids:e.roles?.map(e=>e.id)||[]},B.value=!0}async function q(){if(!V.value&&!H.value.password){b.warning(`请设置初始密码`);return}V.value?(await C(V.value.id,{real_name:H.value.real_name||null,mobile:H.value.mobile||null,email:H.value.email||null,status:H.value.status,role_ids:H.value.role_ids}),H.value.password&&await w(V.value.id,H.value.password)):await D({username:H.value.username,password:H.value.password,real_name:H.value.real_name||null,mobile:H.value.mobile||null,email:H.value.email||null,status:H.value.status,role_ids:H.value.role_ids}),b.success(`已保存`),B.value=!1,await U()}async function J(e){await y.confirm(`确定删除管理员「${e.username}」?`,`提示`,{type:`warning`}),await T(e.id),b.success(`已删除`),await U()}function Y(){R.value=1,U()}function X(){L.value=``,R.value=1,U()}return x(async()=>{await W(),await U()}),(n,p)=>{let y=l(`el-button`),b=l(`el-input`),x=l(`el-table-column`),C=l(`el-tag`),w=l(`el-table`),T=l(`el-pagination`),E=l(`el-card`),D=l(`el-form-item`),O=l(`el-switch`),W=l(`el-option`),Z=l(`el-select`),Q=l(`el-form`),$=l(`el-dialog`),ee=s(`loading`);return i(),e(m,null,[d(`div`,k,[d(`div`,A,[p[12]||=d(`h1`,{class:`page-title`},`管理员`,-1),r(y,{type:`primary`,size:`small`,class:`btn-create`,onClick:G},{default:u(()=>[...p[11]||=[o(`新增管理员`,-1)]]),_:1})]),r(E,{shadow:`never`,class:`admin-list-card`},{default:u(()=>[d(`div`,j,[r(b,{modelValue:L.value,"onUpdate:modelValue":p[0]||=e=>L.value=e,placeholder:`账号/姓名/手机`,clearable:``,class:`filter-search`,onKeyup:f(Y,[`enter`])},null,8,[`modelValue`]),r(y,{type:`primary`,onClick:Y},{default:u(()=>[...p[13]||=[o(`搜索`,-1)]]),_:1}),r(y,{onClick:X},{default:u(()=>[...p[14]||=[o(`重置`,-1)]]),_:1})]),h((i(),v(w,{data:F.value,"row-key":`id`},{default:u(()=>[r(x,{prop:`username`,label:`账号`,width:`140`}),r(x,{prop:`real_name`,label:`姓名`,width:`120`}),r(x,{prop:`mobile`,label:`手机`,width:`130`}),r(x,{label:`状态`,width:`90`,align:`center`},{default:u(({row:e})=>[d(`span`,{class:c([`status-badge`,t(S)(e.status)])},_(e.status===1?`启用`:`停用`),3)]),_:1}),r(x,{prop:`last_login_at`,label:`最近登录`,"min-width":`180`}),r(x,{label:`角色`,"min-width":`160`},{default:u(({row:t})=>[(i(!0),e(m,null,g(t.roles,e=>(i(),v(C,{key:e.id,size:`small`,style:{"margin-right":`4px`}},{default:u(()=>[o(_(e.name),1)]),_:2},1024))),128))]),_:1}),r(x,{label:`操作`,width:`160`,fixed:`right`},{default:u(({row:e})=>[d(`div`,M,[r(y,{class:`btn-action-secondary`,onClick:t=>K(e)},{default:u(()=>[...p[15]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),r(y,{class:`btn-action-secondary`,onClick:t=>J(e)},{default:u(()=>[...p[16]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[ee,P.value]]),d(`div`,N,[r(T,{"current-page":R.value,"onUpdate:currentPage":p[1]||=e=>R.value=e,layout:`total, prev, pager, next`,total:I.value.total,"page-size":I.value.per_page,onCurrentChange:U},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r($,{modelValue:B.value,"onUpdate:modelValue":p[10]||=e=>B.value=e,title:V.value?`编辑管理员`:`新增管理员`,width:`520px`},{footer:u(()=>[r(y,{onClick:p[9]||=e=>B.value=!1},{default:u(()=>[...p[17]||=[o(`取消`,-1)]]),_:1}),r(y,{type:`primary`,onClick:q},{default:u(()=>[...p[18]||=[o(`保存`,-1)]]),_:1})]),default:u(()=>[r(Q,{"label-width":`88px`},{default:u(()=>[V.value?a(``,!0):(i(),v(D,{key:0,label:`账号`},{default:u(()=>[r(b,{modelValue:H.value.username,"onUpdate:modelValue":p[2]||=e=>H.value.username=e},null,8,[`modelValue`])]),_:1})),r(D,{label:V.value?`重置密码`:`初始密码`},{default:u(()=>[r(b,{modelValue:H.value.password,"onUpdate:modelValue":p[3]||=e=>H.value.password=e,type:`password`,"show-password":``,placeholder:`可留空`},null,8,[`modelValue`])]),_:1},8,[`label`]),r(D,{label:`姓名`},{default:u(()=>[r(b,{modelValue:H.value.real_name,"onUpdate:modelValue":p[4]||=e=>H.value.real_name=e},null,8,[`modelValue`])]),_:1}),r(D,{label:`手机`},{default:u(()=>[r(b,{modelValue:H.value.mobile,"onUpdate:modelValue":p[5]||=e=>H.value.mobile=e},null,8,[`modelValue`])]),_:1}),r(D,{label:`邮箱`},{default:u(()=>[r(b,{modelValue:H.value.email,"onUpdate:modelValue":p[6]||=e=>H.value.email=e},null,8,[`modelValue`])]),_:1}),r(D,{label:`状态`},{default:u(()=>[r(O,{modelValue:H.value.status,"onUpdate:modelValue":p[7]||=e=>H.value.status=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1}),r(D,{label:`角色`},{default:u(()=>[r(Z,{modelValue:H.value.role_ids,"onUpdate:modelValue":p[8]||=e=>H.value.role_ids=e,multiple:``,filterable:``,style:{width:`100%`}},{default:u(()=>[(i(!0),e(m,null,g(z.value,e=>(i(),v(W,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`])],64)}}});export{P as default}; \ No newline at end of file +import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as s,Xt as c,Y as l,at as u,b as d,d as f,ht as p,m,ot as h,q as g,tn as _,x as v}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as y,l as b}from"./index-DTIMLswB.js";import{t as x}from"./usePageLoad-DFTLo_Lv.js";import{r as S}from"./admin-list-CBoToEFo.js";import{a as C,i as w,n as T,r as E,t as D}from"./users-BBYvhj2V.js";import{i as O}from"./roles-BLfXxSGi.js";var k={class:`list-page`},A={class:`page-header`},j={class:`list-filter-bar`},M={class:`table-row-actions`},N={class:`list-pager`},P=n({__name:`index`,setup(n){let P=p(!1),F=p([]),I=p({current_page:1,per_page:20,total:0}),L=p(``),R=p(1),z=p([]),B=p(!1),V=p(null),H=p({username:``,password:``,real_name:``,mobile:``,email:``,status:1,role_ids:[]});async function U(){P.value=!0;try{let e=await E({page:R.value,page_size:I.value.per_page,keyword:L.value||void 0});F.value=e.items,I.value=e.meta}finally{P.value=!1}}async function W(){z.value=(await O({page:1,page_size:200,status:1})).items.map(e=>({id:e.id,name:e.name}))}function G(){V.value=null,H.value={username:``,password:``,real_name:``,mobile:``,email:``,status:1,role_ids:[]},B.value=!0}function K(e){V.value=e,H.value={username:e.username,password:``,real_name:e.real_name||``,mobile:e.mobile||``,email:e.email||``,status:e.status,role_ids:e.roles?.map(e=>e.id)||[]},B.value=!0}async function q(){if(!V.value&&!H.value.password){b.warning(`请设置初始密码`);return}V.value?(await C(V.value.id,{real_name:H.value.real_name||null,mobile:H.value.mobile||null,email:H.value.email||null,status:H.value.status,role_ids:H.value.role_ids}),H.value.password&&await w(V.value.id,H.value.password)):await D({username:H.value.username,password:H.value.password,real_name:H.value.real_name||null,mobile:H.value.mobile||null,email:H.value.email||null,status:H.value.status,role_ids:H.value.role_ids}),b.success(`已保存`),B.value=!1,await U()}async function J(e){await y.confirm(`确定删除管理员「${e.username}」?`,`提示`,{type:`warning`}),await T(e.id),b.success(`已删除`),await U()}function Y(){R.value=1,U()}function X(){L.value=``,R.value=1,U()}return x(async()=>{await W(),await U()}),(n,p)=>{let y=l(`el-button`),b=l(`el-input`),x=l(`el-table-column`),C=l(`el-tag`),w=l(`el-table`),T=l(`el-pagination`),E=l(`el-card`),D=l(`el-form-item`),O=l(`el-switch`),W=l(`el-option`),Z=l(`el-select`),Q=l(`el-form`),$=l(`el-dialog`),ee=s(`loading`);return i(),e(m,null,[d(`div`,k,[d(`div`,A,[p[12]||=d(`h1`,{class:`page-title`},`管理员`,-1),r(y,{type:`primary`,size:`small`,class:`btn-create`,onClick:G},{default:u(()=>[...p[11]||=[o(`新增管理员`,-1)]]),_:1})]),r(E,{shadow:`never`,class:`admin-list-card`},{default:u(()=>[d(`div`,j,[r(b,{modelValue:L.value,"onUpdate:modelValue":p[0]||=e=>L.value=e,placeholder:`账号/姓名/手机`,clearable:``,class:`filter-search`,onKeyup:f(Y,[`enter`])},null,8,[`modelValue`]),r(y,{type:`primary`,onClick:Y},{default:u(()=>[...p[13]||=[o(`搜索`,-1)]]),_:1}),r(y,{onClick:X},{default:u(()=>[...p[14]||=[o(`重置`,-1)]]),_:1})]),h((i(),v(w,{data:F.value,"row-key":`id`},{default:u(()=>[r(x,{prop:`username`,label:`账号`,width:`140`}),r(x,{prop:`real_name`,label:`姓名`,width:`120`}),r(x,{prop:`mobile`,label:`手机`,width:`130`}),r(x,{label:`状态`,width:`90`,align:`center`},{default:u(({row:e})=>[d(`span`,{class:c([`status-badge`,t(S)(e.status)])},_(e.status===1?`启用`:`停用`),3)]),_:1}),r(x,{prop:`last_login_at`,label:`最近登录`,"min-width":`180`}),r(x,{label:`角色`,"min-width":`160`},{default:u(({row:t})=>[(i(!0),e(m,null,g(t.roles,e=>(i(),v(C,{key:e.id,size:`small`,style:{"margin-right":`4px`}},{default:u(()=>[o(_(e.name),1)]),_:2},1024))),128))]),_:1}),r(x,{label:`操作`,width:`160`,fixed:`right`},{default:u(({row:e})=>[d(`div`,M,[r(y,{class:`btn-action-secondary`,onClick:t=>K(e)},{default:u(()=>[...p[15]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),r(y,{class:`btn-action-secondary`,onClick:t=>J(e)},{default:u(()=>[...p[16]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[ee,P.value]]),d(`div`,N,[r(T,{"current-page":R.value,"onUpdate:currentPage":p[1]||=e=>R.value=e,layout:`total, prev, pager, next`,total:I.value.total,"page-size":I.value.per_page,onCurrentChange:U},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r($,{modelValue:B.value,"onUpdate:modelValue":p[10]||=e=>B.value=e,title:V.value?`编辑管理员`:`新增管理员`,width:`520px`},{footer:u(()=>[r(y,{onClick:p[9]||=e=>B.value=!1},{default:u(()=>[...p[17]||=[o(`取消`,-1)]]),_:1}),r(y,{type:`primary`,onClick:q},{default:u(()=>[...p[18]||=[o(`保存`,-1)]]),_:1})]),default:u(()=>[r(Q,{"label-width":`88px`},{default:u(()=>[V.value?a(``,!0):(i(),v(D,{key:0,label:`账号`},{default:u(()=>[r(b,{modelValue:H.value.username,"onUpdate:modelValue":p[2]||=e=>H.value.username=e},null,8,[`modelValue`])]),_:1})),r(D,{label:V.value?`重置密码`:`初始密码`},{default:u(()=>[r(b,{modelValue:H.value.password,"onUpdate:modelValue":p[3]||=e=>H.value.password=e,type:`password`,"show-password":``,placeholder:`可留空`},null,8,[`modelValue`])]),_:1},8,[`label`]),r(D,{label:`姓名`},{default:u(()=>[r(b,{modelValue:H.value.real_name,"onUpdate:modelValue":p[4]||=e=>H.value.real_name=e},null,8,[`modelValue`])]),_:1}),r(D,{label:`手机`},{default:u(()=>[r(b,{modelValue:H.value.mobile,"onUpdate:modelValue":p[5]||=e=>H.value.mobile=e},null,8,[`modelValue`])]),_:1}),r(D,{label:`邮箱`},{default:u(()=>[r(b,{modelValue:H.value.email,"onUpdate:modelValue":p[6]||=e=>H.value.email=e},null,8,[`modelValue`])]),_:1}),r(D,{label:`状态`},{default:u(()=>[r(O,{modelValue:H.value.status,"onUpdate:modelValue":p[7]||=e=>H.value.status=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1}),r(D,{label:`角色`},{default:u(()=>[r(Z,{modelValue:H.value.role_ids,"onUpdate:modelValue":p[8]||=e=>H.value.role_ids=e,multiple:``,filterable:``,style:{width:`100%`}},{default:u(()=>[(i(!0),e(m,null,g(z.value,e=>(i(),v(W,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`])],64)}}});export{P as default}; \ No newline at end of file diff --git a/public/admin/index.html b/public/admin/index.html index eb33c0e..5a73a87 100644 --- a/public/admin/index.html +++ b/public/admin/index.html @@ -11,7 +11,7 @@ rel="stylesheet" /> S-lake高校雷达网 - +