From 23d923e47a47eb8083968338ef1e9d1af477a292 Mon Sep 17 00:00:00 2001 From: ember <1279347317@qq.com> Date: Wed, 9 Apr 2025 23:48:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=9A=84=E5=BA=94=E7=94=A8URL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/css/313.72ba01cb.css | 1 + dist/css/446.fb11567f.css | 1 - dist/index.html | 2 +- dist/js/313.01eb1338.js | 2 ++ dist/js/446.0fdbb1cf.js | 2 -- dist/js/{app.02a1e6fa.js => app.2498c575.js} | 4 ++-- src/views/AppCenter.vue | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 dist/css/313.72ba01cb.css delete mode 100644 dist/css/446.fb11567f.css create mode 100644 dist/js/313.01eb1338.js delete mode 100644 dist/js/446.0fdbb1cf.js rename dist/js/{app.02a1e6fa.js => app.2498c575.js} (98%) diff --git a/dist/css/313.72ba01cb.css b/dist/css/313.72ba01cb.css new file mode 100644 index 0000000..545b90a --- /dev/null +++ b/dist/css/313.72ba01cb.css @@ -0,0 +1 @@ +.app-center[data-v-6f2956c2]{padding:40px 0;padding-top:80px;background-color:#f5f7fa;min-height:100vh}.container[data-v-6f2956c2]{max-width:1200px;margin:0 auto;padding:0 20px}.page-title[data-v-6f2956c2]{font-size:2rem;margin-bottom:2rem;color:#333;text-align:center;font-weight:600}.app-section[data-v-6f2956c2]{margin-bottom:3rem}.section-title[data-v-6f2956c2]{font-size:1.5rem;margin-bottom:1.5rem;color:#333;position:relative;padding-left:15px;font-weight:500}.section-title[data-v-6f2956c2]:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:5px;height:20px;background-color:#3273dc;border-radius:3px}.app-grid[data-v-6f2956c2]{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}.app-card[data-v-6f2956c2]{background-color:#fff;border-radius:10px;box-shadow:0 4px 6px rgba(0,0,0,.05),0 1px 3px rgba(0,0,0,.1);padding:20px;transition:all .3s ease;cursor:pointer;display:flex;flex-direction:column;align-items:center;text-align:center;position:relative}.app-card[data-v-6f2956c2]:hover{transform:translateY(-5px);box-shadow:0 10px 20px rgba(0,0,0,.08),0 6px 6px rgba(0,0,0,.12)}.app-icon[data-v-6f2956c2]{font-size:2.5rem;margin-bottom:12px;display:flex;align-items:center;justify-content:center;width:65px;height:65px;background-color:#f0f7ff;border-radius:16px}.app-title-wrapper[data-v-6f2956c2]{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:8px}.recommend-tag[data-v-6f2956c2]{position:absolute;top:10px;right:10px;background-color:#f44336;color:#fff;font-size:.7rem;padding:3px 8px;border-radius:4px;display:inline-block;line-height:1.2;z-index:1;box-shadow:0 2px 4px rgba(0,0,0,.2)}.app-title[data-v-6f2956c2]{font-size:1.1rem;font-weight:600;margin-bottom:8px;color:#333}.app-description[data-v-6f2956c2]{font-size:.85rem;color:#666;line-height:1.4}@media(max-width:1024px){.app-grid[data-v-6f2956c2]{grid-template-columns:repeat(3,1fr)}}@media(max-width:768px){.app-grid[data-v-6f2956c2]{grid-template-columns:repeat(2,1fr)}.page-title[data-v-6f2956c2]{font-size:1.8rem}.section-title[data-v-6f2956c2]{font-size:1.3rem}}@media(max-width:480px){.app-card[data-v-6f2956c2]{padding:15px}.app-icon[data-v-6f2956c2]{width:55px;height:55px;font-size:2.2rem}.app-title[data-v-6f2956c2]{font-size:1rem}.app-description[data-v-6f2956c2]{font-size:.8rem}} \ No newline at end of file diff --git a/dist/css/446.fb11567f.css b/dist/css/446.fb11567f.css deleted file mode 100644 index 582fda9..0000000 --- a/dist/css/446.fb11567f.css +++ /dev/null @@ -1 +0,0 @@ -.app-center[data-v-9301a948]{padding:40px 0;padding-top:80px;background-color:#f5f7fa;min-height:100vh}.container[data-v-9301a948]{max-width:1200px;margin:0 auto;padding:0 20px}.page-title[data-v-9301a948]{font-size:2rem;margin-bottom:2rem;color:#333;text-align:center;font-weight:600}.app-section[data-v-9301a948]{margin-bottom:3rem}.section-title[data-v-9301a948]{font-size:1.5rem;margin-bottom:1.5rem;color:#333;position:relative;padding-left:15px;font-weight:500}.section-title[data-v-9301a948]:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:5px;height:20px;background-color:#3273dc;border-radius:3px}.app-grid[data-v-9301a948]{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}.app-card[data-v-9301a948]{background-color:#fff;border-radius:10px;box-shadow:0 4px 6px rgba(0,0,0,.05),0 1px 3px rgba(0,0,0,.1);padding:20px;transition:all .3s ease;cursor:pointer;display:flex;flex-direction:column;align-items:center;text-align:center;position:relative}.app-card[data-v-9301a948]:hover{transform:translateY(-5px);box-shadow:0 10px 20px rgba(0,0,0,.08),0 6px 6px rgba(0,0,0,.12)}.app-icon[data-v-9301a948]{font-size:2.5rem;margin-bottom:12px;display:flex;align-items:center;justify-content:center;width:65px;height:65px;background-color:#f0f7ff;border-radius:16px}.app-title-wrapper[data-v-9301a948]{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:8px}.recommend-tag[data-v-9301a948]{position:absolute;top:10px;right:10px;background-color:#f44336;color:#fff;font-size:.7rem;padding:3px 8px;border-radius:4px;display:inline-block;line-height:1.2;z-index:1;box-shadow:0 2px 4px rgba(0,0,0,.2)}.app-title[data-v-9301a948]{font-size:1.1rem;font-weight:600;margin-bottom:8px;color:#333}.app-description[data-v-9301a948]{font-size:.85rem;color:#666;line-height:1.4}@media(max-width:1024px){.app-grid[data-v-9301a948]{grid-template-columns:repeat(3,1fr)}}@media(max-width:768px){.app-grid[data-v-9301a948]{grid-template-columns:repeat(2,1fr)}.page-title[data-v-9301a948]{font-size:1.8rem}.section-title[data-v-9301a948]{font-size:1.3rem}}@media(max-width:480px){.app-card[data-v-9301a948]{padding:15px}.app-icon[data-v-9301a948]{width:55px;height:55px;font-size:2.2rem}.app-title[data-v-9301a948]{font-size:1rem}.app-description[data-v-9301a948]{font-size:.8rem}} \ No newline at end of file diff --git a/dist/index.html b/dist/index.html index 27bce22..f5cb3ce 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1 +1 @@ -
给你喜欢的课程打个分!
',4)])),(0,c.Lk)("div",{class:"app-card",onClick:a[1]||(a[1]=p=>L.openUrl("https://oj.xn--xhq44jb2fzpc.com"))},a[10]||(a[10]=[(0,c.Lk)("div",{class:"app-icon"},"💻",-1),(0,c.Lk)("div",{class:"app-title-wrapper"},[(0,c.Lk)("h3",{class:"app-title"},"OJ题库")],-1),(0,c.Lk)("p",{class:"app-description"},"收录了NEU OJ的所有真题,方便分类标记与进度复盘",-1)]))])]),(0,c.Lk)("div",n,[a[16]||(a[16]=(0,c.Lk)("h2",{class:"section-title"},"实用工具",-1)),(0,c.Lk)("div",d,[(0,c.Lk)("div",{class:"app-card",onClick:a[2]||(a[2]=p=>L.openUrl("http://www.momofish.top/"))},a[12]||(a[12]=[(0,c.Fv)('推荐马原、毛概等刷题与复习工具,含大量真题,助力考试备考
',4)])),(0,c.Lk)("div",{class:"app-card",onClick:a[3]||(a[3]=p=>L.openUrl("https://www.neumathe.cn"))},a[13]||(a[13]=[(0,c.Lk)("div",{class:"app-icon"},"📖",-1),(0,c.Lk)("div",{class:"app-title-wrapper"},[(0,c.Lk)("h3",{class:"app-title"},"数学刷题平台")],-1),(0,c.Lk)("p",{class:"app-description"},"收录了高数、线代、概率论等机考真题",-1)])),(0,c.Lk)("div",{class:"app-card",onClick:a[4]||(a[4]=p=>L.openUrl("http://phy.neumathe.cn/#/"))},a[14]||(a[14]=[(0,c.Lk)("div",{class:"app-icon"},"🔬",-1),(0,c.Lk)("div",{class:"app-title-wrapper"},[(0,c.Lk)("h3",{class:"app-title"},"大学物理实验数据处理系统")],-1),(0,c.Lk)("p",{class:"app-description"},"支持多个实验报告一键生成,提供数据处理与分析",-1)])),(0,c.Lk)("div",{class:"app-card",onClick:a[5]||(a[5]=p=>L.openUrl("http://cal.denglin.icu/"))},a[15]||(a[15]=[(0,c.Lk)("div",{class:"app-icon"},"🔍",-1),(0,c.Lk)("div",{class:"app-title-wrapper"},[(0,c.Lk)("h3",{class:"app-title"},"计算机学院保研综测计算器")],-1),(0,c.Lk)("p",{class:"app-description"},"计院保研综测分数在线计算",-1)]))])]),(0,c.Lk)("div",r,[a[20]||(a[20]=(0,c.Lk)("h2",{class:"section-title"},"学校官方工具",-1)),(0,c.Lk)("div",o,[(0,c.Lk)("div",{class:"app-card",onClick:a[6]||(a[6]=p=>L.openUrl("https://webvpn.neu.edu.cn/"))},a[17]||(a[17]=[(0,c.Lk)("div",{class:"app-icon"},"🌍",-1),(0,c.Lk)("div",{class:"app-title-wrapper"},[(0,c.Lk)("h3",{class:"app-title"},"WebVPN")],-1),(0,c.Lk)("p",{class:"app-description"},"校外访问校园内网资源",-1)])),(0,c.Lk)("div",{class:"app-card",onClick:a[7]||(a[7]=p=>L.openUrl("https://ehall.neu.edu.cn/db_portal/guide?id=2325B038-9B8F-4F64-9D46-7B9C649C79FB"))},a[18]||(a[18]=[(0,c.Lk)("div",{class:"app-icon"},"📄",-1),(0,c.Lk)("div",{class:"app-title-wrapper"},[(0,c.Lk)("h3",{class:"app-title"},"本科生电子成绩单申请")],-1),(0,c.Lk)("p",{class:"app-description"},"在线申请电子成绩单",-1)])),(0,c.Lk)("div",{class:"app-card",onClick:a[8]||(a[8]=p=>L.openUrl("http://www.lib.neu.edu.cn/index.html"))},a[19]||(a[19]=[(0,c.Lk)("div",{class:"app-icon"},"📘",-1),(0,c.Lk)("div",{class:"app-title-wrapper"},[(0,c.Lk)("h3",{class:"app-title"},"东北大学图书馆资源平台")],-1),(0,c.Lk)("p",{class:"app-description"},"下载文献、图书、期刊等资源",-1)]))])])])])}var v=s(3070),L={name:"AppCenter",components:{NavBar:v.A},created(){document.title="应用中心 - NEU小站"},methods:{openUrl(p){window.open(p,"_blank")}}},h=s(1241);const w=(0,h.A)(L,[["render",k],["__scopeId","data-v-6f2956c2"]]);var f=w}}]); +//# sourceMappingURL=313.01eb1338.js.map \ No newline at end of file diff --git a/dist/js/446.0fdbb1cf.js b/dist/js/446.0fdbb1cf.js deleted file mode 100644 index 4fb2526..0000000 --- a/dist/js/446.0fdbb1cf.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self["webpackChunknewfront"]=self["webpackChunknewfront"]||[]).push([[446],{7446:function(a,p,s){s.r(p),s.d(p,{default:function(){return w}});var c=s(6768);const i={class:"app-center"},t={class:"container"},l={class:"app-section"},e={class:"app-grid"},n={class:"app-section"},d={class:"app-grid"},r={class:"app-section"},o={class:"app-grid"};function k(a,p,s,k,v,L){const h=(0,c.g2)("NavBar");return(0,c.uX)(),(0,c.CE)("div",i,[(0,c.bF)(h),(0,c.Lk)("div",t,[p[21]||(p[21]=(0,c.Lk)("h1",{class:"page-title"},"应用中心",-1)),(0,c.Lk)("div",l,[p[11]||(p[11]=(0,c.Lk)("h2",{class:"section-title"},"NEU小站官方应用",-1)),(0,c.Lk)("div",e,[(0,c.Lk)("div",{class:"app-card",onClick:p[0]||(p[0]=a=>L.openUrl("https://course.xn--xhq44jb2fzpc.com"))},p[9]||(p[9]=[(0,c.Fv)('推荐给你喜欢的课程打个分!
',4)])),(0,c.Lk)("div",{class:"app-card",onClick:p[1]||(p[1]=a=>L.openUrl("https://oj.xn--xhq44jb2fzpc.com"))},p[10]||(p[10]=[(0,c.Lk)("div",{class:"app-icon"},"💻",-1),(0,c.Lk)("div",{class:"app-title-wrapper"},[(0,c.Lk)("h3",{class:"app-title"},"OJ题库")],-1),(0,c.Lk)("p",{class:"app-description"},"收录了NEU OJ的所有真题,方便分类标记与进度复盘",-1)]))])]),(0,c.Lk)("div",n,[p[16]||(p[16]=(0,c.Lk)("h2",{class:"section-title"},"实用工具",-1)),(0,c.Lk)("div",d,[(0,c.Lk)("div",{class:"app-card",onClick:p[2]||(p[2]=a=>L.openUrl("https://marxism.xn--xhq44jb2fzpc.com"))},p[12]||(p[12]=[(0,c.Fv)('推荐马原、毛概等刷题与复习工具,含大量真题,助力考试备考
',4)])),(0,c.Lk)("div",{class:"app-card",onClick:p[3]||(p[3]=a=>L.openUrl("https://www.neumathe.cn"))},p[13]||(p[13]=[(0,c.Lk)("div",{class:"app-icon"},"📖",-1),(0,c.Lk)("div",{class:"app-title-wrapper"},[(0,c.Lk)("h3",{class:"app-title"},"数学刷题平台")],-1),(0,c.Lk)("p",{class:"app-description"},"收录了高数、线代、概率论等机考真题",-1)])),(0,c.Lk)("div",{class:"app-card",onClick:p[4]||(p[4]=a=>L.openUrl("http://phy.neumathe.cn/#/"))},p[14]||(p[14]=[(0,c.Lk)("div",{class:"app-icon"},"🔬",-1),(0,c.Lk)("div",{class:"app-title-wrapper"},[(0,c.Lk)("h3",{class:"app-title"},"大学物理实验数据处理系统")],-1),(0,c.Lk)("p",{class:"app-description"},"支持多个实验报告一键生成,提供数据处理与分析",-1)])),(0,c.Lk)("div",{class:"app-card",onClick:p[5]||(p[5]=a=>L.openUrl("http://cal.denglin.icu/"))},p[15]||(p[15]=[(0,c.Lk)("div",{class:"app-icon"},"🔍",-1),(0,c.Lk)("div",{class:"app-title-wrapper"},[(0,c.Lk)("h3",{class:"app-title"},"计算机学院保研综测计算器")],-1),(0,c.Lk)("p",{class:"app-description"},"计院保研综测分数在线计算",-1)]))])]),(0,c.Lk)("div",r,[p[20]||(p[20]=(0,c.Lk)("h2",{class:"section-title"},"学校官方工具",-1)),(0,c.Lk)("div",o,[(0,c.Lk)("div",{class:"app-card",onClick:p[6]||(p[6]=a=>L.openUrl("https://webvpn.neu.edu.cn/"))},p[17]||(p[17]=[(0,c.Lk)("div",{class:"app-icon"},"🌍",-1),(0,c.Lk)("div",{class:"app-title-wrapper"},[(0,c.Lk)("h3",{class:"app-title"},"WebVPN")],-1),(0,c.Lk)("p",{class:"app-description"},"校外访问校园内网资源",-1)])),(0,c.Lk)("div",{class:"app-card",onClick:p[7]||(p[7]=a=>L.openUrl("https://ehall.neu.edu.cn/db_portal/guide?id=2325B038-9B8F-4F64-9D46-7B9C649C79FB"))},p[18]||(p[18]=[(0,c.Lk)("div",{class:"app-icon"},"📄",-1),(0,c.Lk)("div",{class:"app-title-wrapper"},[(0,c.Lk)("h3",{class:"app-title"},"本科生电子成绩单申请")],-1),(0,c.Lk)("p",{class:"app-description"},"在线申请电子成绩单",-1)])),(0,c.Lk)("div",{class:"app-card",onClick:p[8]||(p[8]=a=>L.openUrl("http://www.lib.neu.edu.cn/index.html"))},p[19]||(p[19]=[(0,c.Lk)("div",{class:"app-icon"},"📘",-1),(0,c.Lk)("div",{class:"app-title-wrapper"},[(0,c.Lk)("h3",{class:"app-title"},"东北大学图书馆资源平台")],-1),(0,c.Lk)("p",{class:"app-description"},"下载文献、图书、期刊等资源",-1)]))])])])])}var v=s(3070),L={name:"AppCenter",components:{NavBar:v.A},created(){document.title="应用中心 - NEU小站"},methods:{openUrl(a){window.open(a,"_blank")}}},h=s(1241);const u=(0,h.A)(L,[["render",k],["__scopeId","data-v-9301a948"]]);var w=u}}]); -//# sourceMappingURL=446.0fdbb1cf.js.map \ No newline at end of file diff --git a/dist/js/app.02a1e6fa.js b/dist/js/app.2498c575.js similarity index 98% rename from dist/js/app.02a1e6fa.js rename to dist/js/app.2498c575.js index af3a13e..74f16c8 100644 --- a/dist/js/app.02a1e6fa.js +++ b/dist/js/app.2498c575.js @@ -1,2 +1,2 @@ -(function(){"use strict";var e={3070:function(e,t,n){n.d(t,{A:function(){return S}});var a=n(6768),s=n(4232),o=n(5130);const i={class:"navbar"},r={class:"container"},c={class:"navbar-brand"},l={class:"navbar-end"},d={key:0,class:"navbar-item user-dropdown",style:{padding:"0"}},u=["src","alt"],h={class:"user-nickname"},p={class:"dropdown-menu"},m={key:1,class:"navbar-item"},g={key:0,class:"activation-dialog"},f={class:"activation-dialog-content"},v={class:"activation-methods"},b={class:"activation-method"},k={class:"activation-method"};function y(e,t,n,y,C,w){const L=(0,a.g2)("router-link");return(0,a.uX)(),(0,a.CE)("nav",i,[(0,a.Lk)("div",r,[(0,a.Lk)("div",c,[(0,a.bF)(L,{to:"/",class:"navbar-logo"},{default:(0,a.k6)((()=>t[8]||(t[8]=[(0,a.Lk)("img",{src:"https://download.xn--xhq44jb2fzpc.com/images/logo-hd.png",alt:"NEU小站",class:"navbar-logo-img"},null,-1),(0,a.Lk)("span",null,"NEU小站",-1)]))),_:1}),(0,a.Lk)("div",{class:(0,s.C4)(["navbar-burger",{"is-active":C.isMenuActive}]),onClick:t[0]||(t[0]=(...e)=>w.toggleMenu&&w.toggleMenu(...e))},t[9]||(t[9]=[(0,a.Lk)("span",null,null,-1),(0,a.Lk)("span",null,null,-1),(0,a.Lk)("span",null,null,-1)]),2)]),(0,a.Lk)("div",{class:(0,s.C4)(["navbar-menu",{"is-active":C.isMenuActive}])},[(0,a.Lk)("div",l,[(0,a.bF)(L,{to:"/",class:"navbar-item"},{default:(0,a.k6)((()=>t[10]||(t[10]=[(0,a.eW)("首页")]))),_:1}),(0,a.bF)(L,{to:"/strategy",class:"navbar-item"},{default:(0,a.k6)((()=>t[11]||(t[11]=[(0,a.eW)("攻略指南")]))),_:1}),(0,a.bF)(L,{to:"/resources",class:"navbar-item"},{default:(0,a.k6)((()=>t[12]||(t[12]=[(0,a.eW)("资源共享")]))),_:1}),(0,a.bF)(L,{to:"/app",class:"navbar-item"},{default:(0,a.k6)((()=>t[13]||(t[13]=[(0,a.eW)("应用中心")]))),_:1}),(0,a.bF)(L,{to:"/about",class:"navbar-item"},{default:(0,a.k6)((()=>t[14]||(t[14]=[(0,a.eW)("关于")]))),_:1}),(0,a.bF)(L,{to:"/search",class:"navbar-item"},{default:(0,a.k6)((()=>t[15]||(t[15]=[(0,a.eW)("搜索")]))),_:1}),C.userInfo?((0,a.uX)(),(0,a.CE)("div",d,[(0,a.Lk)("div",{class:"user-info",onClick:t[1]||(t[1]=(...e)=>w.toggleDropdown&&w.toggleDropdown(...e))},[(0,a.Lk)("img",{src:C.userInfo.avatar_path,class:"user-avatar",alt:C.userInfo.nickname},null,8,u),(0,a.Lk)("span",h,(0,s.v_)(C.userInfo.nickname),1),(0,a.Lk)("span",{class:(0,s.C4)(["dropdown-arrow",{"is-active":C.isDropdownActive}])},"▼",2)]),(0,a.bo)((0,a.Lk)("div",p,[(0,a.Lk)("div",{class:"dropdown-item",onClick:t[2]||(t[2]=(...e)=>w.handleUserCenter&&w.handleUserCenter(...e))},"个人中心"),(0,a.Lk)("div",{class:"dropdown-item",onClick:t[3]||(t[3]=(...e)=>w.handleLogout&&w.handleLogout(...e))},"退出登录")],512),[[o.aG,C.isDropdownActive]])])):((0,a.uX)(),(0,a.CE)("div",m,[(0,a.Lk)("a",{class:"login-btn",onClick:t[4]||(t[4]=(...e)=>w.handleLogin&&w.handleLogin(...e))},"登录")]))])],2)]),C.showActivationDialog?((0,a.uX)(),(0,a.CE)("div",g,[(0,a.Lk)("div",f,[t[20]||(t[20]=(0,a.Lk)("h3",null,"账户激活",-1)),t[21]||(t[21]=(0,a.Lk)("p",null,"您的账户尚未激活,请选择以下方式进行激活:",-1)),(0,a.Lk)("div",v,[(0,a.Lk)("div",b,[t[16]||(t[16]=(0,a.Lk)("h4",null,"方式 1:NEU 校园网验证",-1)),t[17]||(t[17]=(0,a.Lk)("p",null,"请连接 NEU 校园网后点击下面的验证按钮(暂不支持秦皇岛分校)",-1)),(0,a.Lk)("button",{onClick:t[5]||(t[5]=(...e)=>w.handleNetworkVerify&&w.handleNetworkVerify(...e)),class:"verify-btn"},"校园网验证")]),(0,a.Lk)("div",k,[t[18]||(t[18]=(0,a.Lk)("h4",null,"方式 2:校园邮箱验证",-1)),t[19]||(t[19]=(0,a.Lk)("p",null,"使用 @stu.neu.edu.cn 或 @stu.neuq.edu.cn 后缀的校园邮箱验证",-1)),(0,a.Lk)("button",{onClick:t[6]||(t[6]=(...e)=>w.handleEmailVerify&&w.handleEmailVerify(...e)),class:"verify-btn"},"邮箱验证")])]),(0,a.Lk)("button",{onClick:t[7]||(t[7]=(...e)=>w.handleLogout&&w.handleLogout(...e)),class:"close-btn"},"退出登录")])])):(0,a.Q3)("",!0)])}n(4114);var C=n(8704),w=n(4373),L=n(6253),E=n(3932),A={name:"NavBar",data(){return{isMenuActive:!1,isDropdownActive:!1,userInfo:null,showActivationDialog:!1,isActivated:!1}},mounted(){this.checkLoginStatus()},methods:{handleLogin(){(0,E.A)().then((e=>{console.log(e),this.checkLoginStatus()})).catch((e=>{console.log(e)}))},toggleMenu(){this.isMenuActive=!this.isMenuActive},toggleDropdown(){this.isDropdownActive=!this.isDropdownActive},handleUserCenter(){this.isDropdownActive=!1,this.$router.push("/user-center")},handleLogout(){const e=window.location.hostname.includes("localhost")?"localhost":window.location.hostname.split(".").slice(-2).join(".");C.A.remove("token",{domain:e,path:"/"}),this.userInfo=null,window.location.reload()},checkLoginStatus(){const e=C.A.get("token");e&&w.A.get("https://newfront.xn--xhq44jb2fzpc.com/user/info",{headers:{Authorization:e}}).then((e=>{this.userInfo=e.data,this.isActivated=e.data.activated,this.isActivated||(this.showActivationDialog=!0)})).catch((e=>{console.log(e),this.userInfo=null}))},checkActivationStatus(e){},closeActivationDialog(){this.showActivationDialog=!1},handleNetworkVerify(){const e=C.A.get("token");e?w.A.get("https://userlogin.xn--xhq44jb2fzpc.com/qv",{headers:{Authorization:e}}).then((e=>{L.A.alert(e.data.message,"提示"),this.isActivated=!0,this.showActivationDialog=!1})).catch((e=>{e.response&&e.response.data?L.A.alert(`${e.response.data.message} 当前IP: ${e.response.data.ip||"未知"}`,"提示"):L.A.alert("验证失败,请稍后重试","提示")})):L.A.alert("您未登录,请先登录后操作!","提示")},handleEmailVerify(){const e=C.A.get("token");e?w.A.get("https://userlogin.xn--xhq44jb2fzpc.com/check-email",{headers:{Authorization:e}}).then((e=>{L.A.alert(e.data.message,"提示"),this.isActivated=!0,this.showActivationDialog=!1})).catch((t=>{t.response&&403===t.response.status?this.promptForCampusEmail(e):t.response&&t.response.data?L.A.alert(t.response.data.message||"发生未知错误,请稍后重试","提示"):L.A.alert("验证失败,请稍后重试","提示")})):L.A.alert("您未登录,请先登录后操作!","提示")},promptForCampusEmail(e){(0,L.A)({title:"校园邮箱验证",message:"请输入您的 @stu.neu.edu.cn 或 @stu.neuq.edu.cn 校园邮箱:",showInput:!0,inputPlaceholder:"请输入校园邮箱",confirmText:"确认",cancelText:"取消",cancel:!0}).then((({value:t})=>{t?t.endsWith("@stu.neu.edu.cn")||t.endsWith("@stu.neuq.edu.cn")?this.sendCampusVerificationEmail(t,e):L.A.alert("请输入有效的 @stu.neu.edu.cn 或 @stu.neuq.edu.cn 校园邮箱!","提示"):L.A.alert("邮箱不能为空","提示")})).catch((()=>{}))},sendCampusVerificationEmail(e,t){w.A.post("https://userlogin.xn--xhq44jb2fzpc.com/send-campus-verify",{campus_email:e},{headers:{Authorization:t,"Content-Type":"application/json"}}).then((t=>{L.A.alert(`验证邮件已发送至 ${e},请检查您的邮箱完成验证。`,"提示")})).catch((e=>{e.response&&e.response.data?L.A.alert(`发送验证邮件失败:${e.response.data.message}`,"提示"):L.A.alert("发送验证邮件失败,请稍后重试","提示")}))}}},I=n(1241);const M=(0,I.A)(A,[["render",y],["__scopeId","data-v-868bf484"]]);var S=M},3932:function(e,t,n){n.d(t,{A:function(){return I}});var a=n(5130),s=n(6768),o=n(4232);const i={key:0,class:"login-container"},r={class:"login-box"},c={class:"login-header"},l={class:"form-group"},d={class:"form-group"},u={class:"button-group"},h={class:"modal-content"},p={class:"modal-header"},m={class:"modal-body"},g={class:"captcha-instruction"},f={class:"form-group"},v={class:"modal-footer"},b={key:0,class:"loading-overlay"};function k(e,t,n,k,y,C){return n.visible?((0,s.uX)(),(0,s.CE)("div",i,[t[14]||(t[14]=(0,s.Lk)("div",{class:"login-overlay"},null,-1)),(0,s.Lk)("div",r,[(0,s.Lk)("div",c,[t[9]||(t[9]=(0,s.Lk)("h2",{class:"login-title"},"登录/注册",-1)),n.showClose?((0,s.uX)(),(0,s.CE)("button",{key:0,onClick:t[0]||(t[0]=(...e)=>C.handleClose&&C.handleClose(...e)),class:"close-btn"},"×")):(0,s.Q3)("",!0)]),(0,s.Lk)("form",{onSubmit:t[5]||(t[5]=(0,a.D$)(((...e)=>C.handleSubmit&&C.handleSubmit(...e)),["prevent"])),class:"login-form"},[(0,s.Lk)("div",l,[t[10]||(t[10]=(0,s.Lk)("label",{for:"email"},"邮箱",-1)),(0,s.bo)((0,s.Lk)("input",{type:"email",id:"email","onUpdate:modelValue":t[1]||(t[1]=e=>y.email=e),placeholder:"请输入邮箱地址",required:"",class:"form-input"},null,512),[[a.Jo,y.email]])]),(0,s.Lk)("div",d,[t[11]||(t[11]=(0,s.Lk)("label",{for:"password"},"密码",-1)),(0,s.bo)((0,s.Lk)("input",{type:"password",id:"password","onUpdate:modelValue":t[2]||(t[2]=e=>y.password=e),placeholder:"请输入密码",required:"",class:"form-input"},null,512),[[a.Jo,y.password]])]),y.message?((0,s.uX)(),(0,s.CE)("div",{key:0,class:(0,o.C4)(["message",{error:y.messageIsError,success:!y.messageIsError}])},(0,o.v_)(y.message),3)):(0,s.Q3)("",!0),(0,s.Lk)("div",u,[(0,s.Lk)("button",{type:"button",onClick:t[3]||(t[3]=(...e)=>C.login&&C.login(...e)),class:"btn btn-primary"},"登录"),(0,s.Lk)("button",{type:"button",onClick:t[4]||(t[4]=(...e)=>C.register&&C.register(...e)),class:"btn btn-secondary"},"注册")])],32)]),(0,s.Lk)("div",{class:(0,o.C4)(["modal",{show:y.showCaptchaModal}])},[(0,s.Lk)("div",h,[(0,s.Lk)("div",p,[t[12]||(t[12]=(0,s.Lk)("h3",null,"邮箱验证",-1)),(0,s.Lk)("button",{onClick:t[6]||(t[6]=(...e)=>C.closeCaptchaModal&&C.closeCaptchaModal(...e)),class:"close-btn"},"×")]),(0,s.Lk)("div",m,[(0,s.Lk)("p",g,(0,o.v_)(y.captchaInstruction),1),(0,s.Lk)("div",f,[(0,s.bo)((0,s.Lk)("input",{type:"text","onUpdate:modelValue":t[7]||(t[7]=e=>y.captchaCode=e),placeholder:"请输入验证码",class:"form-input"},null,512),[[a.Jo,y.captchaCode]])]),y.captchaMessage?((0,s.uX)(),(0,s.CE)("div",{key:0,class:(0,o.C4)(["captcha-message",{error:y.captchaMessageIsError,success:!y.captchaMessageIsError}])},(0,o.v_)(y.captchaMessage),3)):(0,s.Q3)("",!0)]),(0,s.Lk)("div",v,[(0,s.Lk)("button",{onClick:t[8]||(t[8]=(...e)=>C.verifyCaptcha&&C.verifyCaptcha(...e)),class:"btn btn-primary"},"验证")])])],2),y.loading?((0,s.uX)(),(0,s.CE)("div",b,[t[13]||(t[13]=(0,s.Lk)("div",{class:"spinner"},null,-1)),(0,s.Lk)("p",null,(0,o.v_)(y.loadingMessage),1)])):(0,s.Q3)("",!0)])):(0,s.Q3)("",!0)}var y=n(6253),C={name:"Login",props:{visible:{type:Boolean,default:!0},showClose:{type:Boolean,default:!1},onSuccess:{type:Function,default:null},onClose:{type:Function,default:null}},data(){return{email:"",password:"",message:"",messageIsError:!0,loading:!1,loadingMessage:"加载中...",showCaptchaModal:!1,captchaCode:"",captchaMessage:"",captchaMessageIsError:!0,captchaInstruction:"验证码已发送至您的邮箱,请在下方输入"}},methods:{async handleSubmit(){await this.login()},handleClose(){this.onClose?this.onClose():this.$emit("close")},async login(){if(!this.email||!this.password)return this.message="请输入邮箱和密码",void(this.messageIsError=!0);this.loading=!0,this.loadingMessage="登录中...";try{const e=await this.loginOrRegister(this.email,this.password,"login");"Login successful."===e.message?this.handleLoginSuccess(e):"User not registered."===e.message?(this.loading=!1,(0,y.A)({title:"邮箱未注册",message:'此邮箱没有注册。点击"发送"按钮将向您的邮箱发送注册验证码。',confirmText:"发送",cancelText:"取消",cancel:!0,closeOnClickOverlay:!0}).then((async()=>{await this.sendRegisterCode()})).catch((()=>{}))):"Invalid email or password."===e.message?(this.message="密码错误。",this.messageIsError=!0,this.loading=!1):(this.message=e.message||"登录失败,请重试。",this.messageIsError=!0,this.loading=!1)}catch(e){console.error("Error:",e),this.message="发生错误,请稍后重试。",this.messageIsError=!0,this.loading=!1}},async register(){if(!this.email||!this.password)return this.message="请输入邮箱和密码",void(this.messageIsError=!0);await this.sendRegisterCode()},async sendRegisterCode(){this.loading=!0,this.loadingMessage="发送验证码中...";try{const e=await this.loginOrRegister(this.email,this.password,"register");"Verification email sent."===e.message?(this.captchaInstruction="验证码已发送至您的邮箱,请在下方输入",this.captchaMessage="",this.captchaCode="",this.showCaptchaModal=!0):"A valid code has already been sent. Please try again later."===e.message?(this.captchaInstruction="您还有未验证的验证码,请查看邮箱并在下方输入",this.captchaMessage="",this.captchaCode="",this.showCaptchaModal=!0):"Email is already registered."===e.message?(this.message="此邮箱已注册。",this.messageIsError=!0):(this.message="发送验证码失败,请稍后重试。",this.messageIsError=!0),this.loading=!1}catch(e){console.error("Error:",e),this.message="发生错误,请稍后重试。",this.messageIsError=!0,this.loading=!1}},async verifyCaptcha(){if(!this.captchaCode)return this.captchaMessage="请输入验证码",void(this.captchaMessageIsError=!0);try{const e=await this.verifyRegisterCode(this.email,this.captchaCode);"User registered successfully."===e.message?(this.captchaMessage="验证成功!",this.captchaMessageIsError=!1,setTimeout((()=>{this.closeCaptchaModal(),this.handleSuccessfulRegistration()}),1500)):(this.captchaMessage="您的验证码不正确",this.captchaMessageIsError=!0)}catch(e){console.error("Error:",e),this.captchaMessage="验证过程中发生错误,请重试",this.captchaMessageIsError=!0}},closeCaptchaModal(){this.showCaptchaModal=!1,this.captchaCode="",this.captchaMessage=""},async handleSuccessfulRegistration(){this.message="注册成功!正在登录...",this.messageIsError=!1,this.loading=!0,this.loadingMessage="登录中...",await this.delay(1e3);try{const e=await this.loginOrRegister(this.email,this.password,"login");"Login successful."===e.message?this.handleLoginSuccess(e):(this.message="注册成功,但自动登录失败,请手动登录。",this.messageIsError=!0,this.loading=!1)}catch(e){console.error("Error during login after registration:",e),this.message="注册成功,但自动登录失败,请手动登录。",this.messageIsError=!0,this.loading=!1}},handleLoginSuccess(e){const t=e.token,n=window.location.hostname.includes("localhost")?"localhost":window.location.hostname.split(".").slice(-2).join(".");document.cookie=`token=${t}; max-age=86340; path=/; domain=${n}; secure; SameSite=Strict`,this.loading=!1,this.message="登录成功!正在加载中...",this.messageIsError=!1;const a={email:this.email,userId:e.id,token:e.token};this.onSuccess&&(this.onSuccess(a),window.location.reload()),this.$emit("login-success",a),this.onClose&&setTimeout((()=>{this.handleClose()}),3e3)},async loginOrRegister(e,t,n){const a="login"===n?"https://userlogin.xn--xhq44jb2fzpc.com/login":"https://userlogin.xn--xhq44jb2fzpc.com/register",s=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e,password:t})});return s.json()},async verifyRegisterCode(e,t){const n="https://userlogin.xn--xhq44jb2fzpc.com/verify-register-code",a=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e,code:t})});return a.json()},delay(e){return new Promise((t=>setTimeout(t,e)))}}},w=n(1241);const L=(0,w.A)(C,[["render",k],["__scopeId","data-v-df3716d8"]]);var E=L;const A=(e={})=>new Promise(((t,n)=>{const s=document.createElement("div");document.body.appendChild(s);const o=(0,a.Ef)(E,{...e,visible:!0,showClose:!0,onSuccess:e=>{t(e)},onClose:()=>{o.unmount(),document.body.removeChild(s)}});o.mount(s)}));A.withCallback=(e,t={})=>A({...t,onSuccess:t=>{e(t)}});var I=A},4699:function(e,t,n){var a=n(5130),s=n(6768);const o={id:"app"};function i(e,t){const n=(0,s.g2)("router-view");return(0,s.uX)(),(0,s.CE)("div",o,[(0,s.bF)(n)])}var r=n(1241);const c={},l=(0,r.A)(c,[["render",i]]);var d=l,u=n(1387);const h={class:"home"};function p(e,t,n,a,o,i){const r=(0,s.g2)("Navbar");return(0,s.uX)(),(0,s.CE)("div",h,[(0,s.bF)(r),t[0]||(t[0]=(0,s.Fv)('NEUer的实用工具站
“哈哈,恭喜你发现了宝藏,让我在接下来的日子里陪你一起成长吧”
——NEU小站
NEUer的实用工具站
“哈哈,恭喜你发现了宝藏,让我在接下来的日子里陪你一起成长吧”
——NEU小站