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,8 @@
const articles_vue_vue_type_style_index_0_scoped_fea264b4_lang = ".articles-page[data-v-fea264b4]{min-height:100%}.page-header[data-v-fea264b4]{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px}.page-title[data-v-fea264b4]{color:#1f2937;font-size:18px;font-weight:700;margin:0}.page-desc[data-v-fea264b4]{color:#9ca3af;font-size:13px;margin:2px 0 0}.stat-card[data-v-fea264b4]{align-items:center;border:2px solid transparent;border-radius:12px;cursor:pointer;display:flex;gap:12px;padding:16px;transition:all .2s}.stat-card[data-v-fea264b4]:hover{box-shadow:0 4px 12px #00000014;transform:translateY(-2px)}.stat-card.active[data-v-fea264b4]{box-shadow:0 4px 12px #0000001f}.stat-card.blue[data-v-fea264b4]{background:#eff6ff;border-color:#dbeafe}.stat-card.green[data-v-fea264b4]{background:#f0fdf4;border-color:#bbf7d0}.stat-card.orange[data-v-fea264b4]{background:#fff7ed;border-color:#fed7aa}.stat-card.red[data-v-fea264b4]{background:#fff1f2;border-color:#fecdd3}.stat-card.active.blue[data-v-fea264b4]{border-color:#3b82f6}.stat-card.active.green[data-v-fea264b4]{border-color:#22c55e}.stat-card.active.orange[data-v-fea264b4]{border-color:#f97316}.stat-card.active.red[data-v-fea264b4]{border-color:#ef4444}.stat-icon[data-v-fea264b4]{flex-shrink:0;font-size:28px}.stat-value[data-v-fea264b4]{color:#000000d9;font-size:22px;font-weight:700;line-height:1.2}.stat-label[data-v-fea264b4]{color:#00000073;font-size:12px;margin-top:2px}.panel[data-v-fea264b4]{background:#fff;border:1px solid #f0f0f0;border-radius:12px;overflow:hidden}.panel-header[data-v-fea264b4]{align-items:center;border-bottom:1px solid #f5f5f5;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;padding:14px 18px}.panel-title[data-v-fea264b4]{color:#000000d9;font-size:14px;font-weight:600}.article-info-cell[data-v-fea264b4]{align-items:flex-start;display:flex;gap:12px}.article-thumb[data-v-fea264b4]{border:1px solid #f0f0f0;border-radius:8px;-o-object-fit:cover;object-fit:cover}.article-thumb[data-v-fea264b4],.article-thumb-empty[data-v-fea264b4]{flex-shrink:0;height:48px;width:72px}.article-thumb-empty[data-v-fea264b4]{align-items:center;background:#f3f4f6;border-radius:8px;display:flex;font-size:20px;justify-content:center}.article-info-text[data-v-fea264b4]{flex:1;min-width:0}.article-title[data-v-fea264b4]{color:#000000d9;font-size:14px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.article-meta[data-v-fea264b4]{color:#00000073;font-size:12px;margin-top:4px}.meta-item[data-v-fea264b4]{margin-left:8px}.article-overview[data-v-fea264b4]{display:-webkit-box;-webkit-line-clamp:2;line-height:1.5;margin-top:4px;-webkit-box-orient:vertical;overflow:hidden}.article-overview[data-v-fea264b4],.metrics-cell[data-v-fea264b4]{color:#00000073;font-size:12px}.metrics-cell[data-v-fea264b4]{line-height:1.7}.cover-upload-wrap[data-v-fea264b4]{display:flex;flex-direction:column;gap:10px}.cover-preview-card[data-v-fea264b4]{background:#fafafa;border:1px dashed #d9d9d9;border-radius:10px;padding:8px;width:220px}.cover-preview-image[data-v-fea264b4]{border-radius:8px;display:block;height:124px;-o-object-fit:cover;object-fit:cover;width:100%}.cover-preview-actions[data-v-fea264b4]{display:flex;gap:8px;margin-top:8px}.field-hint[data-v-fea264b4],.switch-tip[data-v-fea264b4]{color:#00000073;font-size:12px}.switch-tip[data-v-fea264b4]{margin-left:8px}.content-editor-wrap[data-v-fea264b4]{border:1px solid #d9d9d9;border-radius:8px;overflow:hidden}.editor-tabs[data-v-fea264b4]{background:#fafafa;border-bottom:1px solid #f0f0f0;padding:8px 12px}.preview-only-mode[data-v-fea264b4]{background:#fff;min-height:320px;padding:16px}.empty-preview[data-v-fea264b4]{color:#00000040;font-style:italic;padding:60px 0;text-align:center}.format-hint[data-v-fea264b4]{color:#00000073;font-size:12px;margin-left:8px}.preview-meta[data-v-fea264b4]{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.preview-meta-text[data-v-fea264b4]{color:#00000073;font-size:12px}.preview-cover-wrap[data-v-fea264b4]{margin:16px 0 12px}.preview-cover[data-v-fea264b4]{border:1px solid #f0f0f0;border-radius:12px;max-height:320px;-o-object-fit:cover;object-fit:cover;width:100%}.preview-summary[data-v-fea264b4]{background:#fafafa;border-radius:10px;color:#000000a6;line-height:1.7;margin-top:12px;padding:12px 14px}.preview-content[data-v-fea264b4]{color:#000000d9;font-size:15px;line-height:1.8}.image-preview-modal[data-v-fea264b4]{border-radius:8px;max-height:70vh;-o-object-fit:contain;object-fit:contain;width:100%}.text-sm[data-v-fea264b4]{font-size:12px}.text-gray[data-v-fea264b4]{color:#00000073}.mb-6[data-v-fea264b4]{margin-bottom:24px}";
const articlesStyles_CWz2MzuZ = [
articles_vue_vue_type_style_index_0_scoped_fea264b4_lang
];
export { articlesStyles_CWz2MzuZ as default };
//# sourceMappingURL=articles-styles.CWz2MzuZ.mjs.map