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 member_vue_vue_type_style_index_0_scoped_cc6a8f13_lang = ".admin-applications-member[data-v-cc6a8f13]{display:flex;flex-direction:column;gap:16px}.page-header[data-v-cc6a8f13]{align-items:center;background:#fff;border-radius:10px;box-shadow:0 1px 4px #0000000f;display:flex;justify-content:space-between;padding:14px 20px}.page-header h3[data-v-cc6a8f13]{color:#1f2937;font-size:16px;font-weight:700;margin:0}.stats-row[data-v-cc6a8f13]{display:grid;gap:16px;grid-template-columns:repeat(5,1fr)}.stat-item[data-v-cc6a8f13]{background:#fff;border-radius:12px;box-shadow:0 1px 4px #0000000f;padding:20px;text-align:center}.stat-item.blue[data-v-cc6a8f13]{border-top:3px solid #3b82f6}.stat-item.orange[data-v-cc6a8f13]{border-top:3px solid #f97316}.stat-item.green[data-v-cc6a8f13]{border-top:3px solid #22c55e}.stat-item.purple[data-v-cc6a8f13]{border-top:3px solid #8b5cf6}.stat-item.teal[data-v-cc6a8f13]{border-top:3px solid #14b8a6}.stat-num[data-v-cc6a8f13]{color:#1f2937;font-size:28px;font-weight:800}.stat-label[data-v-cc6a8f13]{color:#9ca3af;font-size:12px;margin-top:4px}.table-card[data-v-cc6a8f13],.template-card[data-v-cc6a8f13]{background:#fff;border-radius:12px;box-shadow:0 1px 4px #0000000f;padding:20px}.template-card h4[data-v-cc6a8f13]{color:#1f2937;font-size:15px;font-weight:600;margin:0 0 12px}.table-header[data-v-cc6a8f13]{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.table-title[data-v-cc6a8f13]{color:#1f2937;font-size:15px;font-weight:600}.template-list[data-v-cc6a8f13]{display:flex;flex-direction:column;gap:8px}.template-item[data-v-cc6a8f13]{align-items:center;background:#f9fafb;border-radius:8px;display:flex;gap:10px;padding:10px 14px}.template-icon[data-v-cc6a8f13]{font-size:16px}.template-name[data-v-cc6a8f13]{color:#374151;flex:1;font-size:14px}.template-desc[data-v-cc6a8f13]{color:#9ca3af;font-size:12px;padding:4px 14px}";
const memberStyles_Cf8c9L4t = [
member_vue_vue_type_style_index_0_scoped_cc6a8f13_lang
];
export { memberStyles_Cf8c9L4t as default };
//# sourceMappingURL=member-styles.Cf8c9L4t.mjs.map