2 lines
32 KiB
JavaScript
2 lines
32 KiB
JavaScript
(function(){"use strict";var e={2722:function(e,t,a){a.d(t,{A:function(){return ie}});var s=a(6768),n=a(4232),o=a(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:0,class:"unread-dot"},g={key:1,class:"navbar-item"},f={key:0,class:"activation-dialog"},v={class:"activation-dialog-content"},k={class:"activation-methods"},b={class:"activation-method"},y={class:"activation-method"},C={key:1,class:"message-modal"},w={class:"message-modal-content"},L={class:"message-modal-header"},E={class:"message-modal-body",ref:"messageContainer"},_={key:0,class:"no-messages"},A={key:1,class:"message-list"},M={class:"message-header"},I={class:"message-time"},x={key:0,class:"unread-tag"},S=["innerHTML"],X={key:1,class:"message-content"},j=["href"],O={key:1},z={key:2,class:"message-content"},P=["href"],T={key:1},N={key:3,class:"message-content"},V=["href"],D={key:1},q={key:4,class:"message-content"},W={key:5,class:"message-content"},F=["href"],U={key:1},$={key:6,class:"message-content"},B=["href"],Q={key:1},R={key:7,class:"message-content"},Z={key:2,class:"pagination"},J=["disabled"],H={class:"page-info"},K=["disabled"];function G(e,t,a,G,Y,ee){const te=(0,s.g2)("router-link");return(0,s.uX)(),(0,s.CE)("nav",i,[(0,s.Lk)("div",r,[(0,s.Lk)("div",c,[(0,s.bF)(te,{to:"/",class:"navbar-logo"},{default:(0,s.k6)((()=>t[12]||(t[12]=[(0,s.Lk)("img",{src:"https://download.xn--xhq44jb2fzpc.com/images/logo-hd.png",alt:"NEU小站",class:"navbar-logo-img"},null,-1),(0,s.Lk)("span",null,"NEU小站",-1)]))),_:1}),(0,s.Lk)("div",{class:(0,n.C4)(["navbar-burger",{"is-active":Y.isMenuActive}]),onClick:t[0]||(t[0]=(...e)=>ee.toggleMenu&&ee.toggleMenu(...e))},t[13]||(t[13]=[(0,s.Lk)("span",null,null,-1),(0,s.Lk)("span",null,null,-1),(0,s.Lk)("span",null,null,-1)]),2)]),(0,s.Lk)("div",{class:(0,n.C4)(["navbar-menu",{"is-active":Y.isMenuActive}])},[(0,s.Lk)("div",l,[(0,s.bF)(te,{to:"/",class:"navbar-item"},{default:(0,s.k6)((()=>t[14]||(t[14]=[(0,s.eW)("首页")]))),_:1}),(0,s.bF)(te,{to:"/strategy",class:"navbar-item"},{default:(0,s.k6)((()=>t[15]||(t[15]=[(0,s.eW)("攻略指南")]))),_:1}),(0,s.bF)(te,{to:"/resources",class:"navbar-item"},{default:(0,s.k6)((()=>t[16]||(t[16]=[(0,s.eW)("资源共享")]))),_:1}),(0,s.bF)(te,{to:"/app",class:"navbar-item"},{default:(0,s.k6)((()=>t[17]||(t[17]=[(0,s.eW)("应用中心")]))),_:1}),(0,s.bF)(te,{to:"/about",class:"navbar-item"},{default:(0,s.k6)((()=>t[18]||(t[18]=[(0,s.eW)("关于")]))),_:1}),(0,s.bF)(te,{to:"/search",class:"navbar-item"},{default:(0,s.k6)((()=>t[19]||(t[19]=[(0,s.eW)("搜索")]))),_:1}),Y.userInfo?((0,s.uX)(),(0,s.CE)("div",d,[(0,s.Lk)("div",{class:"user-info",onClick:t[1]||(t[1]=(...e)=>ee.toggleDropdown&&ee.toggleDropdown(...e))},[(0,s.Lk)("img",{src:Y.userInfo.avatar_path,class:"user-avatar",alt:Y.userInfo.nickname},null,8,u),(0,s.Lk)("span",h,(0,n.v_)(Y.userInfo.nickname),1),(0,s.Lk)("span",{class:(0,n.C4)(["dropdown-arrow",{"is-active":Y.isDropdownActive}])},"▼",2)]),(0,s.bo)((0,s.Lk)("div",p,[(0,s.Lk)("div",{class:"dropdown-item",onClick:t[2]||(t[2]=(...e)=>ee.handleUserCenter&&ee.handleUserCenter(...e))},"个人中心"),(0,s.Lk)("div",{class:"dropdown-item",onClick:t[3]||(t[3]=(...e)=>ee.handleMessages&&ee.handleMessages(...e))},[t[20]||(t[20]=(0,s.eW)(" 我的消息 ")),Y.userInfo.messageUnread?((0,s.uX)(),(0,s.CE)("span",m)):(0,s.Q3)("",!0)]),(0,s.Lk)("div",{class:"dropdown-item",onClick:t[4]||(t[4]=(...e)=>ee.handleLogout&&ee.handleLogout(...e))},"退出登录")],512),[[o.aG,Y.isDropdownActive]])])):((0,s.uX)(),(0,s.CE)("div",g,[(0,s.Lk)("a",{class:"login-btn",onClick:t[5]||(t[5]=(...e)=>ee.handleLogin&&ee.handleLogin(...e))},"登录")]))])],2)]),Y.showActivationDialog?((0,s.uX)(),(0,s.CE)("div",f,[(0,s.Lk)("div",v,[t[25]||(t[25]=(0,s.Lk)("h3",null,"账户激活",-1)),t[26]||(t[26]=(0,s.Lk)("p",null,"您的账户尚未激活,请选择以下方式进行激活:",-1)),(0,s.Lk)("div",k,[(0,s.Lk)("div",b,[t[21]||(t[21]=(0,s.Lk)("h4",null,"方式 1:NEU 校园网验证",-1)),t[22]||(t[22]=(0,s.Lk)("p",null,"请连接 NEU 校园网后点击下面的验证按钮(暂不支持秦皇岛分校)",-1)),(0,s.Lk)("button",{onClick:t[6]||(t[6]=(...e)=>ee.handleNetworkVerify&&ee.handleNetworkVerify(...e)),class:"verify-btn"},"校园网验证")]),(0,s.Lk)("div",y,[t[23]||(t[23]=(0,s.Lk)("h4",null,"方式 2:校园邮箱验证",-1)),t[24]||(t[24]=(0,s.Lk)("p",null,"使用 @stu.neu.edu.cn 或 @stu.neuq.edu.cn 后缀的校园邮箱验证",-1)),(0,s.Lk)("button",{onClick:t[7]||(t[7]=(...e)=>ee.handleEmailVerify&&ee.handleEmailVerify(...e)),class:"verify-btn"},"邮箱验证")])]),(0,s.Lk)("button",{onClick:t[8]||(t[8]=(...e)=>ee.handleLogout&&ee.handleLogout(...e)),class:"close-btn"},"退出登录")])])):(0,s.Q3)("",!0),Y.showMessageModal?((0,s.uX)(),(0,s.CE)("div",C,[(0,s.Lk)("div",w,[(0,s.Lk)("div",L,[t[27]||(t[27]=(0,s.Lk)("h3",null,"我的消息",-1)),(0,s.Lk)("span",{class:"close-icon",onClick:t[9]||(t[9]=(...e)=>ee.closeMessageModal&&ee.closeMessageModal(...e))},"×")]),(0,s.Lk)("div",E,[0===Y.messages.length?((0,s.uX)(),(0,s.CE)("div",_," 暂无消息 ")):((0,s.uX)(),(0,s.CE)("div",A,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(Y.messages,(e=>((0,s.uX)(),(0,s.CE)("div",{key:e.id,class:"message-item"},[(0,s.Lk)("div",M,[(0,s.Lk)("span",I,(0,n.v_)(ee.formatDate(e.created_at)),1),e.status?(0,s.Q3)("",!0):((0,s.uX)(),(0,s.CE)("span",x,"未读"))]),0===e.type?((0,s.uX)(),(0,s.CE)("div",{key:0,class:"message-content",innerHTML:e.content},null,8,S)):1===e.type?((0,s.uX)(),(0,s.CE)("div",X,[t[28]||(t[28]=(0,s.eW)(" 您在《")),e.article_id?((0,s.uX)(),(0,s.CE)("a",{key:0,href:"https://www.xn--xhq44jb2fzpc.com/article/"+e.article_id,target:"_blank"},(0,n.v_)(e.article_title),9,j)):((0,s.uX)(),(0,s.CE)("span",O,(0,n.v_)(e.article_title),1)),(0,s.eW)("》内容下的「"+(0,n.v_)(e.original_content)+"」评论被回复:「"+(0,n.v_)(e.reply_content)+"」 ",1)])):2===e.type?((0,s.uX)(),(0,s.CE)("div",z,[t[29]||(t[29]=(0,s.eW)(" 您的投稿《")),e.article_id?((0,s.uX)(),(0,s.CE)("a",{key:0,href:"https://www.xn--xhq44jb2fzpc.com/article/"+e.article_id,target:"_blank"},(0,n.v_)(e.title),9,P)):((0,s.uX)(),(0,s.CE)("span",T,(0,n.v_)(e.title),1)),(0,s.eW)("》审核"+(0,n.v_)(e.pass?"已通过":"未通过")+(0,n.v_)(e.note?",审核备注:"+e.note:""),1)])):3===e.type?((0,s.uX)(),(0,s.CE)("div",N,[t[30]||(t[30]=(0,s.eW)(' 您添加的课程"')),e.course_id?((0,s.uX)(),(0,s.CE)("a",{key:0,href:"https://course.xn--xhq44jb2fzpc.com/courses?c="+ee.encodeBase64(e.course_id),target:"_blank"},(0,n.v_)(e.course_name),9,V)):((0,s.uX)(),(0,s.CE)("span",D,(0,n.v_)(e.course_name),1)),(0,s.eW)('"审核'+(0,n.v_)(e.status),1)])):4===e.type?((0,s.uX)(),(0,s.CE)("div",q," 您的密钥「"+(0,n.v_)(e.key_plaintext)+"」使用次数已用尽,继续投稿可获得新的密钥。 ",1)):5===e.type?((0,s.uX)(),(0,s.CE)("div",W,[t[31]||(t[31]=(0,s.eW)(" 您在《")),e.article_id?((0,s.uX)(),(0,s.CE)("a",{key:0,href:"https://www.xn--xhq44jb2fzpc.com/article/"+e.article_id,target:"_blank"},(0,n.v_)(e.article_title),9,F)):((0,s.uX)(),(0,s.CE)("span",U,(0,n.v_)(e.article_title),1)),(0,s.eW)("》内容下的「"+(0,n.v_)(e.content)+"」评论被点赞。 ",1)])):6===e.type?((0,s.uX)(),(0,s.CE)("div",$,[t[32]||(t[32]=(0,s.eW)(" 您的内容《")),e.article_id?((0,s.uX)(),(0,s.CE)("a",{key:0,href:"https://www.xn--xhq44jb2fzpc.com/article/"+e.article_id,target:"_blank"},(0,n.v_)(e.article_title),9,B)):((0,s.uX)(),(0,s.CE)("span",Q,(0,n.v_)(e.article_title),1)),(0,s.eW)("》收到新评论:「"+(0,n.v_)(e.comment_content)+"」 ",1)])):((0,s.uX)(),(0,s.CE)("div",R,(0,n.v_)(e.error||"未知消息类型"),1))])))),128))])),Y.totalPages>1?((0,s.uX)(),(0,s.CE)("div",Z,[(0,s.Lk)("button",{disabled:1===Y.currentPage,onClick:t[10]||(t[10]=e=>ee.loadMessages(Y.currentPage-1)),class:"page-btn"},"上一页",8,J),(0,s.Lk)("span",H,(0,n.v_)(Y.currentPage)+" / "+(0,n.v_)(Y.totalPages),1),(0,s.Lk)("button",{disabled:Y.currentPage===Y.totalPages,onClick:t[11]||(t[11]=e=>ee.loadMessages(Y.currentPage+1)),class:"page-btn"},"下一页",8,K)])):(0,s.Q3)("",!0)],512)])])):(0,s.Q3)("",!0)])}a(4114),a(4979);var Y=a(8704),ee=a(4373),te=a(6253),ae=a(6965),se={name:"NavBar",data(){return{isMenuActive:!1,isDropdownActive:!1,userInfo:null,showActivationDialog:!1,isActivated:!1,showMessageModal:!1,messages:[],loading:!1,currentPage:1,totalPages:1,pageSize:10}},mounted(){this.checkLoginStatus()},methods:{handleLogin(){(0,ae.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(".");Y.A.remove("token",{domain:e,path:"/"}),this.userInfo=null,window.location.reload()},checkLoginStatus(){const e=Y.A.get("token");e&&ee.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=Y.A.get("token");e?ee.A.get("https://userlogin.xn--xhq44jb2fzpc.com/qv",{headers:{Authorization:e}}).then((e=>{te.A.alert(e.data.message,"提示"),this.isActivated=!0,this.showActivationDialog=!1})).catch((e=>{e.response&&e.response.data?te.A.alert(`${e.response.data.message} 当前IP: ${e.response.data.ip||"未知"}`,"提示"):te.A.alert("验证失败,请稍后重试","提示")})):te.A.alert("您未登录,请先登录后操作!","提示")},handleEmailVerify(){const e=Y.A.get("token");e?ee.A.get("https://userlogin.xn--xhq44jb2fzpc.com/check-email",{headers:{Authorization:e}}).then((e=>{te.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?te.A.alert(t.response.data.message||"发生未知错误,请稍后重试","提示"):te.A.alert("验证失败,请稍后重试","提示")})):te.A.alert("您未登录,请先登录后操作!","提示")},promptForCampusEmail(e){(0,te.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):te.A.alert("请输入有效的 @stu.neu.edu.cn 或 @stu.neuq.edu.cn 校园邮箱!","提示"):te.A.alert("邮箱不能为空","提示")})).catch((()=>{}))},sendCampusVerificationEmail(e,t){ee.A.post("https://userlogin.xn--xhq44jb2fzpc.com/send-campus-verify",{campus_email:e},{headers:{Authorization:t,"Content-Type":"application/json"}}).then((t=>{te.A.alert(`验证邮件已发送至 ${e},请检查您的邮箱完成验证。`,"提示")})).catch((e=>{e.response&&e.response.data?te.A.alert(`发送验证邮件失败:${e.response.data.message}`,"提示"):te.A.alert("发送验证邮件失败,请稍后重试","提示")}))},handleMessages(){this.isDropdownActive=!1,this.showMessageModal=!0,this.loadMessages(1)},closeMessageModal(){this.showMessageModal=!1,this.checkLoginStatus()},loadMessages(e){this.currentPage=e,ee.A.get("https://newfront.xn--xhq44jb2fzpc.com/message/get",{headers:{Authorization:Y.A.get("token")},params:{page:e}}).then((e=>{this.messages=e.data.messages,this.totalPages=e.data.totalPages,this.pageSize=e.data.pageSize})).catch((e=>{console.error("获取消息失败:",e),te.A.alert("获取消息失败,请稍后再试。","错误")}))},formatDate(e){const t=new Date(e);return t.toLocaleDateString()+" "+t.toLocaleTimeString()},encodeBase64(e){return window.btoa(e)}}},ne=a(1241);const oe=(0,ne.A)(se,[["render",G],["__scopeId","data-v-471feef0"]]);var ie=oe},4876:function(e,t,a){a.d(t,{A:function(){return f}});var s=a(6768),n=a(5130),o=a(4232);const i={class:"message-box"},r={key:0,class:"message-header"},c={class:"message-content"},l={key:0,class:"input-wrapper"},d=["type","placeholder"],u={class:"message-footer"};function h(e,t,a,h,p,m){return(0,s.uX)(),(0,s.Wv)(n.eB,{name:"message-fade"},{default:(0,s.k6)((()=>[a.visible?((0,s.uX)(),(0,s.CE)("div",{key:0,class:"message-overlay",onClick:t[4]||(t[4]=(0,n.D$)(((...e)=>m.handleOverlayClick&&m.handleOverlayClick(...e)),["self"]))},[(0,s.Lk)("div",i,[a.title?((0,s.uX)(),(0,s.CE)("div",r,[(0,s.Lk)("h3",null,(0,o.v_)(a.title),1)])):(0,s.Q3)("",!0),(0,s.Lk)("div",c,[(0,s.Lk)("p",null,(0,o.v_)(a.message),1),a.showInput?((0,s.uX)(),(0,s.CE)("div",l,[(0,s.bo)((0,s.Lk)("input",{"onUpdate:modelValue":t[0]||(t[0]=e=>p.localInputValue=e),type:a.inputType,placeholder:a.inputPlaceholder,class:"message-input",onKeyup:t[1]||(t[1]=(0,n.jR)(((...e)=>m.handleConfirm&&m.handleConfirm(...e)),["enter"]))},null,40,d),[[n.hp,p.localInputValue]])])):(0,s.Q3)("",!0)]),(0,s.Lk)("div",u,[m.cancelVisible?((0,s.uX)(),(0,s.CE)("button",{key:0,class:"btn btn-cancel",onClick:t[2]||(t[2]=(...e)=>m.handleCancel&&m.handleCancel(...e))},(0,o.v_)(a.cancelText),1)):(0,s.Q3)("",!0),m.confirmVisible?((0,s.uX)(),(0,s.CE)("button",{key:1,class:"btn btn-confirm",onClick:t[3]||(t[3]=(...e)=>m.handleConfirm&&m.handleConfirm(...e))},(0,o.v_)(a.confirmText),1)):(0,s.Q3)("",!0)])])])):(0,s.Q3)("",!0)])),_:1})}var p={name:"MessageBox",props:{visible:{type:Boolean,default:!1},title:{type:String,default:""},message:{type:String,required:!0},confirm:{type:Boolean,default:!0},cancel:{type:Boolean,default:!1},confirmText:{type:String,default:"确定"},cancelText:{type:String,default:"取消"},closeOnClickOverlay:{type:Boolean,default:!1},showInput:{type:Boolean,default:!1},inputType:{type:String,default:"text"},inputValue:{type:String,default:""},inputPlaceholder:{type:String,default:"请输入"}},data(){return{localInputValue:""}},watch:{inputValue:{immediate:!0,handler(e){this.localInputValue=e}}},computed:{confirmVisible(){return this.confirm},cancelVisible(){return this.cancel}},methods:{handleConfirm(){this.$emit("confirm",this.localInputValue)},handleCancel(){this.$emit("cancel")},handleOverlayClick(){this.closeOnClickOverlay&&this.$emit("cancel")}}},m=a(1241);const g=(0,m.A)(p,[["render",h],["__scopeId","data-v-076938bc"]]);var f=g},6253:function(e,t,a){var s=a(5130),n=a(4876);const o=(e={})=>new Promise(((t,a)=>{const o=document.createElement("div");document.body.appendChild(o);const i=(0,s.Ef)(n.A,{...e,visible:!0,confirm:!1!==e.confirm,cancel:!0===e.cancel,onConfirm:e=>{i.unmount(),document.body.removeChild(o),t({value:e,action:"confirm"})},onCancel:()=>{i.unmount(),document.body.removeChild(o),a({action:"cancel"})}});i.mount(o)}));o.alert=(e,t="",a={})=>o({title:t,message:e,confirm:!0,cancel:!1,...a}),o.confirm=(e,t="",a={})=>o({title:t,message:e,confirm:!0,cancel:!0,...a}),o.prompt=(e,t="",a={})=>o({title:t,message:e,showInput:!0,confirm:!0,cancel:!0,...a}),t.A=o},6597:function(e,t,a){var s=a(5130),n=a(6768);const o={id:"app"},i={class:"beian-footer"},r={class:"container"},c={class:"copyright"};function l(e,t){const a=(0,n.g2)("router-view"),s=(0,n.g2)("router-link");return(0,n.uX)(),(0,n.CE)("div",o,[(0,n.bF)(a),(0,n.Lk)("footer",i,[(0,n.Lk)("div",r,[t[2]||(t[2]=(0,n.Lk)("span",{style:{"white-space":"nowrap"}},[(0,n.Lk)("img",{src:"https://beian.mps.gov.cn/web/assets/logo01.6189a29f.png",alt:"公安标识",style:{"vertical-align":"middle",height:"16px",display:"inline-block"}}),(0,n.Lk)("a",{href:"https://beian.mps.gov.cn/",target:"_blank"}," 赣公网安备36090202000259号"),(0,n.eW)(" | "),(0,n.Lk)("a",{href:"https://beian.miit.gov.cn/",target:"_blank"},"赣ICP备2024039267号-1")],-1)),(0,n.Lk)("div",c,[t[1]||(t[1]=(0,n.eW)(" © 2025 ")),(0,n.bF)(s,{to:"/about"},{default:(0,n.k6)((()=>t[0]||(t[0]=[(0,n.eW)("NEU小站")]))),_:1})])])])])}var d=a(1241);const u={},h=(0,d.A)(u,[["render",l]]);var p=h,m=a(1387);const g={class:"home"};function f(e,t,a,s,o,i){const r=(0,n.g2)("Navbar");return(0,n.uX)(),(0,n.CE)("div",g,[(0,n.bF)(r),t[0]||(t[0]=(0,n.Fv)('<div class="container" data-v-1c64fc58><div class="welcome-section" data-v-1c64fc58><img alt="Vue logo" src="https://download.东北大学.com/images/logo-hd.png" data-v-1c64fc58><h1 data-v-1c64fc58>欢迎访问NEU小站</h1><p data-v-1c64fc58>NEUer的实用工具站</p><div class="intro-text" data-v-1c64fc58><p data-v-1c64fc58>“哈哈,恭喜你发现了宝藏,让我在接下来的日子里陪你一起成长吧”</p><p style="text-align:right;" data-v-1c64fc58>——NEU小站</p></div></div></div>',1))])}var v=a(2722),k={name:"HomeView",components:{Navbar:v.A},created(){document.title="NEU小站"}};const b=(0,d.A)(k,[["render",f],["__scopeId","data-v-1c64fc58"]]);var y=b;const C=[{path:"/",name:"home",component:y},{path:"/login",name:"login",component:()=>a.e(11).then(a.bind(a,9011))},{path:"/article/:id",name:"article-detail",component:()=>a.e(340).then(a.bind(a,3340))},{path:"/about",name:"about",component:()=>a.e(594).then(a.bind(a,758))},{path:"/strategy",name:"strategy",component:()=>a.e(34).then(a.bind(a,3034))},{path:"/resources",name:"resources",component:()=>a.e(287).then(a.bind(a,5287))},{path:"/loading-demo",name:"loading-demo",component:()=>a.e(647).then(a.bind(a,4647))},{path:"/user-demo",name:"user-demo",component:()=>a.e(5).then(a.bind(a,2005))},{path:"/message-demo",name:"message-demo",component:()=>a.e(120).then(a.bind(a,7120))},{path:"/:pathMatch(.*)*",name:"404",component:()=>a.e(899).then(a.bind(a,3899))},{path:"/search",name:"search",component:()=>a.e(368).then(a.bind(a,7368))},{path:"/user-center",name:"user-center",component:()=>a.e(11).then(a.bind(a,9011))},{path:"/app",name:"app",component:()=>a.e(313).then(a.bind(a,2313))},{path:"/submit",name:"submit",component:()=>a.e(29).then(a.bind(a,29))},{path:"/preview",name:"preview",component:()=>a.e(340).then(a.bind(a,3340))},{path:"/edit",name:"edit-article",component:()=>a.e(29).then(a.bind(a,29))}],w=(0,m.aE)({history:(0,m.LA)("/"),routes:C});var L=w;(0,s.Ef)(p).use(L).mount("#app")},6965:function(e,t,a){a.d(t,{A:function(){return A}});var s=a(5130),n=a(6768),o=a(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"},k={key:0,class:"loading-overlay"};function b(e,t,a,b,y,C){return a.visible?((0,n.uX)(),(0,n.CE)("div",i,[t[14]||(t[14]=(0,n.Lk)("div",{class:"login-overlay"},null,-1)),(0,n.Lk)("div",r,[(0,n.Lk)("div",c,[t[9]||(t[9]=(0,n.Lk)("h2",{class:"login-title"},"登录/注册",-1)),a.showClose?((0,n.uX)(),(0,n.CE)("button",{key:0,onClick:t[0]||(t[0]=(...e)=>C.handleClose&&C.handleClose(...e)),class:"close-btn"},"×")):(0,n.Q3)("",!0)]),(0,n.Lk)("form",{onSubmit:t[5]||(t[5]=(0,s.D$)(((...e)=>C.handleSubmit&&C.handleSubmit(...e)),["prevent"])),class:"login-form"},[(0,n.Lk)("div",l,[t[10]||(t[10]=(0,n.Lk)("label",{for:"email"},"邮箱",-1)),(0,n.bo)((0,n.Lk)("input",{type:"email",id:"email","onUpdate:modelValue":t[1]||(t[1]=e=>y.email=e),placeholder:"请输入邮箱地址",required:"",class:"form-input",pattern:"[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,}$",title:"请输入有效的邮箱地址"},null,512),[[s.Jo,y.email]])]),(0,n.Lk)("div",d,[t[11]||(t[11]=(0,n.Lk)("label",{for:"password"},"密码",-1)),(0,n.bo)((0,n.Lk)("input",{type:"password",id:"password","onUpdate:modelValue":t[2]||(t[2]=e=>y.password=e),placeholder:"请输入密码",required:"",class:"form-input"},null,512),[[s.Jo,y.password]])]),y.message?((0,n.uX)(),(0,n.CE)("div",{key:0,class:(0,o.C4)(["message",{error:y.messageIsError,success:!y.messageIsError}])},(0,o.v_)(y.message),3)):(0,n.Q3)("",!0),(0,n.Lk)("div",u,[(0,n.Lk)("button",{type:"button",onClick:t[3]||(t[3]=(...e)=>C.login&&C.login(...e)),class:"btn btn-primary"},"登录"),(0,n.Lk)("button",{type:"button",onClick:t[4]||(t[4]=(...e)=>C.register&&C.register(...e)),class:"btn btn-secondary"},"注册")])],32)]),(0,n.Lk)("div",{class:(0,o.C4)(["modal",{show:y.showCaptchaModal}])},[(0,n.Lk)("div",h,[(0,n.Lk)("div",p,[t[12]||(t[12]=(0,n.Lk)("h3",null,"邮箱验证",-1)),(0,n.Lk)("button",{onClick:t[6]||(t[6]=(...e)=>C.closeCaptchaModal&&C.closeCaptchaModal(...e)),class:"close-btn"},"×")]),(0,n.Lk)("div",m,[(0,n.Lk)("p",g,(0,o.v_)(y.captchaInstruction),1),(0,n.Lk)("div",f,[(0,n.bo)((0,n.Lk)("input",{type:"text","onUpdate:modelValue":t[7]||(t[7]=e=>y.captchaCode=e),placeholder:"请输入验证码",class:"form-input"},null,512),[[s.Jo,y.captchaCode]])]),y.captchaMessage?((0,n.uX)(),(0,n.CE)("div",{key:0,class:(0,o.C4)(["captcha-message",{error:y.captchaMessageIsError,success:!y.captchaMessageIsError}])},(0,o.v_)(y.captchaMessage),3)):(0,n.Q3)("",!0)]),(0,n.Lk)("div",v,[(0,n.Lk)("button",{onClick:t[8]||(t[8]=(...e)=>C.verifyCaptcha&&C.verifyCaptcha(...e)),class:"btn btn-primary"},"验证")])])],2),y.loading?((0,n.uX)(),(0,n.CE)("div",k,[t[13]||(t[13]=(0,n.Lk)("div",{class:"spinner"},null,-1)),(0,n.Lk)("p",null,(0,o.v_)(y.loadingMessage),1)])):(0,n.Q3)("",!0)])):(0,n.Q3)("",!0)}var y=a(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);const e=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;if(!e.test(this.email))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(t){console.error("Error:",t),this.message="发生错误,请稍后重试。",this.messageIsError=!0,this.loading=!1}},async register(){if(!this.email||!this.password)return this.message="请输入邮箱和密码",void(this.messageIsError=!0);const e=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;if(!e.test(this.email))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,a=window.location.hostname.includes("localhost")?"localhost":window.location.hostname.split(".").slice(-2).join(".");document.cookie=`token=${t}; max-age=86340; path=/; domain=${a}; secure; SameSite=Strict`,this.loading=!1,this.message="登录成功!正在加载中...",this.messageIsError=!1;const s={email:this.email,userId:e.id,token:e.token};this.onSuccess&&(this.onSuccess(s),window.location.reload()),this.$emit("login-success",s),this.onClose&&setTimeout((()=>{this.handleClose()}),3e3)},async loginOrRegister(e,t,a){const s="login"===a?"https://userlogin.xn--xhq44jb2fzpc.com/login":"https://userlogin.xn--xhq44jb2fzpc.com/register",n=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e,password:t})});return n.json()},async verifyRegisterCode(e,t){const a="https://userlogin.xn--xhq44jb2fzpc.com/verify-register-code",s=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e,code:t})});return s.json()},delay(e){return new Promise((t=>setTimeout(t,e)))}}},w=a(1241);const L=(0,w.A)(C,[["render",b],["__scopeId","data-v-514354c8"]]);var E=L;const _=(e={})=>new Promise(((t,a)=>{const n=document.createElement("div");document.body.appendChild(n);const o=(0,s.Ef)(E,{...e,visible:!0,showClose:!0,onSuccess:e=>{t(e)},onClose:()=>{o.unmount(),document.body.removeChild(n)}});o.mount(n)}));_.withCallback=(e,t={})=>_({...t,onSuccess:t=>{e(t)}});var A=_}},t={};function a(s){var n=t[s];if(void 0!==n)return n.exports;var o=t[s]={exports:{}};return e[s].call(o.exports,o,o.exports,a),o.exports}a.m=e,function(){var e=[];a.O=function(t,s,n,o){if(!s){var i=1/0;for(d=0;d<e.length;d++){s=e[d][0],n=e[d][1],o=e[d][2];for(var r=!0,c=0;c<s.length;c++)(!1&o||i>=o)&&Object.keys(a.O).every((function(e){return a.O[e](s[c])}))?s.splice(c--,1):(r=!1,o<i&&(i=o));if(r){e.splice(d--,1);var l=n();void 0!==l&&(t=l)}}return t}o=o||0;for(var d=e.length;d>0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[s,n,o]}}(),function(){a.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return a.d(t,{a:t}),t}}(),function(){a.d=function(e,t){for(var s in t)a.o(t,s)&&!a.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})}}(),function(){a.f={},a.e=function(e){return Promise.all(Object.keys(a.f).reduce((function(t,s){return a.f[s](e,t),t}),[]))}}(),function(){a.u=function(e){return"js/"+(594===e?"about":e)+"."+{5:"56366bd5",11:"04533672",29:"5e223701",34:"6728c256",120:"e01d64ca",287:"23adfce3",313:"bb794a27",340:"a7e35000",368:"c73eef33",594:"17339964",647:"262efcda",899:"beef23d9"}[e]+".js"}}(),function(){a.miniCssF=function(e){return"css/"+(594===e?"about":e)+"."+{5:"d70f219a",11:"e28a3037",29:"ce3746ca",34:"e99d09ea",120:"720fbcc2",287:"7da28f35",313:"72ba01cb",340:"33e12b42",368:"9ee9e7c3",594:"1029dc09",647:"ce55be69",899:"35501d47"}[e]+".css"}}(),function(){a.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={},t="newfront:";a.l=function(s,n,o,i){if(e[s])e[s].push(n);else{var r,c;if(void 0!==o)for(var l=document.getElementsByTagName("script"),d=0;d<l.length;d++){var u=l[d];if(u.getAttribute("src")==s||u.getAttribute("data-webpack")==t+o){r=u;break}}r||(c=!0,r=document.createElement("script"),r.charset="utf-8",r.timeout=120,a.nc&&r.setAttribute("nonce",a.nc),r.setAttribute("data-webpack",t+o),r.src=s),e[s]=[n];var h=function(t,a){r.onerror=r.onload=null,clearTimeout(p);var n=e[s];if(delete e[s],r.parentNode&&r.parentNode.removeChild(r),n&&n.forEach((function(e){return e(a)})),t)return t(a)},p=setTimeout(h.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=h.bind(null,r.onerror),r.onload=h.bind(null,r.onload),c&&document.head.appendChild(r)}}}(),function(){a.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}}(),function(){a.p="/"}(),function(){if("undefined"!==typeof document){var e=function(e,t,s,n,o){var i=document.createElement("link");i.rel="stylesheet",i.type="text/css",a.nc&&(i.nonce=a.nc);var r=function(a){if(i.onerror=i.onload=null,"load"===a.type)n();else{var s=a&&a.type,r=a&&a.target&&a.target.href||t,c=new Error("Loading CSS chunk "+e+" failed.\n("+s+": "+r+")");c.name="ChunkLoadError",c.code="CSS_CHUNK_LOAD_FAILED",c.type=s,c.request=r,i.parentNode&&i.parentNode.removeChild(i),o(c)}};return i.onerror=i.onload=r,i.href=t,s?s.parentNode.insertBefore(i,s.nextSibling):document.head.appendChild(i),i},t=function(e,t){for(var a=document.getElementsByTagName("link"),s=0;s<a.length;s++){var n=a[s],o=n.getAttribute("data-href")||n.getAttribute("href");if("stylesheet"===n.rel&&(o===e||o===t))return n}var i=document.getElementsByTagName("style");for(s=0;s<i.length;s++){n=i[s],o=n.getAttribute("data-href");if(o===e||o===t)return n}},s=function(s){return new Promise((function(n,o){var i=a.miniCssF(s),r=a.p+i;if(t(i,r))return n();e(s,r,null,n,o)}))},n={524:0};a.f.miniCss=function(e,t){var a={5:1,11:1,29:1,34:1,120:1,287:1,313:1,340:1,368:1,594:1,647:1,899:1};n[e]?t.push(n[e]):0!==n[e]&&a[e]&&t.push(n[e]=s(e).then((function(){n[e]=0}),(function(t){throw delete n[e],t})))}}}(),function(){var e={524:0};a.f.j=function(t,s){var n=a.o(e,t)?e[t]:void 0;if(0!==n)if(n)s.push(n[2]);else{var o=new Promise((function(a,s){n=e[t]=[a,s]}));s.push(n[2]=o);var i=a.p+a.u(t),r=new Error,c=function(s){if(a.o(e,t)&&(n=e[t],0!==n&&(e[t]=void 0),n)){var o=s&&("load"===s.type?"missing":s.type),i=s&&s.target&&s.target.src;r.message="Loading chunk "+t+" failed.\n("+o+": "+i+")",r.name="ChunkLoadError",r.type=o,r.request=i,n[1](r)}};a.l(i,c,"chunk-"+t,t)}},a.O.j=function(t){return 0===e[t]};var t=function(t,s){var n,o,i=s[0],r=s[1],c=s[2],l=0;if(i.some((function(t){return 0!==e[t]}))){for(n in r)a.o(r,n)&&(a.m[n]=r[n]);if(c)var d=c(a)}for(t&&t(s);l<i.length;l++)o=i[l],a.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return a.O(d)},s=self["webpackChunknewfront"]=self["webpackChunknewfront"]||[];s.forEach(t.bind(null,0)),s.push=t.bind(null,s.push.bind(s))}();var s=a.O(void 0,[504],(function(){return a(6597)}));s=a.O(s)})();
|
||
//# sourceMappingURL=app.38e61396.js.map
|