2 lines
8.7 KiB
JavaScript
2 lines
8.7 KiB
JavaScript
"use strict";(self["webpackChunknewfront"]=self["webpackChunknewfront"]||[]).push([[561],{6321:function(a,e,s){s.d(e,{A:function(){return N}});var t=s(6768),n=s(4232),i=s(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"},k=["title"],v=["title"],g={key:2,class:"badge medal"},h={class:"card-container"},f={class:"detail-header"},p=["src"],m={class:"detail-right"},L={class:"detail-name"},b={class:"user-badges"},y=["title"],w=["title"],C={key:2,class:"badge medal"},I={key:0,class:"user-sign"},E={class:"sign-text"},P={class:"user-stats"},X={class:"stat-item"},_={class:"stat-value"},U={class:"stat-item"},Q={class:"stat-value"},A={class:"card-footer"};function D(a,e,s,D,F,M){return(0,t.uX)(),(0,t.CE)("div",l,[(0,t.Lk)("div",{class:"user-basic",onMouseenter:e[0]||(e[0]=a=>F.showDetail=!0)},[(0,t.Lk)("div",r,[(0,t.Lk)("img",{src:F.userInfo.avatarUrl,alt:"用户头像",class:"avatar"},null,8,o),F.loading?((0,t.uX)(),(0,t.CE)("div",c,e[4]||(e[4]=[(0,t.Lk)("div",{class:"loading-spinner"},null,-1)]))):(0,t.Q3)("",!0)]),(0,t.Lk)("div",d,(0,n.v_)(F.userInfo.nickname),1),(0,t.Lk)("div",u,[F.userInfo.verified?((0,t.uX)(),(0,t.CE)("span",{key:0,class:"badge verified",title:F.userInfo.verified},"认证",8,k)):(0,t.Q3)("",!0),F.userInfo.invited?((0,t.uX)(),(0,t.CE)("span",{key:1,class:"badge invited",title:F.userInfo.invited},"特邀",8,v)):(0,t.Q3)("",!0),1===F.userInfo.medal?((0,t.uX)(),(0,t.CE)("span",g,"小站奖章")):(0,t.Q3)("",!0)])],32),(0,t.bF)(i.eB,{name:"detail-fade"},{default:(0,t.k6)((()=>[F.showDetail?((0,t.uX)(),(0,t.CE)("div",{key:0,class:"user-detail",onMouseenter:e[2]||(e[2]=a=>F.showDetail=!0),onMouseleave:e[3]||(e[3]=a=>F.showDetail=!1)},[(0,t.Lk)("div",h,[(0,t.Lk)("div",f,[e[5]||(e[5]=(0,t.Lk)("div",{class:"header-bg"},null,-1)),(0,t.Lk)("img",{src:F.userInfo.avatarUrl,alt:"用户头像",class:"detail-avatar"},null,8,p),(0,t.Lk)("div",m,[(0,t.Lk)("div",L,(0,n.v_)(F.userInfo.nickname),1),(0,t.Lk)("div",b,[F.userInfo.verified?((0,t.uX)(),(0,t.CE)("span",{key:0,class:"badge verified",title:F.userInfo.verified},"认证",8,y)):(0,t.Q3)("",!0),F.userInfo.invited?((0,t.uX)(),(0,t.CE)("span",{key:1,class:"badge invited",title:F.userInfo.invited},"特邀",8,w)):(0,t.Q3)("",!0),1===F.userInfo.medal?((0,t.uX)(),(0,t.CE)("span",C,"小站奖章")):(0,t.Q3)("",!0)])])]),F.userInfo.sign?((0,t.uX)(),(0,t.CE)("div",I,[e[6]||(e[6]=(0,t.Lk)("div",{class:"sign-icon"},"✍️",-1)),(0,t.Lk)("div",E,(0,n.v_)(F.userInfo.sign),1)])):(0,t.Q3)("",!0),(0,t.Lk)("div",P,[(0,t.Lk)("div",X,[(0,t.Lk)("div",_,(0,n.v_)(F.userInfo.follower),1),e[7]||(e[7]=(0,t.Lk)("div",{class:"stat-label"},"粉丝",-1))]),e[9]||(e[9]=(0,t.Lk)("div",{class:"stat-separator"},null,-1)),(0,t.Lk)("div",U,[(0,t.Lk)("div",Q,(0,n.v_)(F.userInfo.following),1),e[8]||(e[8]=(0,t.Lk)("div",{class:"stat-label"},"关注",-1))])]),(0,t.Lk)("div",A,[(0,t.Lk)("button",{class:"follow-btn",onClick:e[1]||(e[1]=(...a)=>M.handleFollow&&M.handleFollow(...a))},"+ 关注")])])],32)):(0,t.Q3)("",!0)])),_:1})])}var F=s(4373),M=s(4993),q={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:"这个人很懒,还没有写个性签名~"},showDetail:!1,loading:!1,error:null}},created(){this.fetchUserInfo()},mounted(){document.addEventListener("click",this.handleClickOutside)},beforeUnmount(){document.removeEventListener("click",this.handleClickOutside)},watch:{id(){this.fetchUserInfo()}},methods:{async fetchUserInfo(){this.loading=!0;try{const a=await F.A.get(`https://userlogin.xn--xhq44jb2fzpc.com/submission/get-author-info?id=${this.id}`);a.data={...a.data,follower:a.data.follower||0,following:a.data.following||0,sign:a.data.sign||"这个人很懒,还没有写个性签名~"},this.userInfo=a.data}catch(a){this.error="获取用户信息失败",console.error("获取用户信息失败:",a)}finally{this.loading=!1}},handleClickOutside(a){const e=this.$el;this.showDetail&&!e.contains(a.target)&&(this.showDetail=!1)},handleFollow(){M.A.alert("关注功能暂未开放,敬请期待","提示").then((()=>{})).catch((()=>{}))}}},x=s(1241);const R=(0,x.A)(q,[["render",D],["__scopeId","data-v-9a4e6378"]]);var N=R},7561:function(a,e,s){s.r(e),s.d(e,{default:function(){return R}});var t=s(6768),n=s(4232);const i={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"},k={class:"my-rank-text"},v={class:"value-wrapper"},g={key:0,class:"value unranked"},h={key:1,class:"value ranked"},f={class:"my-rank-tip"},p={class:"ranking-list"},m={class:"rank-badge"},L={key:0,class:"medal-icon"},b={key:1,class:"rank-number"},y={class:"user-info-wrapper"},w={class:"contribution-stats"},C={class:"stat-box"},I={class:"stat-value"},E={key:1,class:"pagination"},P=["disabled"],X={class:"page-info"},_=["disabled"];function U(a,e,s,U,Q,A){const D=(0,t.g2)("NavBar"),F=(0,t.g2)("UserMeta");return(0,t.uX)(),(0,t.CE)("div",i,[(0,t.bF)(D),(0,t.Lk)("div",l,[e[6]||(e[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)),Q.loading?((0,t.uX)(),(0,t.CE)("div",r,e[3]||(e[3]=[(0,t.Lk)("div",{class:"spinner"},null,-1),(0,t.Lk)("p",null,"正在加载排行榜...",-1)]))):Q.error?((0,t.uX)(),(0,t.CE)("div",o,[(0,t.Lk)("p",null,(0,n.v_)(Q.error),1),(0,t.Lk)("button",{onClick:e[0]||(e[0]=a=>A.fetchRanking(Q.currentPage)),class:"retry-btn"},"重试")])):((0,t.uX)(),(0,t.CE)("div",c,[null!==Q.myPosition&&void 0!==Q.myPosition?((0,t.uX)(),(0,t.CE)("div",d,[(0,t.Lk)("div",u,[(0,t.Lk)("div",k,[e[4]||(e[4]=(0,t.Lk)("span",{class:"label"},"我的当前排名",-1)),(0,t.Lk)("div",v,[-1===Q.myPosition?((0,t.uX)(),(0,t.CE)("span",g,"未上榜")):((0,t.uX)(),(0,t.CE)("span",h,"NO."+(0,n.v_)(Q.myPosition),1))])]),(0,t.Lk)("div",f,(0,n.v_)(-1===Q.myPosition?"您暂未上榜哦~":"太厉害了,感谢您的贡献~"),1)])])):(0,t.Q3)("",!0),(0,t.Lk)("div",p,[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(Q.rankingData,((a,s)=>((0,t.uX)(),(0,t.CE)("div",{key:a.userId,class:(0,n.C4)(["ranking-item",A.getRankClass(a.rank)])},[(0,t.Lk)("div",m,[a.rank<=3?((0,t.uX)(),(0,t.CE)("span",L,(0,n.v_)(A.getMedalIcon(a.rank)),1)):((0,t.uX)(),(0,t.CE)("span",b,(0,n.v_)(a.rank),1))]),(0,t.Lk)("div",y,[(0,t.bF)(F,{id:a.userId},null,8,["id"])]),(0,t.Lk)("div",w,[(0,t.Lk)("div",C,[e[5]||(e[5]=(0,t.Lk)("span",{class:"stat-label"},"投稿数量",-1)),(0,t.Lk)("span",I,(0,n.v_)(a.contributionCount),1)])])],2)))),128))]),Q.totalPages>1?((0,t.uX)(),(0,t.CE)("div",E,[(0,t.Lk)("button",{class:"page-btn",disabled:1===Q.currentPage,onClick:e[1]||(e[1]=a=>A.changePage(Q.currentPage-1))}," 上一页 ",8,P),(0,t.Lk)("span",X,(0,n.v_)(Q.currentPage)+" / "+(0,n.v_)(Q.totalPages),1),(0,t.Lk)("button",{class:"page-btn",disabled:Q.currentPage===Q.totalPages,onClick:e[2]||(e[2]=a=>A.changePage(Q.currentPage+1))}," 下一页 ",8,_)])):(0,t.Q3)("",!0)]))])])}s(4114);var Q=s(562),A=s(6321),D=s(4373),F=s(8704),M={name:"RankingView",components:{NavBar:Q.A,UserMeta:A.A},data(){return{rankingData:[],loading:!0,error:null,currentPage:1,totalPages:0,limit:20,myPosition:null}},mounted(){const a=parseInt(this.$route.query.page)||1;this.fetchRanking(a),document.title="投稿排行榜 - NEU 小站"},watch:{"$route.query.page"(a){const e=parseInt(a)||1;e!==this.currentPage&&this.fetchRanking(e)}},methods:{async fetchRanking(a){this.loading=!0,this.error=null;try{const e=F.A.get("token"),s={};e&&(s["Authorization"]=e);const t=await D.A.get("https://newfront.xn--xhq44jb2fzpc.com/ranking",{params:{page:a,limit:this.limit},headers:s}),{data:n,totalPages:i,page:l,my_position:r}=t.data;this.rankingData=n,this.totalPages=i,this.currentPage=l,this.myPosition=r,window.scrollTo({top:0,behavior:"smooth"})}catch(e){console.error("Failed to fetch ranking:",e),this.error="获取排行榜数据失败,请稍后重试"}finally{this.loading=!1}},changePage(a){a>=1&&a<=this.totalPages&&this.$router.push({query:{...this.$route.query,page:a}})},getRankClass(a){return 1===a?"rank-gold":2===a?"rank-silver":3===a?"rank-bronze":""},getMedalIcon(a){const e=["🥇","🥈","🥉"];return e[a-1]||""}}},q=s(1241);const x=(0,q.A)(M,[["render",U],["__scopeId","data-v-fc98432e"]]);var R=x}}]);
|
||
//# sourceMappingURL=561.60d7ab51.js.map
|