Files
jczxw-pc/.output/public/_nuxt/wygP8d3n.js
赵忠林 528fe28ffc feat(api): 添加多路由代理处理实现
- 新增api目录下多个接口路径代理处理文件,支持动态拼接目标URL
- 根据环境变量选择不同的后端服务地址(如dev和生产环境)
- 统一添加TenantId和Authorization请求头传递租户及身份信息
- 实现请求参数及搜索参数的完整转发
- 引入better-sqlite3及node内建模块支持服务端功能
- 新增专家详情页面,实现文章、成果及预约咨询功能展示
- 页面实现加载骨架屏、标签页切换及空状态提示优化体验
2026-04-28 13:50:27 +08:00

2 lines
9.2 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

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.

import{d as ee,H as se,v as te,i as h,s as P,j as ae,c as p,a as s,b as a,m as t,w as o,a2 as ne,r,o as u,G as S,e as v,t as i,F as H,f as D,z as oe,a5 as T,A as M,a6 as U,l as B,p as w,g as le}from"./DPwbf7XO.js";import{g as ie}from"./Dl1HJz7f.js";const de={class:"profile-page"},re={class:"mx-auto max-w-screen-xl px-4 py-8"},ue={key:0,class:"not-authed"},pe={key:1},ve={class:"profile-card"},ce={class:"avatar-section"},_e={class:"avatar-wrap"},fe=["src"],me={key:1,class:"avatar-placeholder"},ge={class:"user-name"},ye={class:"user-role"},be={class:"user-stats"},ke={class:"stat-item"},we={class:"stat-num"},Ce={class:"stat-item"},he={class:"stat-num"},xe={class:"stat-item"},Pe={class:"stat-num"},Te={class:"side-menu"},Ue=["onClick"],$e={class:"menu-icon"},ze={class:"content-panel"},Ae={class:"panel-header"},Se={class:"security-section"},Be={class:"security-items"},Fe={class:"security-item"},Ie={class:"security-item"},Ne={class:"security-info"},Ve={class:"security-desc"},je={class:"content-panel"},He={class:"panel-header"},De={key:0,class:"empty-state"},Me={class:"suggestion-list"},Ee={class:"suggestion-header"},Ge={class:"suggestion-title"},Le={class:"suggestion-content"},Oe={class:"suggestion-meta"},Re={key:0,class:"has-reply"},qe={key:0,class:"suggestion-reply"},Je={class:"content-panel"},Ke={class:"content-panel"},Qe={class:"panel-header"},We=ee({__name:"index",setup(Xe){se({title:"个人中心 - 决策咨询网"});const F=te(()=>!!ie()),b=h("info"),c=h(!1),k=h(!1),C=h(!1),E=[{key:"info",label:"基本信息",icon:"👤"},{key:"suggestions",label:"我的建言",icon:"💬"},{key:"favorites",label:"我的收藏",icon:"⭐"},{key:"history",label:"浏览历史",icon:"📖"}],g=P({nickname:"用户",username:"",avatar:"",isAdmin:!1,phone:"",email:"",organization:"",bio:""}),d=P({nickname:"",phone:"",email:"",organization:"",bio:""}),_=P({oldPwd:"",newPwd:"",confirmPwd:""}),$=P({suggestions:0,favorites:0,views:0}),I=h([]);function G(l){return{pending:"orange",processing:"blue",done:"green",rejected:"red"}[l]||"default"}function L(l){return{pending:"待处理",processing:"处理中",done:"已处理",rejected:"已关闭"}[l]||l}function O(){return!1}function R(){}async function q(){k.value=!0;try{w.success("保存成功"),c.value=!1}catch(l){w.error(l?.message||"保存失败")}finally{k.value=!1}}async function J(){if(_.newPwd!==_.confirmPwd){w.error("两次密码不一致");return}k.value=!0;try{w.success("密码修改成功,请重新登录"),C.value=!1}catch(l){w.error(l?.message||"修改失败")}finally{k.value=!1}}function K(){w.info("已清空浏览历史")}return ae(async()=>{F.value}),(l,e)=>{const f=r("a-button"),Q=r("a-result"),W=r("a-upload"),N=r("a-tag"),y=r("a-col"),X=r("a-space"),x=r("a-input"),m=r("a-form-item"),Y=r("a-textarea"),V=r("a-row"),j=r("a-form"),z=r("a-empty"),A=r("a-input-password"),Z=r("a-modal");return u(),p("div",de,[s("div",re,[t(F)?(u(),p("div",pe,[a(V,{gutter:[32,24]},{default:o(()=>[a(y,{xs:24,lg:7},{default:o(()=>[s("div",ve,[s("div",ce,[a(W,{name:"avatar","list-type":"picture-circle",class:"avatar-uploader","show-upload-list":!1,"before-upload":O,onChange:R},{default:o(()=>[s("div",_e,[t(g).avatar?(u(),p("img",{key:0,src:t(g).avatar,alt:"avatar",class:"avatar-img"},null,8,fe)):(u(),p("div",me,i(t(g).nickname?.charAt(0)||"用"),1)),e[16]||(e[16]=s("div",{class:"avatar-overlay"},[s("span",null,"更换头像")],-1))])]),_:1})]),s("h2",ge,i(t(g).nickname||t(g).username||"用户"),1),s("div",ye,[a(N,{color:t(g).isAdmin?"red":"blue"},{default:o(()=>[v(i(t(g).isAdmin?"管理员":"普通用户"),1)]),_:1},8,["color"])]),s("div",be,[s("div",ke,[s("div",we,i(t($).suggestions),1),e[17]||(e[17]=s("div",{class:"stat-label"},"建言",-1))]),s("div",Ce,[s("div",he,i(t($).favorites),1),e[18]||(e[18]=s("div",{class:"stat-label"},"收藏",-1))]),s("div",xe,[s("div",Pe,i(t($).views),1),e[19]||(e[19]=s("div",{class:"stat-label"},"浏览",-1))])]),s("div",Te,[(u(),p(H,null,D(E,n=>s("div",{key:n.key,class:oe(["side-menu-item",{active:t(b)===n.key}]),onClick:Ye=>b.value=n.key},[s("span",$e,i(n.icon),1),s("span",null,i(n.label),1)],10,Ue)),64))])])]),_:1}),a(y,{xs:24,lg:17},{default:o(()=>[T(s("div",ze,[s("div",Ae,[e[23]||(e[23]=s("h3",null,"基本信息",-1)),t(c)?(u(),M(X,{key:1},{default:o(()=>[a(f,{onClick:e[2]||(e[2]=n=>c.value=!1)},{default:o(()=>[...e[21]||(e[21]=[v("取消",-1)])]),_:1}),a(f,{type:"primary",loading:t(k),onClick:q},{default:o(()=>[...e[22]||(e[22]=[v("保存",-1)])]),_:1},8,["loading"])]),_:1})):(u(),M(f,{key:0,type:"primary",onClick:e[1]||(e[1]=n=>c.value=!0)},{default:o(()=>[...e[20]||(e[20]=[v("编辑资料",-1)])]),_:1}))]),a(j,{model:t(d),layout:"vertical",class:"info-form"},{default:o(()=>[a(V,{gutter:16},{default:o(()=>[a(y,{span:12},{default:o(()=>[a(m,{label:"昵称"},{default:o(()=>[a(x,{value:t(d).nickname,"onUpdate:value":e[3]||(e[3]=n=>t(d).nickname=n),disabled:!t(c),placeholder:"请输入昵称"},null,8,["value","disabled"])]),_:1})]),_:1}),a(y,{span:12},{default:o(()=>[a(m,{label:"手机号"},{default:o(()=>[a(x,{value:t(d).phone,"onUpdate:value":e[4]||(e[4]=n=>t(d).phone=n),disabled:!t(c),placeholder:"请输入手机号"},null,8,["value","disabled"])]),_:1})]),_:1}),a(y,{span:12},{default:o(()=>[a(m,{label:"电子邮箱"},{default:o(()=>[a(x,{value:t(d).email,"onUpdate:value":e[5]||(e[5]=n=>t(d).email=n),disabled:!t(c),placeholder:"请输入邮箱"},null,8,["value","disabled"])]),_:1})]),_:1}),a(y,{span:12},{default:o(()=>[a(m,{label:"工作单位"},{default:o(()=>[a(x,{value:t(d).organization,"onUpdate:value":e[6]||(e[6]=n=>t(d).organization=n),disabled:!t(c),placeholder:"请输入工作单位"},null,8,["value","disabled"])]),_:1})]),_:1}),a(y,{span:24},{default:o(()=>[a(m,{label:"个人简介"},{default:o(()=>[a(Y,{value:t(d).bio,"onUpdate:value":e[7]||(e[7]=n=>t(d).bio=n),disabled:!t(c),rows:3,placeholder:"请输入个人简介"},null,8,["value","disabled"])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"]),s("div",Se,[e[28]||(e[28]=s("h4",null,"账号安全",-1)),s("div",Be,[s("div",Fe,[e[25]||(e[25]=s("div",{class:"security-info"},[s("span",{class:"security-icon"},"🔒"),s("div",null,[s("div",{class:"security-name"},"登录密码"),s("div",{class:"security-desc"},"建议定期修改密码保护账户安全")])],-1)),a(f,{size:"small",onClick:e[8]||(e[8]=n=>C.value=!0)},{default:o(()=>[...e[24]||(e[24]=[v("修改",-1)])]),_:1})]),s("div",Ie,[s("div",Ne,[e[27]||(e[27]=s("span",{class:"security-icon"},"📱",-1)),s("div",null,[e[26]||(e[26]=s("div",{class:"security-name"},"绑定手机",-1)),s("div",Ve,i(t(d).phone?`已绑定 ${t(d).phone.replace(/(\d{3})\d{4}(\d{4})/,"$1****$2")}`:"未绑定手机号"),1)])]),a(f,{size:"small"},{default:o(()=>[v(i(t(d).phone?"修改":"绑定"),1)]),_:1})])])])],512),[[U,t(b)==="info"]]),T(s("div",je,[s("div",He,[e[30]||(e[30]=s("h3",null,"我的建言",-1)),a(f,{type:"primary",onClick:e[9]||(e[9]=n=>("navigateTo"in l?l.navigateTo:t(S))("/suggestions"))},{default:o(()=>[...e[29]||(e[29]=[v("提交新建言",-1)])]),_:1})]),t(I).length===0?(u(),p("div",De,[a(z,{description:"暂无建言记录"},{extra:o(()=>[a(f,{type:"primary",onClick:e[10]||(e[10]=n=>("navigateTo"in l?l.navigateTo:t(S))("/suggestions"))},{default:o(()=>[...e[31]||(e[31]=[v("立即建言",-1)])]),_:1})]),_:1})])):B("",!0),s("div",Me,[(u(!0),p(H,null,D(t(I),n=>(u(),p("div",{key:n.id,class:"suggestion-item"},[s("div",Ee,[s("span",Ge,i(n.title),1),a(N,{color:G(n.status)},{default:o(()=>[v(i(L(n.status)),1)]),_:2},1032,["color"])]),s("p",Le,i(n.content),1),s("div",Oe,[s("span",null,i(n.createTime),1),n.reply?(u(),p("span",Re,"已回复")):B("",!0)]),n.reply?(u(),p("div",qe,[e[32]||(e[32]=s("span",{class:"reply-label"},"官方回复:",-1)),s("span",null,i(n.reply),1)])):B("",!0)]))),128))])],512),[[U,t(b)==="suggestions"]]),T(s("div",Je,[e[33]||(e[33]=s("div",{class:"panel-header"},[s("h3",null,"我的收藏")],-1)),a(z,{description:"暂无收藏内容",style:{padding:"60px 0"}})],512),[[U,t(b)==="favorites"]]),T(s("div",Ke,[s("div",Qe,[e[35]||(e[35]=s("h3",null,"浏览历史",-1)),a(f,{onClick:K},{default:o(()=>[...e[34]||(e[34]=[v("清空历史",-1)])]),_:1})]),a(z,{description:"暂无浏览记录",style:{padding:"60px 0"}})],512),[[U,t(b)==="history"]])]),_:1})]),_:1})])):(u(),p("div",ue,[a(Q,{status:"403",title:"请先登录","sub-title":"登录后可查看和编辑个人信息"},{extra:o(()=>[a(f,{type:"primary",size:"large",onClick:e[0]||(e[0]=n=>("navigateTo"in l?l.navigateTo:t(S))("/login"))},{default:o(()=>[...e[15]||(e[15]=[v("去登录",-1)])]),_:1})]),_:1})]))]),a(Z,{open:t(C),"onUpdate:open":e[14]||(e[14]=n=>ne(C)?C.value=n:null),title:"修改密码",onOk:J,"confirm-loading":t(k)},{default:o(()=>[a(j,{model:t(_),layout:"vertical"},{default:o(()=>[a(m,{label:"当前密码"},{default:o(()=>[a(A,{value:t(_).oldPwd,"onUpdate:value":e[11]||(e[11]=n=>t(_).oldPwd=n),placeholder:"请输入当前密码"},null,8,["value"])]),_:1}),a(m,{label:"新密码"},{default:o(()=>[a(A,{value:t(_).newPwd,"onUpdate:value":e[12]||(e[12]=n=>t(_).newPwd=n),placeholder:"请输入新密码至少6位"},null,8,["value"])]),_:1}),a(m,{label:"确认新密码"},{default:o(()=>[a(A,{value:t(_).confirmPwd,"onUpdate:value":e[13]||(e[13]=n=>t(_).confirmPwd=n),placeholder:"请再次输入新密码"},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["open","confirm-loading"])])}}}),ss=le(We,[["__scopeId","data-v-7f4a0583"]]);export{ss as default};