feat(api): 添加多路由代理处理实现

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

View File

@@ -0,0 +1 @@
import{d as q,H as F,u as H,i,q as I,j as P,c as o,a as t,l as h,b as l,w as _,a2 as C,m as s,F as S,f as U,r as p,o as n,e as f,t as r,g as $}from"./DPwbf7XO.js";const j={class:"expert-page"},A={class:"category-tabs"},D={class:"expert-list"},E=["onClick"],L={key:0,class:"expert-avatar"},M=["src","alt"],G={key:1,class:"expert-default-avatar"},J={class:"expert-content"},K={class:"expert-title"},O={class:"expert-meta"},Q={class:"meta-item"},W={class:"meta-item"},X={class:"meta-item"},Y={class:"expert-overview"},Z={key:0,class:"loading-placeholder"},ee={key:1,class:"empty-placeholder"},te={key:0,class:"pagination-wrap"},ae=q({__name:"index",setup(se){F({title:"专家资讯 - 决策咨询网"});const w=H(),v=i(I().query.type||""),c=i(1),x=i(12),y=i(0),u=i(!1),k=i([]);async function g(){u.value=!0,u.value=!1}function N(){c.value=1,g()}function b(d){c.value=d,g()}function T(d){w.push(`/expert/${d.id}`)}return P(()=>{g()}),(d,a)=>{const m=p("a-radio-button"),V=p("a-radio-group"),z=p("a-spin"),B=p("a-empty"),R=p("a-pagination");return n(),o("div",j,[a[5]||(a[5]=t("div",{class:"page-header"},[t("h1",{class:"page-title"},"专家资讯"),t("p",{class:"page-desc"},"汇聚各领域权威专家,提供专业视角与研究成果")],-1)),t("div",A,[l(V,{value:s(v),"onUpdate:value":a[0]||(a[0]=e=>C(v)?v.value=e:null),"button-style":"solid",onChange:N},{default:_(()=>[l(m,{value:""},{default:_(()=>[...a[2]||(a[2]=[f("全部",-1)])]),_:1}),l(m,{value:"view"},{default:_(()=>[...a[3]||(a[3]=[f("专家视点",-1)])]),_:1}),l(m,{value:"dynamic"},{default:_(()=>[...a[4]||(a[4]=[f("专家动态",-1)])]),_:1})]),_:1},8,["value"])]),t("div",D,[(n(!0),o(S,null,U(s(k),e=>(n(),o("div",{key:e.id,class:"expert-item",onClick:oe=>T(e)},[e.avatar?(n(),o("div",L,[t("img",{src:e.avatar,alt:e.expertName},null,8,M)])):(n(),o("div",G,r(e.expertName?.charAt(0)),1)),t("div",J,[t("h3",K,r(e.title),1),t("div",O,[t("span",Q,r(e.expertName),1),t("span",W,r(e.expertTitle),1),t("span",X,r(e.publishTime),1)]),t("p",Y,r(e.overview),1)])],8,E))),128)),s(u)?(n(),o("div",Z,[l(z,{size:"large"})])):h("",!0),!s(u)&&s(k).length===0?(n(),o("div",ee,[l(B,{description:"暂无内容"})])):h("",!0)]),s(y)>s(x)?(n(),o("div",te,[l(R,{current:s(c),"onUpdate:current":a[1]||(a[1]=e=>C(c)?c.value=e:null),total:s(y),"page-size":s(x),onChange:b},null,8,["current","total","page-size"])])):h("",!0)])}}}),ie=$(ae,[["__scopeId","data-v-f62ec455"]]);export{ie as default};