newfront/dist/js/561.60d7ab51.js
2025-12-02 18:18:05 +08:00

2 lines
8.7 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],{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