newfront/dist/js/561.73a6314e.js
2025-12-02 20:45:25 +08:00

2 lines
10 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";(self["webpackChunknewfront"]=self["webpackChunknewfront"]||[]).push([[561],{4715:function(s,a,e){e.d(a,{A:function(){return K}});var t=e(6768),i=e(4232),n=e(5130);const l={class:"user-meta"},r={class:"avatar-wrapper"},o=["src"],c={key:0,class:"avatar-loading"},d={class:"user-name"},u={class:"user-badges"},g=["title"],k=["title"],h={key:2,class:"badge medal"},v={class:"card-container"},f={class:"detail-header"},p=["src"],m={class:"detail-right"},b={class:"detail-name"},y={class:"user-badges"},C=["title"],L=["title"],P={key:2,class:"badge medal"},w={key:0,class:"user-sign"},E={class:"sign-text"},I={key:1,class:"user-submissions"},X={class:"submission-header"},_={key:0,class:"pagination-controls"},Q=["disabled"],U={class:"page-info"},A=["disabled"],D={class:"submission-list"},$=["onClick"],x={class:"submission-title"},M={class:"submission-tags"},q={key:0,class:"tag official"},F={key:1,class:"tag highlight"},R={key:2,class:"tag top"};function N(s,a,e,N,z,S){return(0,t.uX)(),(0,t.CE)("div",l,[(0,t.Lk)("div",{class:"user-basic",onMouseenter:a[0]||(a[0]=s=>z.showDetail=!0)},[(0,t.Lk)("div",r,[(0,t.Lk)("img",{src:z.userInfo.avatarUrl,alt:"用户头像",class:"avatar"},null,8,o),z.loading?((0,t.uX)(),(0,t.CE)("div",c,a[5]||(a[5]=[(0,t.Lk)("div",{class:"loading-spinner"},null,-1)]))):(0,t.Q3)("",!0)]),(0,t.Lk)("div",d,(0,i.v_)(z.userInfo.nickname),1),(0,t.Lk)("div",u,[z.userInfo.verified?((0,t.uX)(),(0,t.CE)("span",{key:0,class:"badge verified",title:z.userInfo.verified},"认证",8,g)):(0,t.Q3)("",!0),z.userInfo.invited?((0,t.uX)(),(0,t.CE)("span",{key:1,class:"badge invited",title:z.userInfo.invited},"特邀",8,k)):(0,t.Q3)("",!0),1===z.userInfo.medal?((0,t.uX)(),(0,t.CE)("span",h,"小站奖章")):(0,t.Q3)("",!0)])],32),(0,t.bF)(n.eB,{name:"detail-fade"},{default:(0,t.k6)((()=>[z.showDetail?((0,t.uX)(),(0,t.CE)("div",{key:0,class:"user-detail",onMouseenter:a[3]||(a[3]=s=>z.showDetail=!0),onMouseleave:a[4]||(a[4]=s=>z.showDetail=!1)},[(0,t.Lk)("div",v,[(0,t.Lk)("div",f,[a[6]||(a[6]=(0,t.Lk)("div",{class:"header-bg"},null,-1)),(0,t.Lk)("img",{src:z.userInfo.avatarUrl,alt:"用户头像",class:"detail-avatar"},null,8,p),(0,t.Lk)("div",m,[(0,t.Lk)("div",b,(0,i.v_)(z.userInfo.nickname),1),(0,t.Lk)("div",y,[z.userInfo.verified?((0,t.uX)(),(0,t.CE)("span",{key:0,class:"badge verified",title:z.userInfo.verified},"认证",8,C)):(0,t.Q3)("",!0),z.userInfo.invited?((0,t.uX)(),(0,t.CE)("span",{key:1,class:"badge invited",title:z.userInfo.invited},"特邀",8,L)):(0,t.Q3)("",!0),1===z.userInfo.medal?((0,t.uX)(),(0,t.CE)("span",P,"小站奖章")):(0,t.Q3)("",!0)])])]),z.userInfo.sign?((0,t.uX)(),(0,t.CE)("div",w,[a[7]||(a[7]=(0,t.Lk)("div",{class:"sign-icon"},"✍️",-1)),(0,t.Lk)("div",E,(0,i.v_)(z.userInfo.sign),1)])):(0,t.Q3)("",!0),z.submissions.length>0?((0,t.uX)(),(0,t.CE)("div",I,[(0,t.Lk)("div",X,[a[8]||(a[8]=(0,t.Lk)("span",null,"TA的投稿",-1)),z.totalPages>1?((0,t.uX)(),(0,t.CE)("div",_,[(0,t.Lk)("button",{class:"page-btn",disabled:1===z.currentPage,onClick:a[1]||(a[1]=(0,n.D$)((s=>S.changePage(z.currentPage-1)),["stop"]))}," < ",8,Q),(0,t.Lk)("span",U,(0,i.v_)(z.currentPage)+"/"+(0,i.v_)(z.totalPages),1),(0,t.Lk)("button",{class:"page-btn",disabled:z.currentPage===z.totalPages,onClick:a[2]||(a[2]=(0,n.D$)((s=>S.changePage(z.currentPage+1)),["stop"]))}," > ",8,A)])):(0,t.Q3)("",!0)]),(0,t.Lk)("div",D,[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(z.submissions,(s=>((0,t.uX)(),(0,t.CE)("div",{key:s.id,class:"submission-item",onClick:a=>S.handleArticleClick(s.id)},[(0,t.Lk)("div",x,(0,i.v_)(s.title),1),(0,t.Lk)("div",M,[s.official?((0,t.uX)(),(0,t.CE)("span",q,"官方")):(0,t.Q3)("",!0),s.highlight?((0,t.uX)(),(0,t.CE)("span",F,"优质")):(0,t.Q3)("",!0),s.top?((0,t.uX)(),(0,t.CE)("span",R,"置顶")):(0,t.Q3)("",!0)])],8,$)))),128))])])):(0,t.Q3)("",!0)])],32)):(0,t.Q3)("",!0)])),_:1})])}var z=e(4373),S=e(4993),O={name:"UserMeta",props:{id:{type:[String,Number],required:!0}},data(){return{userInfo:{nickname:"默认昵称",verified:null,invited:null,medal:0,avatarUrl:"https://download.东北大学.com/avatar/default.png",follower:0,following:0,sign:"这个人很懒,还没有写个性签名~"},submissions:[],currentPage:1,totalPages:1,total:0,showDetail:!1,loading:!1,error:null}},created(){this.fetchUserInfo(),this.fetchUserSubmissions()},mounted(){document.addEventListener("click",this.handleClickOutside)},beforeUnmount(){document.removeEventListener("click",this.handleClickOutside)},watch:{id(){this.fetchUserInfo(),this.fetchUserSubmissions()}},methods:{async fetchUserInfo(){this.loading=!0;try{const s=await z.A.get(`https://userlogin.xn--xhq44jb2fzpc.com/submission/get-author-info?id=${this.id}`);this.userInfo={...s.data,follower:s.data.follower||0,following:s.data.following||0,sign:s.data.sign||"这个人很懒,还没有写个性签名~"}}catch(s){this.error="获取用户信息失败",console.error("获取用户信息失败:",s)}finally{this.loading=!1}},async fetchUserSubmissions(s=1){try{const a=await z.A.get(`https://userlogin.xn--xhq44jb2fzpc.com/submission/get-author-submissions?id=${this.id}&page=${s}`);a.data?(this.submissions=a.data.list||[],this.total=a.data.total||0,this.currentPage=a.data.page||1,this.totalPages=Math.ceil(this.total/5)):(this.submissions=[],this.total=0,this.totalPages=0)}catch(a){console.error("获取用户投稿失败:",a),this.submissions=[],this.total=0,this.totalPages=0}},changePage(s){s<1||s>this.totalPages||this.fetchUserSubmissions(s)},handleClickOutside(s){const a=this.$el;this.showDetail&&!a.contains(s.target)&&(this.showDetail=!1)},handleFollow(){S.A.alert("关注功能暂未开放,敬请期待","提示").then((()=>{})).catch((()=>{}))},handleArticleClick(s){window.location.href=`/article/${s}`}}},j=e(1241);const B=(0,j.A)(O,[["render",N],["__scopeId","data-v-66b9c2e8"]]);var K=B},7561:function(s,a,e){e.r(a),e.d(a,{default:function(){return F}});var t=e(6768),i=e(4232);const n={class:"ranking-page"},l={class:"container"},r={key:0,class:"loading-container"},o={key:1,class:"error-container"},c={key:2,class:"ranking-content"},d={key:0,class:"my-ranking-block"},u={class:"my-rank-content"},g={class:"my-rank-text"},k={class:"value-wrapper"},h={key:0,class:"value unranked"},v={key:1,class:"value ranked"},f={class:"my-rank-tip"},p={class:"ranking-list"},m={class:"rank-badge"},b={key:0,class:"medal-icon"},y={key:1,class:"rank-number"},C={class:"user-info-wrapper"},L={class:"contribution-stats"},P={class:"stat-box"},w={class:"stat-value"},E={key:1,class:"pagination"},I=["disabled"],X={class:"page-info"},_=["disabled"];function Q(s,a,e,Q,U,A){const D=(0,t.g2)("NavBar"),$=(0,t.g2)("UserMeta");return(0,t.uX)(),(0,t.CE)("div",n,[(0,t.bF)(D),(0,t.Lk)("div",l,[a[6]||(a[6]=(0,t.Fv)('<div class="ranking-header" data-v-fc98432e><h1 class="page-title" data-v-fc98432e>🏆 投稿排行榜</h1><p class="page-subtitle" data-v-fc98432e>感谢每一位为 NEU 小站贡献优质内容的创作者❤️</p><div class="ranking-notice" data-v-fc98432e><i class="info-icon" data-v-fc98432e></i><span data-v-fc98432e>本榜单每小时更新一次,综合考量投稿数量、投稿质量及有效浏览量计算得出。</span></div></div>',1)),U.loading?((0,t.uX)(),(0,t.CE)("div",r,a[3]||(a[3]=[(0,t.Lk)("div",{class:"spinner"},null,-1),(0,t.Lk)("p",null,"正在加载排行榜...",-1)]))):U.error?((0,t.uX)(),(0,t.CE)("div",o,[(0,t.Lk)("p",null,(0,i.v_)(U.error),1),(0,t.Lk)("button",{onClick:a[0]||(a[0]=s=>A.fetchRanking(U.currentPage)),class:"retry-btn"},"重试")])):((0,t.uX)(),(0,t.CE)("div",c,[null!==U.myPosition&&void 0!==U.myPosition?((0,t.uX)(),(0,t.CE)("div",d,[(0,t.Lk)("div",u,[(0,t.Lk)("div",g,[a[4]||(a[4]=(0,t.Lk)("span",{class:"label"},"我的当前排名",-1)),(0,t.Lk)("div",k,[-1===U.myPosition?((0,t.uX)(),(0,t.CE)("span",h,"未上榜")):((0,t.uX)(),(0,t.CE)("span",v,"NO."+(0,i.v_)(U.myPosition),1))])]),(0,t.Lk)("div",f,(0,i.v_)(-1===U.myPosition?"您暂未上榜哦~":"太厉害了,感谢您的贡献~"),1)])])):(0,t.Q3)("",!0),(0,t.Lk)("div",p,[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(U.rankingData,((s,e)=>((0,t.uX)(),(0,t.CE)("div",{key:s.userId,class:(0,i.C4)(["ranking-item",A.getRankClass(s.rank)])},[(0,t.Lk)("div",m,[s.rank<=3?((0,t.uX)(),(0,t.CE)("span",b,(0,i.v_)(A.getMedalIcon(s.rank)),1)):((0,t.uX)(),(0,t.CE)("span",y,(0,i.v_)(s.rank),1))]),(0,t.Lk)("div",C,[(0,t.bF)($,{id:s.userId},null,8,["id"])]),(0,t.Lk)("div",L,[(0,t.Lk)("div",P,[a[5]||(a[5]=(0,t.Lk)("span",{class:"stat-label"},"投稿数量",-1)),(0,t.Lk)("span",w,(0,i.v_)(s.contributionCount),1)])])],2)))),128))]),U.totalPages>1?((0,t.uX)(),(0,t.CE)("div",E,[(0,t.Lk)("button",{class:"page-btn",disabled:1===U.currentPage,onClick:a[1]||(a[1]=s=>A.changePage(U.currentPage-1))}," 上一页 ",8,I),(0,t.Lk)("span",X,(0,i.v_)(U.currentPage)+" / "+(0,i.v_)(U.totalPages),1),(0,t.Lk)("button",{class:"page-btn",disabled:U.currentPage===U.totalPages,onClick:a[2]||(a[2]=s=>A.changePage(U.currentPage+1))}," 下一页 ",8,_)])):(0,t.Q3)("",!0)]))])])}e(4114);var U=e(562),A=e(4715),D=e(4373),$=e(8704),x={name:"RankingView",components:{NavBar:U.A,UserMeta:A.A},data(){return{rankingData:[],loading:!0,error:null,currentPage:1,totalPages:0,limit:20,myPosition:null}},mounted(){const s=parseInt(this.$route.query.page)||1;this.fetchRanking(s),document.title="投稿排行榜 - NEU 小站"},watch:{"$route.query.page"(s){const a=parseInt(s)||1;a!==this.currentPage&&this.fetchRanking(a)}},methods:{async fetchRanking(s){this.loading=!0,this.error=null;try{const a=$.A.get("token"),e={};a&&(e["Authorization"]=a);const t=await D.A.get("https://newfront.xn--xhq44jb2fzpc.com/ranking",{params:{page:s,limit:this.limit},headers:e}),{data:i,totalPages:n,page:l,my_position:r}=t.data;this.rankingData=i,this.totalPages=n,this.currentPage=l,this.myPosition=r,window.scrollTo({top:0,behavior:"smooth"})}catch(a){console.error("Failed to fetch ranking:",a),this.error="获取排行榜数据失败,请稍后重试"}finally{this.loading=!1}},changePage(s){s>=1&&s<=this.totalPages&&this.$router.push({query:{...this.$route.query,page:s}})},getRankClass(s){return 1===s?"rank-gold":2===s?"rank-silver":3===s?"rank-bronze":""},getMedalIcon(s){const a=["🥇","🥈","🥉"];return a[s-1]||""}}},M=e(1241);const q=(0,M.A)(x,[["render",Q],["__scopeId","data-v-fc98432e"]]);var F=q}}]);
//# sourceMappingURL=561.73a6314e.js.map