# 医疗陪诊 **Repository Path**: ethan-coding/medical_companion ## Basic Information - **Project Name**: 医疗陪诊 - **Description**: 一个完整的就医陪诊服务平台,包含移动端用户应用和 PC 端管理后台。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-05 - **Last Updated**: 2026-01-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 就医陪诊应用系统 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Node.js Version](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen)](https://nodejs.org/) [![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue)](https://www.typescriptlang.org/) [![Vue.js](https://img.shields.io/badge/Vue.js-3.0+-green)](https://vuejs.org/) 一个完整的就医陪诊服务平台,包含移动端用户应用和 PC 端管理后台。 > 🌟 如果这个项目对你有帮助,请给我们一个 Star! ## 目录 - [项目简介](#项目简介) - [项目截图](#项目截图) - [技术架构](#技术架构) - [项目结构](#项目结构) - [快速开始](#快速开始) - [端口配置](#端口配置) - [开发指南](#开发指南) - [核心功能模块](#核心功能模块) - [生产部署](#生产部署) - [安全特性](#安全特性) - [测试](#测试) - [常见问题](#常见问题) - [贡献指南](#贡献指南) - [许可证](#许可证) - [联系方式](#联系方式) ## 项目简介 本系统为需要就医陪诊服务的用户提供便捷的预约和管理平台。用户可以通过移动端应用预约陪诊服务,管理员可以通过 PC 端后台管理订单、陪诊员和系统配置。 ### 主要功能 **移动端(用户端)** - 微信登录认证 - 创建和管理就医预约 - 查看预约详情和状态 - 在线支付功能 - 支付记录查询和管理 - 服务评价和反馈 - 个人信息管理 **PC 端(管理端)** - 管理员登录认证 - 预约管理和陪诊员分配 - 支付记录管理和查询 - 陪诊员信息管理 - 价格配置和系统设置 - 数据统计和仪表盘 ## 技术架构 ### 后端服务 - **语言**: TypeScript - **框架**: Node.js + Express.js - **数据库**: MySQL 8.0+ - **ORM**: TypeORM - **认证**: JWT + 微信 OAuth 2.0 - **日志**: Winston ### 移动端前端 - **框架**: Vue 3 + TypeScript - **UI 组件**: Vant 4 - **状态管理**: Pinia - **路由**: Vue Router - **构建工具**: Vite ### PC 端前端 - **框架**: Vue 3 + TypeScript - **UI 组件**: Element Plus - **状态管理**: Pinia - **路由**: Vue Router - **构建工具**: Vite ## 项目结构 ``` medical-companion/ ├── backend/ # 后端服务 │ ├── src/ # 源代码 │ │ ├── controllers/ # 控制器 │ │ ├── services/ # 业务逻辑 │ │ ├── models/ # 数据模型 │ │ ├── routes/ # 路由定义 │ │ ├── middleware/ # 中间件 │ │ └── config/ # 配置文件 │ ├── dist/ # 编译输出 │ ├── logs/ # 日志文件 │ └── package.json │ ├── frontend-mobile/ # 移动端前端 │ ├── src/ │ │ ├── views/ # 页面组件 │ │ ├── components/ # 通用组件 │ │ ├── stores/ # 状态管理 │ │ ├── api/ # API 接口 │ │ ├── router/ # 路由配置 │ │ └── styles/ # 样式文件 │ └── package.json │ ├── frontend-admin/ # PC 端管理后台 │ ├── src/ │ │ ├── views/ # 页面组件 │ │ ├── components/ # 通用组件 │ │ ├── stores/ # 状态管理 │ │ ├── api/ # API 接口 │ │ ├── router/ # 路由配置 │ │ └── layout/ # 布局组件 │ └── package.json │ ├── start-dev.sh # 开发环境启动脚本(Mac/Linux) ├── start-dev.bat # 开发环境启动脚本(Windows) ├── DEVELOPMENT_GUIDE.md # 开发环境配置指南 └── README.md # 项目说明文档 ``` ## 快速开始 ### 环境要求 - Node.js 18+ - MySQL 8.0+ - npm 或 yarn ### 1. 克隆项目 ```bash git clone cd medical-companion ``` ### 2. 配置数据库 创建 MySQL 数据库: ```sql CREATE DATABASE medical_companion CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` ### 3. 配置后端 ```bash cd backend npm install cp .env.example .env # 编辑 .env 文件,配置数据库连接和其他参数 npm run db:init # 初始化数据库表结构 npm run db:seed # 创建默认管理员账号 ``` ### 4. 启动服务 #### 方式一:使用启动脚本(推荐) **Mac/Linux:** ```bash chmod +x start-dev.sh ./start-dev.sh ``` **Windows:** ```bash start-dev.bat ``` #### 方式二:手动启动 **启动后端:** ```bash cd backend npm run dev ``` **启动移动端:** ```bash cd frontend-mobile npm install npm run dev ``` **启动管理端:** ```bash cd frontend-admin npm install npm run dev ``` ### 5. 访问应用 - **移动端**: http://localhost:5173 - **管理端**: http://localhost:5174 - **后端 API**: http://localhost:3000 ### 默认账号 **管理端登录:** - 用户名: `admin` - 密码: `admin123` **移动端登录:** - 开发环境使用模拟微信登录 ## 端口配置 | 服务 | 端口 | 说明 | |------|------|------| | 后端服务 | 3000 | Express API 服务 | | 移动端前端 | 5173 | Vue 3 + Vant 4 | | PC 管理端前端 | 5174 | Vue 3 + Element Plus | 所有端口均为固定配置,如需修改请参考 [开发环境配置指南](./DEVELOPMENT_GUIDE.md)。 ## 开发指南 详细的开发环境配置、跨域处理、调试技巧等内容,请参考: - [开发环境配置指南](./DEVELOPMENT_GUIDE.md) - [后端 API 文档](./backend/API.md) - [后端部署指南](./backend/DEPLOYMENT.md) ## 核心功能模块 ### 用户管理 - 微信 OAuth 2.0 登录 - 用户信息管理 - 测试账号支持 ### 预约管理 - 创建就医预约 - 预约状态跟踪(待分配/已分配/进行中/已完成/已取消) - 预约取消和修改 - 陪诊员分配(管理员) ### 支付管理 - 预约支付功能 - 支付记录查询 - 支付状态跟踪 - 支付历史管理 ### 陪诊员管理 - 陪诊员信息维护 - 服务能力和资质配置 - 工作状态管理 - 预约分配 ### 系统配置 - 价格配置管理 - 服务项目设置 - 系统参数配置 ## 项目截图 ### 移动端界面 #### 首页与登录
移动端首页
首页
移动端登录
登录页面
个人中心
个人中心
#### 预约功能
预约列表
预约列表
创建预约
创建预约
#### 预约与支付
支付页面
支付页面
支付记录
支付记录
### 管理端界面 #### 登录与仪表盘
管理端登录
登录页面
仪表盘
仪表盘
#### 预约管理
预约管理
预约管理
陪诊员管理
陪诊员管理
#### 支付记录管理
支付记录管理
支付记录管理
#### 系统设置
系统设置
系统设置
价格配置
价格配置
## 生产部署 ### 构建前端 ```bash # 移动端 cd frontend-mobile npm run build # 管理端 cd frontend-admin npm run build ``` ### 构建后端 ```bash cd backend npm run build npm start ``` ### 使用 PM2 部署 ```bash cd backend pm2 start ecosystem.config.js ``` ### 使用 Docker 部署 ```bash cd backend docker-compose up -d ``` 详细部署说明请参考 [后端部署指南](./backend/DEPLOYMENT.md)。 ## 安全特性 - JWT 令牌认证 - 密码 bcrypt 加密 - 敏感数据 AES-256 加密 - 基于角色的访问控制 - 操作审计日志 - CORS 跨域保护 - SQL 注入防护 ## 测试 ```bash # 后端测试 cd backend npm test npm run test:coverage ``` ## 常见问题 ### 端口被占用 如果端口被占用,请先关闭占用端口的进程: ```bash # Mac/Linux lsof -i :3000 kill -9 # Windows netstat -ano | findstr :3000 taskkill /PID /F ``` ### 跨域问题 开发环境已配置 Vite 代理,无需额外处理。生产环境请使用 Nginx 反向代理。 ### 数据库连接失败 1. 检查 MySQL 服务是否运行 2. 验证 `.env` 中的数据库配置 3. 确认数据库用户权限 更多问题请参考 [开发环境配置指南](./DEVELOPMENT_GUIDE.md)。 ## 技术支持 如有问题或建议,请联系开发团队。 ## 贡献指南 我们欢迎所有形式的贡献!无论是报告 bug、提出新功能建议,还是提交代码改进。 详细的贡献指南请查看 [CONTRIBUTING.md](./CONTRIBUTING.md)。 ### 快速开始贡献 1. Fork 本仓库 2. 创建你的特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交你的更改 (`git commit -m 'feat: Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启一个 Pull Request ### 代码规范 - 遵循 TypeScript/JavaScript 最佳实践 - 保持代码简洁和可读性 - 添加必要的注释 - 确保所有测试通过 - 遵循现有的代码风格 详细规范请参考 [CONTRIBUTING.md](./CONTRIBUTING.md)。 ## 行为准则 本项目采用[贡献者公约](./CODE_OF_CONDUCT.md)作为行为准则。参与本项目即表示你同意遵守其条款。 ## 许可证 本项目采用 [MIT License](./LICENSE) 开源协议。 这意味着你可以自由地: - ✅ 商业使用 - ✅ 修改代码 - ✅ 分发代码 - ✅ 私人使用 但需要: - 📄 保留版权声明和许可证声明 - 📄 声明所做的修改 详细条款请查看 [LICENSE](./LICENSE) 文件。 ## 致谢 感谢所有为本项目做出贡献的开发者。 ## 联系方式 - 项目主页: [https://github.com/ethan-lau/medical_companion] - 问题反馈: [https://github.com/ethan-lau/medical_companion/issues] - 邮箱: [ethan3304@163.com] --- **Medical Companion Development Team** | 2024-2026 如果这个项目对你有帮助,请给我们一个 ⭐️ Star!