"use strict";(self["webpackChunknewfront"]=self["webpackChunknewfront"]||[]).push([[11],{9011:function(e,t,s){s.r(t),s.d(t,{default:function(){return Ye}});var a=s(6768);const n={class:"user-center"},i={key:0,class:"loading-container"},o={key:1,class:"container"},r={class:"upper-section"},l={class:"user-info-container"},c={class:"coin-container"},d={class:"lower-section"},u={key:2,class:"login-required-container"};function h(e,t,s,h,g,k){const v=(0,a.g2)("Navbar"),m=(0,a.g2)("UserInfo"),p=(0,a.g2)("Coin"),L=(0,a.g2)("SubmissionList");return(0,a.uX)(),(0,a.CE)("div",n,[(0,a.bF)(v),g.isLoading?((0,a.uX)(),(0,a.CE)("div",i,t[0]||(t[0]=[(0,a.Lk)("div",{class:"loading-spinner"},"加载中...",-1)]))):g.isAuthenticated?((0,a.uX)(),(0,a.CE)("div",o,[(0,a.Lk)("div",r,[(0,a.Lk)("div",l,[(0,a.bF)(m,{ref:"userInfo"},null,512)]),(0,a.Lk)("div",c,[(0,a.bF)(p,{ref:"coin"},null,512)])]),(0,a.Lk)("div",d,[(0,a.bF)(L,{onManageWorks:k.handleManageWorks},null,8,["onManageWorks"])])])):((0,a.uX)(),(0,a.CE)("div",u,t[1]||(t[1]=[(0,a.Lk)("div",{class:"login-required-message"},[(0,a.Lk)("h2",null,"请先登录!"),(0,a.Lk)("p",null,"您需要登录后才能访问个人中心")],-1)])))])}s(4114);var g=s(6737),k=s(4232);const v={class:"user-info-card"},m={class:"card-container"},p={class:"detail-header"},L={class:"avatar-wrapper"},y=["src"],f={class:"detail-right"},b={class:"detail-name-container"},w={class:"detail-name"},C={class:"user-badges"},_=["title"],x=["title"],A={key:2,class:"badge medal"},E={class:"user-sign-container"},I={class:"user-sign"},M={class:"sign-text"},P={class:"user-email"},S={class:"email-text"},$={class:"user-stats"},K={class:"stat-item"},X={class:"stat-value"},T={class:"stat-item"},j={class:"stat-value"},F={class:"stat-item"},z={class:"stat-value"},D={key:0,class:"message-box"};function O(e,t,s,n,i,o){return(0,a.uX)(),(0,a.CE)("div",v,[(0,a.Lk)("div",m,[(0,a.Lk)("div",p,[t[6]||(t[6]=(0,a.Lk)("div",{class:"header-bg"},null,-1)),(0,a.Lk)("div",L,[(0,a.Lk)("img",{src:i.userInfo.avatar_path,alt:"用户头像",class:"detail-avatar"},null,8,y),(0,a.Lk)("div",{class:"avatar-edit-overlay",onClick:t[0]||(t[0]=(...e)=>o.triggerFileInput&&o.triggerFileInput(...e))},t[4]||(t[4]=[(0,a.Lk)("i",{class:"edit-icon"},"📷",-1)])),(0,a.Lk)("input",{type:"file",ref:"fileInput",style:{display:"none"},accept:"image/jpeg, image/png, image/gif",onChange:t[1]||(t[1]=(...e)=>o.uploadAvatar&&o.uploadAvatar(...e))},null,544)]),(0,a.Lk)("div",f,[(0,a.Lk)("div",b,[(0,a.Lk)("div",w,(0,k.v_)(i.userInfo.nickname),1),(0,a.Lk)("button",{class:"edit-btn",onClick:t[2]||(t[2]=(...e)=>o.editNickname&&o.editNickname(...e)),title:"修改昵称"},t[5]||(t[5]=[(0,a.Lk)("i",{class:"edit-icon"},"✏️",-1)]))]),(0,a.Lk)("div",C,[i.userInfo.verified?((0,a.uX)(),(0,a.CE)("span",{key:0,class:"badge verified",title:i.userInfo.verified},"认证",8,_)):(0,a.Q3)("",!0),i.userInfo.invited?((0,a.uX)(),(0,a.CE)("span",{key:1,class:"badge invited",title:i.userInfo.invited},"特邀",8,x)):(0,a.Q3)("",!0),i.userInfo.medal?((0,a.uX)(),(0,a.CE)("span",A,"小站奖章")):(0,a.Q3)("",!0)])])]),(0,a.Lk)("div",E,[(0,a.Lk)("div",I,[t[8]||(t[8]=(0,a.Lk)("div",{class:"sign-icon"},"✍️",-1)),(0,a.Lk)("div",M,(0,k.v_)(i.userInfo.sign||"这个人很懒,还没有写个性签名~"),1),(0,a.Lk)("button",{class:"edit-btn",onClick:t[3]||(t[3]=(...e)=>o.editSign&&o.editSign(...e)),title:"修改签名"},t[7]||(t[7]=[(0,a.Lk)("i",{class:"edit-icon"},"✏️",-1)]))])]),(0,a.Lk)("div",P,[t[9]||(t[9]=(0,a.Lk)("div",{class:"email-icon"},"📧",-1)),(0,a.Lk)("div",S,(0,k.v_)(i.userInfo.email),1)]),(0,a.Lk)("div",$,[(0,a.Lk)("div",K,[(0,a.Lk)("div",X,(0,k.v_)(i.userInfo.follower||0),1),t[10]||(t[10]=(0,a.Lk)("div",{class:"stat-label"},"粉丝",-1))]),t[13]||(t[13]=(0,a.Lk)("div",{class:"stat-separator"},null,-1)),(0,a.Lk)("div",T,[(0,a.Lk)("div",j,(0,k.v_)(i.userInfo.following||0),1),t[11]||(t[11]=(0,a.Lk)("div",{class:"stat-label"},"关注",-1))]),t[14]||(t[14]=(0,a.Lk)("div",{class:"stat-separator"},null,-1)),(0,a.Lk)("div",F,[(0,a.Lk)("div",z,(0,k.v_)(i.userInfo.coin||"未激活"),1),t[12]||(t[12]=(0,a.Lk)("div",{class:"stat-label"},"东币",-1))])]),i.message.show?((0,a.uX)(),(0,a.CE)("div",D,[(0,a.Lk)("div",{class:(0,k.C4)(["message-content",i.message.type])},(0,k.v_)(i.message.text),3)])):(0,a.Q3)("",!0)])])}var N=s(8704),U=s(6253),q={name:"UserInfo",data(){return{userInfo:{id:"",nickname:"加载中...",verified:null,invited:null,medal:!1,avatar_path:"",email:"",sign:"",follower:0,following:0,coin:0},message:{show:!1,text:"",type:"success",timer:null}}},created(){this.fetchUserInfo()},methods:{async fetchUserInfo(){try{const e=N.A.get("token");if(!e)return void this.showMessage("未登录或登录已过期","error");const t=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/info",{method:"GET",headers:{Authorization:e}});if(!t.ok)throw new Error("获取用户信息失败");const s=await t.json();this.userInfo=s}catch(e){console.error("获取用户信息出错:",e),this.showMessage("获取用户信息失败","error")}},triggerFileInput(){this.$refs.fileInput.click()},async uploadAvatar(e){const t=e.target.files[0];if(!t)return void this.showMessage("请选择一个文件","error");if(t.size>1048576)return void this.showMessage("头像必须小于1MB","error");const s=N.A.get("token");if(s)try{const e=new FormData;e.append("avatar",t);const a=await fetch("https://userlogin.xn--xhq44jb2fzpc.com/avatar/upload",{method:"POST",headers:{Authorization:s},body:e});if(a.ok){const e=await a.json();this.userInfo.avatar_path=e.avatarUrl,this.showMessage("头像上传成功","success")}else 401===a.status||403===a.status?this.showMessage("权限错误,请重新登录后再试","error"):this.showMessage("上传失败,请稍后再试","error")}catch(a){console.error("头像上传错误:",a),this.showMessage("上传过程中发生错误","error")}else this.showMessage("请先登录,再上传头像","error")},async editNickname(){const e=N.A.get("token");e?(0,U.A)({title:"修改昵称",message:"请输入新的昵称:",showInput:!0,inputPlaceholder:"请输入新昵称",inputValue:this.userInfo.nickname,confirmText:"确认",cancelText:"取消",cancel:!0}).then((async({value:t})=>{if(null!==t&&""!==t.trim())try{const s=await fetch("https://userlogin.xn--xhq44jb2fzpc.com/avatar/edit-nickname",{method:"POST",headers:{"Content-Type":"application/json",Authorization:e},body:JSON.stringify({nickname:t.trim()})});if(s.ok){await s.json();this.userInfo.nickname=t.trim(),this.showMessage("昵称修改成功","success")}else{const e=await s.json();this.showMessage(`修改昵称失败:${e.message}`,"error")}}catch(s){console.error("修改昵称错误:",s),this.showMessage("发生错误,请稍后再试","error")}else this.showMessage("昵称不能为空","error")})).catch((()=>{})):this.showMessage("您尚未登录,请登录后再尝试修改昵称","error")},async editSign(){const e=N.A.get("token");if(!e)return void this.showMessage("您尚未登录,请登录后再尝试修改签名","error");const t=this.userInfo.sign||"";(0,U.A)({title:"修改个性签名",message:"请输入新的个性签名 (最多20个汉字,留空表示删除个性签名):",showInput:!0,inputValue:t,inputPlaceholder:"请输入个性签名",confirmText:"确认",cancelText:"取消",cancel:!0}).then((async({value:t})=>{if(null!==t)try{const s=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/sign",{method:"POST",headers:{"Content-Type":"application/json",Authorization:e},body:JSON.stringify({sign:t.trim()})});if(s.ok)this.userInfo.sign=t.trim(),this.showMessage("个性签名修改成功","success");else{const e=await s.json();this.showMessage(`修改签名失败:${e.message}`,"error")}}catch(s){console.error("修改签名错误:",s),this.showMessage("发生错误,请稍后再试","error")}})).catch((()=>{}))},showMessage(e,t="success"){this.message.timer&&clearTimeout(this.message.timer),this.message.show=!0,this.message.text=e,this.message.type=t,this.message.timer=setTimeout((()=>{this.message.show=!1}),3e3)}}},Q=s(1241);const W=(0,Q.A)(q,[["render",O],["__scopeId","data-v-7c40ae87"]]);var B=W;const J={class:"coin-container"},V={key:0,class:"not-activated"},G={class:"alert alert-warning policy-notification"},H={key:1,class:"activated"},Y={class:"alert alert-warning policy-notification"},R={class:"coin-info"},Z={class:"coin-amount"},ee={class:"transactions"},te={key:0,class:"no-records"},se={key:1,class:"transaction-table"},ae={key:2,class:"pagination"},ne=["disabled"],ie={class:"page-info"},oe=["disabled"];function re(e,t,s,n,i,o){return(0,a.uX)(),(0,a.CE)("div",J,[i.isActivated?((0,a.uX)(),(0,a.CE)("div",H,[(0,a.Lk)("div",Y,(0,k.v_)(i.policyNotification),1),(0,a.Lk)("div",R,[(0,a.Lk)("h3",null,[t[3]||(t[3]=(0,a.eW)("您当前拥有 ")),(0,a.Lk)("span",Z,(0,k.v_)(i.coinAmount),1),t[4]||(t[4]=(0,a.eW)(" 枚东币"))])]),(0,a.Lk)("div",ee,[0===i.transactions.length?((0,a.uX)(),(0,a.CE)("div",te," 暂无交易记录 ")):((0,a.uX)(),(0,a.CE)("table",se,[t[5]||(t[5]=(0,a.Lk)("thead",null,[(0,a.Lk)("tr",null,[(0,a.Lk)("th",null,"时间"),(0,a.Lk)("th",null,"金额"),(0,a.Lk)("th",null,"备注")])],-1)),(0,a.Lk)("tbody",null,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(i.transactions,(e=>((0,a.uX)(),(0,a.CE)("tr",{key:e.id},[(0,a.Lk)("td",null,(0,k.v_)(o.formatDate(e.created_at)),1),(0,a.Lk)("td",{class:(0,k.C4)({credit:"credit"===e.type,debit:"debit"===e.type})},(0,k.v_)("credit"===e.type?"+":"-")+(0,k.v_)(e.amount),3),(0,a.Lk)("td",null,(0,k.v_)(e.note),1)])))),128))])])),i.totalPages>1?((0,a.uX)(),(0,a.CE)("div",ae,[(0,a.Lk)("button",{disabled:1===i.currentPage,onClick:t[0]||(t[0]=e=>o.loadTransactions(i.currentPage-1)),class:"btn btn-sm btn-outline-primary"}," 上一页 ",8,ne),(0,a.Lk)("span",ie,(0,k.v_)(i.currentPage)+" / "+(0,k.v_)(i.totalPages),1),(0,a.Lk)("button",{disabled:i.currentPage===i.totalPages,onClick:t[1]||(t[1]=e=>o.loadTransactions(i.currentPage+1)),class:"btn btn-sm btn-outline-primary"}," 下一页 ",8,oe)])):(0,a.Q3)("",!0)])])):((0,a.uX)(),(0,a.CE)("div",V,[(0,a.Lk)("div",G,(0,k.v_)(i.policyNotification),1),t[2]||(t[2]=(0,a.Lk)("div",{class:"alert alert-info"},[(0,a.Lk)("p",null,"东币系统在账号完成校园验证后自动激活。")],-1))]))])}var le={name:"CoinComponent",data(){return{isActivated:!1,coinAmount:0,transactions:[],currentPage:1,totalPages:1,policyNotification:"由于政策原因,短信验证码服务已于2025.4.13下线,后续东币系统将在校园验证通过后自动激活。之前已完成校园验证但未手动激活东币系统的用户,系统已为您自动激活东币系统。"}},created(){this.loadTransactions(1)},methods:{async loadTransactions(e){try{const t=N.A.get("token");if(!t)return console.error("未找到登录token"),void(this.isActivated=!1);const s=await fetch("https://newfront.xn--xhq44jb2fzpc.com/coin/transactions",{method:"POST",headers:{Authorization:t,"Content-Type":"application/json"},body:JSON.stringify({page_num:e})}),a=await s.json();if(s.ok)this.isActivated=!0,this.coinAmount=a.coinAmount,this.transactions=a.transactions,this.currentPage=a.current_page,this.totalPages=a.total_pages;else{if(403!==s.status||"用户未激活东币系统"!==a.message)throw new Error(a.message||"获取交易记录失败");this.isActivated=!1,this.coinAmount=0,this.transactions=[]}}catch(t){console.error("获取交易记录出错:",t),this.isActivated=!1}},formatDate(e){const t=new Date(e);return`${t.getFullYear()}/${t.getMonth()+1}/${t.getDate()} ${t.getHours()}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}`}}};const ce=(0,Q.A)(le,[["render",re],["__scopeId","data-v-6b086920"]]);var de=ce,ue=s(5130);const he={class:"submission-container"},ge={class:"header"},ke={class:"header-buttons"},ve={class:"modal-content key-management-modal"},me={class:"modal-header"},pe={class:"modal-body"},Le={key:0,class:"key-table-wrapper"},ye={class:"key-table"},fe={class:"key-cell"},be={class:"key-content"},we=["onClick"],Ce={key:0,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"black","stroke-linecap":"round","stroke-linejoin":"round",width:"24",height:"24","stroke-width":"1.1"},_e={key:1,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"black","stroke-linecap":"round","stroke-linejoin":"round",width:"24",height:"24","stroke-width":"1.1"},xe={key:1,class:"loading-keys"},Ae={key:2,class:"empty-keys"},Ee={class:"modal-content exchange-key-modal"},Ie={class:"modal-header"},Me={class:"modal-body"},Pe={class:"form-group"},Se={class:"form-group"},$e={class:"form-actions"},Ke=["disabled"],Xe={class:"submission-table-wrapper"},Te={key:0,class:"submission-table"},je=["onClick"],Fe={class:"title-cell"},ze=["onClick"],De={key:1,class:"empty-state"},Oe={key:2,class:"pagination"},Ne=["disabled"],Ue={class:"page-info"},qe=["disabled"];function Qe(e,t,s,n,i,o){return(0,a.uX)(),(0,a.CE)("div",he,[(0,a.Lk)("div",ge,[t[12]||(t[12]=(0,a.Lk)("h3",{class:"title"},"我的投稿记录",-1)),(0,a.Lk)("div",ke,[(0,a.Lk)("button",{class:"key-manage-btn",onClick:t[0]||(t[0]=e=>i.showKeyManagement=!0)},"密钥管理"),(0,a.Lk)("button",{class:"manage-btn",onClick:t[1]||(t[1]=(...e)=>o.handleManage&&o.handleManage(...e))},"我要投稿")])]),i.showKeyManagement?((0,a.uX)(),(0,a.CE)("div",{key:0,class:"modal-overlay",onClick:t[4]||(t[4]=(0,ue.D$)((e=>i.showKeyManagement=!1),["self"]))},[(0,a.Lk)("div",ve,[(0,a.Lk)("div",me,[t[13]||(t[13]=(0,a.Lk)("h3",null,"密钥管理",-1)),(0,a.Lk)("button",{class:"close-btn",onClick:t[2]||(t[2]=e=>i.showKeyManagement=!1)},"×")]),(0,a.Lk)("div",pe,[(0,a.Lk)("button",{class:"exchange-key-btn",onClick:t[3]||(t[3]=e=>i.showExchangeKey=!0)},"兑换密钥"),i.keyList.length>0?((0,a.uX)(),(0,a.CE)("div",Le,[(0,a.Lk)("table",ye,[t[16]||(t[16]=(0,a.Lk)("thead",null,[(0,a.Lk)("tr",null,[(0,a.Lk)("th",null,"密钥"),(0,a.Lk)("th",null,"状态"),(0,a.Lk)("th",null,"创建时间"),(0,a.Lk)("th",null,"最后使用时间")])],-1)),(0,a.Lk)("tbody",null,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(i.keyList,((e,s)=>((0,a.uX)(),(0,a.CE)("tr",{key:s},[(0,a.Lk)("td",fe,[(0,a.Lk)("div",be,[(0,a.Lk)("span",null,(0,k.v_)(i.visibleKeyIndex===s?e.key_plaintext:"******"),1),(0,a.Lk)("button",{class:"toggle-visibility",onClick:e=>o.toggleKeyVisibility(s)},[i.visibleKeyIndex!==s?((0,a.uX)(),(0,a.CE)("svg",Ce,t[14]||(t[14]=[(0,a.Lk)("path",{d:"M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0"},null,-1),(0,a.Lk)("path",{d:"M21 12c-2.4 4 -5.4 6 -9 6c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6"},null,-1)]))):((0,a.uX)(),(0,a.CE)("svg",_e,t[15]||(t[15]=[(0,a.Lk)("path",{d:"M10.585 10.587a2 2 0 0 0 2.829 2.828"},null,-1),(0,a.Lk)("path",{d:"M16.681 16.673a8.717 8.717 0 0 1 -4.681 1.327c-3.6 0 -6.6 -2 -9 -6c1.272 -2.12 2.712 -3.678 4.32 -4.674m2.86 -1.146a9.055 9.055 0 0 1 1.82 -.18c3.6 0 6.6 2 9 6c-.666 1.11 -1.379 2.067 -2.138 2.87"},null,-1),(0,a.Lk)("path",{d:"M3 3l18 18"},null,-1)])))],8,we)])]),(0,a.Lk)("td",null,[(0,a.Lk)("span",{class:(0,k.C4)(e.is_valid?"status-valid":"status-invalid")},(0,k.v_)(e.is_valid?"有效":"无效"),3)]),(0,a.Lk)("td",null,(0,k.v_)(o.formatDate(e.created_at)),1),(0,a.Lk)("td",null,(0,k.v_)(e.last_used_at?o.formatDate(e.last_used_at):"未使用"),1)])))),128))])])])):i.loadingKeyList?((0,a.uX)(),(0,a.CE)("div",xe," 加载中... ")):((0,a.uX)(),(0,a.CE)("div",Ae,t[17]||(t[17]=[(0,a.Lk)("p",null,"暂无密钥记录",-1)])))])])])):(0,a.Q3)("",!0),i.showExchangeKey?((0,a.uX)(),(0,a.CE)("div",{key:1,class:"modal-overlay",onClick:t[9]||(t[9]=(0,ue.D$)((e=>i.showExchangeKey=!1),["self"]))},[(0,a.Lk)("div",Ee,[(0,a.Lk)("div",Ie,[t[18]||(t[18]=(0,a.Lk)("h3",null,"兑换密钥",-1)),(0,a.Lk)("button",{class:"close-btn",onClick:t[5]||(t[5]=e=>i.showExchangeKey=!1)},"×")]),(0,a.Lk)("div",Me,[(0,a.Lk)("div",Pe,[t[19]||(t[19]=(0,a.Lk)("label",{for:"invite-code"},"邀请码",-1)),(0,a.bo)((0,a.Lk)("input",{id:"invite-code","onUpdate:modelValue":t[6]||(t[6]=e=>i.exchangeForm.invite_code=e),type:"text",placeholder:"输入邀请码"},null,512),[[ue.Jo,i.exchangeForm.invite_code]])]),(0,a.Lk)("div",Se,[t[20]||(t[20]=(0,a.Lk)("label",{for:"custom-key"},"自定义密钥",-1)),(0,a.bo)((0,a.Lk)("input",{id:"custom-key","onUpdate:modelValue":t[7]||(t[7]=e=>i.exchangeForm.key=e),type:"text",placeholder:"输入您的自定义密钥"},null,512),[[ue.Jo,i.exchangeForm.key]])]),(0,a.Lk)("div",$e,[(0,a.Lk)("button",{class:"submit-btn",disabled:!i.exchangeForm.invite_code||!i.exchangeForm.key||i.submitting,onClick:t[8]||(t[8]=(...e)=>o.exchangeKey&&o.exchangeKey(...e))},(0,k.v_)(i.submitting?"处理中...":"确认兑换"),9,Ke)])])])])):(0,a.Q3)("",!0),(0,a.Lk)("div",Xe,[i.submissions.length>0?((0,a.uX)(),(0,a.CE)("table",Te,[t[21]||(t[21]=(0,a.Lk)("thead",null,[(0,a.Lk)("tr",null,[(0,a.Lk)("th",null,"标题"),(0,a.Lk)("th",null,"板块"),(0,a.Lk)("th",null,"审核状态"),(0,a.Lk)("th",null,"审核备注"),(0,a.Lk)("th",null,"投稿时间"),(0,a.Lk)("th",null,"状态更新时间"),(0,a.Lk)("th",null,"操作")])],-1)),(0,a.Lk)("tbody",null,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(i.submissions,(e=>((0,a.uX)(),(0,a.CE)("tr",{key:e.id,class:(0,k.C4)({clickable:e.article_id}),onClick:t=>e.article_id&&o.navigateToArticle(e.article_id)},[(0,a.Lk)("td",Fe,(0,k.v_)(e.title),1),(0,a.Lk)("td",null,(0,k.v_)(e.section),1),(0,a.Lk)("td",null,[(0,a.Lk)("span",{class:(0,k.C4)(o.getStatusClass(e.status))},(0,k.v_)(e.status),3)]),(0,a.Lk)("td",null,(0,k.v_)(e.note||"无"),1),(0,a.Lk)("td",null,(0,k.v_)(o.formatDate(e.created_at)),1),(0,a.Lk)("td",null,(0,k.v_)(o.formatDate(e.updated_at)),1),(0,a.Lk)("td",null,["已通过"===e.status&&e.article_id?((0,a.uX)(),(0,a.CE)("button",{key:0,class:"edit-btn",onClick:(0,ue.D$)((t=>o.navigateToEdit(e.article_id)),["stop"])}," 编辑 ",8,ze)):(0,a.Q3)("",!0)])],10,je)))),128))])])):((0,a.uX)(),(0,a.CE)("div",De,t[22]||(t[22]=[(0,a.Lk)("p",null,"暂无投稿记录",-1)]))),i.totalPages>1?((0,a.uX)(),(0,a.CE)("div",Oe,[(0,a.Lk)("button",{disabled:1===i.currentPage,onClick:t[10]||(t[10]=e=>o.loadSubmissions(i.currentPage-1)),class:"page-btn"}," 上一页 ",8,Ne),(0,a.Lk)("span",Ue,(0,k.v_)(i.currentPage)+" / "+(0,k.v_)(i.totalPages),1),(0,a.Lk)("button",{disabled:i.currentPage===i.totalPages,onClick:t[11]||(t[11]=e=>o.loadSubmissions(i.currentPage+1)),class:"page-btn"}," 下一页 ",8,qe)])):(0,a.Q3)("",!0)])])}var We={name:"SubmissionList",data(){return{submissions:[],currentPage:1,totalPages:1,totalSubmissions:0,loading:!1,loadingKeyList:!1,showKeyManagement:!1,showExchangeKey:!1,keyList:[],visibleKeyIndex:-1,exchangeForm:{invite_code:"",key:""},submitting:!1}},created(){this.loadSubmissions(1)},methods:{async loadSubmissions(e){this.loading=!0;try{const t=N.A.get("token");if(!t)return void console.error("未找到登录token");const s=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/submission",{method:"POST",headers:{Authorization:t,"Content-Type":"application/json"},body:JSON.stringify({page_num:e})});if(!s.ok)throw new Error("获取投稿记录失败");const a=await s.json();this.submissions=a.submissions,this.currentPage=a.current_page,this.totalPages=a.total_pages,this.totalSubmissions=a.total_submissions}catch(t){console.error("获取投稿记录出错:",t)}finally{this.loading=!1}},handleManage(){console.log("点击了作品管理按钮"),this.$emit("manage-works")},navigateToArticle(e){this.$router.push(`/article/${e}`)},navigateToEdit(e){const t=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||window.innerWidth<768;t?U.A.confirm("建议在电脑端进行编辑以获得最佳体验。仍要继续吗?","提示").then((()=>{this.$router.push(`/edit?article=${e}`)})).catch((()=>{console.log("用户取消了在移动端编辑")})):this.$router.push(`/edit?article=${e}`)},formatDate(e){if(!e)return"未知";const t=new Date(e);return`${t.getFullYear()}/${t.getMonth()+1}/${t.getDate()} ${t.getHours()}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}`},getStatusClass(e){switch(e){case"已通过":return"status-approved";case"审核中":return"status-pending";case"未通过":return"status-rejected";default:return""}},async loadKeyList(){this.loadingKeyList=!0;try{const e=N.A.get("token");if(!e)return void console.error("未找到登录token");const t=await fetch("https://newfront.xn--xhq44jb2fzpc.com/encrypt/getcode",{method:"GET",headers:{Authorization:e,"Content-Type":"application/json"}});if(!t.ok)throw new Error("获取密钥列表失败");const s=await t.json();if(!s.success)throw new Error(s.message||"获取密钥列表失败");this.keyList=s.data||[]}catch(e){console.error("获取密钥列表出错:",e),U.A.alert(e.message||"获取密钥列表失败,请稍后再试","错误")}finally{this.loadingKeyList=!1}},toggleKeyVisibility(e){this.visibleKeyIndex===e?this.visibleKeyIndex=-1:this.visibleKeyIndex=e},async exchangeKey(){if(this.exchangeForm.invite_code&&this.exchangeForm.key){this.submitting=!0;try{const e=N.A.get("token");if(!e)return void console.error("未找到登录token");const t=await fetch("https://newfront.xn--xhq44jb2fzpc.com/encrypt/setcode",{method:"POST",headers:{Authorization:e,"Content-Type":"application/json"},body:JSON.stringify(this.exchangeForm)}),s=await t.json();if(!s.success)throw new Error(s.message||"密钥兑换失败");U.A.alert("密钥兑换成功","提示"),this.showExchangeKey=!1,this.exchangeForm.invite_code="",this.exchangeForm.key="",this.loadKeyList()}catch(e){console.error("密钥兑换出错:",e),U.A.alert(e.message||"密钥兑换失败,请稍后再试","错误")}finally{this.submitting=!1}}else U.A.alert("请输入邀请码和密钥","提示")}},watch:{showKeyManagement(e){e?this.loadKeyList():this.visibleKeyIndex=-1}}};const Be=(0,Q.A)(We,[["render",Qe],["__scopeId","data-v-03a6fef0"]]);var Je=Be,Ve=s(4699),Ge={name:"UserCenter",components:{Navbar:g.A,UserInfo:B,Coin:de,SubmissionList:Je},data(){return{isAuthenticated:!1,isLoading:!0}},created(){document.title="个人中心 - NEU小站"},mounted(){this.checkAuthAndFetchUserInfo()},methods:{async checkAuthAndFetchUserInfo(){const e=N.A.get("token");if(!e)return this.isLoading=!1,"/user-center"===this.$route.path?void this.$router.replace("/login"):void("/login"===this.$route.path&&this.showLoginDialog());try{const t=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/islogin",{method:"GET",headers:{Authorization:e}});if(!t.ok)throw new Error("Token 验证失败");const s=await t.json();if(!s||!s.isLoggedIn)throw new Error("Token 验证成功但返回状态不正确");this.isAuthenticated=!0,this.isLoading=!1,"/login"===this.$route.path&&this.$router.replace("/user-center")}catch(t){if(console.error("获取用户信息出错:",t),this.isLoading=!1,N.A.remove("token"),"/user-center"===this.$route.path)return void this.$router.replace("/login");"/login"===this.$route.path&&this.showLoginDialog()}},showLoginDialog(){(0,Ve.A)().then((e=>{console.log("登录成功:",e),this.isAuthenticated=!0,this.$router.replace("/user-center")})).catch((e=>{console.log("登录取消:",e)}))},handleManageWorks(){const e=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||window.innerWidth<768;e?U.A.confirm("建议在电脑端进行投稿以获得最佳体验。仍要继续吗?","提示").then((()=>{this.$router.push("/submit")})).catch((()=>{console.log("用户取消了在移动端投稿")})):this.$router.push("/submit")}}};const He=(0,Q.A)(Ge,[["render",h],["__scopeId","data-v-c5320252"]]);var Ye=He}}]); //# sourceMappingURL=11.6ebf0bde.js.map