2 lines
11 KiB
JavaScript
2 lines
11 KiB
JavaScript
"use strict";(self["webpackChunknewfront"]=self["webpackChunknewfront"]||[]).push([[152],{4629:function(s,a,e){e.d(a,{A:function(){return T}});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"},p={class:"detail-header"},f=["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",p,[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,f),(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);let O=null;var j={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),O===this&&(O=null)},watch:{id(){this.fetchUserInfo(),this.fetchUserSubmissions()},showDetail(s){s?(O&&O!==this&&(O.showDetail=!1),O=this):O===this&&(O=null)}},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}`}}},B=e(1241);const K=(0,B.A)(j,[["render",N],["__scopeId","data-v-536e86b8"]]);var T=K},7152:function(s,a,e){e.r(a),e.d(a,{default:function(){return R}});e(4114);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"},p={class:"my-rank-tip"},f={key:0,class:"my-rank-opt-out-tip"},m={class:"ranking-list"},b={class:"rank-badge"},y={key:0,class:"medal-icon"},C={key:1,class:"rank-number"},L={class:"user-info-wrapper"},P={class:"contribution-stats"},w={class:"stat-box"},E={class:"stat-value"},I={key:1,class:"pagination"},X=["disabled"],_={class:"page-info"},Q=["disabled"];function U(s,a,e,U,A,D){const $=(0,t.g2)("NavBar"),x=(0,t.g2)("UserMeta");return(0,t.uX)(),(0,t.CE)("div",n,[(0,t.bF)($),(0,t.Lk)("div",l,[a[9]||(a[9]=(0,t.Fv)('<div class="ranking-header" data-v-381c5470><h1 class="page-title" data-v-381c5470>🏆 投稿排行榜</h1><p class="page-subtitle" data-v-381c5470>感谢每一位为 NEU 小站贡献优质内容的创作者❤️</p><div class="ranking-notice" data-v-381c5470><i class="info-icon" data-v-381c5470>ℹ️</i><span data-v-381c5470>本榜单每小时更新一次,综合考量投稿数量、投稿质量及有效浏览量计算得出。</span></div></div>',1)),A.loading?((0,t.uX)(),(0,t.CE)("div",r,a[4]||(a[4]=[(0,t.Lk)("div",{class:"spinner"},null,-1),(0,t.Lk)("p",null,"正在加载排行榜...",-1)]))):A.error?((0,t.uX)(),(0,t.CE)("div",o,[(0,t.Lk)("p",null,(0,i.v_)(A.error),1),(0,t.Lk)("button",{onClick:a[0]||(a[0]=s=>D.fetchRanking(A.currentPage)),class:"retry-btn"},"重试")])):((0,t.uX)(),(0,t.CE)("div",c,[null!==A.myPosition&&void 0!==A.myPosition?((0,t.uX)(),(0,t.CE)("div",d,[(0,t.Lk)("div",u,[(0,t.Lk)("div",g,[a[5]||(a[5]=(0,t.Lk)("span",{class:"label"},"我的当前排名",-1)),(0,t.Lk)("div",k,[-1===A.myPosition?((0,t.uX)(),(0,t.CE)("span",h,"未上榜")):((0,t.uX)(),(0,t.CE)("span",v,"NO."+(0,i.v_)(A.myPosition),1))])]),(0,t.Lk)("div",p,(0,i.v_)(-1===A.myPosition?"您暂未上榜哦~":"太厉害了,感谢您的贡献~"),1)]),-1!==A.myPosition?((0,t.uX)(),(0,t.CE)("div",f,[a[6]||(a[6]=(0,t.eW)(" 您可以在")),(0,t.Lk)("span",{class:"link-text",onClick:a[1]||(a[1]=a=>s.$router.push("/user-center"))},"【个人中心】"),a[7]||(a[7]=(0,t.eW)("—【我的投稿记录】处自愿选择是否加入排行榜。 "))])):(0,t.Q3)("",!0)])):(0,t.Q3)("",!0),(0,t.Lk)("div",m,[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(A.rankingData,((s,e)=>((0,t.uX)(),(0,t.CE)("div",{key:s.userId,class:(0,i.C4)(["ranking-item",D.getRankClass(s.rank)])},[(0,t.Lk)("div",b,[s.rank<=3?((0,t.uX)(),(0,t.CE)("span",y,(0,i.v_)(D.getMedalIcon(s.rank)),1)):((0,t.uX)(),(0,t.CE)("span",C,(0,i.v_)(s.rank),1))]),(0,t.Lk)("div",L,[(0,t.bF)(x,{id:s.userId},null,8,["id"])]),(0,t.Lk)("div",P,[(0,t.Lk)("div",w,[a[8]||(a[8]=(0,t.Lk)("span",{class:"stat-label"},"投稿数量",-1)),(0,t.Lk)("span",E,(0,i.v_)(s.contributionCount),1)])])],2)))),128))]),A.totalPages>1?((0,t.uX)(),(0,t.CE)("div",I,[(0,t.Lk)("button",{class:"page-btn",disabled:1===A.currentPage,onClick:a[2]||(a[2]=s=>D.changePage(A.currentPage-1))}," 上一页 ",8,X),(0,t.Lk)("span",_,(0,i.v_)(A.currentPage)+" / "+(0,i.v_)(A.totalPages),1),(0,t.Lk)("button",{class:"page-btn",disabled:A.currentPage===A.totalPages,onClick:a[3]||(a[3]=s=>D.changePage(A.currentPage+1))}," 下一页 ",8,Q)])):(0,t.Q3)("",!0)]))])])}var A=e(562),D=e(4629),$=e(4373),x=e(8704),M={name:"RankingView",components:{NavBar:A.A,UserMeta:D.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=x.A.get("token"),e={};a&&(e["Authorization"]=a);const t=await $.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]||""}}},q=e(1241);const F=(0,q.A)(M,[["render",U],["__scopeId","data-v-381c5470"]]);var R=F}}]);
|
||
//# sourceMappingURL=152.3700116d.js.map
|