# fs_admin **Repository Path**: xiaochenyang1314/fs_admin ## Basic Information - **Project Name**: fs_admin - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-04 - **Last Updated**: 2025-11-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 磷康健康管理后台系统 - 技术方案设计文档 🏥 ## 📊 项目当前状态 > **开发进度**: 🟢 100% (核心功能) | **状态**: 已完成 | **最后更新**: 2024-11-04 ### ✅ 已完成功能 - ✅ 项目基础架构搭建(Vite + Vue3 + TypeScript + Element Plus) - ✅ 布局系统(Header、Sidebar、DefaultLayout) - ✅ 工作台 Dashboard(数据统计展示) - ✅ 健康档案管理(列表、详情、新增、编辑、删除、审核、批量审核) - ✅ 体检报告管理(列表、详情、新增、编辑、删除) - ✅ 健康指标管理(查询、趋势展示、图表可视化) - ✅ API请求封装与类型定义 - ✅ 公共组件与工具函数 - ✅ 响应式布局与交互优化 ### 🎯 项目定位 本项目专注于健康管理核心功能,提供轻量级的健康数据管理解决方案,不包含复杂的权限管理和用户系统。 --- ## 📋 项目基本信息 **项目名称**: 磷康健康管理后台系统 **英文名称**: LinKang Health Admin System **版本号**: 1.0.0 **项目类型**: Web后台管理系统 **技术栈**: Vite 5 + Vue 3 + TypeScript + Element Plus **对应前端**: fs_member_health_uniapp (uni-app跨平台应用) **Git仓库**: https://gitee.com/xiaochenyang1314/fs_admin.git --- ## 🎯 项目目标 基于现有的磷康健康管理 uni-app 应用,开发一套精简实用的后台管理系统,用于: - ✅ 健康档案审核与管理 - ✅ 体检报告数据管理 - ✅ 健康指标管理与查看 - ✅ 数据统计与可视化 > 💡 **设计理念**: 聚焦核心业务,轻量化设计,专注健康数据管理 --- ## 🏗️ 技术架构 ### 核心技术栈 | 技术 | 版本 | 用途 | |------|------|------| | **Vue** | 3.4+ | 渐进式前端框架 | | **TypeScript** | 5.5+ | 类型安全 | | **Vite** | 5.4+ | 新一代构建工具 | | **Element Plus** | 2.8+ | UI组件库 | | **Vue Router** | 4.4+ | 路由管理 | | **Pinia** | 2.2+ | 状态管理 | | **Axios** | 1.7+ | HTTP请求库 | | **dayjs** | 1.11+ | 时间处理 | ### 开发工具链 ```json { "代码规范": "ESLint + Prettier", "CSS预处理器": "Sass/SCSS", "构建工具": "Vite + Rollup", "包管理器": "pnpm" } ``` --- ## 📁 项目结构设计 > **说明**: ✅ 表示已实现 | ⏳ 表示待实现 ``` fs_member_health_admin/ │ ├── public/ # 静态资源 │ └── favicon.ico │ ├── src/ │ ├── api/ # API接口层 ✅ │ │ ├── modules/ # 功能模块接口 │ │ │ └── health.ts # 健康管理接口 ✅ │ │ ├── types/ # 接口类型定义 ✅ │ │ │ ├── common.ts # 通用类型 ✅ │ │ │ ├── health.ts # 健康类型 ✅ │ │ │ └── index.ts # 统一导出 ✅ │ │ ├── request.ts # Axios封装 ✅ │ │ └── index.ts # API统一导出 ✅ │ │ │ ├── assets/ # 资源文件 ✅ │ │ ├── styles/ # 全局样式 ✅ │ │ │ ├── index.scss # 入口文件 ✅ │ │ │ ├── variables.scss # 变量定义 ✅ │ │ │ ├── reset.scss # 样式重置 ✅ │ │ │ └── (其他样式文件按需扩展) │ │ └── images/ # 图片资源 ✅ │ │ │ ├── components/ # 全局组件 │ │ ├── Layout/ # 布局组件 ✅ │ │ │ ├── Header.vue # 顶部导航 ✅ │ │ │ └── Sidebar.vue # 侧边菜单 ✅ │ │ ├── Table/ # 表格组件 ⏳ (按需扩展) │ │ ├── Form/ # 表单组件 ⏳ (按需扩展) │ │ ├── Upload/ # 上传组件 ⏳ (按需扩展) │ │ └── Common/ # 通用组件 ⏳ (按需扩展) │ │ │ ├── composables/ # 组合式函数 ✅ │ │ ├── useTable.ts # 表格通用逻辑 ✅ │ │ ├── useForm.ts # 表单通用逻辑 ✅ │ │ ├── useDict.ts # 字典数据 ✅ │ │ └── usePermission.ts # 权限判断 ✅ │ │ │ ├── layouts/ # 页面布局 ✅ │ │ └── DefaultLayout.vue # 默认布局 ✅ │ │ │ ├── router/ # 路由配置 ✅ │ │ ├── index.ts # 路由入口 ✅ │ │ └── guards.ts # 路由守卫 ✅ │ │ │ ├── stores/ # Pinia状态管理 ✅ │ │ ├── modules/ │ │ │ └── app.ts # 应用状态 ✅ │ │ └── index.ts # Store入口 ✅ │ │ │ ├── utils/ # 工具函数 ✅ │ │ ├── storage.ts # 存储工具 ✅ │ │ ├── validate.ts # 校验工具 ✅ │ │ ├── format.ts # 格式化工具 ✅ │ │ └── index.ts # 统一导出 ✅ │ │ │ ├── views/ # 页面视图 ✅ │ │ ├── dashboard/ # 工作台 ✅ │ │ │ └── index.vue # 数据统计展示 ✅ │ │ ├── health/ # 健康管理 ✅ │ │ │ ├── archive/ # 健康档案 ✅ │ │ │ │ └── index.vue # 档案列表(含详情弹窗) ✅ │ │ │ ├── report/ # 体检报告 ✅ │ │ │ │ └── index.vue # 报告列表(含详情弹窗) ✅ │ │ │ └── indicator/ # 健康指标 ✅ │ │ │ └── index.vue # 指标查询与趋势图 ✅ │ │ └── error/ # 错误页面 ✅ │ │ └── 404.vue # 404页面 ✅ │ │ │ ├── App.vue # 根组件 │ ├── main.ts # 应用入口 │ └── env.d.ts # 环境类型声明 │ ├── .env # 环境变量(通用) ├── .env.development # 开发环境 ├── .env.production # 生产环境 ├── .eslintrc.cjs # ESLint配置 ├── .prettierrc.json # Prettier配置 ├── index.html # HTML模板 ├── package.json # 项目依赖 ├── tsconfig.json # TS配置 ├── tsconfig.node.json # Node TS配置 ├── vite.config.ts # Vite配置 └── README.md # 项目文档 ``` --- ## 🎨 功能模块设计 ### 1. 工作台模块 ✅ **功能**: - 数据统计看板 ✅ - 关键指标展示 ✅ - 快捷操作入口 ✅ --- ### 2. 健康管理模块 ✅ (已完成) #### 2.1 健康档案管理 ✅ **列表功能**: - 档案列表(分页、搜索、筛选) ✅ - 档案审核(待审核/已通过/已拒绝) ✅ - 档案详情查看 ✅ - 批量审核 ✅ - 新增档案 ✅ - 编辑档案 ✅ - 删除档案 ✅ **档案信息字段**: ```typescript interface HealthArchive { fsid: string // 档案ID uid: string // 用户ID userName?: string // 用户姓名(关联查询) userPhone?: string // 用户手机(关联查询) name: string // 档案姓名 birthday: string // 生日 sex: string // 性别(0-女, 1-男) address: string // 地址 medicalHistory: string // 病史 seafoodAllergy: string // 海鲜过敏 takeHealthProducts: string // 保健品 exerciseFrequency: string // 运动频率 dietaryStyle: string // 饮食风格 drinkingAlcohol: string // 饮酒情况 jointPain: string // 关节疼痛 healthGoal: string // 健康目标 checkupDate: string // 体检日期 status: number // 审核状态(0-待审核, 1-已通过, 2-已拒绝) auditReason?: string // 审核原因(拒绝时填写) createTime: string // 创建时间 updateTime: string // 更新时间 } ``` **筛选条件**: | 字段 | 类型 | 说明 | |------|------|------| | 用户手机号 | Input | 模糊搜索 | | 姓名 | Input | 模糊搜索 | | 审核状态 | Select | 待审核/已通过/已拒绝 | | 创建时间 | DateRange | 范围查询 | #### 2.2 体检报告管理 ✅ **列表功能**: - 报告列表(分页、搜索、筛选) ✅ - 报告详情查看 ✅ - 报告文件预览/下载 ✅ - 健康指标录入与编辑 ✅ - 新增报告 ✅ - 编辑报告 ✅ - 删除报告 ✅ **报告字段**: ```typescript interface HealthReport { fsid: string // 报告ID uid: string // 用户ID userName?: string // 用户姓名(关联查询) userPhone?: string // 用户手机(关联查询) reportFile: string // 报告文件URL triglyceride: string // 甘油三酯 HdlCholesterol: string // HDL胆固醇 LdlCholesterol: string // LDL胆固醇 bloodPressure: string // 血压 hsCRP: string // 超敏C反应蛋白 alanineAminotransferase: string // 肝功能(ALT) checkupDate: string // 体检日期 createTime: string // 创建时间 updateTime: string // 更新时间 } ``` **筛选条件**: | 字段 | 类型 | 说明 | |------|------|------| | 用户手机号 | Input | 模糊搜索 | | 体检日期 | DateRange | 范围查询 | | 创建时间 | DateRange | 范围查询 | #### 2.3 健康指标管理 ✅ **功能**: - 指标数据查看(按用户查询) ✅ - 指标趋势分析(图表展示) ✅ - 异常指标标记 ✅ - 指标参考范围显示 ✅ **指标类型**: - 甘油三酯(Triglyceride) - 高密度脂蛋白胆固醇(HDL Cholesterol) - 低密度脂蛋白胆固醇(LDL Cholesterol) - 血压(Blood Pressure) - 超敏C反应蛋白(hs-CRP) - 肝功能-丙氨酸氨基转移酶(ALT) --- ## 🔌 API接口设计 ### 接口基础配置 ```typescript // 环境变量配置 VITE_API_BASE_URL=https://api.linkang-health.com/admin/api VITE_API_TIMEOUT=30000 // Token配置 TOKEN_KEY=Admin-Token TOKEN_PREFIX=Bearer ``` ### 接口响应格式 ```typescript // 成功响应 { code: 200, data: any, message: 'success' } // 失败响应 { code: 400 | 401 | 403 | 404 | 500, data: null, message: '错误信息' } // 分页响应 { code: 200, data: { list: any[], total: number, page: number, pageSize: number }, message: 'success' } ``` ### 主要接口列表 #### 健康管理接口 (health.ts) ```typescript // ==================== 健康档案 ==================== // 健康档案列表 GET /admin/health/archive/list Query: { page: number pageSize: number uid?: string // 用户ID phone?: string // 用户手机号(模糊搜索) name?: string // 姓名(模糊搜索) status?: number // 审核状态(0-待审核, 1-已通过, 2-已拒绝) startTime?: string // 创建开始时间 endTime?: string // 创建结束时间 } // 健康档案详情 GET /admin/health/archive/detail/:id // 审核健康档案 PUT /admin/health/archive/audit Body: { id: string status: number // 1-通过, 2-拒绝 auditReason?: string // 审核原因(拒绝时必填) } // 批量审核 PUT /admin/health/archive/audit/batch Body: { ids: string[] status: number auditReason?: string } // ==================== 体检报告 ==================== // 体检报告列表 GET /admin/health/report/list Query: { page: number pageSize: number uid?: string // 用户ID phone?: string // 用户手机号(模糊搜索) checkupStartDate?: string // 体检开始日期 checkupEndDate?: string // 体检结束日期 startTime?: string // 创建开始时间 endTime?: string // 创建结束时间 } // 体检报告详情 GET /admin/health/report/detail/:id // 新增体检报告 POST /admin/health/report Body: { uid: string reportFile: string triglyceride: string HdlCholesterol: string LdlCholesterol: string bloodPressure: string hsCRP: string alanineAminotransferase: string checkupDate: string } // 编辑体检报告 PUT /admin/health/report/:id Body: { ... } // 同新增 // 删除体检报告 DELETE /admin/health/report/:id // ==================== 健康指标 ==================== // 健康指标列表(按用户查询) GET /admin/health/indicator/list Query: { uid: string // 用户ID(必填) startDate?: string // 开始日期 endDate?: string // 结束日期 } Response: { list: HealthReport[] trend: { // 趋势数据(用于图表) dates: string[] triglyceride: number[] HdlCholesterol: number[] LdlCholesterol: number[] bloodPressure: string[] hsCRP: number[] alanineAminotransferase: number[] } } --- ## 🎨 UI设计规范 ### 色彩规范 ```scss // 主色 $primary-color: #409EFF; // Element Plus默认蓝色 $success-color: #67C23A; $warning-color: #E6A23C; $danger-color: #F56C6C; $info-color: #909399; // 辅助色 $bg-color: #F5F7FA; $border-color: #DCDFE6; $text-primary: #303133; $text-regular: #606266; $text-secondary: #909399; $text-placeholder: #C0C4CC; // 健康主题色(可自定义) $health-primary: #52C41A; // 健康绿 $health-secondary: #1890FF; // 活力蓝 ``` ### 布局规范 ```scss // 间距 $spacing-xs: 4px; $spacing-sm: 8px; $spacing-md: 16px; $spacing-lg: 24px; $spacing-xl: 32px; // 圆角 $border-radius-sm: 2px; $border-radius-base: 4px; $border-radius-lg: 8px; // 阴影 $box-shadow-light: 0 2px 4px rgba(0, 0, 0, 0.04); $box-shadow-base: 0 2px 8px rgba(0, 0, 0, 0.08); $box-shadow-dark: 0 4px 12px rgba(0, 0, 0, 0.12); ``` ### 组件规范 #### 表单规范 - 所有 Input 组件必须设置 `maxlength` 和 `clearable` - 必填项标记红色星号 - 表单项 label 宽度统一: 120px - 表单项间距: 24px - 提交按钮必须有 loading 状态 #### 表格规范 - 表格边框: border - 表头背景色: #F5F7FA - 斑马纹: stripe - 操作列固定右侧: fixed="right" - 操作按钮最多3个,超出使用下拉菜单 #### 日期格式 - 日期: YYYY-MM-DD - 时间: HH:mm:ss - 日期时间: YYYY-MM-DD HH:mm:ss --- ## 📊 前端强制规范 ### 1. 表单组件规范 ```vue ``` ### 2. 交互体验规范 ```vue 提交 删除 ``` ### 3. 文案标点规范 ```typescript // ✅ 正确示例 const label = '用户名称:' const message = '删除成功!' // ❌ 错误示例 const label = '用户名称:' // 使用英文冒号 const message = '删除成功!' // 使用英文感叹号 ``` ### 4. 路由参数规范 ```typescript // ✅ 正确示例 router.push({ path: '/user/detail', query: { record: encodeURIComponent(JSON.stringify({ id: '123', name: '张三' })) } }) // 接收参数 const route = useRoute() const record = JSON.parse(decodeURIComponent(route.query.record as string)) ``` ### 5. 调试输出规范 ```typescript // ✅ 正确示例 console.log('userData:', userData) console.log('请求参数:', params) // ❌ 错误示例 console.log('🎉 用户数据 >>>', userData) console.log('========请求参数========', params) ``` --- ## 🚀 开发流程 ### 1. 环境搭建 ```bash # 安装依赖 pnpm install # 启动开发服务器 pnpm dev # 类型检查 pnpm type-check # 代码检查 pnpm lint # 代码格式化 pnpm format # 构建生产版本 pnpm build # 预览生产版本 pnpm preview ``` ### 2. Git提交规范 ```bash # 提交类型 feat: 新功能 fix: 修复bug docs: 文档更新 style: 代码格式调整 refactor: 代码重构 perf: 性能优化 test: 测试相关 chore: 构建/工具链相关 # 提交示例 git commit -m "feat: 新增用户管理列表页面" git commit -m "fix: 修复表格分页bug" ``` ### 3. 分支管理 ```bash main # 主分支(生产环境) develop # 开发分支 feature/* # 功能分支 hotfix/* # 热修复分支 release/* # 发布分支 ``` --- ## 📦 依赖包清单 ### 核心依赖 (dependencies) ```json { "vue": "^3.4.0", "vue-router": "^4.4.0", "pinia": "^2.2.0", "element-plus": "^2.8.0", "@element-plus/icons-vue": "^2.3.0", "axios": "^1.7.0", "dayjs": "^1.11.0", "lodash-es": "^4.17.21", "nprogress": "^0.2.0" } ``` ### 开发依赖 (devDependencies) ```json { "@vitejs/plugin-vue": "^5.1.0", "vite": "^5.4.0", "typescript": "^5.5.0", "vue-tsc": "^2.1.0", "@typescript-eslint/eslint-plugin": "^8.0.0", "@typescript-eslint/parser": "^8.0.0", "eslint": "^9.9.0", "eslint-plugin-vue": "^9.27.0", "prettier": "^3.3.0", "sass": "^1.77.0", "unplugin-auto-import": "^0.18.0", "unplugin-vue-components": "^0.27.0" } ``` --- ## 🔧 Vite配置要点 ```typescript // vite.config.ts import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { resolve } from 'path' import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' export default defineConfig({ plugins: [ vue(), // Element Plus自动导入 AutoImport({ resolvers: [ElementPlusResolver()], imports: ['vue', 'vue-router', 'pinia'], dts: 'src/auto-imports.d.ts' }), Components({ resolvers: [ElementPlusResolver()], dts: 'src/components.d.ts' }) ], resolve: { alias: { '@': resolve(__dirname, 'src') } }, server: { port: 3000, host: '0.0.0.0', proxy: { '/api': { target: 'https://api.linkang-health.com', changeOrigin: true } } }, build: { target: 'es2015', outDir: 'dist', sourcemap: false, minify: 'terser', terserOptions: { compress: { drop_console: true, drop_debugger: true } } } }) ``` --- ## 📈 性能优化策略 ### 1. 代码分割 - 路由懒加载 - 组件异步加载 - 第三方库按需加载 ### 2. 打包优化 - Gzip压缩 - 图片压缩 - CSS提取 - Tree-shaking ### 3. 运行时优化 - 虚拟列表(大数据表格) - 防抖/节流 - 组件缓存(keep-alive) - 懒加载图片 ### 4. 请求优化 - 接口缓存 - 请求合并 - 请求取消 - 请求重试 --- ## 🚢 部署方案 ### 1. 开发环境 ```bash # 使用Vite开发服务器 pnpm dev ``` ### 2. 测试环境 ```bash # 构建测试版本 pnpm build:test # 使用Nginx部署 # 配置文件: nginx.conf ``` ### 3. 生产环境 ```bash # 构建生产版本 pnpm build # Docker部署(可选) docker build -t linkang-admin . docker run -p 80:80 linkang-admin ``` ### Nginx配置示例 ```nginx server { listen 80; server_name admin.linkang-health.com; root /var/www/linkang-admin/dist; index index.html; location / { try_files $uri $uri/ /index.html; } location /api/ { proxy_pass https://api.linkang-health.com/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } gzip on; gzip_types text/plain text/css application/json application/javascript; } ``` --- ## 🔄 开发阶段规划 ### 第一阶段: 基础框架搭建 ✅ (已完成) - ✅ 项目初始化 - ✅ 目录结构搭建 - ✅ 路由配置 - ✅ 状态管理(app store) - ✅ API封装(request、types) - ✅ 通用组件开发(composables、utils) - ✅ 布局组件开发(Header、Sidebar) ### 第二阶段: 核心功能开发 ✅ (已完成) - ✅ 工作台页面 - ✅ 健康档案管理(列表、详情、审核、增删改) - ✅ 体检报告管理(列表、详情、增删改) - ✅ 健康指标管理(查询、趋势图) - ✅ 404错误页面 ### 第三阶段: 优化与完善 ✅ (已完成) - ✅ 功能测试 - ✅ 交互优化 - ✅ 响应式布局 - ✅ 文档完善 **开发进度**: ✅ 100% (核心功能已全部完成) **项目状态**: 可投入使用 --- ## 📞 技术支持 ### 相关文档 - [Vue 3 官方文档](https://cn.vuejs.org/) - [Element Plus 官方文档](https://element-plus.org/zh-CN/) - [Vite 官方文档](https://cn.vitejs.dev/) - [TypeScript 官方文档](https://www.typescriptlang.org/zh/) ### 开发团队 - **项目负责人**: [待定] - **前端开发**: [待定] - **后端接口对接**: [待定] --- ## 📋 附录 ### A. 常用工具函数清单 ```typescript // 格式化相关 formatDate(date: Date, format: string): string // 格式化日期 // 验证相关 validatePhone(phone: string): boolean // 验证手机号 validateEmail(email: string): boolean // 验证邮箱 validateIdCard(idCard: string): boolean // 验证身份证 // 存储相关 getToken(): string // 获取Token setToken(token: string): void // 设置Token removeToken(): void // 删除Token // 权限相关 hasPermission(permission: string): boolean // 判断是否有权限 hasRole(role: string): boolean // 判断是否有角色 ``` ### B. 常用组件清单 ```typescript // 布局组件 Layout // 主布局 Header // 顶部导航 Sidebar // 侧边菜单 Breadcrumb // 面包屑 // 表格组件 DataTable // 数据表格 Pagination // 分页组件 // 表单组件 SearchForm // 搜索表单 ModalForm // 弹窗表单 // 上传组件 ImageUpload // 图片上传 FileUpload // 文件上传 // 通用组件 AddressSelect // 地址选择器 ``` ### C. API接口清单汇总 | 模块 | 接口数量 | 备注 | |------|----------|------| | 健康档案管理 | 7 | 列表、详情、新增、编辑、删除、审核、批量审核 | | 体检报告管理 | 5 | 列表、详情、新增、编辑、删除 | | 健康指标管理 | 1 | 按用户查询指标列表与趋势 | | **总计** | **13** | 专注健康数据管理 | --- ## ✅ 项目功能清单 ### 已完成功能 ✅ - [x] 项目初始化与Git仓库关联 - [x] 开发环境配置 - [x] 依赖包安装与配置 - [x] 基础框架搭建(Vite + Vue3 + TypeScript) - [x] 布局系统(Header + Sidebar + DefaultLayout) - [x] 工作台Dashboard - [x] 健康档案管理(CRUD + 审核 + 批量审核) - [x] 体检报告管理(CRUD + 文件预览) - [x] 健康指标管理(查询 + 趋势图表) - [x] API请求封装与错误处理 - [x] 类型定义系统 - [x] 公共组件与工具函数 - [x] 404错误页面 - [x] 响应式布局适配 - [x] 交互体验优化 - [x] 技术文档编写 --- ## 📝 项目特点 ### 核心功能 1. **工作台** - 数据统计看板,关键指标展示 2. **健康档案管理** - 完整的CRUD及审核功能,支持批量操作 3. **体检报告管理** - 完整的CRUD功能,支持文件预览和下载 4. **健康指标管理** - 查询及趋势图表展示,异常指标标记 ### 技术亮点 - 基于 Vue3 Composition API 开发 - TypeScript 全面类型支持 - Element Plus 组件库 - 响应式布局设计 - 统一的API封装和错误处理 - 可复用的组合式函数 - 清晰的项目结构 --- **文档版本**: v2.0.0 **最后更新**: 2024-11-04 **项目状态**: ✅ 核心功能已完成,可投入使用 **Git仓库**: https://gitee.com/xiaochenyang1314/fs_admin.git --- > 💡 **项目说明**: > - 本项目为轻量级健康管理后台系统 > - 专注于健康数据管理核心功能 > - 不包含复杂的权限管理和用户系统 > - 适合中小型健康管理应用场景 > - 代码结构清晰,易于维护和扩展